UVCCamera.smali

.class public Lcom/serenegiant/usb/UVCCamera;
.super Ljava/lang/Object;
.source "UVCCamera.java"


# static fields
.field public static final CTRL_AE:I = 0x2

.field public static final CTRL_AE_ABS:I = 0x8

.field public static final CTRL_AE_PRIORITY:I = 0x4

.field public static final CTRL_AR_REL:I = 0x10

.field public static final CTRL_FOCUS_ABS:I = 0x20

.field public static final CTRL_FOCUS_AUTO:I = 0x20000

.field public static final CTRL_FOCUS_REL:I = 0x40

.field public static final CTRL_FOCUS_SIMPLE:I = 0x80000

.field public static final CTRL_IRIS_ABS:I = 0x80

.field public static final CTRL_IRIS_REL:I = 0x100

.field public static final CTRL_PANTILT_ABS:I = 0x800

.field public static final CTRL_PANTILT_REL:I = 0x1000

.field public static final CTRL_PRIVACY:I = 0x40000

.field public static final CTRL_ROLL_ABS:I = 0x2000

.field public static final CTRL_ROLL_REL:I = 0x4000

.field public static final CTRL_SCANNING:I = 0x1

.field public static final CTRL_WINDOW:I = 0x100000

.field public static final CTRL_ZOOM_ABS:I = 0x200

.field public static final CTRL_ZOOM_REL:I = 0x400

.field private static final DEBUG:Z = false

.field public static final DEFAULT_BANDWIDTH:F = 1.0f

.field public static final DEFAULT_PREVIEW_HEIGHT:I = 0x1e0

.field public static final DEFAULT_PREVIEW_MAX_FPS:I = 0x1e

.field public static final DEFAULT_PREVIEW_MIN_FPS:I = 0x1

.field public static final DEFAULT_PREVIEW_MODE:I = 0x0

.field public static final DEFAULT_PREVIEW_WIDTH:I = 0x280

.field private static final DEFAULT_USBFS:Ljava/lang/String; = "/dev/bus/usb"

.field public static final FRAME_FORMAT_MJPEG:I = 0x1

.field public static final FRAME_FORMAT_YUYV:I = 0x0

.field public static final PIXEL_FORMAT_NV21:I = 0x5

.field public static final PIXEL_FORMAT_RAW:I = 0x0

.field public static final PIXEL_FORMAT_RGB565:I = 0x2

.field public static final PIXEL_FORMAT_RGBX:I = 0x3

.field public static final PIXEL_FORMAT_YUV:I = 0x1

.field public static final PIXEL_FORMAT_YUV420SP:I = 0x4

.field public static final PU_AVIDEO_LOCK:I = -0x7ffe0000

.field public static final PU_AVIDEO_STD:I = -0x7fff0000

.field public static final PU_BACKLIGHT:I = -0x7fffff00

.field public static final PU_BRIGHTNESS:I = -0x7fffffff

.field public static final PU_CONTRAST:I = -0x7ffffffe

.field public static final PU_CONTRAST_AUTO:I = -0x7ffc0000

.field public static final PU_DIGITAL_LIMIT:I = -0x7fff8000

.field public static final PU_DIGITAL_MULT:I = -0x7fffc000

.field public static final PU_GAIN:I = -0x7ffffe00

.field public static final PU_GAMMA:I = -0x7fffffe0

.field public static final PU_HUE:I = -0x7ffffffc

.field public static final PU_HUE_AUTO:I = -0x7ffff800

.field public static final PU_POWER_LF:I = -0x7ffffc00

.field public static final PU_SATURATION:I = -0x7ffffff8

.field public static final PU_SHARPNESS:I = -0x7ffffff0

.field public static final PU_WB_COMPO:I = -0x7fffff80

.field public static final PU_WB_COMPO_AUTO:I = -0x7fffe000

.field public static final PU_WB_TEMP:I = -0x7fffffc0

.field public static final PU_WB_TEMP_AUTO:I = -0x7ffff000

.field public static final STATUS_ATTRIBUTE_FAILURE_CHANGE:I = 0x2

.field public static final STATUS_ATTRIBUTE_INFO_CHANGE:I = 0x1

.field public static final STATUS_ATTRIBUTE_UNKNOWN:I = 0xff

.field public static final STATUS_ATTRIBUTE_VALUE_CHANGE:I = 0x0

.field public static final STATUS_CLASS_CONTROL:I = 0x10

.field public static final STATUS_CLASS_CONTROL_CAMERA:I = 0x11

.field public static final STATUS_CLASS_CONTROL_PROCESSING:I = 0x12

.field private static final SUPPORTS_CTRL:[Ljava/lang/String;

.field private static final SUPPORTS_PROC:[Ljava/lang/String;

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

.field private static isLoaded:Z


# instance fields
.field protected mAnalogVideoLockStateDef:I

.field protected mAnalogVideoLockStateMax:I

.field protected mAnalogVideoLockStateMin:I

.field protected mAnalogVideoStandardDef:I

.field protected mAnalogVideoStandardMax:I

.field protected mAnalogVideoStandardMin:I

.field protected mAutoFocusDef:I

.field protected mAutoFocusMax:I

.field protected mAutoFocusMin:I

.field protected mAutoWhiteBlanceCompoDef:I

.field protected mAutoWhiteBlanceCompoMax:I

.field protected mAutoWhiteBlanceCompoMin:I

.field protected mAutoWhiteBlanceDef:I

.field protected mAutoWhiteBlanceMax:I

.field protected mAutoWhiteBlanceMin:I

.field protected mBacklightCompDef:I

.field protected mBacklightCompMax:I

.field protected mBacklightCompMin:I

.field protected mBrightnessDef:I

.field protected mBrightnessMax:I

.field protected mBrightnessMin:I

.field protected mContrastDef:I

.field protected mContrastMax:I

.field protected mContrastMin:I

.field protected mControlSupports:J

.field private mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

.field protected mCurrentBandwidthFactor:F

.field protected mCurrentFrameFormat:I

.field protected mCurrentHeight:I

.field protected mCurrentSizeList:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List<",
            "Lcom/serenegiant/usb/Size;",
            ">;"
        }
    .end annotation
.end field

.field protected mCurrentWidth:I

.field protected mExposureDef:I

.field protected mExposureMax:I

.field protected mExposureMin:I

.field protected mExposureModeDef:I

.field protected mExposureModeMax:I

.field protected mExposureModeMin:I

.field protected mExposurePriorityDef:I

.field protected mExposurePriorityMax:I

.field protected mExposurePriorityMin:I

.field protected mFocusDef:I

.field protected mFocusMax:I

.field protected mFocusMin:I

.field protected mFocusRelDef:I

.field protected mFocusRelMax:I

.field protected mFocusRelMin:I

.field protected mFocusSimpleDef:I

.field protected mFocusSimpleMax:I

.field protected mFocusSimpleMin:I

.field protected mGainDef:I

.field protected mGainMax:I

.field protected mGainMin:I

.field protected mGammaDef:I

.field protected mGammaMax:I

.field protected mGammaMin:I

.field protected mHueDef:I

.field protected mHueMax:I

.field protected mHueMin:I

.field protected mIrisDef:I

.field protected mIrisMax:I

.field protected mIrisMin:I

.field protected mIrisRelDef:I

.field protected mIrisRelMax:I

.field protected mIrisRelMin:I

.field protected mMultiplierDef:I

.field protected mMultiplierLimitDef:I

.field protected mMultiplierLimitMax:I

.field protected mMultiplierLimitMin:I

.field protected mMultiplierMax:I

.field protected mMultiplierMin:I

.field protected mNativePtr:J

.field protected mPanDef:I

.field protected mPanMax:I

.field protected mPanMin:I

.field protected mPanRelDef:I

.field protected mPanRelMax:I

.field protected mPanRelMin:I

.field protected mPowerlineFrequencyDef:I

.field protected mPowerlineFrequencyMax:I

.field protected mPowerlineFrequencyMin:I

.field protected mPrivacyDef:I

.field protected mPrivacyMax:I

.field protected mPrivacyMin:I

.field protected mProcSupports:J

.field protected mRollDef:I

.field protected mRollMax:I

.field protected mRollMin:I

.field protected mRollRelDef:I

.field protected mRollRelMax:I

.field protected mRollRelMin:I

.field protected mSaturationDef:I

.field protected mSaturationMax:I

.field protected mSaturationMin:I

.field protected mScanningModeDef:I

.field protected mScanningModeMax:I

.field protected mScanningModeMin:I

.field protected mSharpnessDef:I

.field protected mSharpnessMax:I

.field protected mSharpnessMin:I

.field protected mSupportedSize:Ljava/lang/String;

.field protected mTiltDef:I

.field protected mTiltMax:I

.field protected mTiltMin:I

.field protected mTiltRelDef:I

.field protected mTiltRelMax:I

.field protected mTiltRelMin:I

.field protected mWhiteBlanceCompoDef:I

.field protected mWhiteBlanceCompoMax:I

.field protected mWhiteBlanceCompoMin:I

.field protected mWhiteBlanceDef:I

.field protected mWhiteBlanceMax:I

.field protected mWhiteBlanceMin:I

.field protected mWhiteBlanceRelDef:I

.field protected mWhiteBlanceRelMax:I

.field protected mWhiteBlanceRelMin:I

.field protected mZoomDef:I

.field protected mZoomMax:I

.field protected mZoomMin:I

.field protected mZoomRelDef:I

.field protected mZoomRelMax:I

.field protected mZoomRelMin:I


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

    .line 44
    const-class v0, Lcom/serenegiant/usb/UVCCamera;

    invoke-virtual {v0}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;

    move-result-object v0

    sput-object v0, Lcom/serenegiant/usb/UVCCamera;->TAG:Ljava/lang/String;

    .line 118
    sget-boolean v0, Lcom/serenegiant/usb/UVCCamera;->isLoaded:Z

    if-nez v0, :cond_25

    .line 119
    const-string v0, "jpeg-turbo1500"

    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

    .line 120
    const-string/jumbo v0, "usb100"

    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

    .line 121
    const-string/jumbo v0, "uvc"

    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

    .line 122
    const-string v0, "UVCCamera"

    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

    .line 123
    const/4 v0, 0x1

    sput-boolean v0, Lcom/serenegiant/usb/UVCCamera;->isLoaded:Z

    .line 909
    :cond_25
    const-string v1, "D0:  Scanning Mode"

    const-string v2, "D1:  Auto-Exposure Mode"

    const-string v3, "D2:  Auto-Exposure Priority"

    const-string v4, "D3:  Exposure Time (Absolute)"

    const-string v5, "D4:  Exposure Time (Relative)"

    const-string v6, "D5:  Focus (Absolute)"

    const-string v7, "D6:  Focus (Relative)"

    const-string v8, "D7:  Iris (Absolute)"

    const-string v9, "D8:  Iris (Relative)"

    const-string v10, "D9:  Zoom (Absolute)"

    const-string v11, "D10: Zoom (Relative)"

    const-string v12, "D11: PanTilt (Absolute)"

    const-string v13, "D12: PanTilt (Relative)"

    const-string v14, "D13: Roll (Absolute)"

    const-string v15, "D14: Roll (Relative)"

    const-string v16, "D15: Reserved"

    const-string v17, "D16: Reserved"

    const-string v18, "D17: Focus, Auto"

    const-string v19, "D18: Privacy"

    const-string v20, "D19: Focus, Simple"

    const-string v21, "D20: Window"

    const-string v22, "D21: Region of Interest"

    const-string v23, "D22: Reserved, set to zero"

    const-string v24, "D23: Reserved, set to zero"

    filled-new-array/range {v1 .. v24}, [Ljava/lang/String;

    move-result-object v0

    sput-object v0, Lcom/serenegiant/usb/UVCCamera;->SUPPORTS_CTRL:[Ljava/lang/String;

    .line 936
    const-string v1, "D0: Brightness"

    const-string v2, "D1: Contrast"

    const-string v3, "D2: Hue"

    const-string v4, "D3: Saturation"

    const-string v5, "D4: Sharpness"

    const-string v6, "D5: Gamma"

    const-string v7, "D6: White Balance Temperature"

    const-string v8, "D7: White Balance Component"

    const-string v9, "D8: Backlight Compensation"

    const-string v10, "D9: Gain"

    const-string v11, "D10: Power Line Frequency"

    const-string v12, "D11: Hue, Auto"

    const-string v13, "D12: White Balance Temperature, Auto"

    const-string v14, "D13: White Balance Component, Auto"

    const-string v15, "D14: Digital Multiplier"

    const-string v16, "D15: Digital Multiplier Limit"

    const-string v17, "D16: Analog Video Standard"

    const-string v18, "D17: Analog Video Lock Status"

    const-string v19, "D18: Contrast, Auto"

    const-string v20, "D19: Reserved. Set to zero"

    const-string v21, "D20: Reserved. Set to zero"

    const-string v22, "D21: Reserved. Set to zero"

    const-string v23, "D22: Reserved. Set to zero"

    const-string v24, "D23: Reserved. Set to zero"

    filled-new-array/range {v1 .. v24}, [Ljava/lang/String;

    move-result-object v0

    sput-object v0, Lcom/serenegiant/usb/UVCCamera;->SUPPORTS_PROC:[Ljava/lang/String;

    return-void
.end method

.method public constructor <init>()V
    .registers 3

    .line 179
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 130
    const/4 v0, 0x1

    iput v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentFrameFormat:I

    .line 131
    const/16 v0, 0x280

    iput v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentWidth:I

    const/16 v0, 0x1e0

    iput v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentHeight:I

    .line 132
    const/high16 v0, 0x3f800000    # 1.0f

    iput v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentBandwidthFactor:F

    .line 180
    invoke-direct {p0}, Lcom/serenegiant/usb/UVCCamera;->nativeCreate()J

    move-result-wide v0

    iput-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    .line 181
    const/4 v0, 0x0

    iput-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mSupportedSize:Ljava/lang/String;

    .line 182
    return-void
.end method

.method private static final addSize(Lorg/json/JSONObject;IILjava/util/List;)V
    .registers 15
    .param p0, "format"    # Lorg/json/JSONObject;
    .param p1, "formatType"    # I
    .param p2, "frameType"    # I
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/json/JSONObject;",
            "II",
            "Ljava/util/List<",
            "Lcom/serenegiant/usb/Size;",
            ">;)V"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lorg/json/JSONException;
        }
    .end annotation

    .line 365
    .local p3, "size_list":Ljava/util/List;, "Ljava/util/List<Lcom/serenegiant/usb/Size;>;"
    const-string/jumbo v0, "size"

    invoke-virtual {p0, v0}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;

    move-result-object v0

    .line 366
    .local v0, "size":Lorg/json/JSONArray;
    invoke-virtual {v0}, Lorg/json/JSONArray;->length()I

    move-result v1

    .line 367
    .local v1, "size_nums":I
    const/4 v2, 0x0

    .local v2, "j":I
    :goto_c
    if-ge v2, v1, :cond_38

    .line 368
    invoke-virtual {v0, v2}, Lorg/json/JSONArray;->getString(I)Ljava/lang/String;

    move-result-object v3

    const-string/jumbo v4, "x"

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

    move-result-object v9

    .line 370
    .local v9, "sz":[Ljava/lang/String;
    :try_start_19
    new-instance v10, Lcom/serenegiant/usb/Size;

    const/4 v3, 0x0

    aget-object v3, v9, v3

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

    move-result v7

    const/4 v3, 0x1

    aget-object v3, v9, v3

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

    move-result v8

    move-object v3, v10

    move v4, p1

    move v5, p2

    move v6, v2

    invoke-direct/range {v3 .. v8}, Lcom/serenegiant/usb/Size;-><init>(IIIII)V

    invoke-interface {p3, v10}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    :try_end_33
    .catch Ljava/lang/Exception; {:try_start_19 .. :try_end_33} :catch_37

    .line 373
    nop

    .line 367
    .end local v9    # "sz":[Ljava/lang/String;
    add-int/lit8 v2, v2, 0x1

    goto :goto_c

    .line 371
    .restart local v9    # "sz":[Ljava/lang/String;
    :catch_37
    move-exception v3

    .line 375
    .end local v2    # "j":I
    .end local v9    # "sz":[Ljava/lang/String;
    :cond_38
    return-void
.end method

.method private static final dumpControls(J)V
    .registers 11
    .param p0, "controlSupports"    # J

    .line 964
    sget-object v0, Lcom/serenegiant/usb/UVCCamera;->TAG:Ljava/lang/String;

    const/4 v1, 0x1

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

    invoke-static {p0, p1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;

    move-result-object v3

    const/4 v4, 0x0

    aput-object v3, v2, v4

    const-string v3, "controlSupports=%x"

    invoke-static {v3, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v2

    invoke-static {v0, v2}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    .line 965
    const/4 v0, 0x0

    .local v0, "i":I
    :goto_16
    sget-object v2, Lcom/serenegiant/usb/UVCCamera;->SUPPORTS_CTRL:[Ljava/lang/String;

    array-length v2, v2

    if-ge v0, v2, :cond_45

    .line 966
    sget-object v2, Lcom/serenegiant/usb/UVCCamera;->TAG:Ljava/lang/String;

    new-instance v3, Ljava/lang/StringBuilder;

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

    sget-object v4, Lcom/serenegiant/usb/UVCCamera;->SUPPORTS_CTRL:[Ljava/lang/String;

    aget-object v4, v4, v0

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

    shl-int v4, v1, v0

    int-to-long v4, v4

    and-long/2addr v4, p0

    const-wide/16 v6, 0x0

    cmp-long v8, v4, v6

    if-eqz v8, :cond_36

    const-string v4, "=enabled"

    goto :goto_38

    :cond_36
    const-string v4, "=disabled"

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

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

    move-result-object v3

    invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    .line 965
    add-int/lit8 v0, v0, 0x1

    goto :goto_16

    .line 968
    .end local v0    # "i":I
    :cond_45
    return-void
.end method

.method private static final dumpProc(J)V
    .registers 11
    .param p0, "procSupports"    # J

    .line 971
    sget-object v0, Lcom/serenegiant/usb/UVCCamera;->TAG:Ljava/lang/String;

    const/4 v1, 0x1

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

    invoke-static {p0, p1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;

    move-result-object v3

    const/4 v4, 0x0

    aput-object v3, v2, v4

    const-string v3, "procSupports=%x"

    invoke-static {v3, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v2

    invoke-static {v0, v2}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    .line 972
    const/4 v0, 0x0

    .local v0, "i":I
    :goto_16
    sget-object v2, Lcom/serenegiant/usb/UVCCamera;->SUPPORTS_PROC:[Ljava/lang/String;

    array-length v2, v2

    if-ge v0, v2, :cond_45

    .line 973
    sget-object v2, Lcom/serenegiant/usb/UVCCamera;->TAG:Ljava/lang/String;

    new-instance v3, Ljava/lang/StringBuilder;

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

    sget-object v4, Lcom/serenegiant/usb/UVCCamera;->SUPPORTS_PROC:[Ljava/lang/String;

    aget-object v4, v4, v0

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

    shl-int v4, v1, v0

    int-to-long v4, v4

    and-long/2addr v4, p0

    const-wide/16 v6, 0x0

    cmp-long v8, v4, v6

    if-eqz v8, :cond_36

    const-string v4, "=enabled"

    goto :goto_38

    :cond_36
    const-string v4, "=disabled"

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

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

    move-result-object v3

    invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    .line 972
    add-int/lit8 v0, v0, 0x1

    goto :goto_16

    .line 975
    .end local v0    # "i":I
    :cond_45
    return-void
.end method

.method public static getSupportedSize(ILjava/lang/String;)Ljava/util/List;
    .registers 11
    .param p0, "type"    # I
    .param p1, "supportedSize"    # Ljava/lang/String;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(I",
            "Ljava/lang/String;",
            ")",
            "Ljava/util/List<",
            "Lcom/serenegiant/usb/Size;",
            ">;"
        }
    .end annotation

    .line 343
    const-string/jumbo v0, "type"

    new-instance v1, Ljava/util/ArrayList;

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

    .line 344
    .local v1, "result":Ljava/util/List;, "Ljava/util/List<Lcom/serenegiant/usb/Size;>;"
    invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v2

    if-nez v2, :cond_48

    .line 346
    :try_start_e
    new-instance v2, Lorg/json/JSONObject;

    invoke-direct {v2, p1}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V

    .line 347
    .local v2, "json":Lorg/json/JSONObject;
    const-string v3, "formats"

    invoke-virtual {v2, v3}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;

    move-result-object v3

    .line 348
    .local v3, "formats":Lorg/json/JSONArray;
    invoke-virtual {v3}, Lorg/json/JSONArray;->length()I

    move-result v4

    .line 349
    .local v4, "format_nums":I
    const/4 v5, 0x0

    .local v5, "i":I
    :goto_1e
    if-ge v5, v4, :cond_43

    .line 350
    invoke-virtual {v3, v5}, Lorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject;

    move-result-object v6

    .line 351
    .local v6, "format":Lorg/json/JSONObject;
    invoke-virtual {v6, v0}, Lorg/json/JSONObject;->has(Ljava/lang/String;)Z

    move-result v7

    if-eqz v7, :cond_40

    const-string/jumbo v7, "size"

    invoke-virtual {v6, v7}, Lorg/json/JSONObject;->has(Ljava/lang/String;)Z

    move-result v7

    if-eqz v7, :cond_40

    .line 352
    invoke-virtual {v6, v0}, Lorg/json/JSONObject;->getInt(Ljava/lang/String;)I

    move-result v7

    .line 353
    .local v7, "format_type":I
    if-eq v7, p0, :cond_3c

    const/4 v8, -0x1

    if-ne p0, v8, :cond_40

    .line 354
    :cond_3c
    const/4 v8, 0x0

    invoke-static {v6, v7, v8, v1}, Lcom/serenegiant/usb/UVCCamera;->addSize(Lorg/json/JSONObject;IILjava/util/List;)V
    :try_end_40
    .catch Lorg/json/JSONException; {:try_start_e .. :try_end_40} :catch_44

    .line 349
    .end local v6    # "format":Lorg/json/JSONObject;
    .end local v7    # "format_type":I
    :cond_40
    add-int/lit8 v5, v5, 0x1

    goto :goto_1e

    .line 360
    .end local v2    # "json":Lorg/json/JSONObject;
    .end local v3    # "formats":Lorg/json/JSONArray;
    .end local v4    # "format_nums":I
    .end local v5    # "i":I
    :cond_43
    goto :goto_48

    .line 358
    :catch_44
    move-exception v0

    .line 359
    .local v0, "e":Lorg/json/JSONException;
    invoke-virtual {v0}, Lorg/json/JSONException;->printStackTrace()V

    .line 361
    .end local v0    # "e":Lorg/json/JSONException;
    :cond_48
    :goto_48
    return-object v1
.end method

.method private final getUSBFSName(Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;)Ljava/lang/String;
    .registers 10
    .param p1, "ctrlBlock"    # Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    .line 978
    const/4 v0, 0x0

    .line 979
    .local v0, "result":Ljava/lang/String;
    invoke-virtual {p1}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getDeviceName()Ljava/lang/String;

    move-result-object v1

    .line 980
    .local v1, "name":Ljava/lang/String;
    invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v2

    const-string v3, "/"

    if-nez v2, :cond_12

    invoke-virtual {v1, v3}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v2

    goto :goto_13

    :cond_12
    const/4 v2, 0x0

    .line 981
    .local v2, "v":[Ljava/lang/String;
    :goto_13
    if-eqz v2, :cond_35

    array-length v4, v2

    const/4 v5, 0x2

    if-le v4, v5, :cond_35

    .line 982
    new-instance v4, Ljava/lang/StringBuilder;

    const/4 v6, 0x0

    aget-object v6, v2, v6

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

    .line 983
    .local v4, "sb":Ljava/lang/StringBuilder;
    const/4 v6, 0x1

    .local v6, "i":I
    :goto_22
    array-length v7, v2

    sub-int/2addr v7, v5

    if-ge v6, v7, :cond_31

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

    aget-object v7, v2, v6

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

    .line 983
    add-int/lit8 v6, v6, 0x1

    goto :goto_22

    .line 985
    .end local v6    # "i":I
    :cond_31
    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 987
    .end local v4    # "sb":Ljava/lang/StringBuilder;
    :cond_35
    invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v3

    if-eqz v3, :cond_53

    .line 988
    sget-object v3, Lcom/serenegiant/usb/UVCCamera;->TAG:Ljava/lang/String;

    new-instance v4, Ljava/lang/StringBuilder;

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

    const-string v5, "failed to get USBFS path, try to use default path:"

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

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

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

    move-result-object v4

    invoke-static {v3, v4}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I

    .line 989
    const-string v0, "/dev/bus/usb"

    .line 992
    :cond_53
    return-object v0
.end method

.method private final native nativeConnect(JIIIIILjava/lang/String;)I
.end method

.method private final native nativeCreate()J
.end method

.method private final native nativeDestroy(J)V
.end method

.method private static final native nativeGetAnalogVideoLoackState(J)I
.end method

.method private static final native nativeGetAnalogVideoStandard(J)I
.end method

.method private static final native nativeGetAutoContrast(J)I
.end method

.method private static final native nativeGetAutoFocus(J)I
.end method

.method private static final native nativeGetAutoHue(J)I
.end method

.method private static final native nativeGetAutoWhiteBlance(J)I
.end method

.method private static final native nativeGetAutoWhiteBlanceCompo(J)I
.end method

.method private static final native nativeGetBacklightComp(J)I
.end method

.method private static final native nativeGetBrightness(J)I
.end method

.method private static final native nativeGetContrast(J)I
.end method

.method private static final native nativeGetCtrlSupports(J)J
.end method

.method private static final native nativeGetDigitalMultiplier(J)I
.end method

.method private static final native nativeGetDigitalMultiplierLimit(J)I
.end method

.method private static final native nativeGetExposure(J)I
.end method

.method private static final native nativeGetExposureMode(J)I
.end method

.method private static final native nativeGetExposurePriority(J)I
.end method

.method private static final native nativeGetExposureRel(J)I
.end method

.method private static final native nativeGetFocus(J)I
.end method

.method private static final native nativeGetFocusRel(J)I
.end method

.method private static final native nativeGetGain(J)I
.end method

.method private static final native nativeGetGamma(J)I
.end method

.method private static final native nativeGetHue(J)I
.end method

.method private static final native nativeGetIris(J)I
.end method

.method private static final native nativeGetIrisRel(J)I
.end method

.method private static final native nativeGetPan(J)I
.end method

.method private static final native nativeGetPanRel(J)I
.end method

.method private static final native nativeGetPowerlineFrequency(J)I
.end method

.method private static final native nativeGetPrivacy(J)I
.end method

.method private static final native nativeGetProcSupports(J)J
.end method

.method private static final native nativeGetRoll(J)I
.end method

.method private static final native nativeGetRollRel(J)I
.end method

.method private static final native nativeGetSaturation(J)I
.end method

.method private static final native nativeGetScanningMode(J)I
.end method

.method private static final native nativeGetSharpness(J)I
.end method

.method private static final native nativeGetSupportedSize(J)Ljava/lang/String;
.end method

.method private static final native nativeGetTilt(J)I
.end method

.method private static final native nativeGetTiltRel(J)I
.end method

.method private static final native nativeGetWhiteBlance(J)I
.end method

.method private static final native nativeGetWhiteBlanceCompo(J)I
.end method

.method private static final native nativeGetZoom(J)I
.end method

.method private static final native nativeGetZoomRel(J)I
.end method

.method private static final native nativeRelease(J)I
.end method

.method private static final native nativeSetAnalogVideoLoackState(JI)I
.end method

.method private static final native nativeSetAnalogVideoStandard(JI)I
.end method

.method private static final native nativeSetAutoContrast(JZ)I
.end method

.method private static final native nativeSetAutoFocus(JZ)I
.end method

.method private static final native nativeSetAutoHue(JZ)I
.end method

.method private static final native nativeSetAutoWhiteBlance(JZ)I
.end method

.method private static final native nativeSetAutoWhiteBlanceCompo(JZ)I
.end method

.method private static final native nativeSetBacklightComp(JI)I
.end method

.method private static final native nativeSetBrightness(JI)I
.end method

.method private static final native nativeSetButtonCallback(JLcom/serenegiant/usb/IButtonCallback;)I
.end method

.method private static final native nativeSetCaptureDisplay(JLandroid/view/Surface;)I
.end method

.method private static final native nativeSetContrast(JI)I
.end method

.method private static final native nativeSetDigitalMultiplier(JI)I
.end method

.method private static final native nativeSetDigitalMultiplierLimit(JI)I
.end method

.method private static final native nativeSetExposure(JI)I
.end method

.method private static final native nativeSetExposureMode(JI)I
.end method

.method private static final native nativeSetExposurePriority(JI)I
.end method

.method private static final native nativeSetExposureRel(JI)I
.end method

.method private static final native nativeSetFocus(JI)I
.end method

.method private static final native nativeSetFocusRel(JI)I
.end method

.method private static final native nativeSetFrameCallback(JLcom/serenegiant/usb/IFrameCallback;I)I
.end method

.method private static final native nativeSetGain(JI)I
.end method

.method private static final native nativeSetGamma(JI)I
.end method

.method private static final native nativeSetHue(JI)I
.end method

.method private static final native nativeSetIris(JI)I
.end method

.method private static final native nativeSetIrisRel(JI)I
.end method

.method private static final native nativeSetPan(JI)I
.end method

.method private static final native nativeSetPanRel(JI)I
.end method

.method private static final native nativeSetPowerlineFrequency(JI)I
.end method

.method private static final native nativeSetPreviewDisplay(JLandroid/view/Surface;)I
.end method

.method private static final native nativeSetPreviewSize(JIIIIIF)I
.end method

.method private static final native nativeSetPrivacy(JZ)I
.end method

.method private static final native nativeSetRoll(JI)I
.end method

.method private static final native nativeSetRollRel(JI)I
.end method

.method private static final native nativeSetSaturation(JI)I
.end method

.method private static final native nativeSetScanningMode(JI)I
.end method

.method private static final native nativeSetSharpness(JI)I
.end method

.method private static final native nativeSetStatusCallback(JLcom/serenegiant/usb/IStatusCallback;)I
.end method

.method private static final native nativeSetTilt(JI)I
.end method

.method private static final native nativeSetTiltRel(JI)I
.end method

.method private static final native nativeSetWhiteBlance(JI)I
.end method

.method private static final native nativeSetWhiteBlanceCompo(JI)I
.end method

.method private static final native nativeSetZoom(JI)I
.end method

.method private static final native nativeSetZoomRel(JI)I
.end method

.method private static final native nativeStartPreview(J)I
.end method

.method private static final native nativeStopPreview(J)I
.end method

.method private final native nativeUpdateAnalogVideoLockStateLimit(J)I
.end method

.method private final native nativeUpdateAnalogVideoStandardLimit(J)I
.end method

.method private final native nativeUpdateAutoContrastLimit(J)I
.end method

.method private final native nativeUpdateAutoFocusLimit(J)I
.end method

.method private final native nativeUpdateAutoHueLimit(J)I
.end method

.method private final native nativeUpdateAutoWhiteBlanceCompoLimit(J)I
.end method

.method private final native nativeUpdateAutoWhiteBlanceLimit(J)I
.end method

.method private final native nativeUpdateBacklightCompLimit(J)I
.end method

.method private final native nativeUpdateBrightnessLimit(J)I
.end method

.method private final native nativeUpdateContrastLimit(J)I
.end method

.method private final native nativeUpdateDigitalMultiplierLimit(J)I
.end method

.method private final native nativeUpdateDigitalMultiplierLimitLimit(J)I
.end method

.method private final native nativeUpdateExposureLimit(J)I
.end method

.method private final native nativeUpdateExposureModeLimit(J)I
.end method

.method private final native nativeUpdateExposurePriorityLimit(J)I
.end method

.method private final native nativeUpdateExposureRelLimit(J)I
.end method

.method private final native nativeUpdateFocusLimit(J)I
.end method

.method private final native nativeUpdateFocusRelLimit(J)I
.end method

.method private final native nativeUpdateGainLimit(J)I
.end method

.method private final native nativeUpdateGammaLimit(J)I
.end method

.method private final native nativeUpdateHueLimit(J)I
.end method

.method private final native nativeUpdateIrisLimit(J)I
.end method

.method private final native nativeUpdateIrisRelLimit(J)I
.end method

.method private final native nativeUpdatePanLimit(J)I
.end method

.method private final native nativeUpdatePanRelLimit(J)I
.end method

.method private final native nativeUpdatePowerlineFrequencyLimit(J)I
.end method

.method private final native nativeUpdatePrivacyLimit(J)I
.end method

.method private final native nativeUpdateRollLimit(J)I
.end method

.method private final native nativeUpdateRollRelLimit(J)I
.end method

.method private final native nativeUpdateSaturationLimit(J)I
.end method

.method private final native nativeUpdateScanningModeLimit(J)I
.end method

.method private final native nativeUpdateSharpnessLimit(J)I
.end method

.method private final native nativeUpdateTiltLimit(J)I
.end method

.method private final native nativeUpdateTiltRelLimit(J)I
.end method

.method private final native nativeUpdateWhiteBlanceCompoLimit(J)I
.end method

.method private final native nativeUpdateWhiteBlanceLimit(J)I
.end method

.method private final native nativeUpdateZoomLimit(J)I
.end method

.method private final native nativeUpdateZoomRelLimit(J)I
.end method


# virtual methods
.method public checkSupportFlag(J)Z
    .registers 10
    .param p1, "flag"    # J

    .line 410
    invoke-virtual {p0}, Lcom/serenegiant/usb/UVCCamera;->updateCameraParams()V

    .line 411
    const-wide/32 v0, -0x80000000

    and-long v2, p1, v0

    const/4 v4, 0x1

    const/4 v5, 0x0

    cmp-long v6, v2, v0

    if-nez v6, :cond_1c

    .line 412
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mProcSupports:J

    and-long/2addr v0, p1

    const-wide/32 v2, 0x7fffffff

    and-long/2addr v2, p1

    cmp-long v6, v0, v2

    if-nez v6, :cond_1a

    goto :goto_1b

    :cond_1a
    const/4 v4, 0x0

    :goto_1b
    return v4

    .line 414
    :cond_1c
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mControlSupports:J

    and-long/2addr v0, p1

    cmp-long v2, v0, p1

    if-nez v2, :cond_24

    goto :goto_25

    :cond_24
    const/4 v4, 0x0

    :goto_25
    return v4
.end method

.method public declared-synchronized close()V
    .registers 6

    monitor-enter p0

    .line 238
    :try_start_1
    invoke-virtual {p0}, Lcom/serenegiant/usb/UVCCamera;->stopPreview()V

    .line 239
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_11

    .line 240
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeRelease(J)I

    .line 243
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_11
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    const/4 v1, 0x0

    if-eqz v0, :cond_1d

    .line 244
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    invoke-virtual {v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->close()V

    .line 245
    iput-object v1, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    .line 247
    :cond_1d
    iput-wide v2, p0, Lcom/serenegiant/usb/UVCCamera;->mProcSupports:J

    iput-wide v2, p0, Lcom/serenegiant/usb/UVCCamera;->mControlSupports:J

    .line 248
    const/4 v0, -0x1

    iput v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentFrameFormat:I

    .line 249
    const/4 v0, 0x0

    iput v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentBandwidthFactor:F

    .line 250
    iput-object v1, p0, Lcom/serenegiant/usb/UVCCamera;->mSupportedSize:Ljava/lang/String;

    .line 251
    iput-object v1, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentSizeList:Ljava/util/List;
    :try_end_2b
    .catchall {:try_start_1 .. :try_end_2b} :catchall_2d

    .line 253
    monitor-exit p0

    return-void

    .line 237
    :catchall_2d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized destroy()V
    .registers 6

    monitor-enter p0

    .line 400
    :try_start_1
    invoke-virtual {p0}, Lcom/serenegiant/usb/UVCCamera;->close()V

    .line 401
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_13

    .line 402
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeDestroy(J)V

    .line 403
    iput-wide v2, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J
    :try_end_13
    .catchall {:try_start_1 .. :try_end_13} :catchall_15

    .line 405
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_13
    monitor-exit p0

    return-void

    .line 399
    :catchall_15
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getAutoFocus()Z
    .registers 7

    monitor-enter p0

    .line 425
    const/4 v0, 0x1

    .line 426
    .local v0, "result":Z
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_16

    .line 427
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeGetAutoFocus(J)I

    move-result v1
    :try_end_10
    .catchall {:try_start_2 .. :try_end_10} :catchall_18

    if-lez v1, :cond_14

    const/4 v1, 0x1

    goto :goto_15

    :cond_14
    const/4 v1, 0x0

    :goto_15
    move v0, v1

    .line 429
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_16
    monitor-exit p0

    return v0

    .line 424
    .end local v0    # "result":Z
    :catchall_18
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getAutoWhiteBlance()Z
    .registers 7

    monitor-enter p0

    .line 480
    const/4 v0, 0x1

    .line 481
    .local v0, "result":Z
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_16

    .line 482
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeGetAutoWhiteBlance(J)I

    move-result v1
    :try_end_10
    .catchall {:try_start_2 .. :try_end_10} :catchall_18

    if-lez v1, :cond_14

    const/4 v1, 0x1

    goto :goto_15

    :cond_14
    const/4 v1, 0x0

    :goto_15
    move v0, v1

    .line 484
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_16
    monitor-exit p0

    return v0

    .line 479
    .end local v0    # "result":Z
    :catchall_18
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getBrightness()I
    .registers 3

    monitor-enter p0

    .line 559
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetBrightness(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getBrightness(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getBrightness(I)I
    .registers 8
    .param p1, "brightness_abs"    # I

    monitor-enter p0

    .line 544
    const/4 v0, 0x0

    .line 545
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_29

    .line 546
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateBrightnessLimit(J)I

    .line 547
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mBrightnessMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mBrightnessMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 548
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_29

    .line 549
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mBrightnessMin:I
    :try_end_20
    .catchall {:try_start_2 .. :try_end_20} :catchall_2b

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 552
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_29
    monitor-exit p0

    return v0

    .line 543
    .end local v0    # "result":I
    .end local p1    # "brightness_abs":I
    :catchall_2b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized getContrast()I
    .registers 3

    monitor-enter p0

    .line 600
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetContrast(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getContrast(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getContrast(I)I
    .registers 8
    .param p1, "contrast_abs"    # I

    monitor-enter p0

    .line 586
    const/4 v0, 0x0

    .line 587
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_24

    .line 588
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mContrastMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mContrastMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 589
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_24

    .line 590
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mContrastMin:I
    :try_end_1b
    .catchall {:try_start_2 .. :try_end_1b} :catchall_26

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 593
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_24
    monitor-exit p0

    return v0

    .line 585
    .end local v0    # "result":I
    .end local p1    # "contrast_abs":I
    :catchall_26
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public getDevice()Landroid/hardware/usb/UsbDevice;
    .registers 2

    .line 256
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    if-eqz v0, :cond_9

    invoke-virtual {v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getDevice()Landroid/hardware/usb/UsbDevice;

    move-result-object v0

    goto :goto_a

    :cond_9
    const/4 v0, 0x0

    :goto_a
    return-object v0
.end method

.method public getDeviceName()Ljava/lang/String;
    .registers 2

    .line 260
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    if-eqz v0, :cond_9

    invoke-virtual {v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getDeviceName()Ljava/lang/String;

    move-result-object v0

    goto :goto_a

    :cond_9
    const/4 v0, 0x0

    :goto_a
    return-object v0
.end method

.method public declared-synchronized getFocus()I
    .registers 3

    monitor-enter p0

    .line 463
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetFocus(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getFocus(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getFocus(I)I
    .registers 8
    .param p1, "focus_abs"    # I

    monitor-enter p0

    .line 448
    const/4 v0, 0x0

    .line 449
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_29

    .line 450
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateFocusLimit(J)I

    .line 451
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mFocusMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mFocusMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 452
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_29

    .line 453
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mFocusMin:I
    :try_end_20
    .catchall {:try_start_2 .. :try_end_20} :catchall_2b

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 456
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_29
    monitor-exit p0

    return v0

    .line 447
    .end local v0    # "result":I
    .end local p1    # "focus_abs":I
    :catchall_2b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized getGain()I
    .registers 3

    monitor-enter p0

    .line 681
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetGain(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getGain(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getGain(I)I
    .registers 8
    .param p1, "gain_abs"    # I

    monitor-enter p0

    .line 666
    const/4 v0, 0x0

    .line 667
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_29

    .line 668
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateGainLimit(J)I

    .line 669
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mGainMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mGainMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 670
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_29

    .line 671
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mGainMin:I
    :try_end_20
    .catchall {:try_start_2 .. :try_end_20} :catchall_2b

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 674
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_29
    monitor-exit p0

    return v0

    .line 665
    .end local v0    # "result":I
    .end local p1    # "gain_abs":I
    :catchall_2b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized getGamma()I
    .registers 3

    monitor-enter p0

    .line 722
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetGamma(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getGamma(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getGamma(I)I
    .registers 8
    .param p1, "gamma_abs"    # I

    monitor-enter p0

    .line 707
    const/4 v0, 0x0

    .line 708
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_29

    .line 709
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateGammaLimit(J)I

    .line 710
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mGammaMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mGammaMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 711
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_29

    .line 712
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mGammaMin:I
    :try_end_20
    .catchall {:try_start_2 .. :try_end_20} :catchall_2b

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 715
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_29
    monitor-exit p0

    return v0

    .line 706
    .end local v0    # "result":I
    .end local p1    # "gamma_abs":I
    :catchall_2b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public getHandle()J
    .registers 3

    .line 184
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    return-wide v0
.end method

.method public declared-synchronized getHue()I
    .registers 3

    monitor-enter p0

    .line 803
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetHue(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getHue(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getHue(I)I
    .registers 8
    .param p1, "hue_abs"    # I

    monitor-enter p0

    .line 788
    const/4 v0, 0x0

    .line 789
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_29

    .line 790
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateHueLimit(J)I

    .line 791
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mHueMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mHueMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 792
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_29

    .line 793
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mHueMin:I
    :try_end_20
    .catchall {:try_start_2 .. :try_end_20} :catchall_2b

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 796
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_29
    monitor-exit p0

    return v0

    .line 787
    .end local v0    # "result":I
    .end local p1    # "hue_abs":I
    :catchall_2b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public getPowerlineFrequency()I
    .registers 3

    .line 819
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetPowerlineFrequency(J)I

    move-result v0

    return v0
.end method

.method public getPreviewSize()Lcom/serenegiant/usb/Size;
    .registers 7

    .line 272
    const/4 v0, 0x0

    .line 273
    .local v0, "result":Lcom/serenegiant/usb/Size;
    invoke-virtual {p0}, Lcom/serenegiant/usb/UVCCamera;->getSupportedSizeList()Ljava/util/List;

    move-result-object v1

    .line 274
    .local v1, "list":Ljava/util/List;, "Ljava/util/List<Lcom/serenegiant/usb/Size;>;"
    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

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

    move-result v3

    if-eqz v3, :cond_25

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

    move-result-object v3

    check-cast v3, Lcom/serenegiant/usb/Size;

    .line 275
    .local v3, "sz":Lcom/serenegiant/usb/Size;
    iget v4, v3, Lcom/serenegiant/usb/Size;->width:I

    iget v5, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentWidth:I

    if-eq v4, v5, :cond_23

    iget v4, v3, Lcom/serenegiant/usb/Size;->height:I

    iget v5, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentHeight:I

    if-ne v4, v5, :cond_22

    goto :goto_23

    .line 280
    .end local v3    # "sz":Lcom/serenegiant/usb/Size;
    :cond_22
    goto :goto_9

    .line 277
    .restart local v3    # "sz":Lcom/serenegiant/usb/Size;
    :cond_23
    :goto_23
    move-object v0, v3

    .line 278
    nop

    .line 281
    .end local v3    # "sz":Lcom/serenegiant/usb/Size;
    :cond_25
    return-object v0
.end method

.method public declared-synchronized getSaturation()I
    .registers 3

    monitor-enter p0

    .line 763
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetSaturation(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getSaturation(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getSaturation(I)I
    .registers 8
    .param p1, "saturation_abs"    # I

    monitor-enter p0

    .line 748
    const/4 v0, 0x0

    .line 749
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_29

    .line 750
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateSaturationLimit(J)I

    .line 751
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mSaturationMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mSaturationMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 752
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_29

    .line 753
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mSaturationMin:I
    :try_end_20
    .catchall {:try_start_2 .. :try_end_20} :catchall_2b

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 756
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_29
    monitor-exit p0

    return v0

    .line 747
    .end local v0    # "result":I
    .end local p1    # "saturation_abs":I
    :catchall_2b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized getSharpness()I
    .registers 3

    monitor-enter p0

    .line 641
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetSharpness(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getSharpness(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getSharpness(I)I
    .registers 8
    .param p1, "sharpness_abs"    # I

    monitor-enter p0

    .line 626
    const/4 v0, 0x0

    .line 627
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_29

    .line 628
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateSharpnessLimit(J)I

    .line 629
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mSharpnessMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mSharpnessMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 630
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_29

    .line 631
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mSharpnessMin:I
    :try_end_20
    .catchall {:try_start_2 .. :try_end_20} :catchall_2b

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 634
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_29
    monitor-exit p0

    return v0

    .line 625
    .end local v0    # "result":I
    .end local p1    # "sharpness_abs":I
    :catchall_2b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized getSupportedSize()Ljava/lang/String;
    .registers 3

    monitor-enter p0

    .line 268
    :try_start_1
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mSupportedSize:Ljava/lang/String;

    invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v0

    if-nez v0, :cond_c

    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mSupportedSize:Ljava/lang/String;

    goto :goto_14

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_c
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetSupportedSize(J)Ljava/lang/String;

    move-result-object v0

    iput-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mSupportedSize:Ljava/lang/String;
    :try_end_14
    .catchall {:try_start_1 .. :try_end_14} :catchall_16

    :goto_14
    monitor-exit p0

    return-object v0

    :catchall_16
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public getSupportedSizeList()Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List<",
            "Lcom/serenegiant/usb/Size;",
            ">;"
        }
    .end annotation

    .line 338
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentFrameFormat:I

    if-lez v0, :cond_6

    const/4 v0, 0x6

    goto :goto_7

    :cond_6
    const/4 v0, 0x4

    .line 339
    .local v0, "type":I
    :goto_7
    iget-object v1, p0, Lcom/serenegiant/usb/UVCCamera;->mSupportedSize:Ljava/lang/String;

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->getSupportedSize(ILjava/lang/String;)Ljava/util/List;

    move-result-object v1

    return-object v1
.end method

.method public getUsbControlBlock()Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    .registers 2

    .line 264
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    return-object v0
.end method

.method public declared-synchronized getWhiteBlance()I
    .registers 3

    monitor-enter p0

    .line 519
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetWhiteBlance(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getFocus(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getWhiteBlance(I)I
    .registers 8
    .param p1, "whiteBlance_abs"    # I

    monitor-enter p0

    .line 504
    const/4 v0, 0x0

    .line 505
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_29

    .line 506
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateWhiteBlanceLimit(J)I

    .line 507
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mWhiteBlanceMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mWhiteBlanceMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 508
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_29

    .line 509
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mWhiteBlanceMin:I
    :try_end_20
    .catchall {:try_start_2 .. :try_end_20} :catchall_2b

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 512
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_29
    monitor-exit p0

    return v0

    .line 503
    .end local v0    # "result":I
    .end local p1    # "whiteBlance_abs":I
    :catchall_2b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized getZoom()I
    .registers 3

    monitor-enter p0

    .line 858
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetZoom(J)I

    move-result v0

    invoke-virtual {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getZoom(I)I

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return v0

    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getZoom(I)I
    .registers 8
    .param p1, "zoom_abs"    # I

    monitor-enter p0

    .line 843
    const/4 v0, 0x0

    .line 844
    .local v0, "result":I
    :try_start_2
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_29

    .line 845
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateZoomLimit(J)I

    .line 846
    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mZoomMax:I

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mZoomMin:I

    sub-int/2addr v1, v2

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

    move-result v1

    int-to-float v1, v1

    .line 847
    .local v1, "range":F
    const/4 v2, 0x0

    cmpl-float v2, v1, v2

    if-lez v2, :cond_29

    .line 848
    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mZoomMin:I
    :try_end_20
    .catchall {:try_start_2 .. :try_end_20} :catchall_2b

    sub-int v2, p1, v2

    int-to-float v2, v2

    const/high16 v3, 0x42c80000    # 100.0f

    mul-float v2, v2, v3

    div-float/2addr v2, v1

    float-to-int v0, v2

    .line 851
    .end local v1    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_29
    monitor-exit p0

    return v0

    .line 842
    .end local v0    # "result":I
    .end local p1    # "zoom_abs":I
    :catchall_2b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized open(Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;)V
    .registers 12
    .param p1, "ctrlBlock"    # Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    monitor-enter p0

    .line 193
    :try_start_1
    invoke-virtual {p1}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->clone()Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    move-result-object v0

    iput-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    .line 194
    iget-wide v2, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    .line 195
    invoke-virtual {v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getVenderId()I

    move-result v4

    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    invoke-virtual {v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getProductId()I

    move-result v5

    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    .line 196
    invoke-virtual {v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getFileDescriptor()I

    move-result v6

    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    .line 197
    invoke-virtual {v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getBusNum()I

    move-result v7

    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    .line 198
    invoke-virtual {v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getDevNum()I

    move-result v8

    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    .line 199
    invoke-direct {p0, v0}, Lcom/serenegiant/usb/UVCCamera;->getUSBFSName(Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;)Ljava/lang/String;

    move-result-object v9

    .line 194
    move-object v1, p0

    invoke-direct/range {v1 .. v9}, Lcom/serenegiant/usb/UVCCamera;->nativeConnect(JIIIIILjava/lang/String;)I

    move-result v0
    :try_end_30
    .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_30} :catch_33
    .catchall {:try_start_1 .. :try_end_30} :catchall_31

    .line 203
    .local v0, "result":I
    goto :goto_3b

    .line 192
    .end local v0    # "result":I
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    .end local p1    # "ctrlBlock":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :catchall_31
    move-exception p1

    goto :goto_7d

    .line 200
    .restart local p1    # "ctrlBlock":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :catch_33
    move-exception v0

    .line 201
    .local v0, "e":Ljava/lang/Exception;
    :try_start_34
    sget-object v1, Lcom/serenegiant/usb/UVCCamera;->TAG:Ljava/lang/String;

    invoke-static {v1, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/Throwable;)I

    .line 202
    const/4 v1, -0x1

    move v0, v1

    .line 204
    .local v0, "result":I
    :goto_3b
    if-nez v0, :cond_66

    .line 207
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v3, 0x0

    cmp-long v5, v1, v3

    if-eqz v5, :cond_55

    iget-object v1, p0, Lcom/serenegiant/usb/UVCCamera;->mSupportedSize:Ljava/lang/String;

    invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v1

    if-eqz v1, :cond_55

    .line 208
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeGetSupportedSize(J)Ljava/lang/String;

    move-result-object v1

    iput-object v1, p0, Lcom/serenegiant/usb/UVCCamera;->mSupportedSize:Ljava/lang/String;

    .line 210
    :cond_55
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const/16 v3, 0x280

    const/16 v4, 0x1e0

    const/4 v5, 0x1

    const/16 v6, 0x1e

    const/4 v7, 0x0

    const/high16 v8, 0x3f800000    # 1.0f

    invoke-static/range {v1 .. v8}, Lcom/serenegiant/usb/UVCCamera;->nativeSetPreviewSize(JIIIIIF)I
    :try_end_64
    .catchall {:try_start_34 .. :try_end_64} :catchall_31

    .line 212
    monitor-exit p0

    return-void

    .line 205
    :cond_66
    :try_start_66
    new-instance v1, Ljava/lang/UnsupportedOperationException;

    new-instance v2, Ljava/lang/StringBuilder;

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

    const-string v3, "open failed:result="

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

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

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

    move-result-object v2

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

    throw v1
    :try_end_7d
    .catchall {:try_start_66 .. :try_end_7d} :catchall_31

    .line 192
    .end local v0    # "result":I
    .end local p1    # "ctrlBlock":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :goto_7d
    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized resetBrightness()V
    .registers 6

    monitor-enter p0

    .line 563
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 564
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mBrightnessDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetBrightness(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 566
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 562
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized resetContrast()V
    .registers 6

    monitor-enter p0

    .line 604
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 605
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mContrastDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetContrast(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 607
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 603
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized resetFocus()V
    .registers 6

    monitor-enter p0

    .line 467
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 468
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mFocusDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetFocus(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 470
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 466
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized resetGain()V
    .registers 6

    monitor-enter p0

    .line 685
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 686
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mGainDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetGain(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 688
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 684
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized resetGamma()V
    .registers 6

    monitor-enter p0

    .line 726
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 727
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mGammaDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetGamma(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 729
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 725
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized resetHue()V
    .registers 6

    monitor-enter p0

    .line 807
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 808
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mSaturationDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetHue(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 810
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 806
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized resetSaturation()V
    .registers 6

    monitor-enter p0

    .line 767
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 768
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mSaturationDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetSaturation(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 770
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 766
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized resetSharpness()V
    .registers 6

    monitor-enter p0

    .line 645
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 646
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mSharpnessDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetSharpness(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 648
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 644
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized resetWhiteBlance()V
    .registers 6

    monitor-enter p0

    .line 523
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 524
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mWhiteBlanceDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetWhiteBlance(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 526
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 522
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized resetZoom()V
    .registers 6

    monitor-enter p0

    .line 862
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_10

    .line 863
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mZoomDef:I

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetZoom(JI)I
    :try_end_10
    .catchall {:try_start_1 .. :try_end_10} :catchall_12

    .line 865
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_10
    monitor-exit p0

    return-void

    .line 861
    :catchall_12
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized setAutoFocus(Z)V
    .registers 7
    .param p1, "autoFocus"    # Z

    monitor-enter p0

    .line 419
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_e

    .line 420
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1, p1}, Lcom/serenegiant/usb/UVCCamera;->nativeSetAutoFocus(JZ)I
    :try_end_e
    .catchall {:try_start_1 .. :try_end_e} :catchall_10

    .line 422
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_e
    monitor-exit p0

    return-void

    .line 418
    .end local p1    # "autoFocus":Z
    :catchall_10
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized setAutoWhiteBlance(Z)V
    .registers 7
    .param p1, "autoWhiteBlance"    # Z

    monitor-enter p0

    .line 474
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_e

    .line 475
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1, p1}, Lcom/serenegiant/usb/UVCCamera;->nativeSetAutoWhiteBlance(JZ)I
    :try_end_e
    .catchall {:try_start_1 .. :try_end_e} :catchall_10

    .line 477
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_e
    monitor-exit p0

    return-void

    .line 473
    .end local p1    # "autoWhiteBlance":Z
    :catchall_10
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized setBrightness(I)V
    .registers 7
    .param p1, "brightness"    # I

    monitor-enter p0

    .line 532
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_27

    .line 533
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mBrightnessMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mBrightnessMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 534
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_27

    .line 535
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    int-to-float v3, p1

    const/high16 v4, 0x42c80000    # 100.0f

    div-float/2addr v3, v4

    mul-float v3, v3, v0

    float-to-int v3, v3

    iget v4, p0, Lcom/serenegiant/usb/UVCCamera;->mBrightnessMin:I

    add-int/2addr v3, v4

    invoke-static {v1, v2, v3}, Lcom/serenegiant/usb/UVCCamera;->nativeSetBrightness(JI)I
    :try_end_27
    .catchall {:try_start_1 .. :try_end_27} :catchall_29

    .line 537
    .end local v0    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_27
    monitor-exit p0

    return-void

    .line 531
    .end local p1    # "brightness":I
    :catchall_29
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public setButtonCallback(Lcom/serenegiant/usb/IButtonCallback;)V
    .registers 7
    .param p1, "callback"    # Lcom/serenegiant/usb/IButtonCallback;

    .line 229
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_b

    .line 230
    invoke-static {v0, v1, p1}, Lcom/serenegiant/usb/UVCCamera;->nativeSetButtonCallback(JLcom/serenegiant/usb/IButtonCallback;)I

    .line 232
    :cond_b
    return-void
.end method

.method public declared-synchronized setContrast(I)V
    .registers 7
    .param p1, "contrast"    # I

    monitor-enter p0

    .line 573
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_2c

    .line 574
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateContrastLimit(J)I

    .line 575
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mContrastMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mContrastMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 576
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_2c

    .line 577
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    int-to-float v3, p1

    const/high16 v4, 0x42c80000    # 100.0f

    div-float/2addr v3, v4

    mul-float v3, v3, v0

    float-to-int v3, v3

    iget v4, p0, Lcom/serenegiant/usb/UVCCamera;->mContrastMin:I

    add-int/2addr v3, v4

    invoke-static {v1, v2, v3}, Lcom/serenegiant/usb/UVCCamera;->nativeSetContrast(JI)I
    :try_end_2c
    .catchall {:try_start_1 .. :try_end_2c} :catchall_2e

    .line 579
    .end local v0    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_2c
    monitor-exit p0

    return-void

    .line 572
    .end local p1    # "contrast":I
    :catchall_2e
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized setFocus(I)V
    .registers 7
    .param p1, "focus"    # I

    monitor-enter p0

    .line 436
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_27

    .line 437
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mFocusMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mFocusMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 438
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_27

    .line 439
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    int-to-float v3, p1

    const/high16 v4, 0x42c80000    # 100.0f

    div-float/2addr v3, v4

    mul-float v3, v3, v0

    float-to-int v3, v3

    iget v4, p0, Lcom/serenegiant/usb/UVCCamera;->mFocusMin:I

    add-int/2addr v3, v4

    invoke-static {v1, v2, v3}, Lcom/serenegiant/usb/UVCCamera;->nativeSetFocus(JI)I
    :try_end_27
    .catchall {:try_start_1 .. :try_end_27} :catchall_29

    .line 441
    .end local v0    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_27
    monitor-exit p0

    return-void

    .line 435
    .end local p1    # "focus":I
    :catchall_29
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized setGain(I)V
    .registers 7
    .param p1, "gain"    # I

    monitor-enter p0

    .line 654
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_27

    .line 655
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mGainMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mGainMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 656
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_27

    .line 657
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    int-to-float v3, p1

    const/high16 v4, 0x42c80000    # 100.0f

    div-float/2addr v3, v4

    mul-float v3, v3, v0

    float-to-int v3, v3

    iget v4, p0, Lcom/serenegiant/usb/UVCCamera;->mGainMin:I

    add-int/2addr v3, v4

    invoke-static {v1, v2, v3}, Lcom/serenegiant/usb/UVCCamera;->nativeSetGain(JI)I
    :try_end_27
    .catchall {:try_start_1 .. :try_end_27} :catchall_29

    .line 659
    .end local v0    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_27
    monitor-exit p0

    return-void

    .line 653
    .end local p1    # "gain":I
    :catchall_29
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized setGamma(I)V
    .registers 7
    .param p1, "gamma"    # I

    monitor-enter p0

    .line 695
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_27

    .line 696
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mGammaMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mGammaMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 697
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_27

    .line 698
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    int-to-float v3, p1

    const/high16 v4, 0x42c80000    # 100.0f

    div-float/2addr v3, v4

    mul-float v3, v3, v0

    float-to-int v3, v3

    iget v4, p0, Lcom/serenegiant/usb/UVCCamera;->mGammaMin:I

    add-int/2addr v3, v4

    invoke-static {v1, v2, v3}, Lcom/serenegiant/usb/UVCCamera;->nativeSetGamma(JI)I
    :try_end_27
    .catchall {:try_start_1 .. :try_end_27} :catchall_29

    .line 700
    .end local v0    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_27
    monitor-exit p0

    return-void

    .line 694
    .end local p1    # "gamma":I
    :catchall_29
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized setHue(I)V
    .registers 7
    .param p1, "hue"    # I

    monitor-enter p0

    .line 776
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_27

    .line 777
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mHueMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mHueMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 778
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_27

    .line 779
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    int-to-float v3, p1

    const/high16 v4, 0x42c80000    # 100.0f

    div-float/2addr v3, v4

    mul-float v3, v3, v0

    float-to-int v3, v3

    iget v4, p0, Lcom/serenegiant/usb/UVCCamera;->mHueMin:I

    add-int/2addr v3, v4

    invoke-static {v1, v2, v3}, Lcom/serenegiant/usb/UVCCamera;->nativeSetHue(JI)I
    :try_end_27
    .catchall {:try_start_1 .. :try_end_27} :catchall_29

    .line 781
    .end local v0    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_27
    monitor-exit p0

    return-void

    .line 775
    .end local p1    # "hue":I
    :catchall_29
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public setPowerlineFrequency(I)V
    .registers 7
    .param p1, "frequency"    # I

    .line 814
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_b

    .line 815
    invoke-static {v0, v1, p1}, Lcom/serenegiant/usb/UVCCamera;->nativeSetPowerlineFrequency(JI)I

    .line 816
    :cond_b
    return-void
.end method

.method public setPreviewSize(II)V
    .registers 10
    .param p1, "width"    # I
    .param p2, "height"    # I

    .line 290
    iget v5, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentFrameFormat:I

    iget v6, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentBandwidthFactor:F

    const/4 v3, 0x1

    const/16 v4, 0x1e

    move-object v0, p0

    move v1, p1

    move v2, p2

    invoke-virtual/range {v0 .. v6}, Lcom/serenegiant/usb/UVCCamera;->setPreviewSize(IIIIIF)V

    .line 291
    return-void
.end method

.method public setPreviewSize(III)V
    .registers 11
    .param p1, "width"    # I
    .param p2, "height"    # I
    .param p3, "frameFormat"    # I

    .line 300
    iget v6, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentBandwidthFactor:F

    const/4 v3, 0x1

    const/16 v4, 0x1e

    move-object v0, p0

    move v1, p1

    move v2, p2

    move v5, p3

    invoke-virtual/range {v0 .. v6}, Lcom/serenegiant/usb/UVCCamera;->setPreviewSize(IIIIIF)V

    .line 301
    return-void
.end method

.method public setPreviewSize(IIIF)V
    .registers 12
    .param p1, "width"    # I
    .param p2, "height"    # I
    .param p3, "frameFormat"    # I
    .param p4, "bandwidth"    # F

    .line 311
    const/4 v3, 0x1

    const/16 v4, 0x1e

    move-object v0, p0

    move v1, p1

    move v2, p2

    move v5, p3

    move v6, p4

    invoke-virtual/range {v0 .. v6}, Lcom/serenegiant/usb/UVCCamera;->setPreviewSize(IIIIIF)V

    .line 312
    return-void
.end method

.method public setPreviewSize(IIIIIF)V
    .registers 15
    .param p1, "width"    # I
    .param p2, "height"    # I
    .param p3, "min_fps"    # I
    .param p4, "max_fps"    # I
    .param p5, "frameFormat"    # I
    .param p6, "bandwidthFactor"    # F

    .line 324
    if-eqz p1, :cond_2a

    if-eqz p2, :cond_2a

    .line 326
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_29

    .line 327
    move v2, p1

    move v3, p2

    move v4, p3

    move v5, p4

    move v6, p5

    move v7, p6

    invoke-static/range {v0 .. v7}, Lcom/serenegiant/usb/UVCCamera;->nativeSetPreviewSize(JIIIIIF)I

    move-result v0

    .line 328
    .local v0, "result":I
    if-nez v0, :cond_21

    .line 330
    iput p5, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentFrameFormat:I

    .line 331
    iput p1, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentWidth:I

    .line 332
    iput p2, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentHeight:I

    .line 333
    iput p6, p0, Lcom/serenegiant/usb/UVCCamera;->mCurrentBandwidthFactor:F

    goto :goto_29

    .line 329
    :cond_21
    new-instance v1, Ljava/lang/IllegalArgumentException;

    const-string v2, "Failed to set preview size"

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

    throw v1

    .line 335
    .end local v0    # "result":I
    :cond_29
    :goto_29
    return-void

    .line 325
    :cond_2a
    new-instance v0, Ljava/lang/IllegalArgumentException;

    const-string v1, "invalid preview size"

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

    throw v0
.end method

.method public declared-synchronized setSaturation(I)V
    .registers 7
    .param p1, "saturation"    # I

    monitor-enter p0

    .line 736
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_27

    .line 737
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mSaturationMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mSaturationMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 738
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_27

    .line 739
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    int-to-float v3, p1

    const/high16 v4, 0x42c80000    # 100.0f

    div-float/2addr v3, v4

    mul-float v3, v3, v0

    float-to-int v3, v3

    iget v4, p0, Lcom/serenegiant/usb/UVCCamera;->mSaturationMin:I

    add-int/2addr v3, v4

    invoke-static {v1, v2, v3}, Lcom/serenegiant/usb/UVCCamera;->nativeSetSaturation(JI)I
    :try_end_27
    .catchall {:try_start_1 .. :try_end_27} :catchall_29

    .line 741
    .end local v0    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_27
    monitor-exit p0

    return-void

    .line 735
    .end local p1    # "saturation":I
    :catchall_29
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized setSharpness(I)V
    .registers 7
    .param p1, "sharpness"    # I

    monitor-enter p0

    .line 614
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_27

    .line 615
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mSharpnessMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mSharpnessMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 616
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_27

    .line 617
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    int-to-float v3, p1

    const/high16 v4, 0x42c80000    # 100.0f

    div-float/2addr v3, v4

    mul-float v3, v3, v0

    float-to-int v3, v3

    iget v4, p0, Lcom/serenegiant/usb/UVCCamera;->mSharpnessMin:I

    add-int/2addr v3, v4

    invoke-static {v1, v2, v3}, Lcom/serenegiant/usb/UVCCamera;->nativeSetSharpness(JI)I
    :try_end_27
    .catchall {:try_start_1 .. :try_end_27} :catchall_29

    .line 619
    .end local v0    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_27
    monitor-exit p0

    return-void

    .line 613
    .end local p1    # "sharpness":I
    :catchall_29
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public setStatusCallback(Lcom/serenegiant/usb/IStatusCallback;)V
    .registers 7
    .param p1, "callback"    # Lcom/serenegiant/usb/IStatusCallback;

    .line 219
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_b

    .line 220
    invoke-static {v0, v1, p1}, Lcom/serenegiant/usb/UVCCamera;->nativeSetStatusCallback(JLcom/serenegiant/usb/IStatusCallback;)I

    .line 222
    :cond_b
    return-void
.end method

.method public declared-synchronized setWhiteBlance(I)V
    .registers 7
    .param p1, "whiteBlance"    # I

    monitor-enter p0

    .line 492
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_27

    .line 493
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mWhiteBlanceMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mWhiteBlanceMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 494
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_27

    .line 495
    iget-wide v1, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    int-to-float v3, p1

    const/high16 v4, 0x42c80000    # 100.0f

    div-float/2addr v3, v4

    mul-float v3, v3, v0

    float-to-int v3, v3

    iget v4, p0, Lcom/serenegiant/usb/UVCCamera;->mWhiteBlanceMin:I

    add-int/2addr v3, v4

    invoke-static {v1, v2, v3}, Lcom/serenegiant/usb/UVCCamera;->nativeSetWhiteBlance(JI)I
    :try_end_27
    .catchall {:try_start_1 .. :try_end_27} :catchall_29

    .line 497
    .end local v0    # "range":F
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_27
    monitor-exit p0

    return-void

    .line 491
    .end local p1    # "whiteBlance":I
    :catchall_29
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized setZoom(I)V
    .registers 7
    .param p1, "zoom"    # I

    monitor-enter p0

    .line 828
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_27

    .line 829
    iget v0, p0, Lcom/serenegiant/usb/UVCCamera;->mZoomMax:I

    iget v1, p0, Lcom/serenegiant/usb/UVCCamera;->mZoomMin:I

    sub-int/2addr v0, v1

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

    move-result v0

    int-to-float v0, v0

    .line 830
    .local v0, "range":F
    const/4 v1, 0x0

    cmpl-float v1, v0, v1

    if-lez v1, :cond_27

    .line 831
    int-to-float v1, p1

    const/high16 v2, 0x42c80000    # 100.0f

    div-float/2addr v1, v2

    mul-float v1, v1, v0

    float-to-int v1, v1

    iget v2, p0, Lcom/serenegiant/usb/UVCCamera;->mZoomMin:I

    add-int/2addr v1, v2

    .line 833
    .local v1, "z":I
    iget-wide v2, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v2, v3, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeSetZoom(JI)I
    :try_end_27
    .catchall {:try_start_1 .. :try_end_27} :catchall_29

    .line 836
    .end local v0    # "range":F
    .end local v1    # "z":I
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_27
    monitor-exit p0

    return-void

    .line 827
    .end local p1    # "zoom":I
    :catchall_29
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public startCapture(Landroid/view/Surface;)V
    .registers 4
    .param p1, "surface"    # Landroid/view/Surface;

    .line 1018
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    if-eqz v0, :cond_c

    if-eqz p1, :cond_c

    .line 1019
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1, p1}, Lcom/serenegiant/usb/UVCCamera;->nativeSetCaptureDisplay(JLandroid/view/Surface;)I

    .line 1022
    return-void

    .line 1021
    :cond_c
    new-instance v0, Ljava/lang/NullPointerException;

    const-string/jumbo v1, "startCapture"

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

    throw v0
.end method

.method public declared-synchronized startPreview()V
    .registers 3

    monitor-enter p0

    .line 382
    :try_start_1
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    if-eqz v0, :cond_a

    .line 383
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeStartPreview(J)I
    :try_end_a
    .catchall {:try_start_1 .. :try_end_a} :catchall_c

    .line 385
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_a
    monitor-exit p0

    return-void

    .line 381
    :catchall_c
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public stopCapture()V
    .registers 4

    .line 1028
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    if-eqz v0, :cond_a

    .line 1029
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const/4 v2, 0x0

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/UVCCamera;->nativeSetCaptureDisplay(JLandroid/view/Surface;)I

    .line 1031
    :cond_a
    return-void
.end method

.method public declared-synchronized stopPreview()V
    .registers 3

    monitor-enter p0

    .line 391
    :try_start_1
    iget-object v0, p0, Lcom/serenegiant/usb/UVCCamera;->mCtrlBlock:Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    if-eqz v0, :cond_a

    .line 392
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeStopPreview(J)I
    :try_end_a
    .catchall {:try_start_1 .. :try_end_a} :catchall_c

    .line 394
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_a
    monitor-exit p0

    return-void

    .line 390
    :catchall_c
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized updateCameraParams()V
    .registers 6

    monitor-enter p0

    .line 869
    :try_start_1
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_70

    .line 870
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mControlSupports:J

    cmp-long v4, v0, v2

    if-eqz v4, :cond_15

    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mProcSupports:J

    cmp-long v4, v0, v2

    if-nez v4, :cond_74

    .line 872
    .end local p0    # "this":Lcom/serenegiant/usb/UVCCamera;
    :cond_15
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mControlSupports:J

    cmp-long v4, v0, v2

    if-nez v4, :cond_23

    .line 873
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetCtrlSupports(J)J

    move-result-wide v0

    iput-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mControlSupports:J

    .line 874
    :cond_23
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mProcSupports:J

    cmp-long v4, v0, v2

    if-nez v4, :cond_31

    .line 875
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-static {v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeGetProcSupports(J)J

    move-result-wide v0

    iput-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mProcSupports:J

    .line 877
    :cond_31
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mControlSupports:J

    cmp-long v4, v0, v2

    if-eqz v4, :cond_74

    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mProcSupports:J

    cmp-long v4, v0, v2

    if-eqz v4, :cond_74

    .line 878
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateBrightnessLimit(J)I

    .line 879
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateContrastLimit(J)I

    .line 880
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateSharpnessLimit(J)I

    .line 881
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateGainLimit(J)I

    .line 882
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateGammaLimit(J)I

    .line 883
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateSaturationLimit(J)I

    .line 884
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateHueLimit(J)I

    .line 885
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateZoomLimit(J)I

    .line 886
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateWhiteBlanceLimit(J)I

    .line 887
    iget-wide v0, p0, Lcom/serenegiant/usb/UVCCamera;->mNativePtr:J

    invoke-direct {p0, v0, v1}, Lcom/serenegiant/usb/UVCCamera;->nativeUpdateFocusLimit(J)I

    goto :goto_74

    .line 905
    :cond_70
    iput-wide v2, p0, Lcom/serenegiant/usb/UVCCamera;->mProcSupports:J

    iput-wide v2, p0, Lcom/serenegiant/usb/UVCCamera;->mControlSupports:J
    :try_end_74
    .catchall {:try_start_1 .. :try_end_74} :catchall_76

    .line 907
    :cond_74
    :goto_74
    monitor-exit p0

    return-void

    .line 868
    :catchall_76
    move-exception v0

    monitor-exit p0

    throw v0
.end method