1112 lines
31 KiB
Smali
1112 lines
31 KiB
Smali
.class public abstract Lorg/webrtc/CameraCapturer;
|
|
.super Ljava/lang/Object;
|
|
.source "CameraCapturer.java"
|
|
|
|
# interfaces
|
|
.implements Lorg/webrtc/CameraVideoCapturer;
|
|
|
|
|
|
# annotations
|
|
.annotation system Ldalvik/annotation/MemberClasses;
|
|
value = {
|
|
Lorg/webrtc/CameraCapturer$SwitchState;
|
|
}
|
|
.end annotation
|
|
|
|
|
|
# static fields
|
|
.field public static final MAX_OPEN_CAMERA_ATTEMPTS:I = 0x3
|
|
|
|
.field public static final OPEN_CAMERA_DELAY_MS:I = 0x1f4
|
|
|
|
.field public static final OPEN_CAMERA_TIMEOUT:I = 0x2710
|
|
|
|
.field public static final TAG:Ljava/lang/String; = "CameraCapturer"
|
|
|
|
|
|
# instance fields
|
|
.field public applicationContext:Landroid/content/Context;
|
|
|
|
.field public final cameraEnumerator:Lorg/webrtc/CameraEnumerator;
|
|
|
|
.field public cameraName:Ljava/lang/String;
|
|
|
|
.field public final cameraSessionEventsHandler:Lorg/webrtc/CameraSession$Events;
|
|
|
|
.field public cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
.field public cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
.field public capturerObserver:Lorg/webrtc/CapturerObserver;
|
|
|
|
.field public final createSessionCallback:Lorg/webrtc/CameraSession$CreateSessionCallback;
|
|
|
|
.field public currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
.field public final eventsHandler:Lorg/webrtc/CameraVideoCapturer$CameraEventsHandler;
|
|
|
|
.field public firstFrameObserved:Z
|
|
|
|
.field public framerate:I
|
|
|
|
.field public height:I
|
|
|
|
.field public openAttemptsRemaining:I
|
|
|
|
.field public final openCameraTimeoutRunnable:Ljava/lang/Runnable;
|
|
|
|
.field public sessionOpening:Z
|
|
|
|
.field public final stateLock:Ljava/lang/Object;
|
|
|
|
.field public surfaceHelper:Lorg/webrtc/SurfaceTextureHelper;
|
|
|
|
.field public switchEventsHandler:Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;
|
|
|
|
.field public switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
.field public final uiThreadHandler:Landroid/os/Handler;
|
|
|
|
.field public width:I
|
|
|
|
|
|
# direct methods
|
|
.method public constructor <init>(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$CameraEventsHandler;Lorg/webrtc/CameraEnumerator;)V
|
|
.locals 1
|
|
|
|
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
|
|
|
|
new-instance v0, Lorg/webrtc/CameraCapturer$1;
|
|
|
|
invoke-direct {v0, p0}, Lorg/webrtc/CameraCapturer$1;-><init>(Lorg/webrtc/CameraCapturer;)V
|
|
|
|
iput-object v0, p0, Lorg/webrtc/CameraCapturer;->createSessionCallback:Lorg/webrtc/CameraSession$CreateSessionCallback;
|
|
|
|
new-instance v0, Lorg/webrtc/CameraCapturer$2;
|
|
|
|
invoke-direct {v0, p0}, Lorg/webrtc/CameraCapturer$2;-><init>(Lorg/webrtc/CameraCapturer;)V
|
|
|
|
iput-object v0, p0, Lorg/webrtc/CameraCapturer;->cameraSessionEventsHandler:Lorg/webrtc/CameraSession$Events;
|
|
|
|
new-instance v0, Lorg/webrtc/CameraCapturer$3;
|
|
|
|
invoke-direct {v0, p0}, Lorg/webrtc/CameraCapturer$3;-><init>(Lorg/webrtc/CameraCapturer;)V
|
|
|
|
iput-object v0, p0, Lorg/webrtc/CameraCapturer;->openCameraTimeoutRunnable:Ljava/lang/Runnable;
|
|
|
|
new-instance v0, Ljava/lang/Object;
|
|
|
|
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
|
|
|
|
iput-object v0, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
sget-object v0, Lorg/webrtc/CameraCapturer$SwitchState;->IDLE:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
iput-object v0, p0, Lorg/webrtc/CameraCapturer;->switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
if-nez p2, :cond_0
|
|
|
|
new-instance p2, Lorg/webrtc/CameraCapturer$4;
|
|
|
|
invoke-direct {p2, p0}, Lorg/webrtc/CameraCapturer$4;-><init>(Lorg/webrtc/CameraCapturer;)V
|
|
|
|
:cond_0
|
|
iput-object p2, p0, Lorg/webrtc/CameraCapturer;->eventsHandler:Lorg/webrtc/CameraVideoCapturer$CameraEventsHandler;
|
|
|
|
iput-object p3, p0, Lorg/webrtc/CameraCapturer;->cameraEnumerator:Lorg/webrtc/CameraEnumerator;
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
new-instance p1, Landroid/os/Handler;
|
|
|
|
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
|
|
|
|
move-result-object p2
|
|
|
|
invoke-direct {p1, p2}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->uiThreadHandler:Landroid/os/Handler;
|
|
|
|
invoke-interface {p3}, Lorg/webrtc/CameraEnumerator;->getDeviceNames()[Ljava/lang/String;
|
|
|
|
move-result-object p1
|
|
|
|
array-length p2, p1
|
|
|
|
if-eqz p2, :cond_2
|
|
|
|
invoke-static {p1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
|
|
|
|
move-result-object p1
|
|
|
|
iget-object p2, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
invoke-interface {p1, p2}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
|
|
|
|
move-result p1
|
|
|
|
if-eqz p1, :cond_1
|
|
|
|
return-void
|
|
|
|
:cond_1
|
|
new-instance p1, Ljava/lang/IllegalArgumentException;
|
|
|
|
const-string p2, "Camera name "
|
|
|
|
invoke-static {p2}, Lf/e/c/a/a;->E(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
move-result-object p2
|
|
|
|
iget-object p3, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
const-string v0, " does not match any known camera device."
|
|
|
|
invoke-static {p2, p3, v0}, Lf/e/c/a/a;->w(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
|
|
|
move-result-object p2
|
|
|
|
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
|
|
|
|
throw p1
|
|
|
|
:cond_2
|
|
new-instance p1, Ljava/lang/RuntimeException;
|
|
|
|
const-string p2, "No cameras attached."
|
|
|
|
invoke-direct {p1, p2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
|
|
|
|
throw p1
|
|
.end method
|
|
|
|
.method public static synthetic access$000(Lorg/webrtc/CameraCapturer;)V
|
|
.locals 0
|
|
|
|
invoke-direct {p0}, Lorg/webrtc/CameraCapturer;->checkIsOnCameraThread()V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public static synthetic access$100(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraCapturer$SwitchState;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$1000(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraVideoCapturer$CameraEventsHandler;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->eventsHandler:Lorg/webrtc/CameraVideoCapturer$CameraEventsHandler;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$102(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraCapturer$SwitchState;)Lorg/webrtc/CameraCapturer$SwitchState;
|
|
.locals 0
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
return-object p1
|
|
.end method
|
|
|
|
.method public static synthetic access$1100(Lorg/webrtc/CameraCapturer;)Z
|
|
.locals 0
|
|
|
|
iget-boolean p0, p0, Lorg/webrtc/CameraCapturer;->firstFrameObserved:Z
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method public static synthetic access$1102(Lorg/webrtc/CameraCapturer;Z)Z
|
|
.locals 0
|
|
|
|
iput-boolean p1, p0, Lorg/webrtc/CameraCapturer;->firstFrameObserved:Z
|
|
|
|
return p1
|
|
.end method
|
|
|
|
.method public static synthetic access$1200(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->switchEventsHandler:Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$1202(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;
|
|
.locals 0
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->switchEventsHandler:Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;
|
|
|
|
return-object p1
|
|
.end method
|
|
|
|
.method public static synthetic access$1300(Lorg/webrtc/CameraCapturer;)Ljava/lang/String;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$1400(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraEnumerator;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->cameraEnumerator:Lorg/webrtc/CameraEnumerator;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$1500(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)V
|
|
.locals 0
|
|
|
|
invoke-direct {p0, p1}, Lorg/webrtc/CameraCapturer;->switchCameraInternal(Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public static synthetic access$1600(Lorg/webrtc/CameraCapturer;)I
|
|
.locals 0
|
|
|
|
iget p0, p0, Lorg/webrtc/CameraCapturer;->openAttemptsRemaining:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method public static synthetic access$1610(Lorg/webrtc/CameraCapturer;)I
|
|
.locals 2
|
|
|
|
iget v0, p0, Lorg/webrtc/CameraCapturer;->openAttemptsRemaining:I
|
|
|
|
add-int/lit8 v1, v0, -0x1
|
|
|
|
iput v1, p0, Lorg/webrtc/CameraCapturer;->openAttemptsRemaining:I
|
|
|
|
return v0
|
|
.end method
|
|
|
|
.method public static synthetic access$1700(Lorg/webrtc/CameraCapturer;I)V
|
|
.locals 0
|
|
|
|
invoke-direct {p0, p1}, Lorg/webrtc/CameraCapturer;->createSessionInternal(I)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public static synthetic access$1800(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraSession$CreateSessionCallback;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->createSessionCallback:Lorg/webrtc/CameraSession$CreateSessionCallback;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$1900(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraSession$Events;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->cameraSessionEventsHandler:Lorg/webrtc/CameraSession$Events;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$200(Lorg/webrtc/CameraCapturer;)Ljava/lang/Runnable;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->openCameraTimeoutRunnable:Ljava/lang/Runnable;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$2000(Lorg/webrtc/CameraCapturer;)Landroid/content/Context;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->applicationContext:Landroid/content/Context;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$2100(Lorg/webrtc/CameraCapturer;)I
|
|
.locals 0
|
|
|
|
iget p0, p0, Lorg/webrtc/CameraCapturer;->width:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method public static synthetic access$2200(Lorg/webrtc/CameraCapturer;)I
|
|
.locals 0
|
|
|
|
iget p0, p0, Lorg/webrtc/CameraCapturer;->height:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method public static synthetic access$2300(Lorg/webrtc/CameraCapturer;)I
|
|
.locals 0
|
|
|
|
iget p0, p0, Lorg/webrtc/CameraCapturer;->framerate:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method public static synthetic access$300(Lorg/webrtc/CameraCapturer;)Landroid/os/Handler;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->uiThreadHandler:Landroid/os/Handler;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$400(Lorg/webrtc/CameraCapturer;)Ljava/lang/Object;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$500(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CapturerObserver;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->capturerObserver:Lorg/webrtc/CapturerObserver;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$602(Lorg/webrtc/CameraCapturer;Z)Z
|
|
.locals 0
|
|
|
|
iput-boolean p1, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
return p1
|
|
.end method
|
|
|
|
.method public static synthetic access$700(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraSession;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$702(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraSession;)Lorg/webrtc/CameraSession;
|
|
.locals 0
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
return-object p1
|
|
.end method
|
|
|
|
.method public static synthetic access$800(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static synthetic access$802(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraVideoCapturer$CameraStatistics;)Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
.locals 0
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
return-object p1
|
|
.end method
|
|
|
|
.method public static synthetic access$900(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/SurfaceTextureHelper;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->surfaceHelper:Lorg/webrtc/SurfaceTextureHelper;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method private checkIsOnCameraThread()V
|
|
.locals 2
|
|
|
|
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
|
|
|
|
move-result-object v0
|
|
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
|
|
|
|
move-result-object v1
|
|
|
|
invoke-virtual {v1}, Landroid/os/Looper;->getThread()Ljava/lang/Thread;
|
|
|
|
move-result-object v1
|
|
|
|
if-ne v0, v1, :cond_0
|
|
|
|
return-void
|
|
|
|
:cond_0
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "Check is on camera thread failed."
|
|
|
|
invoke-static {v0, v1}, Lorg/webrtc/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
new-instance v0, Ljava/lang/RuntimeException;
|
|
|
|
const-string v1, "Not on camera thread."
|
|
|
|
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
|
|
|
|
throw v0
|
|
.end method
|
|
|
|
.method private createSessionInternal(I)V
|
|
.locals 4
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->uiThreadHandler:Landroid/os/Handler;
|
|
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->openCameraTimeoutRunnable:Ljava/lang/Runnable;
|
|
|
|
add-int/lit16 v2, p1, 0x2710
|
|
|
|
int-to-long v2, v2
|
|
|
|
invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
new-instance v1, Lorg/webrtc/CameraCapturer$5;
|
|
|
|
invoke-direct {v1, p0}, Lorg/webrtc/CameraCapturer$5;-><init>(Lorg/webrtc/CameraCapturer;)V
|
|
|
|
int-to-long v2, p1
|
|
|
|
invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method private reportCameraSwitchError(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)V
|
|
.locals 1
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
invoke-static {v0, p1}, Lorg/webrtc/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
if-eqz p2, :cond_0
|
|
|
|
invoke-interface {p2, p1}, Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;->onCameraSwitchError(Ljava/lang/String;)V
|
|
|
|
:cond_0
|
|
return-void
|
|
.end method
|
|
|
|
.method private switchCameraInternal(Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)V
|
|
.locals 5
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "switchCamera internal"
|
|
|
|
invoke-static {v0, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->cameraEnumerator:Lorg/webrtc/CameraEnumerator;
|
|
|
|
invoke-interface {v0}, Lorg/webrtc/CameraEnumerator;->getDeviceNames()[Ljava/lang/String;
|
|
|
|
move-result-object v0
|
|
|
|
array-length v1, v0
|
|
|
|
const/4 v2, 0x2
|
|
|
|
if-ge v1, v2, :cond_1
|
|
|
|
if-eqz p1, :cond_0
|
|
|
|
const-string v0, "No camera to switch to."
|
|
|
|
invoke-interface {p1, v0}, Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;->onCameraSwitchError(Ljava/lang/String;)V
|
|
|
|
:cond_0
|
|
return-void
|
|
|
|
:cond_1
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
monitor-enter v1
|
|
|
|
:try_start_0
|
|
iget-object v2, p0, Lorg/webrtc/CameraCapturer;->switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
sget-object v3, Lorg/webrtc/CameraCapturer$SwitchState;->IDLE:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
if-eq v2, v3, :cond_2
|
|
|
|
const-string v0, "Camera switch already in progress."
|
|
|
|
invoke-direct {p0, v0, p1}, Lorg/webrtc/CameraCapturer;->reportCameraSwitchError(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)V
|
|
|
|
monitor-exit v1
|
|
|
|
return-void
|
|
|
|
:cond_2
|
|
iget-boolean v2, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
if-nez v2, :cond_3
|
|
|
|
iget-object v2, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
if-nez v2, :cond_3
|
|
|
|
const-string v0, "switchCamera: camera is not running."
|
|
|
|
invoke-direct {p0, v0, p1}, Lorg/webrtc/CameraCapturer;->reportCameraSwitchError(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)V
|
|
|
|
monitor-exit v1
|
|
|
|
return-void
|
|
|
|
:cond_3
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->switchEventsHandler:Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;
|
|
|
|
iget-boolean p1, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
if-eqz p1, :cond_4
|
|
|
|
sget-object p1, Lorg/webrtc/CameraCapturer$SwitchState;->PENDING:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
monitor-exit v1
|
|
|
|
return-void
|
|
|
|
:cond_4
|
|
sget-object p1, Lorg/webrtc/CameraCapturer$SwitchState;->IN_PROGRESS:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
const-string p1, "CameraCapturer"
|
|
|
|
const-string v2, "switchCamera: Stopping session"
|
|
|
|
invoke-static {p1, v2}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
iget-object p1, p0, Lorg/webrtc/CameraCapturer;->cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
invoke-virtual {p1}, Lorg/webrtc/CameraVideoCapturer$CameraStatistics;->release()V
|
|
|
|
const/4 p1, 0x0
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
iget-object v2, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
iget-object v3, p0, Lorg/webrtc/CameraCapturer;->cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
new-instance v4, Lorg/webrtc/CameraCapturer$8;
|
|
|
|
invoke-direct {v4, p0, v2}, Lorg/webrtc/CameraCapturer$8;-><init>(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraSession;)V
|
|
|
|
invoke-virtual {v3, v4}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
invoke-static {v0}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
|
|
|
|
move-result-object p1
|
|
|
|
iget-object v2, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
invoke-interface {p1, v2}, Ljava/util/List;->indexOf(Ljava/lang/Object;)I
|
|
|
|
move-result p1
|
|
|
|
const/4 v2, 0x1
|
|
|
|
add-int/2addr p1, v2
|
|
|
|
array-length v3, v0
|
|
|
|
rem-int/2addr p1, v3
|
|
|
|
aget-object p1, v0, p1
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
iput-boolean v2, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
iput v2, p0, Lorg/webrtc/CameraCapturer;->openAttemptsRemaining:I
|
|
|
|
const/4 p1, 0x0
|
|
|
|
invoke-direct {p0, p1}, Lorg/webrtc/CameraCapturer;->createSessionInternal(I)V
|
|
|
|
monitor-exit v1
|
|
:try_end_0
|
|
.catchall {:try_start_0 .. :try_end_0} :catchall_0
|
|
|
|
const-string p1, "CameraCapturer"
|
|
|
|
const-string v0, "switchCamera done"
|
|
|
|
invoke-static {p1, v0}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
return-void
|
|
|
|
:catchall_0
|
|
move-exception p1
|
|
|
|
:try_start_1
|
|
monitor-exit v1
|
|
:try_end_1
|
|
.catchall {:try_start_1 .. :try_end_1} :catchall_0
|
|
|
|
throw p1
|
|
.end method
|
|
|
|
|
|
# virtual methods
|
|
.method public synthetic addMediaRecorderToCamera(Landroid/media/MediaRecorder;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
.locals 0
|
|
.annotation runtime Ljava/lang/Deprecated;
|
|
.end annotation
|
|
|
|
invoke-static {p0, p1, p2}, Lf0/c/h0;->$default$addMediaRecorderToCamera(Lorg/webrtc/CameraVideoCapturer;Landroid/media/MediaRecorder;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public changeCaptureFormat(III)V
|
|
.locals 4
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "changeCaptureFormat: "
|
|
|
|
const-string v2, "x"
|
|
|
|
const-string v3, "@"
|
|
|
|
invoke-static {v1, p1, v2, p2, v3}, Lf/e/c/a/a;->G(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
move-result-object v1
|
|
|
|
invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v1
|
|
|
|
invoke-static {v0, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
monitor-enter v0
|
|
|
|
:try_start_0
|
|
invoke-virtual {p0}, Lorg/webrtc/CameraCapturer;->stopCapture()V
|
|
|
|
invoke-virtual {p0, p1, p2, p3}, Lorg/webrtc/CameraCapturer;->startCapture(III)V
|
|
|
|
monitor-exit v0
|
|
|
|
return-void
|
|
|
|
:catchall_0
|
|
move-exception p1
|
|
|
|
monitor-exit v0
|
|
:try_end_0
|
|
.catchall {:try_start_0 .. :try_end_0} :catchall_0
|
|
|
|
throw p1
|
|
.end method
|
|
|
|
.method public abstract createCameraSession(Lorg/webrtc/CameraSession$CreateSessionCallback;Lorg/webrtc/CameraSession$Events;Landroid/content/Context;Lorg/webrtc/SurfaceTextureHelper;Ljava/lang/String;III)V
|
|
.end method
|
|
|
|
.method public dispose()V
|
|
.locals 2
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "dispose"
|
|
|
|
invoke-static {v0, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
invoke-virtual {p0}, Lorg/webrtc/CameraCapturer;->stopCapture()V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public getCameraName()Ljava/lang/String;
|
|
.locals 2
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
monitor-enter v0
|
|
|
|
:try_start_0
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
monitor-exit v0
|
|
|
|
return-object v1
|
|
|
|
:catchall_0
|
|
move-exception v1
|
|
|
|
monitor-exit v0
|
|
:try_end_0
|
|
.catchall {:try_start_0 .. :try_end_0} :catchall_0
|
|
|
|
throw v1
|
|
.end method
|
|
|
|
.method public initialize(Lorg/webrtc/SurfaceTextureHelper;Landroid/content/Context;Lorg/webrtc/CapturerObserver;)V
|
|
.locals 0
|
|
|
|
iput-object p2, p0, Lorg/webrtc/CameraCapturer;->applicationContext:Landroid/content/Context;
|
|
|
|
iput-object p3, p0, Lorg/webrtc/CameraCapturer;->capturerObserver:Lorg/webrtc/CapturerObserver;
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->surfaceHelper:Lorg/webrtc/SurfaceTextureHelper;
|
|
|
|
if-nez p1, :cond_0
|
|
|
|
const/4 p1, 0x0
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
invoke-virtual {p1}, Lorg/webrtc/SurfaceTextureHelper;->getHandler()Landroid/os/Handler;
|
|
|
|
move-result-object p1
|
|
|
|
:goto_0
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public isScreencast()Z
|
|
.locals 1
|
|
|
|
const/4 v0, 0x0
|
|
|
|
return v0
|
|
.end method
|
|
|
|
.method public printStackTrace()V
|
|
.locals 5
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
if-eqz v0, :cond_0
|
|
|
|
invoke-virtual {v0}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
|
|
|
|
move-result-object v0
|
|
|
|
invoke-virtual {v0}, Landroid/os/Looper;->getThread()Ljava/lang/Thread;
|
|
|
|
move-result-object v0
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
const/4 v0, 0x0
|
|
|
|
:goto_0
|
|
if-eqz v0, :cond_1
|
|
|
|
invoke-virtual {v0}, Ljava/lang/Thread;->getStackTrace()[Ljava/lang/StackTraceElement;
|
|
|
|
move-result-object v0
|
|
|
|
array-length v1, v0
|
|
|
|
if-lez v1, :cond_1
|
|
|
|
const-string v1, "CameraCapturer"
|
|
|
|
const-string v2, "CameraCapturer stack trace:"
|
|
|
|
invoke-static {v1, v2}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
array-length v2, v0
|
|
|
|
const/4 v3, 0x0
|
|
|
|
:goto_1
|
|
if-ge v3, v2, :cond_1
|
|
|
|
aget-object v4, v0, v3
|
|
|
|
invoke-virtual {v4}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v4
|
|
|
|
invoke-static {v1, v4}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
add-int/lit8 v3, v3, 0x1
|
|
|
|
goto :goto_1
|
|
|
|
:cond_1
|
|
return-void
|
|
.end method
|
|
|
|
.method public synthetic removeMediaRecorderFromCamera(Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
.locals 0
|
|
.annotation runtime Ljava/lang/Deprecated;
|
|
.end annotation
|
|
|
|
invoke-static {p0, p1}, Lf0/c/h0;->$default$removeMediaRecorderFromCamera(Lorg/webrtc/CameraVideoCapturer;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public startCapture(III)V
|
|
.locals 4
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "startCapture: "
|
|
|
|
const-string v2, "x"
|
|
|
|
const-string v3, "@"
|
|
|
|
invoke-static {v1, p1, v2, p2, v3}, Lf/e/c/a/a;->G(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
move-result-object v1
|
|
|
|
invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v1
|
|
|
|
invoke-static {v0, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->applicationContext:Landroid/content/Context;
|
|
|
|
if-eqz v0, :cond_2
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
monitor-enter v0
|
|
|
|
:try_start_0
|
|
iget-boolean v1, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
if-nez v1, :cond_1
|
|
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
if-eqz v1, :cond_0
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
iput p1, p0, Lorg/webrtc/CameraCapturer;->width:I
|
|
|
|
iput p2, p0, Lorg/webrtc/CameraCapturer;->height:I
|
|
|
|
iput p3, p0, Lorg/webrtc/CameraCapturer;->framerate:I
|
|
|
|
const/4 p1, 0x1
|
|
|
|
iput-boolean p1, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
const/4 p1, 0x3
|
|
|
|
iput p1, p0, Lorg/webrtc/CameraCapturer;->openAttemptsRemaining:I
|
|
|
|
const/4 p1, 0x0
|
|
|
|
invoke-direct {p0, p1}, Lorg/webrtc/CameraCapturer;->createSessionInternal(I)V
|
|
|
|
monitor-exit v0
|
|
|
|
return-void
|
|
|
|
:cond_1
|
|
:goto_0
|
|
const-string p1, "CameraCapturer"
|
|
|
|
const-string p2, "Session already open"
|
|
|
|
invoke-static {p1, p2}, Lorg/webrtc/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
monitor-exit v0
|
|
|
|
return-void
|
|
|
|
:catchall_0
|
|
move-exception p1
|
|
|
|
monitor-exit v0
|
|
:try_end_0
|
|
.catchall {:try_start_0 .. :try_end_0} :catchall_0
|
|
|
|
throw p1
|
|
|
|
:cond_2
|
|
new-instance p1, Ljava/lang/RuntimeException;
|
|
|
|
const-string p2, "CameraCapturer must be initialized before calling startCapture."
|
|
|
|
invoke-direct {p1, p2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
|
|
|
|
throw p1
|
|
.end method
|
|
|
|
.method public stopCapture()V
|
|
.locals 5
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "Stop capture"
|
|
|
|
invoke-static {v0, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
monitor-enter v0
|
|
|
|
:goto_0
|
|
:try_start_0
|
|
iget-boolean v1, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
if-eqz v1, :cond_0
|
|
|
|
const-string v1, "CameraCapturer"
|
|
|
|
const-string v2, "Stop capture: Waiting for session to open"
|
|
|
|
invoke-static {v1, v2}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
:try_end_0
|
|
.catchall {:try_start_0 .. :try_end_0} :catchall_0
|
|
|
|
:try_start_1
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
invoke-virtual {v1}, Ljava/lang/Object;->wait()V
|
|
:try_end_1
|
|
.catch Ljava/lang/InterruptedException; {:try_start_1 .. :try_end_1} :catch_0
|
|
.catchall {:try_start_1 .. :try_end_1} :catchall_0
|
|
|
|
goto :goto_0
|
|
|
|
:catch_0
|
|
:try_start_2
|
|
const-string v1, "CameraCapturer"
|
|
|
|
const-string v2, "Stop capture interrupted while waiting for the session to open."
|
|
|
|
invoke-static {v1, v2}, Lorg/webrtc/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
|
|
|
|
move-result-object v1
|
|
|
|
invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V
|
|
|
|
monitor-exit v0
|
|
|
|
return-void
|
|
|
|
:cond_0
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
if-eqz v1, :cond_1
|
|
|
|
const-string v1, "CameraCapturer"
|
|
|
|
const-string v2, "Stop capture: Nulling session"
|
|
|
|
invoke-static {v1, v2}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
invoke-virtual {v1}, Lorg/webrtc/CameraVideoCapturer$CameraStatistics;->release()V
|
|
|
|
const/4 v1, 0x0
|
|
|
|
iput-object v1, p0, Lorg/webrtc/CameraCapturer;->cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
iget-object v2, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
iget-object v3, p0, Lorg/webrtc/CameraCapturer;->cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
new-instance v4, Lorg/webrtc/CameraCapturer$6;
|
|
|
|
invoke-direct {v4, p0, v2}, Lorg/webrtc/CameraCapturer$6;-><init>(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraSession;)V
|
|
|
|
invoke-virtual {v3, v4}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
|
|
|
|
iput-object v1, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->capturerObserver:Lorg/webrtc/CapturerObserver;
|
|
|
|
invoke-interface {v1}, Lorg/webrtc/CapturerObserver;->onCapturerStopped()V
|
|
|
|
goto :goto_1
|
|
|
|
:cond_1
|
|
const-string v1, "CameraCapturer"
|
|
|
|
const-string v2, "Stop capture: No session open"
|
|
|
|
invoke-static {v1, v2}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
:goto_1
|
|
monitor-exit v0
|
|
:try_end_2
|
|
.catchall {:try_start_2 .. :try_end_2} :catchall_0
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "Stop capture done"
|
|
|
|
invoke-static {v0, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
return-void
|
|
|
|
:catchall_0
|
|
move-exception v1
|
|
|
|
:try_start_3
|
|
monitor-exit v0
|
|
:try_end_3
|
|
.catchall {:try_start_3 .. :try_end_3} :catchall_0
|
|
|
|
throw v1
|
|
.end method
|
|
|
|
.method public switchCamera(Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)V
|
|
.locals 2
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "switchCamera"
|
|
|
|
invoke-static {v0, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
iget-object v0, p0, Lorg/webrtc/CameraCapturer;->cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
new-instance v1, Lorg/webrtc/CameraCapturer$7;
|
|
|
|
invoke-direct {v1, p0, p1}, Lorg/webrtc/CameraCapturer$7;-><init>(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)V
|
|
|
|
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
|
|
|
|
return-void
|
|
.end method
|