VideoCaptureCamera1.smali

.class public Lio/agora/rtc2/video/VideoCaptureCamera1;
.super Lio/agora/rtc2/video/VideoCaptureCamera;
.source "VideoCaptureCamera1.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lio/agora/rtc2/video/VideoCaptureCamera1$CrErrorCallback;,
        Lio/agora/rtc2/video/VideoCaptureCamera1$BuggyDeviceHack;
    }
.end annotation


# static fields
.field private static final COLOR_TEMPERATURES_MAP:Landroid/util/SparseArray;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Landroid/util/SparseArray<",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation
.end field

.field private static final DEBUG:Z = false

.field private static final GL_TEXTURE_EXTERNAL_OES:I = 0x8d65

.field private static IMAGE_FORMAT:I = 0x0

.field private static final NUM_CAPTURE_BUFFERS:I = 0x3

.field private static final TAG:Ljava/lang/String; = "VideoCaptureCamera1"


# instance fields
.field private mAreaOfInterest:Landroid/hardware/Camera$Area;

.field private mCamera:Landroid/hardware/Camera;

.field private mExpectedFrameSize:I

.field private mIsRunning:Z

.field private final mObjectLock:Ljava/lang/Object;

.field private mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

.field private mPreviewParameters:Landroid/hardware/Camera$Parameters;


# direct methods
.method static constructor <clinit>()V
    .registers 3

    .line 70
    new-instance v0, Landroid/util/SparseArray;

    invoke-direct {v0}, Landroid/util/SparseArray;-><init>()V

    sput-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->COLOR_TEMPERATURES_MAP:Landroid/util/SparseArray;

    const/16 v1, 0xb22

    const-string v2, "incandescent"

    .line 71
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseArray;->append(ILjava/lang/Object;)V

    const/16 v1, 0xb86

    const-string v2, "warm-fluorescent"

    .line 73
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseArray;->append(ILjava/lang/Object;)V

    const/16 v1, 0x109a

    const-string v2, "fluorescent"

    .line 75
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseArray;->append(ILjava/lang/Object;)V

    const/16 v1, 0x11f8

    const-string v2, "twilight"

    .line 77
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseArray;->append(ILjava/lang/Object;)V

    const/16 v1, 0x157c

    const-string v2, "daylight"

    .line 78
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseArray;->append(ILjava/lang/Object;)V

    const/16 v1, 0x1770

    const-string v2, "cloudy-daylight"

    .line 79
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseArray;->append(ILjava/lang/Object;)V

    const/16 v1, 0x1b58

    const-string v2, "shade"

    .line 81
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseArray;->append(ILjava/lang/Object;)V

    const/16 v0, 0x11

    .line 115
    sput v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->IMAGE_FORMAT:I

    return-void
.end method

.method constructor <init>(IJZZILio/agora/base/internal/video/EglBase$Context;)V
    .registers 8

    .line 321
    invoke-direct/range {p0 .. p7}, Lio/agora/rtc2/video/VideoCaptureCamera;-><init>(IJZZILio/agora/base/internal/video/EglBase$Context;)V

    .line 124
    new-instance p1, Ljava/util/concurrent/locks/ReentrantLock;

    invoke-direct {p1}, Ljava/util/concurrent/locks/ReentrantLock;-><init>()V

    iput-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    .line 128
    new-instance p1, Ljava/lang/Object;

    invoke-direct {p1}, Ljava/lang/Object;-><init>()V

    iput-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mObjectLock:Ljava/lang/Object;

    return-void
.end method

.method static synthetic access$000()Ljava/lang/String;
    .registers 1

    .line 59
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    return-object v0
.end method

.method static synthetic access$100(Lio/agora/rtc2/video/VideoCaptureCamera1;)Landroid/hardware/Camera;
    .registers 1

    .line 59
    iget-object p0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    return-object p0
.end method

.method static synthetic access$1000(Lio/agora/rtc2/video/VideoCaptureCamera1;)I
    .registers 1

    .line 59
    iget p0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mExpectedFrameSize:I

    return p0
.end method

.method static synthetic access$102(Lio/agora/rtc2/video/VideoCaptureCamera1;Landroid/hardware/Camera;)Landroid/hardware/Camera;
    .registers 2

    .line 59
    iput-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    return-object p1
.end method

.method static synthetic access$200(Lio/agora/rtc2/video/VideoCaptureCamera1;[Landroid/hardware/Camera$Face;)V
    .registers 2

    .line 59
    invoke-direct {p0, p1}, Lio/agora/rtc2/video/VideoCaptureCamera1;->notifyFaceDetection([Landroid/hardware/Camera$Face;)V

    return-void
.end method

.method static synthetic access$300(Lio/agora/rtc2/video/VideoCaptureCamera1;)V
    .registers 1

    .line 59
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->safetyStopFaceDetection()V

    return-void
.end method

.method static synthetic access$400(Lio/agora/rtc2/video/VideoCaptureCamera1;)Ljava/lang/Object;
    .registers 1

    .line 59
    iget-object p0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mObjectLock:Ljava/lang/Object;

    return-object p0
.end method

.method static synthetic access$500(Lio/agora/rtc2/video/VideoCaptureCamera1;I)Ljava/lang/String;
    .registers 2

    .line 59
    invoke-direct {p0, p1}, Lio/agora/rtc2/video/VideoCaptureCamera1;->toCamera1ABMode(I)Ljava/lang/String;

    move-result-object p0

    return-object p0
.end method

.method static synthetic access$600(Ljava/lang/String;Ljava/util/List;)Z
    .registers 2

    .line 59
    invoke-static {p0, p1}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isSupported(Ljava/lang/String;Ljava/util/List;)Z

    move-result p0

    return p0
.end method

.method static synthetic access$700(Lio/agora/rtc2/video/VideoCaptureCamera1;)Ljava/util/concurrent/locks/ReentrantLock;
    .registers 1

    .line 59
    iget-object p0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    return-object p0
.end method

.method static synthetic access$800(Lio/agora/rtc2/video/VideoCaptureCamera1;)Z
    .registers 1

    .line 59
    iget-boolean p0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsRunning:Z

    return p0
.end method

.method static synthetic access$901(Lio/agora/rtc2/video/VideoCaptureCamera1;I)V
    .registers 2

    .line 59
    invoke-super {p0, p1}, Lio/agora/rtc2/video/VideoCaptureCamera;->onFrameDropped(I)V

    return-void
.end method

.method private static getCameraInfo(I)Landroid/hardware/Camera$CameraInfo;
    .registers 4

    .line 132
    new-instance v0, Landroid/hardware/Camera$CameraInfo;

    invoke-direct {v0}, Landroid/hardware/Camera$CameraInfo;-><init>()V

    .line 134
    :try_start_5
    invoke-static {p0, v0}, Landroid/hardware/Camera;->getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V
    :try_end_8
    .catch Ljava/lang/RuntimeException; {:try_start_5 .. :try_end_8} :catch_9

    return-object v0

    :catch_9
    move-exception p0

    .line 136
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "getCameraInfo: Camera.getCameraInfo: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Ljava/lang/RuntimeException;->getMessage()Ljava/lang/String;

    move-result-object p0

    invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0

    invoke-static {v0, p0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    const/4 p0, 0x0

    return-object p0
.end method

.method static getCaptureApiType(I)I
    .registers 1

    .line 189
    invoke-static {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraInfo(I)Landroid/hardware/Camera$CameraInfo;

    move-result-object p0

    if-nez p0, :cond_9

    const/16 p0, 0xb

    return p0

    :cond_9
    const/4 p0, 0x6

    return p0
.end method

.method private getClosestWhiteBalance(ILjava/util/List;)Ljava/lang/String;
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(I",
            "Ljava/util/List<",
            "Ljava/lang/String;",
            ">;)",
            "Ljava/lang/String;"
        }
    .end annotation

    const v0, 0x7fffffff

    const/4 v1, 0x0

    const/4 v2, 0x0

    .line 147
    :goto_5
    sget-object v3, Lio/agora/rtc2/video/VideoCaptureCamera1;->COLOR_TEMPERATURES_MAP:Landroid/util/SparseArray;

    invoke-virtual {v3}, Landroid/util/SparseArray;->size()I

    move-result v4

    if-ge v2, v4, :cond_30

    .line 148
    invoke-virtual {v3, v2}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;

    move-result-object v4

    invoke-interface {p2, v4}, Ljava/util/List;->contains(Ljava/lang/Object;)Z

    move-result v4

    if-nez v4, :cond_18

    goto :goto_2d

    .line 150
    :cond_18
    invoke-virtual {v3, v2}, Landroid/util/SparseArray;->keyAt(I)I

    move-result v4

    sub-int v4, p1, v4

    invoke-static {v4}, Ljava/lang/Math;->abs(I)I

    move-result v4

    if-lt v4, v0, :cond_25

    goto :goto_2d

    .line 154
    :cond_25
    invoke-virtual {v3, v2}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    move-object v1, v0

    move v0, v4

    :goto_2d
    add-int/lit8 v2, v2, 0x1

    goto :goto_5

    :cond_30
    return-object v1
.end method

.method static getDeviceId(I)Ljava/lang/String;
    .registers 1

    .line 224
    invoke-static {p0}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;

    move-result-object p0

    return-object p0
.end method

.method static getDeviceSupportedFormats(I)Ljava/util/List;
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(I)",
            "Ljava/util/List<",
            "Lio/agora/rtc2/video/VideoCaptureFormat;",
            ">;"
        }
    .end annotation

    .line 229
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "getDeviceSupportedFormats() "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p0}, 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}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    const/4 v0, 0x0

    .line 234
    :try_start_17
    invoke-static {p0}, Landroid/hardware/Camera;->open(I)Landroid/hardware/Camera;

    move-result-object v1
    :try_end_1b
    .catch Ljava/lang/RuntimeException; {:try_start_17 .. :try_end_1b} :catch_5c

    if-nez v1, :cond_1e

    return-object v0

    .line 245
    :cond_1e
    :try_start_1e
    invoke-virtual {v1}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0
    :try_end_22
    .catch Ljava/lang/RuntimeException; {:try_start_1e .. :try_end_22} :catch_23

    goto :goto_3a

    :catch_23
    move-exception v2

    .line 247
    sget-object v3, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v4, Ljava/lang/StringBuilder;

    invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V

    const-string v5, "Failed to get camera parameters "

    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v4, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-static {v3, v4, v2}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 249
    :goto_3a
    sget v2, Lio/agora/rtc2/video/VideoCaptureCamera1;->IMAGE_FORMAT:I

    invoke-static {v0, v2}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getFormatsFromParemeters(Landroid/hardware/Camera$Parameters;I)Ljava/util/List;

    move-result-object v0

    .line 251
    :try_start_40
    invoke-virtual {v1}, Landroid/hardware/Camera;->release()V
    :try_end_43
    .catch Ljava/lang/Exception; {:try_start_40 .. :try_end_43} :catch_44

    goto :goto_5b

    :catch_44
    move-exception v1

    .line 253
    sget-object v2, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "Failed to release camera: "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0

    invoke-static {v2, p0, v1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :goto_5b
    return-object v0

    :catch_5c
    move-exception p0

    .line 236
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "Camera.open: "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Ljava/lang/RuntimeException;->getMessage()Ljava/lang/String;

    move-result-object p0

    invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0

    invoke-static {v1, p0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return-object v0
.end method

.method static getFacingMode(I)I
    .registers 3

    .line 196
    invoke-static {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraInfo(I)Landroid/hardware/Camera$CameraInfo;

    move-result-object p0

    const/4 v0, 0x0

    if-nez p0, :cond_8

    return v0

    .line 201
    :cond_8
    iget p0, p0, Landroid/hardware/Camera$CameraInfo;->facing:I

    if-eqz p0, :cond_11

    const/4 v1, 0x1

    if-eq p0, v1, :cond_10

    return v0

    :cond_10
    return v1

    :cond_11
    const/4 p0, 0x2

    return p0
.end method

.method private static getFormatsFromParemeters(Landroid/hardware/Camera$Parameters;I)Ljava/util/List;
    .registers 10
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Landroid/hardware/Camera$Parameters;",
            "I)",
            "Ljava/util/List<",
            "Lio/agora/rtc2/video/VideoCaptureFormat;",
            ">;"
        }
    .end annotation

    .line 261
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "getFormatsFromParemeters() "

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 262
    new-instance v1, Ljava/util/ArrayList;

    invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V

    if-nez p0, :cond_f

    return-object v1

    .line 267
    :cond_f
    invoke-virtual {p0}, Landroid/hardware/Camera$Parameters;->getSupportedPreviewFormats()Ljava/util/List;

    move-result-object v2

    if-eqz v2, :cond_bf

    .line 268
    invoke-interface {v2}, Ljava/util/List;->isEmpty()Z

    move-result v3

    if-eqz v3, :cond_1d

    goto/16 :goto_bf

    .line 273
    :cond_1d
    invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v0

    :cond_21
    :goto_21
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v2

    if-eqz v2, :cond_be

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Ljava/lang/Integer;

    .line 276
    invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I

    move-result v2

    if-eq v2, p1, :cond_34

    goto :goto_21

    :cond_34
    const/16 v2, 0x11

    const/4 v3, 0x0

    .line 285
    :try_start_37
    invoke-virtual {p0}, Landroid/hardware/Camera$Parameters;->getSupportedPreviewFpsRange()Ljava/util/List;

    move-result-object v3
    :try_end_3b
    .catch Ljava/lang/StringIndexOutOfBoundsException; {:try_start_37 .. :try_end_3b} :catch_3c

    goto :goto_57

    :catch_3c
    move-exception v4

    .line 287
    sget-object v5, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string v7, "Camera.Parameters.getSupportedPreviewFpsRange: "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v4}, Ljava/lang/StringIndexOutOfBoundsException;->getMessage()Ljava/lang/String;

    move-result-object v4

    invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-static {v5, v4}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :goto_57
    if-nez v3, :cond_5e

    .line 290
    new-instance v3, Ljava/util/ArrayList;

    invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V

    .line 292
    :cond_5e
    invoke-interface {v3}, Ljava/util/List;->size()I

    move-result v4

    if-nez v4, :cond_6d

    const/4 v4, 0x2

    new-array v4, v4, [I

    .line 293
    fill-array-data v4, :array_c6

    invoke-interface {v3, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    :cond_6d
    const/4 v4, 0x0

    .line 298
    invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_72
    :goto_72
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v5

    if-eqz v5, :cond_89

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v5

    check-cast v5, [I

    const/4 v6, 0x1

    .line 299
    aget v5, v5, v6

    add-int/lit16 v5, v5, 0x3e7

    div-int/lit16 v5, v5, 0x3e8

    if-ge v4, v5, :cond_72

    move v4, v5

    goto :goto_72

    .line 305
    :cond_89
    invoke-virtual {p0}, Landroid/hardware/Camera$Parameters;->getSupportedPreviewSizes()Ljava/util/List;

    move-result-object v3

    if-eqz v3, :cond_21

    .line 306
    invoke-interface {v3}, Ljava/util/List;->isEmpty()Z

    move-result v5

    if-eqz v5, :cond_96

    goto :goto_21

    .line 309
    :cond_96
    invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :goto_9a
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v5

    if-eqz v5, :cond_21

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Landroid/hardware/Camera$Size;

    .line 310
    iget v6, v5, Landroid/hardware/Camera$Size;->width:I

    iget v7, v5, Landroid/hardware/Camera$Size;->height:I

    invoke-static {v6, v7}, Lio/agora/rtc2/video/VideoCaptureCamera1;->shouldExcludeSize(II)Z

    move-result v6

    if-eqz v6, :cond_b1

    goto :goto_9a

    .line 313
    :cond_b1
    new-instance v6, Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v7, v5, Landroid/hardware/Camera$Size;->width:I

    iget v5, v5, Landroid/hardware/Camera$Size;->height:I

    invoke-direct {v6, v7, v5, v4, v2}, Lio/agora/rtc2/video/VideoCaptureFormat;-><init>(IIII)V

    invoke-interface {v1, v6}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_9a

    :cond_be
    return-object v1

    :cond_bf
    :goto_bf
    const-string p0, "failed to getFormatsFromParemeters, preview formats null or empty"

    .line 269
    invoke-static {v0, p0}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    return-object v1

    nop

    :array_c6
    .array-data 4
        0x0
        0x0
    .end array-data
.end method

.method static getName(I)Ljava/lang/String;
    .registers 4

    .line 213
    invoke-static {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraInfo(I)Landroid/hardware/Camera$CameraInfo;

    move-result-object v0

    if-nez v0, :cond_8

    const/4 p0, 0x0

    return-object p0

    .line 217
    :cond_8
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "camera "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string p0, ", facing "

    invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 218
    iget p0, v0, Landroid/hardware/Camera$CameraInfo;->facing:I

    const/4 v0, 0x1

    if-ne p0, v0, :cond_22

    const-string p0, "front"

    goto :goto_24

    :cond_22
    const-string p0, "back"

    .line 219
    :goto_24
    invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0

    return-object p0
.end method

.method static getNumberOfCameras()I
    .registers 4

    .line 181
    :try_start_0
    invoke-static {}, Landroid/hardware/Camera;->getNumberOfCameras()I

    move-result v0
    :try_end_4
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_4} :catch_5

    goto :goto_21

    :catch_5
    move-exception v0

    .line 183
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "getNumberOfCameras: "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v1, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    const/4 v0, 0x0

    :goto_21
    return v0
.end method

.method private getZoomRatios()Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List<",
            "Ljava/lang/Integer;",
            ">;"
        }
    .end annotation

    .line 1504
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v0, :cond_13

    .line 1505
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    .line 1506
    invoke-direct {p0, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isZoomSupported(Landroid/hardware/Camera$Parameters;)Z

    move-result v1

    if-eqz v1, :cond_13

    .line 1507
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getZoomRatios()Ljava/util/List;

    move-result-object v0

    return-object v0

    :cond_13
    const/4 v0, 0x0

    return-object v0
.end method

.method private static isSupported(Ljava/lang/String;Ljava/util/List;)Z
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/String;",
            "Ljava/util/List<",
            "Ljava/lang/String;",
            ">;)Z"
        }
    .end annotation

    if-eqz p1, :cond_a

    .line 1567
    invoke-interface {p1, p0}, Ljava/util/List;->indexOf(Ljava/lang/Object;)I

    move-result p0

    if-ltz p0, :cond_a

    const/4 p0, 0x1

    goto :goto_b

    :cond_a
    const/4 p0, 0x0

    :goto_b
    return p0
.end method

.method private isZoomSupported(Landroid/hardware/Camera$Parameters;)Z
    .registers 4

    const/4 v0, 0x0

    if-eqz p1, :cond_12

    .line 1515
    invoke-virtual {p1}, Landroid/hardware/Camera$Parameters;->isZoomSupported()Z

    move-result p1

    if-eqz p1, :cond_b

    const/4 p1, 0x1

    return p1

    .line 1519
    :cond_b
    sget-object p1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "camera zoom is not supported!"

    invoke-static {p1, v1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    :cond_12
    return v0
.end method

.method private listenForBytebufferFrames()V
    .registers 3

    .line 1447
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    new-instance v1, Lio/agora/rtc2/video/VideoCaptureCamera1$12;

    invoke-direct {v1, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$12;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    invoke-virtual {v0, v1}, Landroid/hardware/Camera;->setPreviewCallbackWithBuffer(Landroid/hardware/Camera$PreviewCallback;)V

    return-void
.end method

.method private listenForTextureFrames()V
    .registers 3

    .line 1413
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mSurfaceTextureHelper:Lio/agora/base/internal/video/ISurfaceTextureHelper;

    if-nez v0, :cond_5

    return-void

    .line 1416
    :cond_5
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mSurfaceTextureHelper:Lio/agora/base/internal/video/ISurfaceTextureHelper;

    new-instance v1, Lio/agora/rtc2/video/VideoCaptureCamera1$11;

    invoke-direct {v1, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$11;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    invoke-interface {v0, v1}, Lio/agora/base/internal/video/ISurfaceTextureHelper;->startListening(Lio/agora/base/internal/video/VideoSink;)V

    return-void
.end method

.method private notifyFaceDetection([Landroid/hardware/Camera$Face;)V
    .registers 20

    move-object/from16 v0, p0

    move-object/from16 v1, p1

    .line 1527
    new-instance v2, Ljava/util/ArrayList;

    invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V

    .line 1528
    new-instance v3, Ljava/util/ArrayList;

    invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V

    .line 1531
    iget v4, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    const/4 v5, 0x1

    .line 1535
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v4

    iput-object v4, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    if-eqz v4, :cond_ca

    .line 1536
    invoke-virtual {v4}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v4

    if-nez v4, :cond_21

    goto/16 :goto_ca

    .line 1539
    :cond_21
    array-length v4, v1

    const/4 v6, 0x0

    move v7, v6

    :goto_24
    if-ge v7, v4, :cond_b4

    aget-object v8, v1, v7

    .line 1540
    new-instance v9, Landroid/graphics/RectF;

    iget-object v8, v8, Landroid/hardware/Camera$Face;->rect:Landroid/graphics/Rect;

    invoke-direct {v9, v8}, Landroid/graphics/RectF;-><init>(Landroid/graphics/Rect;)V

    invoke-static {v9}, Lio/agora/rtc2/video/CoordinatesTransform;->cameraToNormalized(Landroid/graphics/RectF;)Landroid/graphics/RectF;

    move-result-object v10

    if-nez v10, :cond_37

    goto/16 :goto_b0

    .line 1544
    :cond_37
    iget v8, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v8, v5, :cond_4f

    const-wide v8, 0x4026795810624dd3L    # 11.237

    .line 1545
    invoke-virtual {v10}, Landroid/graphics/RectF;->width()F

    move-result v11

    float-to-double v11, v11

    const-wide v13, -0x40115810624dd2f2L    # -0.958

    invoke-static {v11, v12, v13, v14}, Ljava/lang/Math;->pow(DD)D

    move-result-wide v11

    goto :goto_62

    :cond_4f
    const-wide v8, 0x402d7020c49ba5e3L    # 14.719

    .line 1546
    invoke-virtual {v10}, Landroid/graphics/RectF;->height()F

    move-result v11

    float-to-double v11, v11

    const-wide v13, -0x4010ed916872b021L    # -0.971

    invoke-static {v11, v12, v13, v14}, Ljava/lang/Math;->pow(DD)D

    move-result-wide v11

    :goto_62
    mul-double/2addr v11, v8

    .line 1544
    invoke-static {v11, v12}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;

    move-result-object v8

    invoke-virtual {v3, v8}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 1547
    iget-object v8, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v8}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v11

    iget-object v8, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v8}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v12

    iget-object v8, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    .line 1548
    invoke-virtual {v8}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v8

    iget v13, v8, Landroid/hardware/Camera$Size;->width:I

    iget-object v8, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    invoke-virtual {v8}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v8

    iget v14, v8, Landroid/hardware/Camera$Size;->height:I

    iget v8, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v8, v5, :cond_8c

    move v15, v5

    goto :goto_8d

    :cond_8c
    move v15, v6

    .line 1550
    :goto_8d
    iget v8, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v8, v5, :cond_93

    move v8, v5

    goto :goto_94

    :cond_93
    const/4 v8, -0x1

    :goto_94
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraRotation()I

    move-result v9

    mul-int v16, v8, v9

    iget v8, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderMode:I

    move/from16 v17, v8

    .line 1547
    invoke-static/range {v10 .. v17}, Lio/agora/rtc2/video/CoordinatesTransform;->normalizedToView(Landroid/graphics/RectF;IIIIZII)Landroid/graphics/RectF;

    move-result-object v8

    if-nez v8, :cond_ad

    .line 1553
    invoke-virtual {v3}, Ljava/util/ArrayList;->size()I

    move-result v8

    sub-int/2addr v8, v5

    invoke-virtual {v3, v8}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;

    goto :goto_b0

    .line 1556
    :cond_ad
    invoke-virtual {v2, v8}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    :goto_b0
    add-int/lit8 v7, v7, 0x1

    goto/16 :goto_24

    .line 1558
    :cond_b4
    invoke-virtual {v2}, Ljava/util/ArrayList;->isEmpty()Z

    move-result v1

    if-eqz v1, :cond_bb

    return-void

    .line 1562
    :cond_bb
    iget-object v1, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    .line 1563
    invoke-virtual {v1}, Lio/agora/rtc2/video/VideoCaptureFormat;->getWidth()I

    move-result v1

    iget-object v4, v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    invoke-virtual {v4}, Lio/agora/rtc2/video/VideoCaptureFormat;->getHeight()I

    move-result v4

    .line 1562
    invoke-virtual {v0, v1, v4, v2, v3}, Lio/agora/rtc2/video/VideoCaptureCamera1;->notifyFaceDetection(IILjava/util/ArrayList;Ljava/util/ArrayList;)V

    :cond_ca
    :goto_ca
    return-void
.end method

.method private onFaceDetectionRequestChanged()V
    .registers 4

    .line 587
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mEnableAutoFaceFocus:Z

    if-eqz v0, :cond_20

    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isAutoFaceFocusSupported()Z

    move-result v0

    if-eqz v0, :cond_20

    .line 588
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "startFaceDetection for auto focus enabled"

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 589
    new-instance v0, Lio/agora/rtc2/video/VideoCaptureCamera1$3;

    invoke-direct {v0, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$3;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    .line 660
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isFaceDetectSupported()Z

    move-result v1

    if-eqz v1, :cond_3d

    .line 661
    invoke-direct {p0, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->safetyStarFaceDetection(Landroid/hardware/Camera$FaceDetectionListener;)V

    goto :goto_3d

    .line 663
    :cond_20
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mEnableFaceDetection:Z

    if-eqz v0, :cond_3a

    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isFaceDetectSupported()Z

    move-result v0

    if-eqz v0, :cond_3a

    .line 664
    new-instance v0, Lio/agora/rtc2/video/VideoCaptureCamera1$4;

    invoke-direct {v0, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$4;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    .line 671
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v2, "startFaceDetection for face dectect enabled"

    invoke-static {v1, v2}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 672
    invoke-direct {p0, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->safetyStarFaceDetection(Landroid/hardware/Camera$FaceDetectionListener;)V

    goto :goto_3d

    .line 674
    :cond_3a
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->safetyStopFaceDetection()V

    :cond_3d
    :goto_3d
    return-void
.end method

.method private releaseCamera()V
    .registers 5

    .line 1387
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    if-nez v0, :cond_c

    .line 1388
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "proxyThread unavailable"

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return-void

    .line 1392
    :cond_c
    :try_start_c
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    const-wide/16 v1, 0x7d0

    new-instance v3, Lio/agora/rtc2/video/VideoCaptureCamera1$10;

    invoke-direct {v3, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$10;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    invoke-static {v0, v1, v2, v3}, Lio/agora/base/internal/ThreadUtils;->invokeAtFrontUninterruptibly(Landroid/os/Handler;JLjava/util/concurrent/Callable;)Ljava/lang/Object;
    :try_end_18
    .catch Ljava/lang/Exception; {:try_start_c .. :try_end_18} :catch_19

    goto :goto_34

    :catch_19
    move-exception v0

    .line 1408
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "releaseCamera: failed to release camera, "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v1, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :goto_34
    return-void
.end method

.method private safetyStarFaceDetection(Landroid/hardware/Camera$FaceDetectionListener;)V
    .registers 5

    .line 679
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "facedetect: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget-boolean v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mEnableFaceDetection:Z

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 681
    :try_start_18
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v0, :cond_4b

    .line 682
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsFaceDetectionStarted:Z

    if-eqz v0, :cond_25

    .line 683
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v0}, Landroid/hardware/Camera;->stopFaceDetection()V

    .line 685
    :cond_25
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v0, p1}, Landroid/hardware/Camera;->setFaceDetectionListener(Landroid/hardware/Camera$FaceDetectionListener;)V

    .line 686
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {p1}, Landroid/hardware/Camera;->startFaceDetection()V

    const/4 p1, 0x1

    .line 687
    iput-boolean p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsFaceDetectionStarted:Z
    :try_end_32
    .catch Ljava/lang/Exception; {:try_start_18 .. :try_end_32} :catch_33

    goto :goto_4b

    :catch_33
    move-exception p1

    .line 690
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "Failed to stop face detection"

    invoke-static {v0, v1, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 691
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz p1, :cond_4b

    .line 692
    invoke-virtual {p1}, Landroid/hardware/Camera;->stopFaceDetection()V

    .line 693
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v0, 0x0

    invoke-virtual {p1, v0}, Landroid/hardware/Camera;->setFaceDetectionListener(Landroid/hardware/Camera$FaceDetectionListener;)V

    const/4 p1, 0x0

    .line 694
    iput-boolean p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsFaceDetectionStarted:Z

    :cond_4b
    :goto_4b
    return-void
.end method

.method private safetyStopFaceDetection()V
    .registers 5

    .line 700
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "stopFaceDetection()"

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    const/4 v0, 0x0

    .line 702
    :try_start_8
    iget-boolean v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsFaceDetectionStarted:Z

    if-eqz v1, :cond_1b

    .line 703
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v1, :cond_13

    .line 704
    invoke-virtual {v1}, Landroid/hardware/Camera;->stopFaceDetection()V

    :cond_13
    const/4 v1, 0x0

    .line 706
    iput-boolean v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsFaceDetectionStarted:Z

    .line 707
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPerFrameFaceDetectionInfoQueue:Ljava/util/concurrent/LinkedBlockingQueue;

    invoke-virtual {v1}, Ljava/util/concurrent/LinkedBlockingQueue;->clear()V
    :try_end_1b
    .catch Ljava/lang/RuntimeException; {:try_start_8 .. :try_end_1b} :catch_25
    .catchall {:try_start_8 .. :try_end_1b} :catchall_23

    .line 712
    :cond_1b
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v1, :cond_32

    .line 713
    :goto_1f
    invoke-virtual {v1, v0}, Landroid/hardware/Camera;->setFaceDetectionListener(Landroid/hardware/Camera$FaceDetectionListener;)V

    goto :goto_32

    :catchall_23
    move-exception v1

    goto :goto_33

    :catch_25
    move-exception v1

    .line 710
    :try_start_26
    sget-object v2, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v3, "Failed to stop face detection"

    invoke-static {v2, v3, v1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    :try_end_2d
    .catchall {:try_start_26 .. :try_end_2d} :catchall_23

    .line 712
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v1, :cond_32

    goto :goto_1f

    :cond_32
    :goto_32
    return-void

    :goto_33
    iget-object v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v2, :cond_3a

    .line 713
    invoke-virtual {v2, v0}, Landroid/hardware/Camera;->setFaceDetectionListener(Landroid/hardware/Camera$FaceDetectionListener;)V

    :cond_3a
    throw v1
.end method

.method private setPreviewFrameRateModeFPS(Landroid/hardware/Camera$Parameters;I)V
    .registers 12

    .line 560
    invoke-virtual {p1}, Landroid/hardware/Camera$Parameters;->getSupportedPreviewFpsRange()Ljava/util/List;

    move-result-object v0

    if-eqz v0, :cond_90

    .line 562
    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v1

    if-nez v1, :cond_e

    goto/16 :goto_90

    :cond_e
    const/4 v1, 0x0

    .line 566
    invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, [I

    aget v2, v2, v1

    const/4 v3, 0x1

    const/16 v4, 0x3e8

    if-le v2, v4, :cond_1e

    move v2, v3

    goto :goto_1f

    :cond_1e
    move v2, v4

    .line 567
    :goto_1f
    new-instance v5, Ljava/util/ArrayList;

    .line 568
    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v6

    invoke-direct {v5, v6}, Ljava/util/ArrayList;-><init>(I)V

    .line 570
    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v0

    :goto_2c
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v6

    if-eqz v6, :cond_47

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v6

    check-cast v6, [I

    .line 571
    new-instance v7, Lio/agora/rtc2/video/VideoCapture$FramerateRange;

    aget v8, v6, v1

    mul-int/2addr v8, v2

    aget v6, v6, v3

    mul-int/2addr v6, v2

    invoke-direct {v7, v8, v6}, Lio/agora/rtc2/video/VideoCapture$FramerateRange;-><init>(II)V

    invoke-interface {v5, v7}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_2c

    :cond_47
    mul-int/2addr p2, v4

    .line 574
    invoke-static {v5, p2, v1}, Lio/agora/rtc2/video/VideoCaptureCamera1;->findBestFrameRateRange(Ljava/util/List;IZ)Lio/agora/rtc2/video/VideoCapture$FramerateRange;

    move-result-object p2

    if-eqz p2, :cond_9a

    .line 576
    iget v0, p2, Lio/agora/rtc2/video/VideoCapture$FramerateRange;->min:I

    div-int/2addr v0, v2

    iget v4, p2, Lio/agora/rtc2/video/VideoCapture$FramerateRange;->max:I

    div-int/2addr v4, v2

    invoke-virtual {p1, v0, v4}, Landroid/hardware/Camera$Parameters;->setPreviewFpsRange(II)V

    .line 578
    sget-object p1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale;

    const/4 v4, 0x4

    new-array v4, v4, [Ljava/lang/Object;

    iget-object v5, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v5, v5, Lio/agora/rtc2/video/VideoCaptureFormat;->mWidth:I

    .line 580
    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    aput-object v5, v4, v1

    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v1, v1, Lio/agora/rtc2/video/VideoCaptureFormat;->mHeight:I

    invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v1

    aput-object v1, v4, v3

    const/4 v1, 0x2

    iget v3, p2, Lio/agora/rtc2/video/VideoCapture$FramerateRange;->min:I

    div-int/2addr v3, v2

    invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v3

    aput-object v3, v4, v1

    const/4 v1, 0x3

    iget p2, p2, Lio/agora/rtc2/video/VideoCapture$FramerateRange;->max:I

    div-int/2addr p2, v2

    .line 581
    invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object p2

    aput-object p2, v4, v1

    const-string p2, "allocate: matched (%d x %d) @[%d - %d], fps first"

    .line 579
    invoke-static {v0, p2, v4}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object p2

    .line 578
    invoke-static {p1, p2}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_9a

    .line 563
    :cond_90
    :goto_90
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "allocate: camera don\'t supported fps first."

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    .line 564
    invoke-virtual {p1, p2}, Landroid/hardware/Camera$Parameters;->setPreviewFrameRate(I)V

    :cond_9a
    :goto_9a
    return-void
.end method

.method private setPreviewFrameRateModePQ(Landroid/hardware/Camera$Parameters;I)V
    .registers 9

    .line 534
    invoke-virtual {p1}, Landroid/hardware/Camera$Parameters;->getSupportedPreviewFrameRates()Ljava/util/List;

    move-result-object v0

    if-eqz v0, :cond_81

    .line 535
    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v1

    if-nez v1, :cond_e

    goto/16 :goto_81

    :cond_e
    const/4 v1, 0x0

    .line 539
    invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Ljava/lang/Integer;

    invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I

    move-result v2

    sub-int/2addr v2, p2

    invoke-static {v2}, Ljava/lang/Math;->abs(I)I

    move-result v2

    .line 540
    invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Ljava/lang/Integer;

    invoke-virtual {v3}, Ljava/lang/Integer;->intValue()I

    move-result v3

    .line 541
    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v0

    :cond_2c
    :goto_2c
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-eqz v4, :cond_4a

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/lang/Integer;

    .line 542
    invoke-virtual {v4}, Ljava/lang/Integer;->intValue()I

    move-result v5

    sub-int/2addr v5, p2

    invoke-static {v5}, Ljava/lang/Math;->abs(I)I

    move-result v5

    if-ge v5, v2, :cond_2c

    .line 545
    invoke-virtual {v4}, Ljava/lang/Integer;->intValue()I

    move-result v2

    move v3, v2

    move v2, v5

    goto :goto_2c

    .line 549
    :cond_4a
    invoke-virtual {p1, v3}, Landroid/hardware/Camera$Parameters;->setPreviewFrameRate(I)V

    .line 550
    sget-object p1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale;

    const/4 v2, 0x4

    new-array v2, v2, [Ljava/lang/Object;

    iget-object v4, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v4, v4, Lio/agora/rtc2/video/VideoCaptureFormat;->mWidth:I

    .line 552
    invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v4

    aput-object v4, v2, v1

    const/4 v1, 0x1

    iget-object v4, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v4, v4, Lio/agora/rtc2/video/VideoCaptureFormat;->mHeight:I

    invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v4

    aput-object v4, v2, v1

    const/4 v1, 0x2

    invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object p2

    aput-object p2, v2, v1

    const/4 p2, 0x3

    invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v1

    aput-object v1, v2, p2

    const-string p2, "allocate: matched (%d x %d) @%d -set- @%d, PQ first"

    .line 551
    invoke-static {v0, p2, v2}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object p2

    .line 550
    invoke-static {p1, p2}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_8b

    .line 536
    :cond_81
    :goto_81
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "allocate: camera don\'t supported PQ first."

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    .line 537
    invoke-direct {p0, p1, p2}, Lio/agora/rtc2/video/VideoCaptureCamera1;->setPreviewFrameRateModeFPS(Landroid/hardware/Camera$Parameters;I)V

    :goto_8b
    return-void
.end method

.method private toCamera1ABMode(I)Ljava/lang/String;
    .registers 3

    if-eqz p1, :cond_11

    const/4 v0, 0x1

    if-eq p1, v0, :cond_e

    const/4 v0, 0x2

    if-eq p1, v0, :cond_b

    const-string p1, "auto"

    return-object p1

    :cond_b
    const-string p1, "60hz"

    return-object p1

    :cond_e
    const-string p1, "50hz"

    return-object p1

    :cond_11
    const-string p1, "off"

    return-object p1
.end method


# virtual methods
.method public allocate(Lio/agora/rtc2/video/VideoCaptureFormat;)Z
    .registers 13

    const-string v0, "allocate: "

    .line 326
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    sget-object v2, Ljava/util/Locale;->US:Ljava/util/Locale;

    const/4 v3, 0x3

    new-array v4, v3, [Ljava/lang/Object;

    .line 327
    invoke-virtual {p1}, Lio/agora/rtc2/video/VideoCaptureFormat;->getWidth()I

    move-result v5

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    const/4 v6, 0x0

    aput-object v5, v4, v6

    .line 328
    invoke-virtual {p1}, Lio/agora/rtc2/video/VideoCaptureFormat;->getHeight()I

    move-result v5

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    const/4 v7, 0x1

    aput-object v5, v4, v7

    invoke-virtual {p1}, Lio/agora/rtc2/video/VideoCaptureFormat;->getFramerate()I

    move-result v5

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    const/4 v8, 0x2

    aput-object v5, v4, v8

    const-string v5, "allocate: requested (%d x %d) @%dfps"

    .line 327
    invoke-static {v2, v5, v4}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v2

    .line 326
    invoke-static {v1, v2}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 330
    iget-object v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mSurfaceTextureHelper:Lio/agora/base/internal/video/ISurfaceTextureHelper;

    if-nez v2, :cond_3d

    const-string p1, "surfaceTextureHelper null"

    .line 332
    invoke-static {v1, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return v6

    .line 336
    :cond_3d
    iget-object v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    if-nez v2, :cond_47

    const-string p1, "proxyThread unavailable"

    .line 337
    invoke-static {v1, p1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v6

    .line 341
    :cond_47
    iget v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    invoke-static {v2}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraInfo(I)Landroid/hardware/Camera$CameraInfo;

    move-result-object v2

    if-nez v2, :cond_69

    .line 343
    new-instance p1, Ljava/lang/StringBuilder;

    invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v0, "failed to get camera info for "

    invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v1, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 344
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->releaseCamera()V

    return v6

    .line 350
    :cond_69
    :try_start_69
    iget-object v4, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    const-wide/16 v9, 0x7d0

    new-instance v5, Lio/agora/rtc2/video/VideoCaptureCamera1$1;

    invoke-direct {v5, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$1;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    invoke-static {v4, v9, v10, v5}, Lio/agora/base/internal/ThreadUtils;->invokeAtFrontUninterruptibly(Landroid/os/Handler;JLjava/util/concurrent/Callable;)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/lang/Boolean;
    :try_end_78
    .catch Ljava/lang/Exception; {:try_start_69 .. :try_end_78} :catch_1ec

    if-eqz v4, :cond_1ec

    .line 366
    invoke-virtual {v4}, Ljava/lang/Boolean;->booleanValue()Z

    move-result v4

    if-nez v4, :cond_82

    goto/16 :goto_1ec

    .line 368
    :cond_82
    iget v4, v2, Landroid/hardware/Camera$CameraInfo;->orientation:I

    iput v4, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraNativeOrientation:I

    .line 370
    iget v2, v2, Landroid/hardware/Camera$CameraInfo;->facing:I

    if-nez v2, :cond_8c

    move v2, v7

    goto :goto_8d

    :cond_8c
    move v2, v6

    :goto_8d
    iput-boolean v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mInvertDeviceOrientationReadings:Z

    .line 372
    sget-object v2, Ljava/util/Locale;->US:Ljava/util/Locale;

    new-array v4, v3, [Ljava/lang/Object;

    .line 374
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getDeviceRotation()I

    move-result v5

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    aput-object v5, v4, v6

    iget v5, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraNativeOrientation:I

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    aput-object v5, v4, v7

    iget-boolean v5, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mInvertDeviceOrientationReadings:Z

    invoke-static {v5}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v5

    aput-object v5, v4, v8

    const-string v5, "allocate: Rotation dev=%d, cam=%d, facing back? %s"

    .line 373
    invoke-static {v2, v5, v4}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v2

    .line 372
    invoke-static {v1, v2}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    const/4 v1, 0x0

    .line 378
    :try_start_b7
    iget-object v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v2}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v1
    :try_end_bd
    .catch Ljava/lang/RuntimeException; {:try_start_b7 .. :try_end_bd} :catch_be

    goto :goto_d7

    :catch_be
    move-exception v2

    .line 380
    sget-object v4, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    const-string v8, "failed to get camera parameters for "

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v8, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v4, v5, v2}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :goto_d7
    if-nez v1, :cond_e4

    .line 383
    sget-object p1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v0, "failed to get camera parameters"

    invoke-static {p1, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 384
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->releaseCamera()V

    return v6

    .line 389
    :cond_e4
    sget v2, Lio/agora/rtc2/video/VideoCaptureCamera1;->IMAGE_FORMAT:I

    invoke-static {v1, v2}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getFormatsFromParemeters(Landroid/hardware/Camera$Parameters;I)Ljava/util/List;

    move-result-object v2

    .line 390
    invoke-static {v2, p1}, Lio/agora/rtc2/video/VideoCaptureCamera1;->FindBestMatchedCapability(Ljava/util/List;Lio/agora/rtc2/video/VideoCaptureFormat;)Lio/agora/rtc2/video/VideoCaptureFormat;

    move-result-object p1

    iput-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    .line 391
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    if-nez p1, :cond_ff

    .line 392
    sget-object p1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v0, "failed to match capability"

    invoke-static {p1, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 393
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->releaseCamera()V

    return v6

    .line 397
    :cond_ff
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget p1, p1, Lio/agora/rtc2/video/VideoCaptureFormat;->mFramerate:I

    .line 398
    iget-boolean v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPQFirst:Z

    if-eqz v2, :cond_10b

    .line 399
    invoke-direct {p0, v1, p1}, Lio/agora/rtc2/video/VideoCaptureCamera1;->setPreviewFrameRateModePQ(Landroid/hardware/Camera$Parameters;I)V

    goto :goto_10e

    .line 401
    :cond_10b
    invoke-direct {p0, v1, p1}, Lio/agora/rtc2/video/VideoCaptureCamera1;->setPreviewFrameRateModeFPS(Landroid/hardware/Camera$Parameters;I)V

    .line 404
    :goto_10e
    iget p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mSkipControl:I

    if-eq p1, v7, :cond_122

    .line 405
    invoke-virtual {v1}, Landroid/hardware/Camera$Parameters;->getSupportedFocusModes()Ljava/util/List;

    move-result-object p1

    const-string v2, "continuous-video"

    invoke-interface {p1, v2}, Ljava/util/List;->contains(Ljava/lang/Object;)Z

    move-result p1

    if-eqz p1, :cond_122

    .line 407
    invoke-virtual {v1, v2}, Landroid/hardware/Camera$Parameters;->setFocusMode(Ljava/lang/String;)V

    goto :goto_129

    .line 409
    :cond_122
    sget-object p1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v2, "Continuous focus mode not supported."

    invoke-static {p1, v2}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 412
    :goto_129
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget p1, p1, Lio/agora/rtc2/video/VideoCaptureFormat;->mWidth:I

    iget-object v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v2, v2, Lio/agora/rtc2/video/VideoCaptureFormat;->mHeight:I

    invoke-virtual {v1, p1, v2}, Landroid/hardware/Camera$Parameters;->setPreviewSize(II)V

    .line 413
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget p1, p1, Lio/agora/rtc2/video/VideoCaptureFormat;->mPixelFormat:I

    invoke-virtual {v1, p1}, Landroid/hardware/Camera$Parameters;->setPreviewFormat(I)V

    .line 416
    :try_start_13b
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {p1, v1}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V
    :try_end_140
    .catch Ljava/lang/Exception; {:try_start_13b .. :try_end_140} :catch_1ce

    .line 424
    :try_start_140
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mSurfaceTextureHelper:Lio/agora/base/internal/video/ISurfaceTextureHelper;

    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v1, v1, Lio/agora/rtc2/video/VideoCaptureFormat;->mWidth:I

    iget-object v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v2, v2, Lio/agora/rtc2/video/VideoCaptureFormat;->mHeight:I

    invoke-interface {p1, v1, v2}, Lio/agora/base/internal/video/ISurfaceTextureHelper;->setTextureSize(II)V

    .line 425
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mSurfaceTextureHelper:Lio/agora/base/internal/video/ISurfaceTextureHelper;

    invoke-interface {v1}, Lio/agora/base/internal/video/ISurfaceTextureHelper;->getSurfaceTexture()Landroid/graphics/SurfaceTexture;

    move-result-object v1

    invoke-virtual {p1, v1}, Landroid/hardware/Camera;->setPreviewTexture(Landroid/graphics/SurfaceTexture;)V
    :try_end_158
    .catch Ljava/io/IOException; {:try_start_140 .. :try_end_158} :catch_1b1
    .catch Ljava/lang/Exception; {:try_start_140 .. :try_end_158} :catch_194

    .line 436
    new-instance p1, Lio/agora/rtc2/video/VideoCaptureCamera1$CrErrorCallback;

    invoke-direct {p1, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$CrErrorCallback;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    .line 438
    invoke-virtual {p0, p1}, Lio/agora/rtc2/video/VideoCaptureCamera1;->notifyInjector(Ljava/lang/Object;)V

    .line 440
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v0, p1}, Landroid/hardware/Camera;->setErrorCallback(Landroid/hardware/Camera$ErrorCallback;)V

    .line 442
    iget-boolean p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureToTexture:Z

    if-nez p1, :cond_18e

    .line 443
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget p1, p1, Lio/agora/rtc2/video/VideoCaptureFormat;->mWidth:I

    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v0, v0, Lio/agora/rtc2/video/VideoCaptureFormat;->mHeight:I

    mul-int/2addr p1, v0

    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v0, v0, Lio/agora/rtc2/video/VideoCaptureFormat;->mPixelFormat:I

    .line 444
    invoke-static {v0}, Landroid/graphics/ImageFormat;->getBitsPerPixel(I)I

    move-result v0

    mul-int/2addr p1, v0

    div-int/lit8 p1, p1, 0x8

    iput p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mExpectedFrameSize:I

    move p1, v6

    :goto_180
    if-ge p1, v3, :cond_18e

    .line 446
    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mExpectedFrameSize:I

    new-array v0, v0, [B

    .line 447
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v1, v0}, Landroid/hardware/Camera;->addCallbackBuffer([B)V

    add-int/lit8 p1, p1, 0x1

    goto :goto_180

    .line 452
    :cond_18e
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {p1, v6}, Landroid/hardware/Camera;->setDisplayOrientation(I)V

    return v7

    :catch_194
    move-exception p1

    .line 431
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;

    move-result-object p1

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v1, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 432
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->releaseCamera()V

    return v6

    :catch_1b1
    move-exception p1

    .line 427
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/io/IOException;->getMessage()Ljava/lang/String;

    move-result-object p1

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v1, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 428
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->releaseCamera()V

    return v6

    :catch_1ce
    move-exception p1

    .line 418
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "setParameters: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;

    move-result-object p1

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v0, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    .line 419
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->releaseCamera()V

    :catch_1ec
    :cond_1ec
    :goto_1ec
    return v6
.end method

.method public deallocate()V
    .registers 3

    .line 1364
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "deallocate()"

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1365
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->stopCaptureAndBlockUntilStopped()V

    .line 1366
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    if-nez v1, :cond_14

    const-string v1, "proxyThread unavailable"

    .line 1367
    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return-void

    .line 1370
    :cond_14
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    new-instance v1, Lio/agora/rtc2/video/VideoCaptureCamera1$9;

    invoke-direct {v1, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$9;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z

    .line 1383
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->releaseCamera()V

    return-void
.end method

.method public getCameraParameters()Landroid/hardware/Camera$Parameters;
    .registers 4

    .line 1491
    :try_start_0
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v0}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0
    :try_end_6
    .catch Ljava/lang/RuntimeException; {:try_start_0 .. :try_end_6} :catch_7

    return-object v0

    :catch_7
    move-exception v0

    .line 1493
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v2, "getCameraParameters: Camera.getParameters: "

    invoke-static {v1, v2, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1494
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v0, :cond_19

    .line 1495
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->safetyStopFaceDetection()V

    .line 1496
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->releaseCamera()V

    :cond_19
    const/4 v0, 0x0

    return-object v0
.end method

.method public getMaxZoom()F
    .registers 4

    .line 848
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v0, :cond_2e

    .line 849
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    const/4 v1, 0x0

    .line 851
    invoke-direct {p0, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isZoomSupported(Landroid/hardware/Camera$Parameters;)Z

    move-result v2

    if-eqz v2, :cond_13

    .line 852
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxZoom()I

    move-result v1

    .line 855
    :cond_13
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getZoomRatios()Ljava/util/List;

    move-result-object v0

    if-eqz v0, :cond_2e

    .line 856
    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v2

    if-le v2, v1, :cond_2e

    .line 857
    invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v0

    int-to-float v0, v0

    const/high16 v1, 0x42c80000    # 100.0f

    div-float/2addr v0, v1

    return v0

    :cond_2e
    const/high16 v0, -0x40800000    # -1.0f

    return v0
.end method

.method public isAutoFaceFocusSupported()Z
    .registers 4

    .line 1027
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v1, 0x0

    if-eqz v0, :cond_24

    .line 1028
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    if-eqz v0, :cond_24

    .line 1030
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxNumDetectedFaces()I

    move-result v2

    if-lez v2, :cond_24

    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxNumFocusAreas()I

    move-result v2

    if-lez v2, :cond_24

    .line 1031
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getSupportedFocusModes()Ljava/util/List;

    move-result-object v0

    const-string v2, "auto"

    invoke-static {v2, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isSupported(Ljava/lang/String;Ljava/util/List;)Z

    move-result v0

    if-eqz v0, :cond_24

    const/4 v1, 0x1

    :cond_24
    return v1
.end method

.method public isCameraExposureSupported()Z
    .registers 7

    .line 1260
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v1, 0x0

    if-eqz v0, :cond_36

    .line 1261
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    if-eqz v0, :cond_36

    .line 1263
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMinExposureCompensation()I

    move-result v2

    .line 1264
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxExposureCompensation()I

    move-result v0

    .line 1265
    sget-object v3, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v4, Ljava/lang/StringBuilder;

    invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V

    const-string v5, "isCameraExposureSupported compensation min: "

    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v5, " max: "

    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-static {v3, v4}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    if-gez v2, :cond_36

    if-lez v0, :cond_36

    const/4 v1, 0x1

    :cond_36
    return v1
.end method

.method public isExposureSupported()Z
    .registers 3

    .line 1249
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v1, 0x0

    if-eqz v0, :cond_13

    .line 1250
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    if-eqz v0, :cond_13

    .line 1252
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxNumMeteringAreas()I

    move-result v0

    if-lez v0, :cond_13

    const/4 v0, 0x1

    move v1, v0

    :cond_13
    return v1
.end method

.method public isFaceDetectSupported()Z
    .registers 6

    .line 1188
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v1, 0x0

    if-eqz v0, :cond_2c

    .line 1189
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    if-eqz v0, :cond_2c

    .line 1191
    sget-object v2, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "face dedect, numDetectedFaces: "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxNumDetectedFaces()I

    move-result v4

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-static {v2, v3}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1192
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxNumDetectedFaces()I

    move-result v0

    if-lez v0, :cond_2c

    const/4 v1, 0x1

    :cond_2c
    return v1
.end method

.method public isFocusSupported()Z
    .registers 4

    .line 865
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v1, 0x0

    if-eqz v0, :cond_1e

    .line 866
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    if-eqz v0, :cond_1e

    .line 868
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxNumFocusAreas()I

    move-result v2

    if-lez v2, :cond_1e

    .line 869
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getSupportedFocusModes()Ljava/util/List;

    move-result-object v0

    const-string v2, "auto"

    invoke-static {v2, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isSupported(Ljava/lang/String;Ljava/util/List;)Z

    move-result v0

    if-eqz v0, :cond_1e

    const/4 v1, 0x1

    :cond_1e
    return v1
.end method

.method public isTorchSupported()Z
    .registers 3

    .line 1200
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v0, :cond_15

    .line 1201
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    if-eqz v0, :cond_15

    .line 1203
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getSupportedFlashModes()Ljava/util/List;

    move-result-object v0

    const-string v1, "torch"

    invoke-static {v1, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isSupported(Ljava/lang/String;Ljava/util/List;)Z

    move-result v0

    return v0

    :cond_15
    const/4 v0, 0x0

    return v0
.end method

.method public isZoomSupported()Z
    .registers 2

    .line 782
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v0, :cond_d

    .line 783
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    .line 784
    invoke-direct {p0, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isZoomSupported(Landroid/hardware/Camera$Parameters;)Z

    move-result v0

    return v0

    :cond_d
    const/4 v0, 0x0

    return v0
.end method

.method public needFallback()Z
    .registers 2

    const/4 v0, 0x0

    return v0
.end method

.method public setAntiBandingMode(I)I
    .registers 5

    .line 1100
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    const/4 v1, -0x1

    if-nez v0, :cond_6

    return v1

    .line 1103
    :cond_6
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    new-instance v2, Lio/agora/rtc2/video/VideoCaptureCamera1$8;

    invoke-direct {v2, p0, p1}, Lio/agora/rtc2/video/VideoCaptureCamera1$8;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;I)V

    invoke-static {v0, v2}, Lio/agora/base/internal/ThreadUtils;->invokeAtFrontUninterruptibly(Landroid/os/Handler;Ljava/util/concurrent/Callable;)Ljava/lang/Object;

    move-result-object p1

    check-cast p1, Ljava/lang/Integer;

    if-nez p1, :cond_16

    goto :goto_1a

    .line 1129
    :cond_16
    invoke-virtual {p1}, Ljava/lang/Integer;->intValue()I

    move-result v1

    :goto_1a
    return v1
.end method

.method public setAutoFaceFocus(Z)I
    .registers 4

    .line 1039
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mEnableAutoFaceFocus:Z

    const/4 v1, 0x0

    if-ne v0, p1, :cond_6

    return v1

    .line 1043
    :cond_6
    iput-boolean p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mEnableAutoFaceFocus:Z

    .line 1044
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->onFaceDetectionRequestChanged()V

    return v1
.end method

.method public setEdgeEnhanceMode(I)I
    .registers 3

    .line 1094
    sget-object p1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v0, "EdgeEnhancement not supported in camera1 "

    invoke-static {p1, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    const/4 p1, -0x1

    return p1
.end method

.method public setExposure(FF)I
    .registers 26

    move-object/from16 v1, p0

    move/from16 v0, p1

    move/from16 v2, p2

    .line 1274
    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v4, 0x0

    const/4 v5, 0x1

    if-eqz v3, :cond_1d4

    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v3}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v3

    if-eqz v3, :cond_1d4

    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v3}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v3

    if-nez v3, :cond_1e

    goto/16 :goto_1d4

    .line 1279
    :cond_1e
    iget-boolean v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraExposureStarted:Z

    if-eqz v3, :cond_44

    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aget v3, v3, v4

    sub-float/2addr v3, v0

    invoke-static {v3}, Ljava/lang/Math;->abs(F)F

    move-result v3

    float-to-double v6, v3

    const-wide v8, 0x3fb999999999999aL    # 0.1

    cmpg-double v3, v6, v8

    if-gez v3, :cond_44

    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aget v3, v3, v5

    sub-float/2addr v3, v2

    .line 1280
    invoke-static {v3}, Ljava/lang/Math;->abs(F)F

    move-result v3

    float-to-double v6, v3

    cmpg-double v3, v6, v8

    if-gez v3, :cond_44

    return v4

    .line 1283
    :cond_44
    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aput v0, v3, v4

    .line 1284
    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aput v2, v3, v5

    .line 1286
    sget-object v3, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string v7, "setExposure called camera api1 x = "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    const-string v7, " y = "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6, v2}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v3, v6}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    const/4 v6, 0x0

    cmpg-float v7, v0, v6

    const/4 v8, -0x1

    if-ltz v7, :cond_1ce

    .line 1287
    iget-object v7, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v7}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v7

    int-to-float v7, v7

    cmpl-float v7, v0, v7

    if-gtz v7, :cond_1ce

    cmpg-float v6, v2, v6

    if-ltz v6, :cond_1ce

    iget-object v6, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    .line 1288
    invoke-virtual {v6}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v6

    int-to-float v6, v6

    cmpl-float v6, v2, v6

    if-lez v6, :cond_8c

    goto/16 :goto_1ce

    .line 1293
    :cond_8c
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v6

    iput-object v6, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    if-eqz v6, :cond_1cd

    .line 1294
    invoke-virtual {v6}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v6

    if-nez v6, :cond_9c

    goto/16 :goto_1cd

    .line 1297
    :cond_9c
    new-instance v9, Landroid/graphics/RectF;

    invoke-direct {v9, v0, v2, v0, v2}, Landroid/graphics/RectF;-><init>(FFFF)V

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    .line 1299
    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v10

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v11

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v0

    iget v12, v0, Landroid/hardware/Camera$Size;->width:I

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    .line 1300
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v0

    iget v13, v0, Landroid/hardware/Camera$Size;->height:I

    iget v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v0, v5, :cond_c3

    move v14, v5

    goto :goto_c4

    :cond_c3
    move v14, v4

    .line 1301
    :goto_c4
    iget v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v0, v5, :cond_ca

    move v0, v5

    goto :goto_cb

    :cond_ca
    move v0, v8

    :goto_cb
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraRotation()I

    move-result v2

    mul-int v15, v0, v2

    iget v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderMode:I

    move/from16 v16, v0

    .line 1297
    invoke-static/range {v9 .. v16}, Lio/agora/rtc2/video/CoordinatesTransform;->viewToNormalized(Landroid/graphics/RectF;IIIIZII)Landroid/graphics/RectF;

    move-result-object v0

    const-string v2, "Failed to translate input coordinate"

    if-nez v0, :cond_e1

    .line 1304
    invoke-static {v3, v2}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 1308
    :cond_e1
    iget v6, v0, Landroid/graphics/RectF;->left:F

    .line 1309
    iget v0, v0, Landroid/graphics/RectF;->top:F

    const/high16 v7, 0x3fc00000    # 1.5f

    .line 1311
    invoke-static {v6, v0, v7}, Lio/agora/rtc2/video/CoordinatesTransform;->calculateFocusArea(FFF)Landroid/graphics/Rect;

    move-result-object v0

    .line 1312
    new-instance v6, Landroid/graphics/RectF;

    invoke-direct {v6, v0}, Landroid/graphics/RectF;-><init>(Landroid/graphics/Rect;)V

    invoke-static {v6}, Lio/agora/rtc2/video/CoordinatesTransform;->cameraToNormalized(Landroid/graphics/RectF;)Landroid/graphics/RectF;

    move-result-object v9

    .line 1313
    iget-object v6, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v10, v6, Lio/agora/rtc2/video/VideoCaptureFormat;->mWidth:I

    iget-object v6, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v11, v6, Lio/agora/rtc2/video/VideoCaptureFormat;->mHeight:I

    iget-object v6, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v12, v6, Lio/agora/rtc2/video/VideoCaptureFormat;->mWidth:I

    iget-object v6, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v13, v6, Lio/agora/rtc2/video/VideoCaptureFormat;->mHeight:I

    const/4 v14, 0x0

    const/4 v15, 0x0

    invoke-static/range {v9 .. v15}, Lio/agora/rtc2/video/CoordinatesTransform;->normalizedToSensor(Landroid/graphics/RectF;IIIIIZ)Landroid/graphics/RectF;

    move-result-object v6

    if-nez v6, :cond_110

    .line 1316
    invoke-static {v3, v2}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 1319
    :cond_110
    invoke-virtual {v6, v0}, Landroid/graphics/RectF;->round(Landroid/graphics/Rect;)V

    .line 1321
    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    if-eqz v2, :cond_166

    .line 1322
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v2

    if-nez v2, :cond_123

    const-string v0, "getCameraParameters null"

    .line 1324
    invoke-static {v3, v0}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 1328
    :cond_123
    invoke-virtual {v2}, Landroid/hardware/Camera$Parameters;->getMaxNumMeteringAreas()I

    move-result v6

    if-lez v6, :cond_13c

    .line 1329
    new-instance v6, Ljava/util/ArrayList;

    invoke-direct {v6}, Ljava/util/ArrayList;-><init>()V

    .line 1330
    new-instance v7, Landroid/hardware/Camera$Area;

    const/16 v9, 0x320

    invoke-direct {v7, v0, v9}, Landroid/hardware/Camera$Area;-><init>(Landroid/graphics/Rect;I)V

    invoke-interface {v6, v7}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 1331
    invoke-virtual {v2, v6}, Landroid/hardware/Camera$Parameters;->setMeteringAreas(Ljava/util/List;)V

    goto :goto_141

    :cond_13c
    const-string v6, "metering areas not supported"

    .line 1333
    invoke-static {v3, v6}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1337
    :goto_141
    :try_start_141
    iput-boolean v5, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraExposureStarted:Z

    .line 1338
    iget-object v6, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v6, v2}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V

    .line 1339
    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v2}, Landroid/hardware/Camera;->startPreview()V
    :try_end_14d
    .catch Ljava/lang/Exception; {:try_start_141 .. :try_end_14d} :catch_14e

    goto :goto_166

    :catch_14e
    move-exception v0

    .line 1341
    sget-object v2, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "setExposure failed, "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v2, v0}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 1346
    :cond_166
    :goto_166
    new-instance v2, Landroid/graphics/Rect;

    invoke-direct {v2}, Landroid/graphics/Rect;-><init>()V

    .line 1347
    new-instance v9, Landroid/graphics/RectF;

    invoke-direct {v9, v0}, Landroid/graphics/RectF;-><init>(Landroid/graphics/Rect;)V

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureFormat;->getWidth()I

    move-result v10

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    .line 1348
    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureFormat;->getHeight()I

    move-result v11

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v12, v0, Lio/agora/rtc2/video/VideoCaptureFormat;->mWidth:I

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v13, v0, Lio/agora/rtc2/video/VideoCaptureFormat;->mHeight:I

    const/4 v14, 0x0

    .line 1347
    invoke-static/range {v9 .. v14}, Lio/agora/rtc2/video/CoordinatesTransform;->sensorToNormalized(Landroid/graphics/RectF;IIIIZ)Landroid/graphics/RectF;

    move-result-object v15

    .line 1349
    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v16

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v17

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    .line 1350
    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureFormat;->getWidth()I

    move-result v18

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureFormat;->getHeight()I

    move-result v19

    iget v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v0, v5, :cond_1a8

    move/from16 v20, v5

    goto :goto_1aa

    :cond_1a8
    move/from16 v20, v4

    .line 1352
    :goto_1aa
    iget v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v0, v5, :cond_1af

    goto :goto_1b0

    :cond_1af
    move v5, v8

    :goto_1b0
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraRotation()I

    move-result v0

    mul-int v21, v5, v0

    iget v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderMode:I

    move/from16 v22, v0

    .line 1349
    invoke-static/range {v15 .. v22}, Lio/agora/rtc2/video/CoordinatesTransform;->normalizedToView(Landroid/graphics/RectF;IIIIZII)Landroid/graphics/RectF;

    move-result-object v0

    if-nez v0, :cond_1c6

    const-string v0, "failed to translate coordinate from normalized to view!"

    .line 1354
    invoke-static {v3, v0}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 1357
    :cond_1c6
    invoke-virtual {v0, v2}, Landroid/graphics/RectF;->round(Landroid/graphics/Rect;)V

    .line 1358
    invoke-virtual {v1, v2}, Lio/agora/rtc2/video/VideoCaptureCamera1;->notifyCameraExposureAreaChanged(Landroid/graphics/Rect;)V

    return v4

    :cond_1cd
    :goto_1cd
    return v8

    :cond_1ce
    :goto_1ce
    const-string v0, "setExposure unreasonable inputs!"

    .line 1289
    invoke-static {v3, v0}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 1275
    :cond_1d4
    :goto_1d4
    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aput v0, v3, v4

    .line 1276
    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aput v2, v0, v5

    return v4
.end method

.method public setExposureCompensation(I)I
    .registers 11

    .line 1149
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v1, 0x0

    if-nez v0, :cond_8

    .line 1150
    iput p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposureCompensation:I

    return v1

    .line 1153
    :cond_8
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsExposureCompensationStarted:Z

    if-eqz v0, :cond_11

    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposureCompensation:I

    if-ne v0, p1, :cond_11

    return v1

    .line 1156
    :cond_11
    iput p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposureCompensation:I

    .line 1158
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "setExposureCompensation:"

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-static {v0, v2}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1159
    iget-object v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v2}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v2

    if-eqz v2, :cond_ba

    .line 1161
    invoke-virtual {v2}, Landroid/hardware/Camera$Parameters;->getExposureCompensationStep()F

    move-result v3

    .line 1162
    invoke-virtual {v2}, Landroid/hardware/Camera$Parameters;->getMinExposureCompensation()I

    move-result v4

    .line 1163
    invoke-virtual {v2}, Landroid/hardware/Camera$Parameters;->getMaxExposureCompensation()I

    move-result v5

    .line 1164
    invoke-virtual {v2}, Landroid/hardware/Camera$Parameters;->getExposureCompensation()I

    move-result v6

    .line 1165
    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    const-string v8, "compensation step="

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v7, v3}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    const-string v8, ", min="

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v8, ", max="

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v8, ", cur index="

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v7, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v0, v6}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    if-le p1, v5, :cond_70

    goto :goto_71

    :cond_70
    move v5, p1

    :goto_71
    if-ge p1, v4, :cond_74

    goto :goto_75

    :cond_74
    move v4, v5

    .line 1171
    :goto_75
    invoke-virtual {v2, v4}, Landroid/hardware/Camera$Parameters;->setExposureCompensation(I)V

    const/4 p1, 0x1

    .line 1173
    :try_start_79
    iput-boolean p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsExposureCompensationStarted:Z

    .line 1174
    iget-object p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {p1, v2}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V

    .line 1175
    invoke-virtual {v2}, Landroid/hardware/Camera$Parameters;->getExposureCompensation()I

    move-result p1

    int-to-float v2, p1

    mul-float/2addr v3, v2

    .line 1177
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "cur index="

    invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string p1, ", ev="

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v0, p1}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_a2
    .catch Ljava/lang/Exception; {:try_start_79 .. :try_end_a2} :catch_a3

    return v1

    :catch_a3
    move-exception p1

    .line 1180
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "exposure compensation got exception:"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v0, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :cond_ba
    const/4 p1, -0x1

    return p1
.end method

.method public setFaceDetection(Z)I
    .registers 4

    .line 1050
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mEnableFaceDetection:Z

    const/4 v1, 0x0

    if-ne v0, p1, :cond_6

    return v1

    .line 1053
    :cond_6
    iput-boolean p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mEnableFaceDetection:Z

    .line 1054
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->onFaceDetectionRequestChanged()V

    return v1
.end method

.method public setFocus(FF)I
    .registers 26

    move-object/from16 v1, p0

    move/from16 v0, p1

    move/from16 v2, p2

    .line 883
    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v4, 0x0

    const/4 v5, 0x1

    if-eqz v3, :cond_2cb

    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v3}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v3

    if-eqz v3, :cond_2cb

    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v3}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v3

    if-nez v3, :cond_1e

    goto/16 :goto_2cb

    .line 888
    :cond_1e
    iget-boolean v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraFocusStarted:Z

    if-eqz v3, :cond_44

    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aget v3, v3, v4

    sub-float/2addr v3, v0

    invoke-static {v3}, Ljava/lang/Math;->abs(F)F

    move-result v3

    float-to-double v6, v3

    const-wide v8, 0x3fb999999999999aL    # 0.1

    cmpg-double v3, v6, v8

    if-gez v3, :cond_44

    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aget v3, v3, v5

    sub-float/2addr v3, v2

    .line 889
    invoke-static {v3}, Ljava/lang/Math;->abs(F)F

    move-result v3

    float-to-double v6, v3

    cmpg-double v3, v6, v8

    if-gez v3, :cond_44

    return v4

    .line 892
    :cond_44
    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aput v0, v3, v4

    .line 893
    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aput v2, v3, v5

    .line 895
    sget-object v3, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string v7, "setFocus "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    const-string v7, " - "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6, v2}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v3, v6}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    const/4 v6, 0x0

    cmpg-float v7, v0, v6

    const/4 v8, -0x1

    if-ltz v7, :cond_2c5

    .line 896
    iget-object v7, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v7}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v7

    int-to-float v7, v7

    cmpl-float v7, v0, v7

    if-gtz v7, :cond_2c5

    cmpg-float v6, v2, v6

    if-ltz v6, :cond_2c5

    iget-object v6, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v6}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v6

    int-to-float v6, v6

    cmpl-float v6, v2, v6

    if-lez v6, :cond_8c

    goto/16 :goto_2c5

    .line 901
    :cond_8c
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v6

    iput-object v6, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    if-eqz v6, :cond_2c4

    .line 902
    invoke-virtual {v6}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v6

    if-nez v6, :cond_9c

    goto/16 :goto_2c4

    .line 906
    :cond_9c
    new-instance v9, Landroid/graphics/RectF;

    invoke-direct {v9, v0, v2, v0, v2}, Landroid/graphics/RectF;-><init>(FFFF)V

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v10

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    .line 907
    invoke-virtual {v0}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v11

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v0

    iget v12, v0, Landroid/hardware/Camera$Size;->width:I

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    .line 908
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v0

    iget v13, v0, Landroid/hardware/Camera$Size;->height:I

    iget v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v0, v5, :cond_c3

    move v14, v5

    goto :goto_c4

    :cond_c3
    move v14, v4

    .line 909
    :goto_c4
    iget v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v0, v5, :cond_ca

    move v0, v5

    goto :goto_cb

    :cond_ca
    move v0, v8

    :goto_cb
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraRotation()I

    move-result v2

    mul-int v15, v0, v2

    iget v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderMode:I

    move/from16 v16, v0

    .line 906
    invoke-static/range {v9 .. v16}, Lio/agora/rtc2/video/CoordinatesTransform;->viewToNormalized(Landroid/graphics/RectF;IIIIZII)Landroid/graphics/RectF;

    move-result-object v0

    if-nez v0, :cond_e1

    const-string v0, "Failed to translate input coordinate"

    .line 912
    invoke-static {v3, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 916
    :cond_e1
    iget v2, v0, Landroid/graphics/RectF;->left:F

    .line 917
    iget v0, v0, Landroid/graphics/RectF;->top:F

    const/high16 v6, 0x3f800000    # 1.0f

    .line 918
    invoke-static {v2, v0, v6}, Lio/agora/rtc2/video/CoordinatesTransform;->calculateFocusArea(FFF)Landroid/graphics/Rect;

    move-result-object v6

    const/high16 v7, 0x3fc00000    # 1.5f

    .line 919
    invoke-static {v2, v0, v7}, Lio/agora/rtc2/video/CoordinatesTransform;->calculateFocusArea(FFF)Landroid/graphics/Rect;

    move-result-object v2

    .line 920
    new-instance v0, Landroid/graphics/RectF;

    invoke-direct {v0, v2}, Landroid/graphics/RectF;-><init>(Landroid/graphics/Rect;)V

    invoke-static {v0}, Lio/agora/rtc2/video/CoordinatesTransform;->cameraToNormalized(Landroid/graphics/RectF;)Landroid/graphics/RectF;

    move-result-object v9

    .line 921
    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v0

    iget v10, v0, Landroid/hardware/Camera$Size;->width:I

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    .line 922
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v0

    iget v11, v0, Landroid/hardware/Camera$Size;->height:I

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v0

    iget v12, v0, Landroid/hardware/Camera$Size;->width:I

    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewParameters:Landroid/hardware/Camera$Parameters;

    .line 923
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v0

    iget v13, v0, Landroid/hardware/Camera$Size;->height:I

    const/4 v14, 0x0

    const/4 v15, 0x0

    .line 921
    invoke-static/range {v9 .. v15}, Lio/agora/rtc2/video/CoordinatesTransform;->normalizedToSensor(Landroid/graphics/RectF;IIIIIZ)Landroid/graphics/RectF;

    move-result-object v0

    if-nez v0, :cond_128

    const-string v0, "Failed to translate input coordinate"

    .line 925
    invoke-static {v3, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 928
    :cond_128
    invoke-virtual {v0, v2}, Landroid/graphics/RectF;->round(Landroid/graphics/Rect;)V

    .line 930
    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v7, "mCamera.autoFocus focusRect: "

    invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    const-string v7, ", meteringRect: "

    invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v3, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I

    .line 932
    :try_start_147
    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v0}, Landroid/hardware/Camera;->cancelAutoFocus()V
    :try_end_14c
    .catch Ljava/lang/RuntimeException; {:try_start_147 .. :try_end_14c} :catch_14d

    goto :goto_164

    :catch_14d
    move-exception v0

    .line 934
    sget-object v3, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    const-string v9, "Failed to cancle AutoFocus"

    invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v3, v0}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    .line 937
    :goto_164
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    if-nez v0, :cond_16b

    return v8

    .line 942
    :cond_16b
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxNumFocusAreas()I

    move-result v3

    const/16 v7, 0x320

    if-lez v3, :cond_184

    .line 943
    new-instance v3, Ljava/util/ArrayList;

    invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V

    .line 944
    new-instance v9, Landroid/hardware/Camera$Area;

    invoke-direct {v9, v6, v7}, Landroid/hardware/Camera$Area;-><init>(Landroid/graphics/Rect;I)V

    invoke-interface {v3, v9}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 945
    invoke-virtual {v0, v3}, Landroid/hardware/Camera$Parameters;->setFocusAreas(Ljava/util/List;)V

    goto :goto_18b

    .line 947
    :cond_184
    sget-object v3, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v9, "focus areas not supported"

    invoke-static {v3, v9}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    .line 950
    :goto_18b
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getMaxNumMeteringAreas()I

    move-result v3

    if-lez v3, :cond_1a2

    .line 951
    new-instance v3, Ljava/util/ArrayList;

    invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V

    .line 952
    new-instance v9, Landroid/hardware/Camera$Area;

    invoke-direct {v9, v2, v7}, Landroid/hardware/Camera$Area;-><init>(Landroid/graphics/Rect;I)V

    invoke-interface {v3, v9}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 953
    invoke-virtual {v0, v3}, Landroid/hardware/Camera$Parameters;->setMeteringAreas(Ljava/util/List;)V

    goto :goto_1a9

    .line 955
    :cond_1a2
    sget-object v3, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v7, "metering areas not supported"

    invoke-static {v3, v7}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    .line 959
    :goto_1a9
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getFocusMode()Ljava/lang/String;

    move-result-object v3

    const-string v7, "macro"

    .line 960
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getSupportedFocusModes()Ljava/util/List;

    move-result-object v9

    invoke-static {v7, v9}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isSupported(Ljava/lang/String;Ljava/util/List;)Z

    move-result v7

    if-eqz v7, :cond_1e4

    const-string v7, "macro"

    .line 961
    invoke-virtual {v0, v7}, Landroid/hardware/Camera$Parameters;->setFocusMode(Ljava/lang/String;)V

    .line 962
    iget-object v7, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mObjectLock:Ljava/lang/Object;

    monitor-enter v7

    .line 964
    :try_start_1c1
    iget-object v9, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v9, v0}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V
    :try_end_1c6
    .catch Ljava/lang/Exception; {:try_start_1c1 .. :try_end_1c6} :catch_1c9
    .catchall {:try_start_1c1 .. :try_end_1c6} :catchall_1c7

    goto :goto_1e0

    :catchall_1c7
    move-exception v0

    goto :goto_1e2

    :catch_1c9
    move-exception v0

    .line 966
    :try_start_1ca
    sget-object v9, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v10, Ljava/lang/StringBuilder;

    invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V

    const-string v11, "mCamera.setParameters Exception: "

    invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v9, v0}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    .line 968
    :goto_1e0
    monitor-exit v7

    goto :goto_1eb

    :goto_1e2
    monitor-exit v7
    :try_end_1e3
    .catchall {:try_start_1ca .. :try_end_1e3} :catchall_1c7

    throw v0

    :cond_1e4
    const-string v0, "focus"

    const-string v7, "FOCUS_MODE_MACRO is not supported"

    .line 970
    invoke-static {v0, v7}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    .line 974
    :goto_1eb
    :try_start_1eb
    iput-boolean v5, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraFocusStarted:Z

    .line 975
    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    new-instance v7, Lio/agora/rtc2/video/VideoCaptureCamera1$7;

    invoke-direct {v7, v1, v3}, Lio/agora/rtc2/video/VideoCaptureCamera1$7;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;Ljava/lang/String;)V

    invoke-virtual {v0, v7}, Landroid/hardware/Camera;->autoFocus(Landroid/hardware/Camera$AutoFocusCallback;)V
    :try_end_1f7
    .catch Ljava/lang/Exception; {:try_start_1eb .. :try_end_1f7} :catch_2ad

    .line 996
    new-instance v0, Landroid/graphics/Rect;

    invoke-direct {v0}, Landroid/graphics/Rect;-><init>()V

    .line 997
    new-instance v9, Landroid/graphics/RectF;

    invoke-direct {v9, v2}, Landroid/graphics/RectF;-><init>(Landroid/graphics/Rect;)V

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureFormat;->getWidth()I

    move-result v10

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    .line 998
    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureFormat;->getHeight()I

    move-result v11

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v12, v2, Lio/agora/rtc2/video/VideoCaptureFormat;->mWidth:I

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    iget v13, v2, Lio/agora/rtc2/video/VideoCaptureFormat;->mHeight:I

    const/4 v14, 0x0

    .line 997
    invoke-static/range {v9 .. v14}, Lio/agora/rtc2/video/CoordinatesTransform;->sensorToNormalized(Landroid/graphics/RectF;IIIIZ)Landroid/graphics/RectF;

    move-result-object v15

    .line 999
    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v16

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v17

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    .line 1000
    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureFormat;->getWidth()I

    move-result v18

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureFormat;->getHeight()I

    move-result v19

    iget v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v2, v5, :cond_239

    move/from16 v20, v5

    goto :goto_23b

    :cond_239
    move/from16 v20, v4

    .line 1002
    :goto_23b
    iget v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v2, v5, :cond_241

    move v2, v5

    goto :goto_242

    :cond_241
    move v2, v8

    :goto_242
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraRotation()I

    move-result v3

    mul-int v21, v2, v3

    iget v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderMode:I

    move/from16 v22, v2

    .line 999
    invoke-static/range {v15 .. v22}, Lio/agora/rtc2/video/CoordinatesTransform;->normalizedToView(Landroid/graphics/RectF;IIIIZII)Landroid/graphics/RectF;

    move-result-object v2

    if-nez v2, :cond_25a

    .line 1004
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v2, "failed to translate coordinate from normalized to view!"

    invoke-static {v0, v2}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 1007
    :cond_25a
    invoke-virtual {v2, v0}, Landroid/graphics/RectF;->round(Landroid/graphics/Rect;)V

    .line 1008
    invoke-virtual {v1, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->notifyCameraExposureAreaChanged(Landroid/graphics/Rect;)V

    .line 1010
    new-instance v2, Landroid/graphics/RectF;

    invoke-direct {v2, v6}, Landroid/graphics/RectF;-><init>(Landroid/graphics/Rect;)V

    invoke-static {v2}, Lio/agora/rtc2/video/CoordinatesTransform;->cameraToNormalized(Landroid/graphics/RectF;)Landroid/graphics/RectF;

    move-result-object v9

    .line 1011
    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getWidth()I

    move-result v10

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderView:Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;

    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureCamera$CaptureViewWeakRef;->getHeight()I

    move-result v11

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    .line 1012
    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureFormat;->getWidth()I

    move-result v12

    iget-object v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureFormat:Lio/agora/rtc2/video/VideoCaptureFormat;

    invoke-virtual {v2}, Lio/agora/rtc2/video/VideoCaptureFormat;->getHeight()I

    move-result v13

    iget v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v2, v5, :cond_287

    move v14, v5

    goto :goto_288

    :cond_287
    move v14, v4

    .line 1014
    :goto_288
    iget v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mId:I

    if-ne v2, v5, :cond_28d

    goto :goto_28e

    :cond_28d
    move v5, v8

    :goto_28e
    invoke-virtual/range {p0 .. p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraRotation()I

    move-result v2

    mul-int v15, v5, v2

    iget v2, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mRenderMode:I

    move/from16 v16, v2

    .line 1011
    invoke-static/range {v9 .. v16}, Lio/agora/rtc2/video/CoordinatesTransform;->normalizedToView(Landroid/graphics/RectF;IIIIZII)Landroid/graphics/RectF;

    move-result-object v2

    if-nez v2, :cond_2a6

    .line 1016
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v2, "failed to translate coordinate from normalized to view!"

    invoke-static {v0, v2}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 1019
    :cond_2a6
    invoke-virtual {v2, v0}, Landroid/graphics/RectF;->round(Landroid/graphics/Rect;)V

    .line 1020
    invoke-virtual {v1, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->notifyCameraFocusAreaChanged(Landroid/graphics/Rect;)V

    return v4

    :catch_2ad
    move-exception v0

    .line 992
    sget-object v2, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "mCamera.autoFocus Exception: "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v2, v0}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    :cond_2c4
    :goto_2c4
    return v8

    :cond_2c5
    :goto_2c5
    const-string v0, "set focus unreasonable inputs"

    .line 897
    invoke-static {v3, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return v8

    .line 884
    :cond_2cb
    :goto_2cb
    iget-object v3, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aput v0, v3, v4

    .line 885
    iget-object v0, v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aput v2, v0, v5

    return v4
.end method

.method public setNoiseReductionMode(I)I
    .registers 3

    .line 1088
    sget-object p1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v0, "NoiseReduction not supported in camera1 "

    invoke-static {p1, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    const/4 p1, -0x1

    return p1
.end method

.method public setTorchMode(Z)I
    .registers 9

    const/4 v0, 0x1

    const/4 v1, -0x1

    if-eqz p1, :cond_6

    move v2, v0

    goto :goto_7

    :cond_6
    move v2, v1

    .line 1212
    :goto_7
    iget-object v3, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v4, 0x0

    if-nez v3, :cond_13

    if-eqz p1, :cond_f

    goto :goto_10

    :cond_f
    move v0, v1

    .line 1213
    :goto_10
    iput v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mTorchMode:I

    return v4

    .line 1216
    :cond_13
    iget-boolean v3, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsCameraTorchStarted:Z

    if-eqz v3, :cond_1c

    iget v3, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mTorchMode:I

    if-ne v3, v2, :cond_1c

    return v4

    .line 1219
    :cond_1c
    iput v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mTorchMode:I

    .line 1220
    sget-object v2, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string v5, "setTorchMode isOn: "

    invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-static {v2, v3}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1221
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v3

    if-eqz v3, :cond_8a

    .line 1223
    invoke-virtual {v3}, Landroid/hardware/Camera$Parameters;->getSupportedFlashModes()Ljava/util/List;

    move-result-object v5

    if-eqz v5, :cond_84

    const-string v6, "torch"

    .line 1224
    invoke-interface {v5, v6}, Ljava/util/List;->contains(Ljava/lang/Object;)Z

    move-result v5

    if-eqz v5, :cond_84

    const-string v5, "setTorchMode isFlashSupported: true"

    .line 1225
    invoke-static {v2, v5}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    const-string v2, "off"

    if-eqz p1, :cond_55

    .line 1227
    invoke-virtual {v3, v6}, Landroid/hardware/Camera$Parameters;->setFlashMode(Ljava/lang/String;)V

    goto :goto_58

    .line 1229
    :cond_55
    invoke-virtual {v3, v2}, Landroid/hardware/Camera$Parameters;->setFlashMode(Ljava/lang/String;)V

    .line 1232
    :goto_58
    :try_start_58
    iput-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsCameraTorchStarted:Z

    .line 1233
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v0, v3}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V
    :try_end_5f
    .catch Ljava/lang/Exception; {:try_start_58 .. :try_end_5f} :catch_60

    return v4

    :catch_60
    move-exception v0

    .line 1235
    sget-object v3, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v4, Ljava/lang/StringBuilder;

    invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V

    const-string v5, "setTorchMode failed, mode: "

    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    if-eqz p1, :cond_70

    goto :goto_71

    :cond_70
    move-object v6, v2

    :goto_71
    invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string p1, ", "

    invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v3, p1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v1

    :cond_84
    const-string p1, "setTorchMode isFlashSupported: false"

    .line 1240
    invoke-static {v2, p1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v1

    :cond_8a
    const/4 p1, -0x2

    return p1
.end method

.method public setVideoStabilityMode(I)I
    .registers 7

    .line 1060
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "setVideoStabilityMode: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p1}, 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}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    .line 1061
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v2, -0x1

    if-nez v1, :cond_1c

    return v2

    .line 1064
    :cond_1c
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v1

    if-nez v1, :cond_23

    return v2

    .line 1068
    :cond_23
    invoke-virtual {v1}, Landroid/hardware/Camera$Parameters;->isVideoStabilizationSupported()Z

    move-result v3

    if-nez v3, :cond_3e

    .line 1069
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "not supported VideoStability Mode = "

    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v0, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return v2

    :cond_3e
    const/4 v0, 0x0

    const/4 v3, 0x1

    if-ne p1, v3, :cond_46

    .line 1073
    invoke-virtual {v1, v3}, Landroid/hardware/Camera$Parameters;->setVideoStabilization(Z)V

    goto :goto_4b

    :cond_46
    if-nez p1, :cond_4b

    .line 1075
    invoke-virtual {v1, v0}, Landroid/hardware/Camera$Parameters;->setVideoStabilization(Z)V

    .line 1078
    :cond_4b
    :goto_4b
    :try_start_4b
    iget-object v3, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v3, v1}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V
    :try_end_50
    .catch Ljava/lang/Exception; {:try_start_4b .. :try_end_50} :catch_51

    return v0

    :catch_51
    move-exception v0

    .line 1080
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "setVideoStabilityMode failed, mode: "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string p1, ", "

    invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v1, p1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v2
.end method

.method public setZoom(F)I
    .registers 8

    .line 795
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v1, 0x0

    if-nez v0, :cond_8

    .line 796
    iput p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraZoomFactor:F

    return v1

    .line 799
    :cond_8
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraZoomStarted:Z

    if-eqz v0, :cond_1e

    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraZoomFactor:F

    sub-float/2addr v0, p1

    invoke-static {v0}, Ljava/lang/Math;->abs(F)F

    move-result v0

    float-to-double v2, v0

    const-wide v4, 0x3fb999999999999aL    # 0.1

    cmpg-double v0, v2, v4

    if-gez v0, :cond_1e

    return v1

    .line 802
    :cond_1e
    iput p1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraZoomFactor:F

    .line 804
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "setCameraZoom api1 called zoomValue ="

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-static {v0, v2}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    const/4 v0, 0x0

    cmpg-float v0, p1, v0

    const/4 v2, -0x1

    if-gez v0, :cond_3d

    return v2

    :cond_3d
    const/high16 v0, 0x42c80000    # 100.0f

    mul-float/2addr p1, v0

    const/high16 v0, 0x3f000000    # 0.5f

    add-float/2addr p1, v0

    float-to-int p1, p1

    .line 810
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getZoomRatios()Ljava/util/List;

    move-result-object v0

    if-nez v0, :cond_4b

    return v2

    :cond_4b
    move v3, v1

    .line 817
    :goto_4c
    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v4

    if-ge v3, v4, :cond_62

    .line 818
    invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/lang/Integer;

    invoke-virtual {v4}, Ljava/lang/Integer;->intValue()I

    move-result v4

    if-gt p1, v4, :cond_5f

    goto :goto_63

    :cond_5f
    add-int/lit8 v3, v3, 0x1

    goto :goto_4c

    :cond_62
    move v3, v1

    .line 826
    :goto_63
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->getCameraParameters()Landroid/hardware/Camera$Parameters;

    move-result-object p1

    .line 827
    invoke-direct {p0, p1}, Lio/agora/rtc2/video/VideoCaptureCamera1;->isZoomSupported(Landroid/hardware/Camera$Parameters;)Z

    move-result v0

    if-nez v0, :cond_6e

    return v2

    .line 830
    :cond_6e
    invoke-virtual {p1}, Landroid/hardware/Camera$Parameters;->getMaxZoom()I

    move-result v0

    if-le v3, v0, :cond_7c

    .line 832
    sget-object p1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v0, "zoom value is larger than maxZoom value"

    invoke-static {p1, v0}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v2

    .line 835
    :cond_7c
    invoke-virtual {p1, v3}, Landroid/hardware/Camera$Parameters;->setZoom(I)V

    const/4 v0, 0x1

    .line 837
    :try_start_80
    iput-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraZoomStarted:Z

    .line 838
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    invoke-virtual {v0, p1}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V
    :try_end_87
    .catch Ljava/lang/Exception; {:try_start_80 .. :try_end_87} :catch_88

    return v1

    :catch_88
    move-exception p1

    .line 840
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "setParameters failed, zoomLevel: "

    invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v3, ", "

    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v0, p1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v2
.end method

.method public startCaptureMaybeAsync()Z
    .registers 7

    .line 458
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "startCaptureMaybeAsync, use Texture: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget-boolean v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureToTexture:Z

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 459
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCamera:Landroid/hardware/Camera;

    const/4 v2, 0x0

    if-nez v1, :cond_23

    const-string v1, "startCaptureAsync: mCamera is null"

    .line 460
    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return v2

    .line 463
    :cond_23
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    if-nez v1, :cond_2d

    const-string v1, "proxyThread unavailable"

    .line 464
    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v2

    .line 467
    :cond_2d
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 469
    :try_start_32
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsRunning:Z
    :try_end_34
    .catchall {:try_start_32 .. :try_end_34} :catchall_ee

    const/4 v1, 0x1

    if-eqz v0, :cond_3d

    .line 473
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    return v1

    :cond_3d
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 476
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCaptureToTexture:Z

    if-eqz v0, :cond_4a

    .line 477
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->listenForTextureFrames()V

    goto :goto_4d

    .line 479
    :cond_4a
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->listenForBytebufferFrames()V

    .line 484
    :goto_4d
    :try_start_4d
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    const-wide/16 v3, 0x7d0

    new-instance v5, Lio/agora/rtc2/video/VideoCaptureCamera1$2;

    invoke-direct {v5, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$2;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    invoke-static {v0, v3, v4, v5}, Lio/agora/base/internal/ThreadUtils;->invokeAtFrontUninterruptibly(Landroid/os/Handler;JLjava/util/concurrent/Callable;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Boolean;
    :try_end_5c
    .catch Ljava/lang/Exception; {:try_start_4d .. :try_end_5c} :catch_ed

    if-eqz v0, :cond_ed

    .line 500
    invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z

    move-result v0

    if-nez v0, :cond_66

    goto/16 :goto_ed

    .line 502
    :cond_66
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsCameraTorchStarted:Z

    if-nez v0, :cond_78

    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mTorchMode:I

    if-eqz v0, :cond_78

    .line 503
    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mTorchMode:I

    if-ne v0, v1, :cond_74

    move v0, v1

    goto :goto_75

    :cond_74
    move v0, v2

    :goto_75
    invoke-virtual {p0, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->setTorchMode(Z)I

    .line 505
    :cond_78
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraExposureStarted:Z

    const/4 v3, 0x0

    if-nez v0, :cond_98

    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aget v0, v0, v2

    cmpl-float v0, v0, v3

    if-lez v0, :cond_98

    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aget v0, v0, v1

    cmpl-float v0, v0, v3

    if-lez v0, :cond_98

    .line 506
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aget v0, v0, v2

    iget-object v4, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposurePositions:[F

    aget v4, v4, v1

    invoke-virtual {p0, v0, v4}, Lio/agora/rtc2/video/VideoCaptureCamera1;->setExposure(FF)I

    .line 508
    :cond_98
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraFocusStarted:Z

    if-nez v0, :cond_b7

    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aget v0, v0, v2

    cmpl-float v0, v0, v3

    if-lez v0, :cond_b7

    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aget v0, v0, v1

    cmpl-float v0, v0, v3

    if-lez v0, :cond_b7

    .line 509
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aget v0, v0, v2

    iget-object v2, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraFocusPositions:[F

    aget v2, v2, v1

    invoke-virtual {p0, v0, v2}, Lio/agora/rtc2/video/VideoCaptureCamera1;->setFocus(FF)I

    .line 511
    :cond_b7
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraZoomStarted:Z

    if-nez v0, :cond_c6

    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraZoomFactor:F

    cmpl-float v0, v0, v3

    if-lez v0, :cond_c6

    .line 512
    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraZoomFactor:F

    invoke-virtual {p0, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->setZoom(F)I

    .line 514
    :cond_c6
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsExposureCompensationStarted:Z

    if-nez v0, :cond_d3

    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposureCompensation:I

    if-eqz v0, :cond_d3

    .line 515
    iget v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mCameraExposureCompensation:I

    invoke-virtual {p0, v0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->setExposureCompensation(I)I

    .line 519
    :cond_d3
    invoke-direct {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->onFaceDetectionRequestChanged()V

    .line 521
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 523
    :try_start_db
    invoke-virtual {p0}, Lio/agora/rtc2/video/VideoCaptureCamera1;->onStarted()V

    .line 524
    iput-boolean v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsRunning:Z
    :try_end_e0
    .catchall {:try_start_db .. :try_end_e0} :catchall_e6

    .line 526
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    return v1

    :catchall_e6
    move-exception v0

    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    :catch_ed
    :cond_ed
    :goto_ed
    return v2

    :catchall_ee
    move-exception v0

    .line 473
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public stopCaptureAndBlockUntilStopped()V
    .registers 5

    .line 720
    sget-object v0, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    const-string v1, "stopCaptureAndBlockUntilStopped()"

    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 721
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    if-nez v1, :cond_11

    const-string v1, "proxyThread unavailable"

    .line 722
    invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return-void

    .line 725
    :cond_11
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 727
    :try_start_16
    iget-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsRunning:Z
    :try_end_18
    .catchall {:try_start_16 .. :try_end_18} :catchall_65

    if-nez v0, :cond_20

    .line 732
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    return-void

    :cond_20
    const/4 v0, 0x0

    .line 730
    :try_start_21
    iput-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsRunning:Z
    :try_end_23
    .catchall {:try_start_21 .. :try_end_23} :catchall_65

    .line 732
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 735
    iput-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsCameraTorchStarted:Z

    .line 736
    iput-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraExposureStarted:Z

    .line 737
    iput-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraFocusStarted:Z

    .line 738
    iput-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsmCameraZoomStarted:Z

    .line 739
    iput-boolean v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mIsExposureCompensationStarted:Z

    .line 740
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    new-instance v1, Lio/agora/rtc2/video/VideoCaptureCamera1$5;

    invoke-direct {v1, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$5;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z

    .line 748
    :try_start_3c
    iget-object v0, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mProxyThreadHandler:Landroid/os/Handler;

    const-wide/16 v1, 0x7d0

    new-instance v3, Lio/agora/rtc2/video/VideoCaptureCamera1$6;

    invoke-direct {v3, p0}, Lio/agora/rtc2/video/VideoCaptureCamera1$6;-><init>(Lio/agora/rtc2/video/VideoCaptureCamera1;)V

    invoke-static {v0, v1, v2, v3}, Lio/agora/base/internal/ThreadUtils;->invokeAtFrontUninterruptibly(Landroid/os/Handler;JLjava/util/concurrent/Callable;)Ljava/lang/Object;
    :try_end_48
    .catch Ljava/lang/Exception; {:try_start_3c .. :try_end_48} :catch_49

    goto :goto_64

    :catch_49
    move-exception v0

    .line 771
    sget-object v1, Lio/agora/rtc2/video/VideoCaptureCamera1;->TAG:Ljava/lang/String;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "stopPreview got exception:"

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v1, v0}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :goto_64
    return-void

    :catchall_65
    move-exception v0

    .line 732
    iget-object v1, p0, Lio/agora/rtc2/video/VideoCaptureCamera1;->mPreviewBufferLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method