1413 lines
41 KiB
Smali
1413 lines
41 KiB
Smali
.class 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$MediaRecorderState;,
|
|
Lorg/webrtc/CameraCapturer$SwitchState;
|
|
}
|
|
.end annotation
|
|
|
|
|
|
# static fields
|
|
.field private static final MAX_OPEN_CAMERA_ATTEMPTS:I = 0x3
|
|
|
|
.field private static final OPEN_CAMERA_DELAY_MS:I = 0x1f4
|
|
|
|
.field private static final OPEN_CAMERA_TIMEOUT:I = 0x2710
|
|
|
|
.field private static final TAG:Ljava/lang/String; = "CameraCapturer"
|
|
|
|
|
|
# instance fields
|
|
.field private applicationContext:Landroid/content/Context;
|
|
|
|
.field private final cameraEnumerator:Lorg/webrtc/CameraEnumerator;
|
|
|
|
.field private cameraName:Ljava/lang/String;
|
|
|
|
.field private final cameraSessionEventsHandler:Lorg/webrtc/CameraSession$Events;
|
|
|
|
.field private cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
.field private cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
.field private capturerObserver:Lorg/webrtc/VideoCapturer$CapturerObserver;
|
|
|
|
.field private final createSessionCallback:Lorg/webrtc/CameraSession$CreateSessionCallback;
|
|
|
|
.field private currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
.field private final eventsHandler:Lorg/webrtc/CameraVideoCapturer$CameraEventsHandler;
|
|
|
|
.field private firstFrameObserved:Z
|
|
|
|
.field private framerate:I
|
|
|
|
.field private height:I
|
|
|
|
.field private mediaRecorderEventsHandler:Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;
|
|
|
|
.field private mediaRecorderState:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
.field private openAttemptsRemaining:I
|
|
|
|
.field private final openCameraTimeoutRunnable:Ljava/lang/Runnable;
|
|
|
|
.field private sessionOpening:Z
|
|
|
|
.field private final stateLock:Ljava/lang/Object;
|
|
|
|
.field private surfaceHelper:Lorg/webrtc/SurfaceTextureHelper;
|
|
|
|
.field private switchEventsHandler:Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;
|
|
|
|
.field private switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
.field private final uiThreadHandler:Landroid/os/Handler;
|
|
|
|
.field private 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;
|
|
|
|
sget-object v0, Lorg/webrtc/CameraCapturer$MediaRecorderState;->IDLE:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
iput-object v0, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderState:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
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;
|
|
|
|
new-instance p2, Ljava/lang/StringBuilder;
|
|
|
|
const-string p3, "Camera name "
|
|
|
|
invoke-direct {p2, p3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
|
|
|
|
iget-object p3, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
const-string p3, " does not match any known camera device."
|
|
|
|
invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()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 static synthetic access$000(Lorg/webrtc/CameraCapturer;)V
|
|
.locals 0
|
|
|
|
invoke-direct {p0}, Lorg/webrtc/CameraCapturer;->checkIsOnCameraThread()V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method 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 static synthetic access$1000(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 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 static synthetic access$1100(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 static synthetic access$1200(Lorg/webrtc/CameraCapturer;)Z
|
|
.locals 0
|
|
|
|
iget-boolean p0, p0, Lorg/webrtc/CameraCapturer;->firstFrameObserved:Z
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method static synthetic access$1202(Lorg/webrtc/CameraCapturer;Z)Z
|
|
.locals 0
|
|
|
|
iput-boolean p1, p0, Lorg/webrtc/CameraCapturer;->firstFrameObserved:Z
|
|
|
|
return p1
|
|
.end method
|
|
|
|
.method static synthetic access$1300(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 static synthetic access$1302(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 static synthetic access$1400(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 static synthetic access$1500(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 static synthetic access$1600(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 static synthetic access$1700(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderEventsHandler:Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method static synthetic access$1702(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;
|
|
.locals 0
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderEventsHandler:Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;
|
|
|
|
return-object p1
|
|
.end method
|
|
|
|
.method static synthetic access$1800(Lorg/webrtc/CameraCapturer;)I
|
|
.locals 0
|
|
|
|
iget p0, p0, Lorg/webrtc/CameraCapturer;->openAttemptsRemaining:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method static synthetic access$1810(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 static synthetic access$1900(Lorg/webrtc/CameraCapturer;ILandroid/media/MediaRecorder;)V
|
|
.locals 0
|
|
|
|
invoke-direct {p0, p1, p2}, Lorg/webrtc/CameraCapturer;->createSessionInternal(ILandroid/media/MediaRecorder;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method static synthetic access$200(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderState:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method static synthetic access$2000(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 static synthetic access$202(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraCapturer$MediaRecorderState;)Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
.locals 0
|
|
|
|
iput-object p1, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderState:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
return-object p1
|
|
.end method
|
|
|
|
.method static synthetic access$2100(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 static synthetic access$2200(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 static synthetic access$2300(Lorg/webrtc/CameraCapturer;)I
|
|
.locals 0
|
|
|
|
iget p0, p0, Lorg/webrtc/CameraCapturer;->width:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method static synthetic access$2400(Lorg/webrtc/CameraCapturer;)I
|
|
.locals 0
|
|
|
|
iget p0, p0, Lorg/webrtc/CameraCapturer;->height:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method static synthetic access$2500(Lorg/webrtc/CameraCapturer;)I
|
|
.locals 0
|
|
|
|
iget p0, p0, Lorg/webrtc/CameraCapturer;->framerate:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method static synthetic access$2600(Lorg/webrtc/CameraCapturer;Landroid/media/MediaRecorder;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
.locals 0
|
|
|
|
invoke-direct {p0, p1, p2}, Lorg/webrtc/CameraCapturer;->updateMediaRecorderInternal(Landroid/media/MediaRecorder;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method static synthetic access$300(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 static synthetic access$400(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 static synthetic access$500(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 static synthetic access$600(Lorg/webrtc/CameraCapturer;)Lorg/webrtc/VideoCapturer$CapturerObserver;
|
|
.locals 0
|
|
|
|
iget-object p0, p0, Lorg/webrtc/CameraCapturer;->capturerObserver:Lorg/webrtc/VideoCapturer$CapturerObserver;
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method static synthetic access$702(Lorg/webrtc/CameraCapturer;Z)Z
|
|
.locals 0
|
|
|
|
iput-boolean p1, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
return p1
|
|
.end method
|
|
|
|
.method static synthetic access$800(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 static synthetic access$802(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 static synthetic access$900(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 static synthetic access$902(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 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(ILandroid/media/MediaRecorder;)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, p2}, Lorg/webrtc/CameraCapturer$5;-><init>(Lorg/webrtc/CameraCapturer;Landroid/media/MediaRecorder;)V
|
|
|
|
int-to-long p1, p1
|
|
|
|
invoke-virtual {v0, v1, p1, p2}, 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 reportUpdateMediaRecorderError(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
.locals 1
|
|
|
|
invoke-direct {p0}, Lorg/webrtc/CameraCapturer;->checkIsOnCameraThread()V
|
|
|
|
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$MediaRecorderHandler;->onMediaRecorderError(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-object v2, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderState:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
sget-object v3, Lorg/webrtc/CameraCapturer$MediaRecorderState;->IDLE:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
if-eq v2, v3, :cond_3
|
|
|
|
const-string v0, "switchCamera: media recording is active"
|
|
|
|
invoke-direct {p0, v0, p1}, Lorg/webrtc/CameraCapturer;->reportCameraSwitchError(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$CameraSwitchHandler;)V
|
|
|
|
monitor-exit v1
|
|
|
|
return-void
|
|
|
|
:cond_3
|
|
iget-boolean v2, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
if-nez v2, :cond_4
|
|
|
|
iget-object v2, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
if-nez v2, :cond_4
|
|
|
|
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_4
|
|
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_5
|
|
|
|
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_5
|
|
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$10;
|
|
|
|
invoke-direct {v4, p0, v2}, Lorg/webrtc/CameraCapturer$10;-><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 v2
|
|
|
|
iget-object v3, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
invoke-interface {v2, v3}, Ljava/util/List;->indexOf(Ljava/lang/Object;)I
|
|
|
|
move-result v2
|
|
|
|
const/4 v3, 0x1
|
|
|
|
add-int/2addr v2, v3
|
|
|
|
array-length v4, v0
|
|
|
|
rem-int/2addr v2, v4
|
|
|
|
aget-object v0, v0, v2
|
|
|
|
iput-object v0, p0, Lorg/webrtc/CameraCapturer;->cameraName:Ljava/lang/String;
|
|
|
|
iput-boolean v3, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
iput v3, p0, Lorg/webrtc/CameraCapturer;->openAttemptsRemaining:I
|
|
|
|
const/4 v0, 0x0
|
|
|
|
invoke-direct {p0, v0, p1}, Lorg/webrtc/CameraCapturer;->createSessionInternal(ILandroid/media/MediaRecorder;)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
|
|
|
|
.method private updateMediaRecorderInternal(Landroid/media/MediaRecorder;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
.locals 6
|
|
|
|
invoke-direct {p0}, Lorg/webrtc/CameraCapturer;->checkIsOnCameraThread()V
|
|
|
|
const/4 v0, 0x0
|
|
|
|
const/4 v1, 0x1
|
|
|
|
if-eqz p1, :cond_0
|
|
|
|
const/4 v2, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
const/4 v2, 0x0
|
|
|
|
:goto_0
|
|
const-string v3, "CameraCapturer"
|
|
|
|
new-instance v4, Ljava/lang/StringBuilder;
|
|
|
|
const-string v5, "updateMediaRecoderInternal internal. State: "
|
|
|
|
invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
|
|
|
|
iget-object v5, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderState:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
|
|
|
|
const-string v5, ". Switch state: "
|
|
|
|
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
iget-object v5, p0, Lorg/webrtc/CameraCapturer;->switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
|
|
|
|
const-string v5, ". Add MediaRecorder: "
|
|
|
|
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v4
|
|
|
|
invoke-static {v3, v4}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
iget-object v3, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
monitor-enter v3
|
|
|
|
if-eqz v2, :cond_1
|
|
|
|
:try_start_0
|
|
iget-object v4, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderState:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
sget-object v5, Lorg/webrtc/CameraCapturer$MediaRecorderState;->IDLE:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
if-ne v4, v5, :cond_2
|
|
|
|
goto :goto_1
|
|
|
|
:catchall_0
|
|
move-exception p1
|
|
|
|
goto :goto_3
|
|
|
|
:cond_1
|
|
:goto_1
|
|
if-nez v2, :cond_3
|
|
|
|
iget-object v4, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderState:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
sget-object v5, Lorg/webrtc/CameraCapturer$MediaRecorderState;->ACTIVE:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
if-eq v4, v5, :cond_3
|
|
|
|
:cond_2
|
|
const-string p1, "Incorrect state for MediaRecorder update."
|
|
|
|
invoke-direct {p0, p1, p2}, Lorg/webrtc/CameraCapturer;->reportUpdateMediaRecorderError(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
|
|
monitor-exit v3
|
|
|
|
return-void
|
|
|
|
:cond_3
|
|
iget-object v4, p0, Lorg/webrtc/CameraCapturer;->switchState:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
sget-object v5, Lorg/webrtc/CameraCapturer$SwitchState;->IDLE:Lorg/webrtc/CameraCapturer$SwitchState;
|
|
|
|
if-eq v4, v5, :cond_4
|
|
|
|
const-string p1, "MediaRecorder update while camera is switching."
|
|
|
|
invoke-direct {p0, p1, p2}, Lorg/webrtc/CameraCapturer;->reportUpdateMediaRecorderError(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
|
|
monitor-exit v3
|
|
|
|
return-void
|
|
|
|
:cond_4
|
|
iget-object v4, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
if-nez v4, :cond_5
|
|
|
|
const-string p1, "MediaRecorder update while camera is closed."
|
|
|
|
invoke-direct {p0, p1, p2}, Lorg/webrtc/CameraCapturer;->reportUpdateMediaRecorderError(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
|
|
monitor-exit v3
|
|
|
|
return-void
|
|
|
|
:cond_5
|
|
iget-boolean v4, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
if-eqz v4, :cond_6
|
|
|
|
const-string p1, "MediaRecorder update while camera is still opening."
|
|
|
|
invoke-direct {p0, p1, p2}, Lorg/webrtc/CameraCapturer;->reportUpdateMediaRecorderError(Ljava/lang/String;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
|
|
monitor-exit v3
|
|
|
|
return-void
|
|
|
|
:cond_6
|
|
iput-object p2, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderEventsHandler:Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;
|
|
|
|
if-eqz v2, :cond_7
|
|
|
|
sget-object p2, Lorg/webrtc/CameraCapturer$MediaRecorderState;->IDLE_TO_ACTIVE:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
goto :goto_2
|
|
|
|
:cond_7
|
|
sget-object p2, Lorg/webrtc/CameraCapturer$MediaRecorderState;->ACTIVE_TO_IDLE:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
:goto_2
|
|
iput-object p2, p0, Lorg/webrtc/CameraCapturer;->mediaRecorderState:Lorg/webrtc/CameraCapturer$MediaRecorderState;
|
|
|
|
const-string p2, "CameraCapturer"
|
|
|
|
const-string v2, "updateMediaRecoder: Stopping session"
|
|
|
|
invoke-static {p2, v2}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
iget-object p2, p0, Lorg/webrtc/CameraCapturer;->cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
invoke-virtual {p2}, Lorg/webrtc/CameraVideoCapturer$CameraStatistics;->release()V
|
|
|
|
const/4 p2, 0x0
|
|
|
|
iput-object p2, p0, Lorg/webrtc/CameraCapturer;->cameraStatistics:Lorg/webrtc/CameraVideoCapturer$CameraStatistics;
|
|
|
|
iget-object v2, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
iget-object v4, p0, Lorg/webrtc/CameraCapturer;->cameraThreadHandler:Landroid/os/Handler;
|
|
|
|
new-instance v5, Lorg/webrtc/CameraCapturer$11;
|
|
|
|
invoke-direct {v5, p0, v2}, Lorg/webrtc/CameraCapturer$11;-><init>(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraSession;)V
|
|
|
|
invoke-virtual {v4, v5}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
|
|
|
|
iput-object p2, p0, Lorg/webrtc/CameraCapturer;->currentSession:Lorg/webrtc/CameraSession;
|
|
|
|
iput-boolean v1, p0, Lorg/webrtc/CameraCapturer;->sessionOpening:Z
|
|
|
|
iput v1, p0, Lorg/webrtc/CameraCapturer;->openAttemptsRemaining:I
|
|
|
|
invoke-direct {p0, v0, p1}, Lorg/webrtc/CameraCapturer;->createSessionInternal(ILandroid/media/MediaRecorder;)V
|
|
|
|
monitor-exit v3
|
|
:try_end_0
|
|
.catchall {:try_start_0 .. :try_end_0} :catchall_0
|
|
|
|
const-string p1, "CameraCapturer"
|
|
|
|
const-string p2, "updateMediaRecoderInternal done"
|
|
|
|
invoke-static {p1, p2}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
return-void
|
|
|
|
:goto_3
|
|
:try_start_1
|
|
monitor-exit v3
|
|
:try_end_1
|
|
.catchall {:try_start_1 .. :try_end_1} :catchall_0
|
|
|
|
throw p1
|
|
.end method
|
|
|
|
|
|
# virtual methods
|
|
.method public addMediaRecorderToCamera(Landroid/media/MediaRecorder;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
.locals 2
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "addMediaRecorderToCamera"
|
|
|
|
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$8;
|
|
|
|
invoke-direct {v1, p0, p1, p2}, Lorg/webrtc/CameraCapturer$8;-><init>(Lorg/webrtc/CameraCapturer;Landroid/media/MediaRecorder;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
|
|
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public changeCaptureFormat(III)V
|
|
.locals 3
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
new-instance v1, Ljava/lang/StringBuilder;
|
|
|
|
const-string v2, "changeCaptureFormat: "
|
|
|
|
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
|
|
|
|
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
const-string v2, "x"
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
const-string v2, "@"
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
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 protected abstract createCameraSession(Lorg/webrtc/CameraSession$CreateSessionCallback;Lorg/webrtc/CameraSession$Events;Landroid/content/Context;Lorg/webrtc/SurfaceTextureHelper;Landroid/media/MediaRecorder;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 protected 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/VideoCapturer$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/VideoCapturer$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 v1, v0
|
|
|
|
const/4 v2, 0x0
|
|
|
|
:goto_1
|
|
if-ge v2, v1, :cond_1
|
|
|
|
aget-object v3, v0, v2
|
|
|
|
const-string v4, "CameraCapturer"
|
|
|
|
invoke-virtual {v3}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v3
|
|
|
|
invoke-static {v4, v3}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
add-int/lit8 v2, v2, 0x1
|
|
|
|
goto :goto_1
|
|
|
|
:cond_1
|
|
return-void
|
|
.end method
|
|
|
|
.method public removeMediaRecorderFromCamera(Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
.locals 2
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
const-string v1, "removeMediaRecorderFromCamera"
|
|
|
|
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$9;
|
|
|
|
invoke-direct {v1, p0, p1}, Lorg/webrtc/CameraCapturer$9;-><init>(Lorg/webrtc/CameraCapturer;Lorg/webrtc/CameraVideoCapturer$MediaRecorderHandler;)V
|
|
|
|
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public startCapture(III)V
|
|
.locals 3
|
|
|
|
const-string v0, "CameraCapturer"
|
|
|
|
new-instance v1, Ljava/lang/StringBuilder;
|
|
|
|
const-string v2, "startCapture: "
|
|
|
|
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
|
|
|
|
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
const-string v2, "x"
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
const-string v2, "@"
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
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
|
|
|
|
const/4 p2, 0x0
|
|
|
|
invoke-direct {p0, p1, p2}, Lorg/webrtc/CameraCapturer;->createSessionInternal(ILandroid/media/MediaRecorder;)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
|
|
|
|
iget-object v1, p0, Lorg/webrtc/CameraCapturer;->stateLock:Ljava/lang/Object;
|
|
|
|
invoke-static {v1}, Lorg/webrtc/ThreadUtils;->waitUninterruptibly(Ljava/lang/Object;)V
|
|
|
|
goto :goto_0
|
|
|
|
: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/VideoCapturer$CapturerObserver;
|
|
|
|
invoke-interface {v1}, Lorg/webrtc/VideoCapturer$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_0
|
|
.catchall {:try_start_0 .. :try_end_0} :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_1
|
|
monitor-exit v0
|
|
:try_end_1
|
|
.catchall {:try_start_1 .. :try_end_1} :catchall_0
|
|
|
|
throw v1
|
|
|
|
return-void
|
|
.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
|