Camera2Enumerator.smali
.class public Lorg/webrtc/ali/Camera2Enumerator;
.super Ljava/lang/Object;
.source "Camera2Enumerator.java"
# interfaces
.implements Lorg/webrtc/ali/CameraEnumerator;
# static fields
.field private static final NANO_SECONDS_PER_SECOND:D = 1.0E9
.field private static final TAG:Ljava/lang/String; = "Camera2Enumerator"
.field private static final cachedSupportedFormats:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/util/List<",
"Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat;",
">;>;"
}
.end annotation
.end field
# instance fields
.field final cameraManager:Landroid/hardware/camera2/CameraManager;
.field final context:Landroid/content/Context;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 40
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
sput-object v0, Lorg/webrtc/ali/Camera2Enumerator;->cachedSupportedFormats:Ljava/util/Map;
return-void
.end method
.method public constructor <init>(Landroid/content/Context;)V
.registers 3
.param p1, "context" # Landroid/content/Context;
.line 46
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 47
iput-object p1, p0, Lorg/webrtc/ali/Camera2Enumerator;->context:Landroid/content/Context;
.line 48
const-string v0, "camera"
invoke-virtual {p1, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/hardware/camera2/CameraManager;
iput-object v0, p0, Lorg/webrtc/ali/Camera2Enumerator;->cameraManager:Landroid/hardware/camera2/CameraManager;
.line 49
return-void
.end method
.method static convertFramerates([Landroid/util/Range;I)Ljava/util/List;
.registers 9
.param p1, "unitFactor" # I
.annotation system Ldalvik/annotation/Signature;
value = {
"([",
"Landroid/util/Range<",
"Ljava/lang/Integer;",
">;I)",
"Ljava/util/List<",
"Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;",
">;"
}
.end annotation
.line 241
.local p0, "arrayRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 242
.local v0, "ranges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
array-length v1, p0
const/4 v2, 0x0
:goto_7
if-ge v2, v1, :cond_2e
aget-object v3, p0, v2
.line 243
.local v3, "range":Landroid/util/Range;, "Landroid/util/Range<Ljava/lang/Integer;>;"
new-instance v4, Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;
.line 244
invoke-virtual {v3}, Landroid/util/Range;->getLower()Ljava/lang/Comparable;
move-result-object v5
check-cast v5, Ljava/lang/Integer;
invoke-virtual {v5}, Ljava/lang/Integer;->intValue()I
move-result v5
mul-int v5, v5, p1
invoke-virtual {v3}, Landroid/util/Range;->getUpper()Ljava/lang/Comparable;
move-result-object v6
check-cast v6, Ljava/lang/Integer;
invoke-virtual {v6}, Ljava/lang/Integer;->intValue()I
move-result v6
mul-int v6, v6, p1
invoke-direct {v4, v5, v6}, Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;-><init>(II)V
.line 243
invoke-interface {v0, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 242
.end local v3 # "range":Landroid/util/Range;, "Landroid/util/Range<Ljava/lang/Integer;>;"
add-int/lit8 v2, v2, 0x1
goto :goto_7
.line 246
:cond_2e
return-object v0
.end method
.method private static convertSizes([Landroid/util/Size;)Ljava/util/List;
.registers 8
.param p0, "cameraSizes" # [Landroid/util/Size;
.annotation system Ldalvik/annotation/Signature;
value = {
"([",
"Landroid/util/Size;",
")",
"Ljava/util/List<",
"Lorg/webrtc/ali/Size;",
">;"
}
.end annotation
.line 231
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 232
.local v0, "sizes":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/Size;>;"
array-length v1, p0
const/4 v2, 0x0
:goto_7
if-ge v2, v1, :cond_1e
aget-object v3, p0, v2
.line 233
.local v3, "size":Landroid/util/Size;
new-instance v4, Lorg/webrtc/ali/Size;
invoke-virtual {v3}, Landroid/util/Size;->getWidth()I
move-result v5
invoke-virtual {v3}, Landroid/util/Size;->getHeight()I
move-result v6
invoke-direct {v4, v5, v6}, Lorg/webrtc/ali/Size;-><init>(II)V
invoke-interface {v0, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 232
.end local v3 # "size":Landroid/util/Size;
add-int/lit8 v2, v2, 0x1
goto :goto_7
.line 235
:cond_1e
return-object v0
.end method
.method private getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;
.registers 5
.param p1, "deviceName" # Ljava/lang/String;
.line 95
:try_start_0
iget-object v0, p0, Lorg/webrtc/ali/Camera2Enumerator;->cameraManager:Landroid/hardware/camera2/CameraManager;
invoke-virtual {v0, p1}, Landroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;
move-result-object v0
:try_end_6
.catch Landroid/util/AndroidException; {:try_start_0 .. :try_end_6} :catch_7
return-object v0
.line 99
:catch_7
move-exception v0
.line 100
.local v0, "e":Landroid/util/AndroidException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Camera access exception: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const-string v2, "Camera2Enumerator"
invoke-static {v2, v1}, Lorg/webrtc/ali/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 101
const/4 v1, 0x0
return-object v1
.end method
.method static getFpsUnitFactor([Landroid/util/Range;)I
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"([",
"Landroid/util/Range<",
"Ljava/lang/Integer;",
">;)I"
}
.end annotation
.line 134
.local p0, "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
array-length v0, p0
const/16 v1, 0x3e8
if-nez v0, :cond_6
.line 135
return v1
.line 137
:cond_6
const/4 v0, 0x0
aget-object v0, p0, v0
invoke-virtual {v0}, Landroid/util/Range;->getUpper()Ljava/lang/Comparable;
move-result-object v0
check-cast v0, Ljava/lang/Integer;
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
if-ge v0, v1, :cond_16
goto :goto_17
:cond_16
const/4 v1, 0x1
:goto_17
return v1
.end method
.method static getSupportedFormats(Landroid/content/Context;Ljava/lang/String;)Ljava/util/List;
.registers 3
.param p0, "context" # Landroid/content/Context;
.param p1, "cameraId" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/content/Context;",
"Ljava/lang/String;",
")",
"Ljava/util/List<",
"Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat;",
">;"
}
.end annotation
.line 170
nop
.line 171
const-string v0, "camera"
invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/hardware/camera2/CameraManager;
.line 170
invoke-static {v0, p1}, Lorg/webrtc/ali/Camera2Enumerator;->getSupportedFormats(Landroid/hardware/camera2/CameraManager;Ljava/lang/String;)Ljava/util/List;
move-result-object v0
return-object v0
.end method
.method static getSupportedFormats(Landroid/hardware/camera2/CameraManager;Ljava/lang/String;)Ljava/util/List;
.registers 23
.param p0, "cameraManager" # Landroid/hardware/camera2/CameraManager;
.param p1, "cameraId" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/hardware/camera2/CameraManager;",
"Ljava/lang/String;",
")",
"Ljava/util/List<",
"Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat;",
">;"
}
.end annotation
.line 175
move-object/from16 v1, p1
sget-object v2, Lorg/webrtc/ali/Camera2Enumerator;->cachedSupportedFormats:Ljava/util/Map;
monitor-enter v2
.line 176
:try_start_5
sget-object v0, Lorg/webrtc/ali/Camera2Enumerator;->cachedSupportedFormats:Ljava/util/Map;
invoke-interface {v0, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_17
.line 177
sget-object v0, Lorg/webrtc/ali/Camera2Enumerator;->cachedSupportedFormats:Ljava/util/Map;
invoke-interface {v0, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/List;
monitor-exit v2
return-object v0
.line 180
:cond_17
const-string v0, "Camera2Enumerator"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Get supported formats for camera index "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v4, "."
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-static {v0, v3}, Lorg/webrtc/ali/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 181
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v3
:try_end_36
.catchall {:try_start_5 .. :try_end_36} :catchall_170
.line 185
.local v3, "startTimeMs":J
:try_start_36
invoke-virtual/range {p0 .. p1}, Landroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;
move-result-object v0
:try_end_3a
.catch Ljava/lang/Exception; {:try_start_36 .. :try_end_3a} :catch_150
.catchall {:try_start_36 .. :try_end_3a} :catchall_170
move-object v5, v0
.line 189
.local v5, "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
nop
.line 191
:try_start_3c
sget-object v0, Landroid/hardware/camera2/CameraCharacteristics;->SCALER_STREAM_CONFIGURATION_MAP:Landroid/hardware/camera2/CameraCharacteristics$Key;
.line 192
invoke-virtual {v5, v0}, Landroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/hardware/camera2/params/StreamConfigurationMap;
move-object v6, v0
.line 194
.local v6, "streamMap":Landroid/hardware/camera2/params/StreamConfigurationMap;
sget-object v0, Landroid/hardware/camera2/CameraCharacteristics;->CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES:Landroid/hardware/camera2/CameraCharacteristics$Key;
.line 195
invoke-virtual {v5, v0}, Landroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
move-result-object v0
check-cast v0, [Landroid/util/Range;
move-object v7, v0
.line 196
.local v7, "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
nop
.line 197
invoke-static {v7}, Lorg/webrtc/ali/Camera2Enumerator;->getFpsUnitFactor([Landroid/util/Range;)I
move-result v0
invoke-static {v7, v0}, Lorg/webrtc/ali/Camera2Enumerator;->convertFramerates([Landroid/util/Range;I)Ljava/util/List;
move-result-object v0
move-object v8, v0
.line 198
.local v8, "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
invoke-static {v5}, Lorg/webrtc/ali/Camera2Enumerator;->getSupportedSizes(Landroid/hardware/camera2/CameraCharacteristics;)Ljava/util/List;
move-result-object v0
move-object v9, v0
.line 200
.local v9, "sizes":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/Size;>;"
const/4 v0, 0x0
.line 201
.local v0, "defaultMaxFps":I
invoke-interface {v8}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v10
move v11, v0
.end local v0 # "defaultMaxFps":I
.local v11, "defaultMaxFps":I
:goto_63
invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_77
invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;
.line 202
.local v0, "framerateRange":Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;
iget v12, v0, Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;->max:I
invoke-static {v11, v12}, Ljava/lang/Math;->max(II)I
move-result v12
move v11, v12
.line 203
.end local v0 # "framerateRange":Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;
goto :goto_63
.line 205
:cond_77
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
move-object v10, v0
.line 206
.local v10, "formatList":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat;>;"
invoke-interface {v9}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v12
:goto_81
invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_118
invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/webrtc/ali/Size;
:try_end_8d
.catchall {:try_start_3c .. :try_end_8d} :catchall_170
move-object v13, v0
.line 207
.local v13, "size":Lorg/webrtc/ali/Size;
const-wide/16 v14, 0x0
.line 209
.local v14, "minFrameDurationNs":J
:try_start_90
const-class v0, Landroid/graphics/SurfaceTexture;
:try_end_92
.catch Ljava/lang/Exception; {:try_start_90 .. :try_end_92} :catch_b3
.catchall {:try_start_90 .. :try_end_92} :catchall_170
move-object/from16 v16, v5
.end local v5 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.local v16, "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
:try_start_94
new-instance v5, Landroid/util/Size;
:try_end_96
.catch Ljava/lang/Exception; {:try_start_94 .. :try_end_96} :catch_ad
.catchall {:try_start_94 .. :try_end_96} :catchall_170
move-object/from16 v17, v7
.end local v7 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.local v17, "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
:try_start_98
iget v7, v13, Lorg/webrtc/ali/Size;->width:I
:try_end_9a
.catch Ljava/lang/Exception; {:try_start_98 .. :try_end_9a} :catch_a9
.catchall {:try_start_98 .. :try_end_9a} :catchall_170
move-object/from16 v18, v8
.end local v8 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.local v18, "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
:try_start_9c
iget v8, v13, Lorg/webrtc/ali/Size;->height:I
invoke-direct {v5, v7, v8}, Landroid/util/Size;-><init>(II)V
invoke-virtual {v6, v0, v5}, Landroid/hardware/camera2/params/StreamConfigurationMap;->getOutputMinFrameDuration(Ljava/lang/Class;Landroid/util/Size;)J
move-result-wide v7
:try_end_a5
.catch Ljava/lang/Exception; {:try_start_9c .. :try_end_a5} :catch_a7
.catchall {:try_start_9c .. :try_end_a5} :catchall_170
move-wide v14, v7
.line 213
goto :goto_ba
.line 211
:catch_a7
move-exception v0
goto :goto_ba
.end local v18 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.restart local v8 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
:catch_a9
move-exception v0
move-object/from16 v18, v8
.end local v8 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.restart local v18 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
goto :goto_ba
.end local v17 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.end local v18 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.restart local v7 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.restart local v8 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
:catch_ad
move-exception v0
move-object/from16 v17, v7
move-object/from16 v18, v8
.end local v7 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.end local v8 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.restart local v17 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.restart local v18 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
goto :goto_ba
.end local v16 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.end local v17 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.end local v18 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.restart local v5 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.restart local v7 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.restart local v8 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
:catch_b3
move-exception v0
move-object/from16 v16, v5
move-object/from16 v17, v7
move-object/from16 v18, v8
.line 214
.end local v5 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.end local v7 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.end local v8 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.restart local v16 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.restart local v17 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.restart local v18 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
:goto_ba
const-wide/16 v7, 0x0
cmp-long v0, v14, v7
if-nez v0, :cond_c2
move v0, v11
goto :goto_d4
:cond_c2
long-to-double v7, v14
invoke-static {v7, v8}, Ljava/lang/Double;->isNaN(D)Z
const-wide v19, 0x41cdcd6500000000L # 1.0E9
div-double v7, v19, v7
.line 216
:try_start_cd
invoke-static {v7, v8}, Ljava/lang/Math;->round(D)J
move-result-wide v7
long-to-int v0, v7
mul-int/lit16 v0, v0, 0x3e8
:goto_d4
nop
.line 217
.local v0, "maxFps":I
new-instance v5, Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat;
iget v7, v13, Lorg/webrtc/ali/Size;->width:I
iget v8, v13, Lorg/webrtc/ali/Size;->height:I
move-object/from16 v19, v6
.end local v6 # "streamMap":Landroid/hardware/camera2/params/StreamConfigurationMap;
.local v19, "streamMap":Landroid/hardware/camera2/params/StreamConfigurationMap;
const/4 v6, 0x0
invoke-direct {v5, v7, v8, v6, v0}, Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat;-><init>(IIII)V
invoke-interface {v10, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 218
const-string v5, "Camera2Enumerator"
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
const-string v7, "Format: "
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v7, v13, Lorg/webrtc/ali/Size;->width:I
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v7, "x"
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v7, v13, Lorg/webrtc/ali/Size;->height:I
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v7, "@"
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
invoke-static {v5, v6}, Lorg/webrtc/ali/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 219
.end local v0 # "maxFps":I
.end local v13 # "size":Lorg/webrtc/ali/Size;
.end local v14 # "minFrameDurationNs":J
move-object/from16 v5, v16
move-object/from16 v7, v17
move-object/from16 v8, v18
move-object/from16 v6, v19
goto/16 :goto_81
.line 221
.end local v16 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.end local v17 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.end local v18 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.end local v19 # "streamMap":Landroid/hardware/camera2/params/StreamConfigurationMap;
.restart local v5 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.restart local v6 # "streamMap":Landroid/hardware/camera2/params/StreamConfigurationMap;
.restart local v7 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.restart local v8 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
:cond_118
move-object/from16 v16, v5
move-object/from16 v19, v6
move-object/from16 v17, v7
move-object/from16 v18, v8
.end local v5 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.end local v6 # "streamMap":Landroid/hardware/camera2/params/StreamConfigurationMap;
.end local v7 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.end local v8 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.restart local v16 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.restart local v17 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.restart local v18 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.restart local v19 # "streamMap":Landroid/hardware/camera2/params/StreamConfigurationMap;
sget-object v0, Lorg/webrtc/ali/Camera2Enumerator;->cachedSupportedFormats:Ljava/util/Map;
invoke-interface {v0, v1, v10}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 222
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v5
.line 223
.local v5, "endTimeMs":J
const-string v0, "Camera2Enumerator"
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
const-string v8, "Get supported formats for camera index "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v8, " done. Time spent: "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sub-long v12, v5, v3
invoke-virtual {v7, v12, v13}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v8, " ms."
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
invoke-static {v0, v7}, Lorg/webrtc/ali/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 225
monitor-exit v2
return-object v10
.line 186
.end local v5 # "endTimeMs":J
.end local v9 # "sizes":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/Size;>;"
.end local v10 # "formatList":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat;>;"
.end local v11 # "defaultMaxFps":I
.end local v16 # "cameraCharacteristics":Landroid/hardware/camera2/CameraCharacteristics;
.end local v17 # "fpsRanges":[Landroid/util/Range;, "[Landroid/util/Range<Ljava/lang/Integer;>;"
.end local v18 # "framerateRanges":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat$FramerateRange;>;"
.end local v19 # "streamMap":Landroid/hardware/camera2/params/StreamConfigurationMap;
:catch_150
move-exception v0
move-object v5, v0
move-object v0, v5
.line 187
.local v0, "ex":Ljava/lang/Exception;
const-string v5, "Camera2Enumerator"
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
const-string v7, "getCameraCharacteristics(): "
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
invoke-static {v5, v6}, Lorg/webrtc/ali/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 188
new-instance v5, Ljava/util/ArrayList;
invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
monitor-exit v2
return-object v5
.line 226
.end local v0 # "ex":Ljava/lang/Exception;
.end local v3 # "startTimeMs":J
:catchall_170
move-exception v0
monitor-exit v2
:try_end_172
.catchall {:try_start_cd .. :try_end_172} :catchall_170
goto :goto_174
:goto_173
throw v0
:goto_174
goto :goto_173
.end method
.method static getSupportedSizes(Landroid/hardware/camera2/CameraCharacteristics;)Ljava/util/List;
.registers 12
.param p0, "cameraCharacteristics" # Landroid/hardware/camera2/CameraCharacteristics;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/hardware/camera2/CameraCharacteristics;",
")",
"Ljava/util/List<",
"Lorg/webrtc/ali/Size;",
">;"
}
.end annotation
.line 141
sget-object v0, Landroid/hardware/camera2/CameraCharacteristics;->SCALER_STREAM_CONFIGURATION_MAP:Landroid/hardware/camera2/CameraCharacteristics$Key;
.line 142
invoke-virtual {p0, v0}, Landroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/hardware/camera2/params/StreamConfigurationMap;
.line 143
.local v0, "streamMap":Landroid/hardware/camera2/params/StreamConfigurationMap;
sget-object v1, Landroid/hardware/camera2/CameraCharacteristics;->INFO_SUPPORTED_HARDWARE_LEVEL:Landroid/hardware/camera2/CameraCharacteristics$Key;
.line 144
invoke-virtual {p0, v1}, Landroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/Integer;
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v1
.line 146
.local v1, "supportLevel":I
const-class v2, Landroid/graphics/SurfaceTexture;
invoke-virtual {v0, v2}, Landroid/hardware/camera2/params/StreamConfigurationMap;->getOutputSizes(Ljava/lang/Class;)[Landroid/util/Size;
move-result-object v2
.line 147
.local v2, "nativeSizes":[Landroid/util/Size;
invoke-static {v2}, Lorg/webrtc/ali/Camera2Enumerator;->convertSizes([Landroid/util/Size;)Ljava/util/List;
move-result-object v3
.line 151
.local v3, "sizes":Ljava/util/List;, "Ljava/util/List<Lorg/webrtc/ali/Size;>;"
sget v4, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v5, 0x16
if-ge v4, v5, :cond_5b
const/4 v4, 0x2
if-ne v1, v4, :cond_5b
.line 153
sget-object v4, Landroid/hardware/camera2/CameraCharacteristics;->SENSOR_INFO_ACTIVE_ARRAY_SIZE:Landroid/hardware/camera2/CameraCharacteristics$Key;
.line 154
invoke-virtual {p0, v4}, Landroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/graphics/Rect;
.line 155
.local v4, "activeArraySize":Landroid/graphics/Rect;
new-instance v5, Ljava/util/ArrayList;
invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
.line 157
.local v5, "filteredSizes":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Lorg/webrtc/ali/Size;>;"
invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v6
:goto_38
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v7
if-eqz v7, :cond_5a
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v7
check-cast v7, Lorg/webrtc/ali/Size;
.line 158
.local v7, "size":Lorg/webrtc/ali/Size;
invoke-virtual {v4}, Landroid/graphics/Rect;->width()I
move-result v8
iget v9, v7, Lorg/webrtc/ali/Size;->height:I
mul-int v8, v8, v9
invoke-virtual {v4}, Landroid/graphics/Rect;->height()I
move-result v9
iget v10, v7, Lorg/webrtc/ali/Size;->width:I
mul-int v9, v9, v10
if-ne v8, v9, :cond_59
.line 159
invoke-virtual {v5, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 161
.end local v7 # "size":Lorg/webrtc/ali/Size;
:cond_59
goto :goto_38
.line 163
:cond_5a
return-object v5
.line 165
.end local v4 # "activeArraySize":Landroid/graphics/Rect;
.end local v5 # "filteredSizes":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Lorg/webrtc/ali/Size;>;"
:cond_5b
return-object v3
.end method
.method public static isSupported(Landroid/content/Context;)Z
.registers 10
.param p0, "context" # Landroid/content/Context;
.line 109
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/4 v1, 0x0
const/16 v2, 0x15
if-ge v0, v2, :cond_8
.line 110
return v1
.line 113
:cond_8
const-string v0, "camera"
invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/hardware/camera2/CameraManager;
.line 115
.local v0, "cameraManager":Landroid/hardware/camera2/CameraManager;
:try_start_10
invoke-virtual {v0}, Landroid/hardware/camera2/CameraManager;->getCameraIdList()[Ljava/lang/String;
move-result-object v2
.line 116
.local v2, "cameraIds":[Ljava/lang/String;
array-length v3, v2
const/4 v4, 0x0
:goto_16
if-ge v4, v3, :cond_31
aget-object v5, v2, v4
.line 117
.local v5, "id":Ljava/lang/String;
invoke-virtual {v0, v5}, Landroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;
move-result-object v6
.line 118
.local v6, "characteristics":Landroid/hardware/camera2/CameraCharacteristics;
sget-object v7, Landroid/hardware/camera2/CameraCharacteristics;->INFO_SUPPORTED_HARDWARE_LEVEL:Landroid/hardware/camera2/CameraCharacteristics$Key;
invoke-virtual {v6, v7}, Landroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
move-result-object v7
check-cast v7, Ljava/lang/Integer;
invoke-virtual {v7}, Ljava/lang/Integer;->intValue()I
move-result v7
:try_end_2a
.catch Landroid/util/AndroidException; {:try_start_10 .. :try_end_2a} :catch_34
const/4 v8, 0x2
if-ne v7, v8, :cond_2e
.line 120
return v1
.line 116
.end local v5 # "id":Ljava/lang/String;
.end local v6 # "characteristics":Landroid/hardware/camera2/CameraCharacteristics;
:cond_2e
add-int/lit8 v4, v4, 0x1
goto :goto_16
.line 129
.end local v2 # "cameraIds":[Ljava/lang/String;
:cond_31
nop
.line 130
const/4 v1, 0x1
return v1
.line 126
:catch_34
move-exception v2
.line 127
.local v2, "e":Landroid/util/AndroidException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Camera access exception: "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
const-string v4, "Camera2Enumerator"
invoke-static {v4, v3}, Lorg/webrtc/ali/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 128
return v1
.end method
# virtual methods
.method public createCapturer(Ljava/lang/String;Lorg/webrtc/ali/CameraVideoCapturer$CameraEventsHandler;)Lorg/webrtc/ali/CameraVideoCapturer;
.registers 5
.param p1, "deviceName" # Ljava/lang/String;
.param p2, "eventsHandler" # Lorg/webrtc/ali/CameraVideoCapturer$CameraEventsHandler;
.line 90
new-instance v0, Lorg/webrtc/ali/Camera2Capturer;
iget-object v1, p0, Lorg/webrtc/ali/Camera2Enumerator;->context:Landroid/content/Context;
invoke-direct {v0, v1, p1, p2}, Lorg/webrtc/ali/Camera2Capturer;-><init>(Landroid/content/Context;Ljava/lang/String;Lorg/webrtc/ali/CameraVideoCapturer$CameraEventsHandler;)V
return-object v0
.end method
.method public getDeviceNames()[Ljava/lang/String;
.registers 4
.line 54
:try_start_0
iget-object v0, p0, Lorg/webrtc/ali/Camera2Enumerator;->cameraManager:Landroid/hardware/camera2/CameraManager;
invoke-virtual {v0}, Landroid/hardware/camera2/CameraManager;->getCameraIdList()[Ljava/lang/String;
move-result-object v0
:try_end_6
.catch Landroid/util/AndroidException; {:try_start_0 .. :try_end_6} :catch_7
return-object v0
.line 58
:catch_7
move-exception v0
.line 59
.local v0, "e":Landroid/util/AndroidException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Camera access exception: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const-string v2, "Camera2Enumerator"
invoke-static {v2, v1}, Lorg/webrtc/ali/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 60
const/4 v1, 0x0
new-array v1, v1, [Ljava/lang/String;
return-object v1
.end method
.method public getSupportedFormats(Ljava/lang/String;)Ljava/util/List;
.registers 3
.param p1, "deviceName" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
")",
"Ljava/util/List<",
"Lorg/webrtc/ali/CameraEnumerationAndroid$CaptureFormat;",
">;"
}
.end annotation
.line 84
iget-object v0, p0, Lorg/webrtc/ali/Camera2Enumerator;->context:Landroid/content/Context;
invoke-static {v0, p1}, Lorg/webrtc/ali/Camera2Enumerator;->getSupportedFormats(Landroid/content/Context;Ljava/lang/String;)Ljava/util/List;
move-result-object v0
return-object v0
.end method
.method public isBackFacing(Ljava/lang/String;)Z
.registers 5
.param p1, "deviceName" # Ljava/lang/String;
.line 75
invoke-direct {p0, p1}, Lorg/webrtc/ali/Camera2Enumerator;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;
move-result-object v0
.line 77
.local v0, "characteristics":Landroid/hardware/camera2/CameraCharacteristics;
const/4 v1, 0x1
if-eqz v0, :cond_16
sget-object v2, Landroid/hardware/camera2/CameraCharacteristics;->LENS_FACING:Landroid/hardware/camera2/CameraCharacteristics$Key;
.line 78
invoke-virtual {v0, v2}, Landroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/Integer;
invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
move-result v2
if-ne v2, v1, :cond_16
goto :goto_17
:cond_16
const/4 v1, 0x0
.line 77
:goto_17
return v1
.end method
.method public isFrontFacing(Ljava/lang/String;)Z
.registers 4
.param p1, "deviceName" # Ljava/lang/String;
.line 66
invoke-direct {p0, p1}, Lorg/webrtc/ali/Camera2Enumerator;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;
move-result-object v0
.line 68
.local v0, "characteristics":Landroid/hardware/camera2/CameraCharacteristics;
if-eqz v0, :cond_16
sget-object v1, Landroid/hardware/camera2/CameraCharacteristics;->LENS_FACING:Landroid/hardware/camera2/CameraCharacteristics$Key;
.line 69
invoke-virtual {v0, v1}, Landroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/Integer;
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v1
if-nez v1, :cond_16
const/4 v1, 0x1
goto :goto_17
:cond_16
const/4 v1, 0x0
.line 68
:goto_17
return v1
.end method