MediaCodecVideoRenderer.smali
.class public Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;
.super Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;
.source "MediaCodecVideoRenderer.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;,
Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
}
.end annotation
# static fields
.field private static final INITIAL_FORMAT_MAX_INPUT_SIZE_SCALE_FACTOR:F = 1.5f
.field private static final KEY_CROP_BOTTOM:Ljava/lang/String; = "crop-bottom"
.field private static final KEY_CROP_LEFT:Ljava/lang/String; = "crop-left"
.field private static final KEY_CROP_RIGHT:Ljava/lang/String; = "crop-right"
.field private static final KEY_CROP_TOP:Ljava/lang/String; = "crop-top"
.field private static final MAX_PENDING_OUTPUT_STREAM_OFFSET_COUNT:I = 0xa
.field private static final STANDARD_LONG_EDGE_VIDEO_PX:[I
.field private static final TAG:Ljava/lang/String; = "MediaCodecVideoRenderer"
.field private static deviceNeedsSetOutputSurfaceWorkaround:Z
.field private static evaluatedDeviceNeedsSetOutputSurfaceWorkaround:Z
# instance fields
.field private final allowedJoiningTimeMs:J
.field private buffersInCodecCount:I
.field private codecMaxValues:Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
.field private codecNeedsSetOutputSurfaceWorkaround:Z
.field private consecutiveDroppedFrameCount:I
.field private final context:Landroid/content/Context;
.field private currentHeight:I
.field private currentPixelWidthHeightRatio:F
.field private currentUnappliedRotationDegrees:I
.field private currentWidth:I
.field private final deviceNeedsNoPostProcessWorkaround:Z
.field private droppedFrameAccumulationStartTimeMs:J
.field private droppedFrames:I
.field private dummySurface:Landroid/view/Surface;
.field private final eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
.field private frameMetadataListener:Lcom/google/android/exoplayer2/video/VideoFrameMetadataListener;
.field private final frameReleaseTimeHelper:Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;
.field private initialPositionUs:J
.field private joiningDeadlineMs:J
.field private lastInputTimeUs:J
.field private lastRenderTimeUs:J
.field private final maxDroppedFramesToNotify:I
.field private outputStreamOffsetUs:J
.field private pendingOutputStreamOffsetCount:I
.field private final pendingOutputStreamOffsetsUs:[J
.field private final pendingOutputStreamSwitchTimesUs:[J
.field private pendingPixelWidthHeightRatio:F
.field private pendingRotationDegrees:I
.field private renderedFirstFrame:Z
.field private reportedHeight:I
.field private reportedPixelWidthHeightRatio:F
.field private reportedUnappliedRotationDegrees:I
.field private reportedWidth:I
.field private scalingMode:I
.field private surface:Landroid/view/Surface;
.field private tunneling:Z
.field private tunnelingAudioSessionId:I
.field tunnelingOnFrameRenderedListener:Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 81
const/16 v0, 0x9
new-array v0, v0, [I
fill-array-data v0, :array_a
sput-object v0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->STANDARD_LONG_EDGE_VIDEO_PX:[I
return-void
:array_a
.array-data 4
0x780
0x640
0x5a0
0x500
0x3c0
0x356
0x280
0x21c
0x1e0
.end array-data
.end method
.method public constructor <init>(Landroid/content/Context;Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;)V
.registers 5
.param p1, "context" # Landroid/content/Context;
.param p2, "mediaCodecSelector" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;
.line 146
const-wide/16 v0, 0x0
invoke-direct {p0, p1, p2, v0, v1}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;-><init>(Landroid/content/Context;Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;J)V
.line 147
return-void
.end method
.method public constructor <init>(Landroid/content/Context;Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;J)V
.registers 13
.param p1, "context" # Landroid/content/Context;
.param p2, "mediaCodecSelector" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;
.param p3, "allowedJoiningTimeMs" # J
.line 157
const/4 v5, 0x0
const/4 v6, 0x0
const/4 v7, -0x1
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-wide v3, p3
invoke-direct/range {v0 .. v7}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;-><init>(Landroid/content/Context;Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;JLandroid/os/Handler;Lcom/google/android/exoplayer2/video/VideoRendererEventListener;I)V
.line 164
return-void
.end method
.method public constructor <init>(Landroid/content/Context;Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;JLandroid/os/Handler;Lcom/google/android/exoplayer2/video/VideoRendererEventListener;I)V
.registers 18
.param p1, "context" # Landroid/content/Context;
.param p2, "mediaCodecSelector" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;
.param p3, "allowedJoiningTimeMs" # J
.param p5, "eventHandler" # Landroid/os/Handler;
.param p6, "eventListener" # Lcom/google/android/exoplayer2/video/VideoRendererEventListener;
.param p7, "maxDroppedFramesToNotify" # I
.line 184
const/4 v5, 0x0
const/4 v6, 0x0
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-wide v3, p3
move-object v7, p5
move-object/from16 v8, p6
move/from16 v9, p7
invoke-direct/range {v0 .. v9}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;-><init>(Landroid/content/Context;Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;JLcom/google/android/exoplayer2/drm/DrmSessionManager;ZLandroid/os/Handler;Lcom/google/android/exoplayer2/video/VideoRendererEventListener;I)V
.line 193
return-void
.end method
.method public constructor <init>(Landroid/content/Context;Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;JLcom/google/android/exoplayer2/drm/DrmSessionManager;ZLandroid/os/Handler;Lcom/google/android/exoplayer2/video/VideoRendererEventListener;I)V
.registers 16
.param p1, "context" # Landroid/content/Context;
.param p2, "mediaCodecSelector" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;
.param p3, "allowedJoiningTimeMs" # J
.param p6, "playClearSamplesWithoutKeys" # Z
.param p7, "eventHandler" # Landroid/os/Handler;
.param p8, "eventListener" # Lcom/google/android/exoplayer2/video/VideoRendererEventListener;
.param p9, "maxDroppedFramesToNotify" # I
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/content/Context;",
"Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;",
"J",
"Lcom/google/android/exoplayer2/drm/DrmSessionManager<",
"Lcom/google/android/exoplayer2/drm/FrameworkMediaCrypto;",
">;Z",
"Landroid/os/Handler;",
"Lcom/google/android/exoplayer2/video/VideoRendererEventListener;",
"I)V"
}
.end annotation
.line 218
.local p5, "drmSessionManager":Lcom/google/android/exoplayer2/drm/DrmSessionManager;, "Lcom/google/android/exoplayer2/drm/DrmSessionManager<Lcom/google/android/exoplayer2/drm/FrameworkMediaCrypto;>;"
const/4 v1, 0x2
const/high16 v5, 0x41f00000 # 30.0f
move-object v0, p0
move-object v2, p2
move-object v3, p5
move v4, p6
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;-><init>(ILcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;ZF)V
.line 224
iput-wide p3, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->allowedJoiningTimeMs:J
.line 225
iput p9, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maxDroppedFramesToNotify:I
.line 226
invoke-virtual {p1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->context:Landroid/content/Context;
.line 227
new-instance v1, Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;
invoke-direct {v1, v0}, Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;-><init>(Landroid/content/Context;)V
iput-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->frameReleaseTimeHelper:Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;
.line 228
new-instance v0, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
invoke-direct {v0, p7, p8}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;-><init>(Landroid/os/Handler;Lcom/google/android/exoplayer2/video/VideoRendererEventListener;)V
iput-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
.line 229
invoke-static {}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->deviceNeedsNoPostProcessWorkaround()Z
move-result v0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->deviceNeedsNoPostProcessWorkaround:Z
.line 230
const/16 v0, 0xa
new-array v1, v0, [J
iput-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetsUs:[J
.line 231
new-array v0, v0, [J
iput-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamSwitchTimesUs:[J
.line 232
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->outputStreamOffsetUs:J
.line 233
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastInputTimeUs:J
.line 234
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->joiningDeadlineMs:J
.line 235
const/4 v0, -0x1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentWidth:I
.line 236
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentHeight:I
.line 237
const/high16 v0, -0x40800000 # -1.0f
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentPixelWidthHeightRatio:F
.line 238
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingPixelWidthHeightRatio:F
.line 239
const/4 v0, 0x1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->scalingMode:I
.line 240
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->clearReportedVideoSize()V
.line 241
return-void
.end method
.method private clearRenderedFirstFrame()V
.registers 4
.line 945
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderedFirstFrame:Z
.line 950
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x17
if-lt v0, v1, :cond_1b
iget-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunneling:Z
if-eqz v0, :cond_1b
.line 951
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodec()Landroid/media/MediaCodec;
move-result-object v0
.line 953
.local v0, "codec":Landroid/media/MediaCodec;
if-eqz v0, :cond_1b
.line 954
new-instance v1, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;
const/4 v2, 0x0
invoke-direct {v1, p0, v0, v2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;-><init>(Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;Landroid/media/MediaCodec;Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$1;)V
iput-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunnelingOnFrameRenderedListener:Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;
.line 957
.end local v0 # "codec":Landroid/media/MediaCodec;
:cond_1b
return-void
.end method
.method private clearReportedVideoSize()V
.registers 3
.line 973
const/4 v0, -0x1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedWidth:I
.line 974
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedHeight:I
.line 975
const/high16 v1, -0x40800000 # -1.0f
iput v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedPixelWidthHeightRatio:F
.line 976
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedUnappliedRotationDegrees:I
.line 977
return-void
.end method
.method private static configureTunnelingV21(Landroid/media/MediaFormat;I)V
.registers 4
.param p0, "mediaFormat" # Landroid/media/MediaFormat;
.param p1, "tunnelingAudioSessionId" # I
.line 1027
const-string/jumbo v0, "tunneled-playback"
const/4 v1, 0x1
invoke-virtual {p0, v0, v1}, Landroid/media/MediaFormat;->setFeatureEnabled(Ljava/lang/String;Z)V
.line 1028
const-string v0, "audio-session-id"
invoke-virtual {p0, v0, p1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 1029
return-void
.end method
.method private static deviceNeedsNoPostProcessWorkaround()Z
.registers 2
.line 1282
sget-object v0, Lcom/google/android/exoplayer2/util/Util;->MANUFACTURER:Ljava/lang/String;
const-string v1, "NVIDIA"
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
return v0
.end method
.method private static getCodecMaxInputSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Ljava/lang/String;II)I
.registers 11
.param p0, "codecInfo" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.param p1, "sampleMimeType" # Ljava/lang/String;
.param p2, "width" # I
.param p3, "height" # I
.line 1222
const/4 v0, -0x1
if-eq p2, v0, :cond_b6
if-ne p3, v0, :cond_7
goto/16 :goto_b6
.line 1230
:cond_7
invoke-virtual {p1}, Ljava/lang/String;->hashCode()I
move-result v1
const/4 v2, 0x5
const/4 v3, 0x4
const/4 v4, 0x1
const/4 v5, 0x3
const/4 v6, 0x2
sparse-switch v1, :sswitch_data_b8
:cond_13
goto :goto_56
:sswitch_14
const-string/jumbo v1, "video/x-vnd.on2.vp9"
invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_13
const/4 v1, 0x5
goto :goto_57
:sswitch_1f
const-string/jumbo v1, "video/x-vnd.on2.vp8"
invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_13
const/4 v1, 0x3
goto :goto_57
:sswitch_2a
const-string/jumbo v1, "video/avc"
invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_13
const/4 v1, 0x2
goto :goto_57
:sswitch_35
const-string/jumbo v1, "video/mp4v-es"
invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_13
const/4 v1, 0x1
goto :goto_57
:sswitch_40
const-string/jumbo v1, "video/hevc"
invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_13
const/4 v1, 0x4
goto :goto_57
:sswitch_4b
const-string/jumbo v1, "video/3gpp"
invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_13
const/4 v1, 0x0
goto :goto_57
:goto_56
const/4 v1, -0x1
:goto_57
if-eqz v1, :cond_ac
if-eq v1, v4, :cond_ac
if-eq v1, v6, :cond_6c
if-eq v1, v5, :cond_68
if-eq v1, v3, :cond_64
if-eq v1, v2, :cond_64
.line 1261
return v0
.line 1256
:cond_64
mul-int v0, p2, p3
.line 1257
.local v0, "maxPixels":I
const/4 v1, 0x4
.line 1258
.local v1, "minCompressionRatio":I
goto :goto_b0
.line 1251
.end local v0 # "maxPixels":I
.end local v1 # "minCompressionRatio":I
:cond_68
mul-int v0, p2, p3
.line 1252
.restart local v0 # "maxPixels":I
const/4 v1, 0x2
.line 1253
.restart local v1 # "minCompressionRatio":I
goto :goto_b0
.line 1237
.end local v0 # "maxPixels":I
.end local v1 # "minCompressionRatio":I
:cond_6c
sget-object v1, Lcom/google/android/exoplayer2/util/Util;->MODEL:Ljava/lang/String;
const-string v2, "BRAVIA 4K 2015"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_ab
sget-object v1, Lcom/google/android/exoplayer2/util/Util;->MANUFACTURER:Ljava/lang/String;
.line 1238
const-string v2, "Amazon"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_99
sget-object v1, Lcom/google/android/exoplayer2/util/Util;->MODEL:Ljava/lang/String;
.line 1239
const-string v2, "KFSOWI"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_ab
sget-object v1, Lcom/google/android/exoplayer2/util/Util;->MODEL:Ljava/lang/String;
.line 1240
const-string v2, "AFTS"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_99
iget-boolean v1, p0, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->secure:Z
if-eqz v1, :cond_99
goto :goto_ab
.line 1246
:cond_99
const/16 v0, 0x10
invoke-static {p2, v0}, Lcom/google/android/exoplayer2/util/Util;->ceilDivide(II)I
move-result v1
invoke-static {p3, v0}, Lcom/google/android/exoplayer2/util/Util;->ceilDivide(II)I
move-result v2
mul-int v1, v1, v2
mul-int/lit8 v1, v1, 0x10
mul-int/lit8 v0, v1, 0x10
.line 1247
.restart local v0 # "maxPixels":I
const/4 v1, 0x2
.line 1248
.restart local v1 # "minCompressionRatio":I
goto :goto_b0
.line 1243
.end local v0 # "maxPixels":I
.end local v1 # "minCompressionRatio":I
:cond_ab
:goto_ab
return v0
.line 1233
:cond_ac
mul-int v0, p2, p3
.line 1234
.restart local v0 # "maxPixels":I
const/4 v1, 0x2
.line 1235
.restart local v1 # "minCompressionRatio":I
nop
.line 1264
:goto_b0
mul-int/lit8 v2, v0, 0x3
mul-int/lit8 v3, v1, 0x2
div-int/2addr v2, v3
return v2
.line 1224
.end local v0 # "maxPixels":I
.end local v1 # "minCompressionRatio":I
:cond_b6
:goto_b6
return v0
nop
:sswitch_data_b8
.sparse-switch
-0x63306f58 -> :sswitch_4b
-0x63185e82 -> :sswitch_40
0x46cdc642 -> :sswitch_35
0x4f62373a -> :sswitch_2a
0x5f50bed8 -> :sswitch_1f
0x5f50bed9 -> :sswitch_14
.end sparse-switch
.end method
.method private static getCodecMaxSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Lcom/google/android/exoplayer2/Format;)Landroid/graphics/Point;
.registers 19
.param p0, "codecInfo" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.param p1, "format" # Lcom/google/android/exoplayer2/Format;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/mediacodec/MediaCodecUtil$DecoderQueryException;
}
.end annotation
.line 1156
move-object/from16 v0, p0
move-object/from16 v1, p1
iget v2, v1, Lcom/google/android/exoplayer2/Format;->height:I
iget v3, v1, Lcom/google/android/exoplayer2/Format;->width:I
const/4 v4, 0x0
if-le v2, v3, :cond_d
const/4 v2, 0x1
goto :goto_e
:cond_d
const/4 v2, 0x0
.line 1157
.local v2, "isVerticalVideo":Z
:goto_e
if-eqz v2, :cond_13
iget v3, v1, Lcom/google/android/exoplayer2/Format;->height:I
goto :goto_15
:cond_13
iget v3, v1, Lcom/google/android/exoplayer2/Format;->width:I
.line 1158
.local v3, "formatLongEdgePx":I
:goto_15
if-eqz v2, :cond_1a
iget v5, v1, Lcom/google/android/exoplayer2/Format;->width:I
goto :goto_1c
:cond_1a
iget v5, v1, Lcom/google/android/exoplayer2/Format;->height:I
.line 1159
.local v5, "formatShortEdgePx":I
:goto_1c
int-to-float v6, v5
int-to-float v7, v3
div-float/2addr v6, v7
.line 1160
.local v6, "aspectRatio":F
sget-object v7, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->STANDARD_LONG_EDGE_VIDEO_PX:[I
array-length v8, v7
:goto_22
const/4 v9, 0x0
if-ge v4, v8, :cond_8d
aget v10, v7, v4
.line 1161
.local v10, "longEdgePx":I
int-to-float v11, v10
mul-float v11, v11, v6
float-to-int v11, v11
.line 1162
.local v11, "shortEdgePx":I
if-le v10, v3, :cond_89
if-gt v11, v5, :cond_34
move v15, v5
move/from16 v16, v6
goto/16 :goto_8c
.line 1165
:cond_34
sget v9, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v12, 0x15
if-lt v9, v12, :cond_5a
.line 1166
if-eqz v2, :cond_3e
move v9, v11
goto :goto_3f
:cond_3e
move v9, v10
:goto_3f
if-eqz v2, :cond_43
move v12, v10
goto :goto_44
:cond_43
move v12, v11
:goto_44
invoke-virtual {v0, v9, v12}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->alignVideoSizeV21(II)Landroid/graphics/Point;
move-result-object v9
.line 1168
.local v9, "alignedSize":Landroid/graphics/Point;
iget v12, v1, Lcom/google/android/exoplayer2/Format;->frameRate:F
.line 1169
.local v12, "frameRate":F
iget v13, v9, Landroid/graphics/Point;->x:I
iget v14, v9, Landroid/graphics/Point;->y:I
move v15, v5
move/from16 v16, v6
.end local v5 # "formatShortEdgePx":I
.end local v6 # "aspectRatio":F
.local v15, "formatShortEdgePx":I
.local v16, "aspectRatio":F
float-to-double v5, v12
invoke-virtual {v0, v13, v14, v5, v6}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->isVideoSizeAndRateSupportedV21(IID)Z
move-result v5
if-eqz v5, :cond_59
.line 1170
return-object v9
.line 1172
.end local v9 # "alignedSize":Landroid/graphics/Point;
.end local v12 # "frameRate":F
:cond_59
goto :goto_83
.line 1174
.end local v15 # "formatShortEdgePx":I
.end local v16 # "aspectRatio":F
.restart local v5 # "formatShortEdgePx":I
.restart local v6 # "aspectRatio":F
:cond_5a
move v15, v5
move/from16 v16, v6
.end local v5 # "formatShortEdgePx":I
.end local v6 # "aspectRatio":F
.restart local v15 # "formatShortEdgePx":I
.restart local v16 # "aspectRatio":F
const/16 v5, 0x10
invoke-static {v10, v5}, Lcom/google/android/exoplayer2/util/Util;->ceilDivide(II)I
move-result v6
mul-int/lit8 v6, v6, 0x10
.line 1175
.end local v10 # "longEdgePx":I
.local v6, "longEdgePx":I
invoke-static {v11, v5}, Lcom/google/android/exoplayer2/util/Util;->ceilDivide(II)I
move-result v9
mul-int/lit8 v9, v9, 0x10
.line 1176
.end local v11 # "shortEdgePx":I
.local v9, "shortEdgePx":I
mul-int v5, v6, v9
invoke-static {}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecUtil;->maxH264DecodableFrameSize()I
move-result v10
if-gt v5, v10, :cond_83
.line 1177
new-instance v4, Landroid/graphics/Point;
if-eqz v2, :cond_79
move v5, v9
goto :goto_7a
:cond_79
move v5, v6
:goto_7a
if-eqz v2, :cond_7e
move v7, v6
goto :goto_7f
:cond_7e
move v7, v9
:goto_7f
invoke-direct {v4, v5, v7}, Landroid/graphics/Point;-><init>(II)V
return-object v4
.line 1160
.end local v6 # "longEdgePx":I
.end local v9 # "shortEdgePx":I
:cond_83
:goto_83
add-int/lit8 v4, v4, 0x1
move v5, v15
move/from16 v6, v16
goto :goto_22
.line 1162
.end local v15 # "formatShortEdgePx":I
.end local v16 # "aspectRatio":F
.restart local v5 # "formatShortEdgePx":I
.local v6, "aspectRatio":F
.restart local v10 # "longEdgePx":I
.restart local v11 # "shortEdgePx":I
:cond_89
move v15, v5
move/from16 v16, v6
.line 1164
.end local v5 # "formatShortEdgePx":I
.end local v6 # "aspectRatio":F
.restart local v15 # "formatShortEdgePx":I
.restart local v16 # "aspectRatio":F
:goto_8c
return-object v9
.line 1182
.end local v10 # "longEdgePx":I
.end local v11 # "shortEdgePx":I
.end local v15 # "formatShortEdgePx":I
.end local v16 # "aspectRatio":F
.restart local v5 # "formatShortEdgePx":I
.restart local v6 # "aspectRatio":F
:cond_8d
return-object v9
.end method
.method private static getMaxInputSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Lcom/google/android/exoplayer2/Format;)I
.registers 6
.param p0, "codecInfo" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.param p1, "format" # Lcom/google/android/exoplayer2/Format;
.line 1194
iget v0, p1, Lcom/google/android/exoplayer2/Format;->maxInputSize:I
const/4 v1, -0x1
if-eq v0, v1, :cond_20
.line 1197
const/4 v0, 0x0
.line 1198
.local v0, "totalInitializationDataSize":I
iget-object v1, p1, Lcom/google/android/exoplayer2/Format;->initializationData:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v1
.line 1199
.local v1, "initializationDataCount":I
const/4 v2, 0x0
.local v2, "i":I
:goto_d
if-ge v2, v1, :cond_1c
.line 1200
iget-object v3, p1, Lcom/google/android/exoplayer2/Format;->initializationData:Ljava/util/List;
invoke-interface {v3, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
array-length v3, v3
add-int/2addr v0, v3
.line 1199
add-int/lit8 v2, v2, 0x1
goto :goto_d
.line 1202
.end local v2 # "i":I
:cond_1c
iget v2, p1, Lcom/google/android/exoplayer2/Format;->maxInputSize:I
add-int/2addr v2, v0
return v2
.line 1206
.end local v0 # "totalInitializationDataSize":I
.end local v1 # "initializationDataCount":I
:cond_20
iget-object v0, p1, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
iget v1, p1, Lcom/google/android/exoplayer2/Format;->width:I
iget v2, p1, Lcom/google/android/exoplayer2/Format;->height:I
invoke-static {p0, v0, v1, v2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodecMaxInputSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Ljava/lang/String;II)I
move-result v0
return v0
.end method
.method private static isBufferLate(J)Z
.registers 5
.param p0, "earlyUs" # J
.line 1012
const-wide/16 v0, -0x7530
cmp-long v2, p0, v0
if-gez v2, :cond_8
const/4 v0, 0x1
goto :goto_9
:cond_8
const/4 v0, 0x0
:goto_9
return v0
.end method
.method private static isBufferVeryLate(J)Z
.registers 5
.param p0, "earlyUs" # J
.line 1017
const-wide/32 v0, -0x7a120
cmp-long v2, p0, v0
if-gez v2, :cond_9
const/4 v0, 0x1
goto :goto_a
:cond_9
const/4 v0, 0x0
:goto_a
return v0
.end method
.method private maybeNotifyDroppedFrames()V
.registers 7
.line 1001
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrames:I
if-lez v0, :cond_18
.line 1002
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v0
.line 1003
.local v0, "now":J
iget-wide v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrameAccumulationStartTimeMs:J
sub-long v2, v0, v2
.line 1004
.local v2, "elapsedMs":J
iget-object v4, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
iget v5, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrames:I
invoke-virtual {v4, v5, v2, v3}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->droppedFrames(IJ)V
.line 1005
const/4 v4, 0x0
iput v4, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrames:I
.line 1006
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrameAccumulationStartTimeMs:J
.line 1008
.end local v0 # "now":J
.end local v2 # "elapsedMs":J
:cond_18
return-void
.end method
.method private maybeNotifyVideoSizeChanged()V
.registers 6
.line 980
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentWidth:I
const/4 v1, -0x1
if-ne v0, v1, :cond_9
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentHeight:I
if-eq v0, v1, :cond_40
:cond_9
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedWidth:I
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentWidth:I
if-ne v0, v1, :cond_23
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedHeight:I
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentHeight:I
if-ne v0, v1, :cond_23
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedUnappliedRotationDegrees:I
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentUnappliedRotationDegrees:I
if-ne v0, v1, :cond_23
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedPixelWidthHeightRatio:F
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentPixelWidthHeightRatio:F
cmpl-float v0, v0, v1
if-eqz v0, :cond_40
.line 984
:cond_23
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentWidth:I
iget v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentHeight:I
iget v3, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentUnappliedRotationDegrees:I
iget v4, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentPixelWidthHeightRatio:F
invoke-virtual {v0, v1, v2, v3, v4}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->videoSizeChanged(IIIF)V
.line 986
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentWidth:I
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedWidth:I
.line 987
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentHeight:I
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedHeight:I
.line 988
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentUnappliedRotationDegrees:I
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedUnappliedRotationDegrees:I
.line 989
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentPixelWidthHeightRatio:F
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedPixelWidthHeightRatio:F
.line 991
:cond_40
return-void
.end method
.method private maybeRenotifyRenderedFirstFrame()V
.registers 3
.line 967
iget-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderedFirstFrame:Z
if-eqz v0, :cond_b
.line 968
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->renderedFirstFrame(Landroid/view/Surface;)V
.line 970
:cond_b
return-void
.end method
.method private maybeRenotifyVideoSizeChanged()V
.registers 6
.line 994
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedWidth:I
const/4 v1, -0x1
if-ne v0, v1, :cond_9
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedHeight:I
if-eq v0, v1, :cond_16
.line 995
:cond_9
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedWidth:I
iget v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedHeight:I
iget v3, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedUnappliedRotationDegrees:I
iget v4, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->reportedPixelWidthHeightRatio:F
invoke-virtual {v0, v1, v2, v3, v4}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->videoSizeChanged(IIIF)V
.line 998
:cond_16
return-void
.end method
.method private notifyFrameMetadataListener(JJLcom/google/android/exoplayer2/Format;)V
.registers 12
.param p1, "presentationTimeUs" # J
.param p3, "releaseTimeNs" # J
.param p5, "format" # Lcom/google/android/exoplayer2/Format;
.line 728
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->frameMetadataListener:Lcom/google/android/exoplayer2/video/VideoFrameMetadataListener;
if-eqz v0, :cond_a
.line 729
move-wide v1, p1
move-wide v3, p3
move-object v5, p5
invoke-interface/range {v0 .. v5}, Lcom/google/android/exoplayer2/video/VideoFrameMetadataListener;->onVideoFrameAboutToBeRendered(JJLcom/google/android/exoplayer2/Format;)V
.line 732
:cond_a
return-void
.end method
.method private processOutputFormat(Landroid/media/MediaCodec;II)V
.registers 7
.param p1, "codec" # Landroid/media/MediaCodec;
.param p2, "width" # I
.param p3, "height" # I
.line 705
iput p2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentWidth:I
.line 706
iput p3, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentHeight:I
.line 707
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingPixelWidthHeightRatio:F
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentPixelWidthHeightRatio:F
.line 708
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_28
.line 712
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingRotationDegrees:I
const/16 v1, 0x5a
if-eq v0, v1, :cond_18
const/16 v1, 0x10e
if-ne v0, v1, :cond_2c
.line 713
:cond_18
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentWidth:I
.line 714
.local v0, "rotatedHeight":I
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentHeight:I
iput v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentWidth:I
.line 715
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentHeight:I
.line 716
const/high16 v1, 0x3f800000 # 1.0f
iget v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentPixelWidthHeightRatio:F
div-float/2addr v1, v2
iput v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentPixelWidthHeightRatio:F
.line 717
.end local v0 # "rotatedHeight":I
goto :goto_2c
.line 720
:cond_28
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingRotationDegrees:I
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->currentUnappliedRotationDegrees:I
.line 723
:cond_2c
:goto_2c
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->scalingMode:I
invoke-virtual {p1, v0}, Landroid/media/MediaCodec;->setVideoScalingMode(I)V
.line 724
return-void
.end method
.method private setJoiningDeadlineMs()V
.registers 6
.line 940
iget-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->allowedJoiningTimeMs:J
const-wide/16 v2, 0x0
cmp-long v4, v0, v2
if-lez v4, :cond_10
.line 941
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v0
iget-wide v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->allowedJoiningTimeMs:J
add-long/2addr v0, v2
goto :goto_15
:cond_10
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
:goto_15
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->joiningDeadlineMs:J
.line 942
return-void
.end method
.method private static setOutputSurfaceV23(Landroid/media/MediaCodec;Landroid/view/Surface;)V
.registers 2
.param p0, "codec" # Landroid/media/MediaCodec;
.param p1, "surface" # Landroid/view/Surface;
.line 1022
invoke-virtual {p0, p1}, Landroid/media/MediaCodec;->setOutputSurface(Landroid/view/Surface;)V
.line 1023
return-void
.end method
.method private setSurface(Landroid/view/Surface;)V
.registers 6
.param p1, "surface" # Landroid/view/Surface;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 415
if-nez p1, :cond_21
.line 417
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
if-eqz v0, :cond_9
.line 418
iget-object p1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
goto :goto_21
.line 420
:cond_9
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodecInfo()Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
move-result-object v0
.line 421
.local v0, "codecInfo":Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
if-eqz v0, :cond_21
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->shouldUseDummySurface(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;)Z
move-result v1
if-eqz v1, :cond_21
.line 422
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->context:Landroid/content/Context;
iget-boolean v2, v0, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->secure:Z
invoke-static {v1, v2}, Lcom/google/android/exoplayer2/video/DummySurface;->newInstanceV17(Landroid/content/Context;Z)Lcom/google/android/exoplayer2/video/DummySurface;
move-result-object v1
iput-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
.line 423
iget-object p1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
.line 428
.end local v0 # "codecInfo":Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
:cond_21
:goto_21
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
if-eq v0, p1, :cond_61
.line 429
iput-object p1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
.line 430
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getState()I
move-result v0
.line 431
.local v0, "state":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodec()Landroid/media/MediaCodec;
move-result-object v1
.line 432
.local v1, "codec":Landroid/media/MediaCodec;
if-eqz v1, :cond_47
.line 433
sget v2, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v3, 0x17
if-lt v2, v3, :cond_41
if-eqz p1, :cond_41
iget-boolean v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->codecNeedsSetOutputSurfaceWorkaround:Z
if-nez v2, :cond_41
.line 434
invoke-static {v1, p1}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->setOutputSurfaceV23(Landroid/media/MediaCodec;Landroid/view/Surface;)V
goto :goto_47
.line 436
:cond_41
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->releaseCodec()V
.line 437
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeInitCodec()V
.line 440
:cond_47
:goto_47
if-eqz p1, :cond_5a
iget-object v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
if-eq p1, v2, :cond_5a
.line 442
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeRenotifyVideoSizeChanged()V
.line 444
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->clearRenderedFirstFrame()V
.line 445
const/4 v2, 0x2
if-ne v0, v2, :cond_6e
.line 446
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->setJoiningDeadlineMs()V
goto :goto_6e
.line 450
:cond_5a
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->clearReportedVideoSize()V
.line 451
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->clearRenderedFirstFrame()V
goto :goto_6e
.line 453
.end local v0 # "state":I
.end local v1 # "codec":Landroid/media/MediaCodec;
:cond_61
if-eqz p1, :cond_6e
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
if-eq p1, v0, :cond_6e
.line 456
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeRenotifyVideoSizeChanged()V
.line 457
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeRenotifyRenderedFirstFrame()V
goto :goto_6f
.line 453
:cond_6e
:goto_6e
nop
.line 459
:goto_6f
return-void
.end method
.method private shouldUseDummySurface(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;)Z
.registers 4
.param p1, "codecInfo" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.line 933
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x17
if-lt v0, v1, :cond_20
iget-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunneling:Z
if-nez v0, :cond_20
iget-object v0, p1, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
.line 935
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->codecNeedsSetOutputSurfaceWorkaround(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_20
iget-boolean v0, p1, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->secure:Z
if-eqz v0, :cond_1e
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->context:Landroid/content/Context;
.line 936
invoke-static {v0}, Lcom/google/android/exoplayer2/video/DummySurface;->isSecureSupported(Landroid/content/Context;)Z
move-result v0
if-eqz v0, :cond_20
:cond_1e
const/4 v0, 0x1
goto :goto_21
:cond_20
const/4 v0, 0x0
.line 933
:goto_21
return v0
.end method
# virtual methods
.method protected canKeepCodec(Landroid/media/MediaCodec;Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/Format;)I
.registers 7
.param p1, "codec" # Landroid/media/MediaCodec;
.param p2, "codecInfo" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.param p3, "oldFormat" # Lcom/google/android/exoplayer2/Format;
.param p4, "newFormat" # Lcom/google/android/exoplayer2/Format;
.line 504
const/4 v0, 0x1
invoke-virtual {p2, p3, p4, v0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->isSeamlessAdaptationSupported(Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/Format;Z)Z
move-result v0
if-eqz v0, :cond_2b
iget v0, p4, Lcom/google/android/exoplayer2/Format;->width:I
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->codecMaxValues:Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
iget v1, v1, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;->width:I
if-gt v0, v1, :cond_2b
iget v0, p4, Lcom/google/android/exoplayer2/Format;->height:I
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->codecMaxValues:Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
iget v1, v1, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;->height:I
if-gt v0, v1, :cond_2b
.line 508
invoke-static {p2, p4}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getMaxInputSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Lcom/google/android/exoplayer2/Format;)I
move-result v0
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->codecMaxValues:Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
iget v1, v1, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;->inputSize:I
if-gt v0, v1, :cond_2b
.line 509
invoke-virtual {p3, p4}, Lcom/google/android/exoplayer2/Format;->initializationDataEquals(Lcom/google/android/exoplayer2/Format;)Z
move-result v0
if-eqz v0, :cond_29
const/4 v0, 0x3
goto :goto_2a
:cond_29
const/4 v0, 0x2
:goto_2a
return v0
.line 513
:cond_2b
const/4 v0, 0x0
return v0
.end method
.method protected codecNeedsSetOutputSurfaceWorkaround(Ljava/lang/String;)Z
.registers 9
.param p1, "name" # Ljava/lang/String;
.line 1308
const-string v0, "OMX.google"
invoke-virtual {p1, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_a
.line 1310
return v1
.line 1312
:cond_a
const-class v0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;
monitor-enter v0
.line 1313
:try_start_d
sget-boolean v2, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->evaluatedDeviceNeedsSetOutputSurfaceWorkaround:Z
if-nez v2, :cond_633
.line 1314
sget v2, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v3, 0x1b
const/4 v4, 0x1
if-gt v2, v3, :cond_26
const-string v2, "dangal"
sget-object v5, Lcom/google/android/exoplayer2/util/Util;->DEVICE:Ljava/lang/String;
invoke-virtual {v2, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_26
.line 1316
sput-boolean v4, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->deviceNeedsSetOutputSurfaceWorkaround:Z
goto/16 :goto_631
.line 1317
:cond_26
sget v2, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
if-lt v2, v3, :cond_2c
goto/16 :goto_631
.line 1335
:cond_2c
sget-object v2, Lcom/google/android/exoplayer2/util/Util;->DEVICE:Ljava/lang/String;
invoke-virtual {v2}, Ljava/lang/String;->hashCode()I
move-result v5
const/4 v6, -0x1
sparse-switch v5, :sswitch_data_63c
:cond_36
goto/16 :goto_5fc
:sswitch_38
const-string v3, "HWWAS-H"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x36
goto/16 :goto_5fd
:sswitch_44
const-string v3, "HWVNS-H"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x35
goto/16 :goto_5fd
:sswitch_50
const-string v5, "ELUGA_Prim"
invoke-virtual {v2, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
goto/16 :goto_5fd
:sswitch_5a
const-string v3, "ELUGA_Note"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x1a
goto/16 :goto_5fd
:sswitch_66
const-string v3, "ASUS_X00AD_2"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0xb
goto/16 :goto_5fd
:sswitch_72
const-string v3, "HWCAM-H"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x34
goto/16 :goto_5fd
:sswitch_7e
const-string v3, "HWBLN-H"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x33
goto/16 :goto_5fd
:sswitch_8a
const-string v3, "BRAVIA_ATV3_4K"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0xf
goto/16 :goto_5fd
:sswitch_96
const-string v3, "Infinix-X572"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x39
goto/16 :goto_5fd
:sswitch_a2
const-string v3, "PB2-670M"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x55
goto/16 :goto_5fd
:sswitch_ae
const-string v3, "santoni"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x65
goto/16 :goto_5fd
:sswitch_ba
const-string v3, "iball8735_9806"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x38
goto/16 :goto_5fd
:sswitch_c6
const-string v3, "CPH1609"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x13
goto/16 :goto_5fd
:sswitch_d2
const-string/jumbo v3, "woods_f"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x75
goto/16 :goto_5fd
:sswitch_df
const-string v3, "htc_e56ml_dtul"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x31
goto/16 :goto_5fd
:sswitch_eb
const-string v3, "EverStar_S"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x1d
goto/16 :goto_5fd
:sswitch_f7
const-string v3, "hwALE-H"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x32
goto/16 :goto_5fd
:sswitch_103
const-string v3, "itel_S41"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x3b
goto/16 :goto_5fd
:sswitch_10f
const-string v3, "LS-5017"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x41
goto/16 :goto_5fd
:sswitch_11b
const-string v3, "panell_d"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x51
goto/16 :goto_5fd
:sswitch_127
const-string v3, "j2xlteins"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x3c
goto/16 :goto_5fd
:sswitch_133
const-string v3, "A7000plus"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/4 v3, 0x7
goto/16 :goto_5fd
:sswitch_13e
const-string v3, "manning"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x43
goto/16 :goto_5fd
:sswitch_14a
const-string v3, "GIONEE_WBL7519"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x2f
goto/16 :goto_5fd
:sswitch_156
const-string v3, "GIONEE_WBL7365"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x2e
goto/16 :goto_5fd
:sswitch_162
const-string v3, "GIONEE_WBL5708"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x2d
goto/16 :goto_5fd
:sswitch_16e
const-string v3, "QM16XE_U"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x63
goto/16 :goto_5fd
:sswitch_17a
const-string v3, "Pixi5-10_4G"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x5b
goto/16 :goto_5fd
:sswitch_186
const-string v3, "TB3-850M"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x6d
goto/16 :goto_5fd
:sswitch_192
const-string v3, "TB3-850F"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x6c
goto/16 :goto_5fd
:sswitch_19e
const-string v3, "TB3-730X"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x6b
goto/16 :goto_5fd
:sswitch_1aa
const-string v3, "TB3-730F"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x6a
goto/16 :goto_5fd
:sswitch_1b6
const-string v3, "A7020a48"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x9
goto/16 :goto_5fd
:sswitch_1c2
const-string v3, "A7010a48"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x8
goto/16 :goto_5fd
:sswitch_1ce
const-string v3, "griffin"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x30
goto/16 :goto_5fd
:sswitch_1da
const-string v3, "marino_f"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x44
goto/16 :goto_5fd
:sswitch_1e6
const-string v3, "CPY83_I00"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x14
goto/16 :goto_5fd
:sswitch_1f2
const-string v3, "A2016a40"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/4 v3, 0x5
goto/16 :goto_5fd
:sswitch_1fd
const-string v3, "le_x6"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x40
goto/16 :goto_5fd
:sswitch_209
const-string v3, "i9031"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x37
goto/16 :goto_5fd
:sswitch_215
const-string v3, "X3_HK"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x77
goto/16 :goto_5fd
:sswitch_221
const-string v3, "V23GB"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x70
goto/16 :goto_5fd
:sswitch_22d
const-string v3, "Q4310"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x61
goto/16 :goto_5fd
:sswitch_239
const-string v3, "Q4260"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x5f
goto/16 :goto_5fd
:sswitch_245
const-string v3, "PRO7S"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x5d
goto/16 :goto_5fd
:sswitch_251
const-string v3, "F3311"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x24
goto/16 :goto_5fd
:sswitch_25d
const-string v3, "F3215"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x23
goto/16 :goto_5fd
:sswitch_269
const-string v3, "F3213"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x22
goto/16 :goto_5fd
:sswitch_275
const-string v3, "F3211"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x21
goto/16 :goto_5fd
:sswitch_281
const-string v3, "F3116"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x20
goto/16 :goto_5fd
:sswitch_28d
const-string v3, "F3113"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x1f
goto/16 :goto_5fd
:sswitch_299
const-string v3, "F3111"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x1e
goto/16 :goto_5fd
:sswitch_2a5
const-string v3, "E5643"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x18
goto/16 :goto_5fd
:sswitch_2b1
const-string v3, "A1601"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/4 v3, 0x4
goto/16 :goto_5fd
:sswitch_2bc
const-string v3, "Aura_Note_2"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0xc
goto/16 :goto_5fd
:sswitch_2c8
const-string v3, "MEIZU_M5"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x45
goto/16 :goto_5fd
:sswitch_2d4
const-string v3, "p212"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x4e
goto/16 :goto_5fd
:sswitch_2e0
const-string v3, "mido"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x47
goto/16 :goto_5fd
:sswitch_2ec
const-string v3, "kate"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x3f
goto/16 :goto_5fd
:sswitch_2f8
const-string v3, "fugu"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x26
goto/16 :goto_5fd
:sswitch_304
const-string v3, "XE2X"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x78
goto/16 :goto_5fd
:sswitch_310
const-string v3, "Q427"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x60
goto/16 :goto_5fd
:sswitch_31c
const-string v3, "Q350"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x5e
goto/16 :goto_5fd
:sswitch_328
const-string v3, "P681"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x4f
goto/16 :goto_5fd
:sswitch_334
const-string v3, "1714"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/4 v3, 0x2
goto/16 :goto_5fd
:sswitch_33f
const-string v3, "1713"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/4 v3, 0x1
goto/16 :goto_5fd
:sswitch_34a
const-string v3, "1601"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/4 v3, 0x0
goto/16 :goto_5fd
:sswitch_355
const-string v3, "flo"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x25
goto/16 :goto_5fd
:sswitch_361
const-string v3, "deb"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x17
goto/16 :goto_5fd
:sswitch_36d
const-string v3, "cv3"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x16
goto/16 :goto_5fd
:sswitch_379
const-string v3, "cv1"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x15
goto/16 :goto_5fd
:sswitch_385
const-string v3, "Z80"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x7b
goto/16 :goto_5fd
:sswitch_391
const-string v3, "QX1"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x64
goto/16 :goto_5fd
:sswitch_39d
const-string v3, "PLE"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x5c
goto/16 :goto_5fd
:sswitch_3a9
const-string v3, "P85"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x50
goto/16 :goto_5fd
:sswitch_3b5
const-string v3, "MX6"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x48
goto/16 :goto_5fd
:sswitch_3c1
const-string v3, "M5c"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x42
goto/16 :goto_5fd
:sswitch_3cd
const-string v3, "JGZ"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x3d
goto/16 :goto_5fd
:sswitch_3d9
const-string v3, "mh"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x46
goto/16 :goto_5fd
:sswitch_3e5
const-string v3, "V5"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x71
goto/16 :goto_5fd
:sswitch_3f1
const-string v3, "V1"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x6f
goto/16 :goto_5fd
:sswitch_3fd
const-string v3, "Q5"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x62
goto/16 :goto_5fd
:sswitch_409
const-string v3, "C1"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x10
goto/16 :goto_5fd
:sswitch_415
const-string/jumbo v3, "woods_fn"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x76
goto/16 :goto_5fd
:sswitch_422
const-string v3, "ELUGA_A3_Pro"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x19
goto/16 :goto_5fd
:sswitch_42e
const-string v3, "Z12_PRO"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x7a
goto/16 :goto_5fd
:sswitch_43a
const-string v3, "BLACK-1X"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0xd
goto/16 :goto_5fd
:sswitch_446
const-string/jumbo v3, "taido_row"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x69
goto/16 :goto_5fd
:sswitch_453
const-string v3, "Pixi4-7_3G"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x5a
goto/16 :goto_5fd
:sswitch_45f
const-string v3, "GIONEE_GBL7360"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x29
goto/16 :goto_5fd
:sswitch_46b
const-string v3, "GiONEE_CBL7513"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x27
goto/16 :goto_5fd
:sswitch_477
const-string v3, "OnePlus5T"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x4d
goto/16 :goto_5fd
:sswitch_483
const-string/jumbo v3, "whyred"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x74
goto/16 :goto_5fd
:sswitch_490
const-string/jumbo v3, "watson"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x73
goto/16 :goto_5fd
:sswitch_49d
const-string v3, "SVP-DTV15"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x67
goto/16 :goto_5fd
:sswitch_4a9
const-string v3, "A7000-a"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/4 v3, 0x6
goto/16 :goto_5fd
:sswitch_4b4
const-string v3, "nicklaus_f"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x4a
goto/16 :goto_5fd
:sswitch_4c0
const-string/jumbo v3, "tcl_eu"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x6e
goto/16 :goto_5fd
:sswitch_4cd
const-string v3, "ELUGA_Ray_X"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x1c
goto/16 :goto_5fd
:sswitch_4d9
const-string v3, "s905x018"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x68
goto/16 :goto_5fd
:sswitch_4e5
const-string v3, "A10-70F"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/4 v3, 0x3
goto/16 :goto_5fd
:sswitch_4f0
const-string v3, "namath"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x49
goto/16 :goto_5fd
:sswitch_4fc
const-string v3, "Slate_Pro"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x66
goto/16 :goto_5fd
:sswitch_508
const-string v3, "iris60"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x3a
goto/16 :goto_5fd
:sswitch_514
const-string v3, "BRAVIA_ATV2"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0xe
goto/16 :goto_5fd
:sswitch_520
const-string v3, "GiONEE_GBL7319"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x28
goto/16 :goto_5fd
:sswitch_52c
const-string v3, "panell_dt"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x54
goto/16 :goto_5fd
:sswitch_538
const-string v3, "panell_ds"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x53
goto/16 :goto_5fd
:sswitch_544
const-string v3, "panell_dl"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x52
goto/16 :goto_5fd
:sswitch_550
const-string/jumbo v3, "vernee_M5"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x72
goto/16 :goto_5fd
:sswitch_55d
const-string v3, "Phantom6"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x59
goto/16 :goto_5fd
:sswitch_569
const-string v3, "ComioS1"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x11
goto/16 :goto_5fd
:sswitch_575
const-string v3, "XT1663"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x79
goto/16 :goto_5fd
:sswitch_581
const-string v3, "AquaPowerM"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0xa
goto/16 :goto_5fd
:sswitch_58d
const-string v3, "PGN611"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x58
goto/16 :goto_5fd
:sswitch_599
const-string v3, "PGN610"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x57
goto :goto_5fd
:sswitch_5a4
const-string v3, "PGN528"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x56
goto :goto_5fd
:sswitch_5af
const-string v3, "NX573J"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x4c
goto :goto_5fd
:sswitch_5ba
const-string v3, "NX541J"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x4b
goto :goto_5fd
:sswitch_5c5
const-string v3, "CP8676_I02"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x12
goto :goto_5fd
:sswitch_5d0
const-string v3, "K50a40"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x3e
goto :goto_5fd
:sswitch_5db
const-string v3, "GIONEE_SWW1631"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x2c
goto :goto_5fd
:sswitch_5e6
const-string v3, "GIONEE_SWW1627"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x2b
goto :goto_5fd
:sswitch_5f1
const-string v3, "GIONEE_SWW1609"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
const/16 v3, 0x2a
goto :goto_5fd
:goto_5fc
const/4 v3, -0x1
:goto_5fd
packed-switch v3, :pswitch_data_82e
goto :goto_604
.line 1460
:pswitch_601
sput-boolean v4, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->deviceNeedsSetOutputSurfaceWorkaround:Z
.line 1461
nop
.line 1466
:goto_604
sget-object v2, Lcom/google/android/exoplayer2/util/Util;->MODEL:Ljava/lang/String;
invoke-virtual {v2}, Ljava/lang/String;->hashCode()I
move-result v3
const v5, 0x1e9d52
if-eq v3, v5, :cond_61f
const v1, 0x1e9d5f
if-eq v3, v1, :cond_615
:cond_614
goto :goto_628
:cond_615
const-string v1, "AFTN"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_614
const/4 v1, 0x1
goto :goto_629
:cond_61f
const-string v3, "AFTA"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_614
goto :goto_629
:goto_628
const/4 v1, -0x1
:goto_629
if-eqz v1, :cond_62e
if-eq v1, v4, :cond_62e
goto :goto_631
.line 1469
:cond_62e
sput-boolean v4, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->deviceNeedsSetOutputSurfaceWorkaround:Z
.line 1470
nop
.line 1476
:goto_631
sput-boolean v4, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->evaluatedDeviceNeedsSetOutputSurfaceWorkaround:Z
.line 1478
:cond_633
monitor-exit v0
:try_end_634
.catchall {:try_start_d .. :try_end_634} :catchall_637
.line 1479
sget-boolean v0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->deviceNeedsSetOutputSurfaceWorkaround:Z
return v0
.line 1478
:catchall_637
move-exception v1
:try_start_638
monitor-exit v0
:try_end_639
.catchall {:try_start_638 .. :try_end_639} :catchall_637
goto :goto_63b
:goto_63a
throw v1
:goto_63b
goto :goto_63a
:sswitch_data_63c
.sparse-switch
-0x7fd6c3bd -> :sswitch_5f1
-0x7fd6c381 -> :sswitch_5e6
-0x7fd6c368 -> :sswitch_5db
-0x7d026749 -> :sswitch_5d0
-0x78929d6a -> :sswitch_5c5
-0x75f50a1e -> :sswitch_5ba
-0x75f4fe9d -> :sswitch_5af
-0x736f875c -> :sswitch_5a4
-0x736f83c2 -> :sswitch_599
-0x736f83c1 -> :sswitch_58d
-0x7327ce1c -> :sswitch_581
-0x651ebb62 -> :sswitch_575
-0x6423293b -> :sswitch_569
-0x604f5117 -> :sswitch_55d
-0x5ca40cc4 -> :sswitch_550
-0x58520ec1 -> :sswitch_544
-0x58520eba -> :sswitch_538
-0x58520eb9 -> :sswitch_52c
-0x4eaed329 -> :sswitch_520
-0x4892fb4f -> :sswitch_514
-0x465b3df3 -> :sswitch_508
-0x43e6c939 -> :sswitch_4fc
-0x3ec0fcc5 -> :sswitch_4f0
-0x3b33cca0 -> :sswitch_4e5
-0x398ae3f6 -> :sswitch_4d9
-0x391f0fb4 -> :sswitch_4cd
-0x346837ae -> :sswitch_4c0
-0x323788e3 -> :sswitch_4b4
-0x30f57652 -> :sswitch_4a9
-0x2f88a116 -> :sswitch_49d
-0x2f61ed98 -> :sswitch_490
-0x2efd0837 -> :sswitch_483
-0x2e9e9441 -> :sswitch_477
-0x2247b8b1 -> :sswitch_46b
-0x1f0fa2b7 -> :sswitch_45f
-0x19af3b41 -> :sswitch_453
-0x114fad3e -> :sswitch_446
-0x10dae90b -> :sswitch_43a
-0x1084b7b7 -> :sswitch_42e
-0xa5988e9 -> :sswitch_422
-0x35f9fbf -> :sswitch_415
0x84e -> :sswitch_409
0xa04 -> :sswitch_3fd
0xa9b -> :sswitch_3f1
0xa9f -> :sswitch_3e5
0xd9b -> :sswitch_3d9
0x11ebd -> :sswitch_3cd
0x127db -> :sswitch_3c1
0x12beb -> :sswitch_3b5
0x1334d -> :sswitch_3a9
0x135c9 -> :sswitch_39d
0x13aea -> :sswitch_391
0x158d2 -> :sswitch_385
0x1821e -> :sswitch_379
0x18220 -> :sswitch_36d
0x18401 -> :sswitch_361
0x18c69 -> :sswitch_355
0x1716e6 -> :sswitch_34a
0x171ac8 -> :sswitch_33f
0x171ac9 -> :sswitch_334
0x252f5f -> :sswitch_328
0x25981d -> :sswitch_31c
0x259b88 -> :sswitch_310
0x290a13 -> :sswitch_304
0x3021fd -> :sswitch_2f8
0x321e47 -> :sswitch_2ec
0x332327 -> :sswitch_2e0
0x33ab63 -> :sswitch_2d4
0x27691fb -> :sswitch_2c8
0x349f581 -> :sswitch_2bc
0x3ab0ea7 -> :sswitch_2b1
0x3e53ea5 -> :sswitch_2a5
0x3f25a44 -> :sswitch_299
0x3f25a46 -> :sswitch_28d
0x3f25a49 -> :sswitch_281
0x3f25e05 -> :sswitch_275
0x3f25e07 -> :sswitch_269
0x3f25e09 -> :sswitch_25d
0x3f261c6 -> :sswitch_251
0x48dce49 -> :sswitch_245
0x48dd589 -> :sswitch_239
0x48dd8af -> :sswitch_22d
0x4d36832 -> :sswitch_221
0x4f0b0e7 -> :sswitch_215
0x5e2479e -> :sswitch_209
0x6214744 -> :sswitch_1fd
0x9d91379 -> :sswitch_1f2
0xadc0551 -> :sswitch_1e6
0xea056b3 -> :sswitch_1da
0x1121dbc3 -> :sswitch_1ce
0x1255818c -> :sswitch_1c2
0x1263990d -> :sswitch_1b6
0x12d90f3a -> :sswitch_1aa
0x12d90f4c -> :sswitch_19e
0x12d98b1b -> :sswitch_192
0x12d98b22 -> :sswitch_186
0x1844c711 -> :sswitch_17a
0x1e3e8044 -> :sswitch_16e
0x2f5336ed -> :sswitch_162
0x2f54115e -> :sswitch_156
0x2f541849 -> :sswitch_14a
0x31cf010e -> :sswitch_13e
0x36ad82f4 -> :sswitch_133
0x391a0b61 -> :sswitch_127
0x3f3728cd -> :sswitch_11b
0x448ec687 -> :sswitch_10f
0x46260f63 -> :sswitch_103
0x4c505106 -> :sswitch_f7
0x4de67084 -> :sswitch_eb
0x506ac5a9 -> :sswitch_df
0x5abad9cd -> :sswitch_d2
0x64d2e6e9 -> :sswitch_c6
0x65e4085b -> :sswitch_ba
0x6f373556 -> :sswitch_ae
0x719f1dcb -> :sswitch_a2
0x75d9a0f0 -> :sswitch_96
0x7796d144 -> :sswitch_8a
0x78fc0e50 -> :sswitch_7e
0x790521fb -> :sswitch_72
0x7933207f -> :sswitch_66
0x7a05a409 -> :sswitch_5a
0x7a0696bd -> :sswitch_50
0x7a16dfe7 -> :sswitch_44
0x7a1f0e95 -> :sswitch_38
.end sparse-switch
:pswitch_data_82e
.packed-switch 0x0
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
:pswitch_601
.end packed-switch
.end method
.method protected configureCodec(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Landroid/media/MediaCodec;Lcom/google/android/exoplayer2/Format;Landroid/media/MediaCrypto;F)V
.registers 13
.param p1, "codecInfo" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.param p2, "codec" # Landroid/media/MediaCodec;
.param p3, "format" # Lcom/google/android/exoplayer2/Format;
.param p4, "crypto" # Landroid/media/MediaCrypto;
.param p5, "codecOperatingRate" # F
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/mediacodec/MediaCodecUtil$DecoderQueryException;
}
.end annotation
.line 480
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getStreamFormats()[Lcom/google/android/exoplayer2/Format;
move-result-object v0
invoke-virtual {p0, p1, p3, v0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodecMaxValues(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Lcom/google/android/exoplayer2/Format;[Lcom/google/android/exoplayer2/Format;)Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
move-result-object v3
iput-object v3, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->codecMaxValues:Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
.line 481
iget-boolean v5, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->deviceNeedsNoPostProcessWorkaround:Z
iget v6, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunnelingAudioSessionId:I
.line 482
move-object v1, p0
move-object v2, p3
move v4, p5
invoke-virtual/range {v1 .. v6}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getMediaFormat(Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;FZI)Landroid/media/MediaFormat;
move-result-object v0
.line 488
.local v0, "mediaFormat":Landroid/media/MediaFormat;
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
if-nez v1, :cond_32
.line 489
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->shouldUseDummySurface(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;)Z
move-result v1
invoke-static {v1}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
.line 490
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
if-nez v1, :cond_2e
.line 491
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->context:Landroid/content/Context;
iget-boolean v2, p1, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->secure:Z
invoke-static {v1, v2}, Lcom/google/android/exoplayer2/video/DummySurface;->newInstanceV17(Landroid/content/Context;Z)Lcom/google/android/exoplayer2/video/DummySurface;
move-result-object v1
iput-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
.line 493
:cond_2e
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
iput-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
.line 495
:cond_32
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
const/4 v2, 0x0
invoke-virtual {p2, v0, v1, p4, v2}, Landroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
.line 496
sget v1, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v2, 0x17
if-lt v1, v2, :cond_4a
iget-boolean v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunneling:Z
if-eqz v1, :cond_4a
.line 497
new-instance v1, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;
const/4 v2, 0x0
invoke-direct {v1, p0, p2, v2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;-><init>(Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;Landroid/media/MediaCodec;Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$1;)V
iput-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunnelingOnFrameRenderedListener:Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;
.line 499
:cond_4a
return-void
.end method
.method protected dropOutputBuffer(Landroid/media/MediaCodec;IJ)V
.registers 6
.param p1, "codec" # Landroid/media/MediaCodec;
.param p2, "index" # I
.param p3, "presentationTimeUs" # J
.line 842
const-string v0, "dropVideoBuffer"
invoke-static {v0}, Lcom/google/android/exoplayer2/util/TraceUtil;->beginSection(Ljava/lang/String;)V
.line 843
const/4 v0, 0x0
invoke-virtual {p1, p2, v0}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
.line 844
invoke-static {}, Lcom/google/android/exoplayer2/util/TraceUtil;->endSection()V
.line 845
const/4 v0, 0x1
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->updateDroppedBufferCounters(I)V
.line 846
return-void
.end method
.method protected flushOrReleaseCodec()Z
.registers 3
.line 530
const/4 v0, 0x0
:try_start_1
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->flushOrReleaseCodec()Z
move-result v1
:try_end_5
.catchall {:try_start_1 .. :try_end_5} :catchall_8
.line 532
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->buffersInCodecCount:I
.line 530
return v1
.line 532
:catchall_8
move-exception v1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->buffersInCodecCount:I
.line 533
throw v1
.end method
.method protected getCodecMaxValues(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Lcom/google/android/exoplayer2/Format;[Lcom/google/android/exoplayer2/Format;)Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
.registers 15
.param p1, "codecInfo" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.param p2, "format" # Lcom/google/android/exoplayer2/Format;
.param p3, "streamFormats" # [Lcom/google/android/exoplayer2/Format;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/mediacodec/MediaCodecUtil$DecoderQueryException;
}
.end annotation
.line 1096
iget v0, p2, Lcom/google/android/exoplayer2/Format;->width:I
.line 1097
.local v0, "maxWidth":I
iget v1, p2, Lcom/google/android/exoplayer2/Format;->height:I
.line 1098
.local v1, "maxHeight":I
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getMaxInputSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Lcom/google/android/exoplayer2/Format;)I
move-result v2
.line 1099
.local v2, "maxInputSize":I
array-length v3, p3
const/4 v4, 0x1
const/4 v5, -0x1
if-ne v3, v4, :cond_2b
.line 1102
if-eq v2, v5, :cond_25
.line 1103
iget-object v3, p2, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
iget v4, p2, Lcom/google/android/exoplayer2/Format;->width:I
iget v6, p2, Lcom/google/android/exoplayer2/Format;->height:I
.line 1104
invoke-static {p1, v3, v4, v6}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodecMaxInputSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Ljava/lang/String;II)I
move-result v3
.line 1105
.local v3, "codecMaxInputSize":I
if-eq v3, v5, :cond_25
.line 1109
int-to-float v4, v2
const/high16 v5, 0x3fc00000 # 1.5f
mul-float v4, v4, v5
float-to-int v4, v4
.line 1112
.local v4, "scaledMaxInputSize":I
invoke-static {v4, v3}, Ljava/lang/Math;->min(II)I
move-result v2
.line 1115
.end local v3 # "codecMaxInputSize":I
.end local v4 # "scaledMaxInputSize":I
:cond_25
new-instance v3, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
invoke-direct {v3, v0, v1, v2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;-><init>(III)V
return-object v3
.line 1117
:cond_2b
const/4 v3, 0x0
.line 1118
.local v3, "haveUnknownDimensions":Z
array-length v6, p3
const/4 v7, 0x0
const/4 v8, 0x0
:goto_2f
if-ge v8, v6, :cond_5d
aget-object v9, p3, v8
.line 1119
.local v9, "streamFormat":Lcom/google/android/exoplayer2/Format;
invoke-virtual {p1, p2, v9, v7}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->isSeamlessAdaptationSupported(Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/Format;Z)Z
move-result v10
if-eqz v10, :cond_5a
.line 1121
iget v10, v9, Lcom/google/android/exoplayer2/Format;->width:I
if-eq v10, v5, :cond_44
iget v10, v9, Lcom/google/android/exoplayer2/Format;->height:I
if-ne v10, v5, :cond_42
goto :goto_44
:cond_42
const/4 v10, 0x0
goto :goto_45
:cond_44
:goto_44
const/4 v10, 0x1
:goto_45
or-int/2addr v3, v10
.line 1123
iget v10, v9, Lcom/google/android/exoplayer2/Format;->width:I
invoke-static {v0, v10}, Ljava/lang/Math;->max(II)I
move-result v0
.line 1124
iget v10, v9, Lcom/google/android/exoplayer2/Format;->height:I
invoke-static {v1, v10}, Ljava/lang/Math;->max(II)I
move-result v1
.line 1125
invoke-static {p1, v9}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getMaxInputSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Lcom/google/android/exoplayer2/Format;)I
move-result v10
invoke-static {v2, v10}, Ljava/lang/Math;->max(II)I
move-result v2
.line 1118
.end local v9 # "streamFormat":Lcom/google/android/exoplayer2/Format;
:cond_5a
add-int/lit8 v8, v8, 0x1
goto :goto_2f
.line 1128
:cond_5d
if-eqz v3, :cond_b4
.line 1129
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v5, "Resolutions unknown. Codec max resolution: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string/jumbo v5, "x"
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
const-string v6, "MediaCodecVideoRenderer"
invoke-static {v6, v4}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 1130
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodecMaxSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Lcom/google/android/exoplayer2/Format;)Landroid/graphics/Point;
move-result-object v4
.line 1131
.local v4, "codecMaxSize":Landroid/graphics/Point;
if-eqz v4, :cond_b4
.line 1132
iget v7, v4, Landroid/graphics/Point;->x:I
invoke-static {v0, v7}, Ljava/lang/Math;->max(II)I
move-result v0
.line 1133
iget v7, v4, Landroid/graphics/Point;->y:I
invoke-static {v1, v7}, Ljava/lang/Math;->max(II)I
move-result v1
.line 1134
iget-object v7, p2, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
.line 1137
invoke-static {p1, v7, v0, v1}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodecMaxInputSize(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Ljava/lang/String;II)I
move-result v7
.line 1135
invoke-static {v2, v7}, Ljava/lang/Math;->max(II)I
move-result v2
.line 1138
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
const-string v8, "Codec max resolution adjusted to: "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-static {v6, v5}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 1141
.end local v4 # "codecMaxSize":Landroid/graphics/Point;
:cond_b4
new-instance v4, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
invoke-direct {v4, v0, v1, v2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;-><init>(III)V
return-object v4
.end method
.method protected getCodecNeedsEosPropagation()Z
.registers 2
.line 469
iget-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunneling:Z
return v0
.end method
.method protected getCodecOperatingRateV23(FLcom/google/android/exoplayer2/Format;[Lcom/google/android/exoplayer2/Format;)F
.registers 10
.param p1, "operatingRate" # F
.param p2, "format" # Lcom/google/android/exoplayer2/Format;
.param p3, "streamFormats" # [Lcom/google/android/exoplayer2/Format;
.line 541
const/high16 v0, -0x40800000 # -1.0f
.line 542
.local v0, "maxFrameRate":F
array-length v1, p3
const/4 v2, 0x0
:goto_4
const/high16 v3, -0x40800000 # -1.0f
if-ge v2, v1, :cond_17
aget-object v4, p3, v2
.line 543
.local v4, "streamFormat":Lcom/google/android/exoplayer2/Format;
iget v5, v4, Lcom/google/android/exoplayer2/Format;->frameRate:F
.line 544
.local v5, "streamFrameRate":F
cmpl-float v3, v5, v3
if-eqz v3, :cond_14
.line 545
invoke-static {v0, v5}, Ljava/lang/Math;->max(FF)F
move-result v0
.line 542
.end local v4 # "streamFormat":Lcom/google/android/exoplayer2/Format;
.end local v5 # "streamFrameRate":F
:cond_14
add-int/lit8 v2, v2, 0x1
goto :goto_4
.line 548
:cond_17
cmpl-float v1, v0, v3
if-nez v1, :cond_1c
goto :goto_1e
:cond_1c
mul-float v3, v0, p1
:goto_1e
return v3
.end method
.method protected getMediaFormat(Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;FZI)Landroid/media/MediaFormat;
.registers 10
.param p1, "format" # Lcom/google/android/exoplayer2/Format;
.param p2, "codecMaxValues" # Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;
.param p3, "codecOperatingRate" # F
.param p4, "deviceNeedsNoPostProcessWorkaround" # Z
.param p5, "tunnelingAudioSessionId" # I
.line 1051
new-instance v0, Landroid/media/MediaFormat;
invoke-direct {v0}, Landroid/media/MediaFormat;-><init>()V
.line 1053
.local v0, "mediaFormat":Landroid/media/MediaFormat;
iget-object v1, p1, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
const-string v2, "mime"
invoke-virtual {v0, v2, v1}, Landroid/media/MediaFormat;->setString(Ljava/lang/String;Ljava/lang/String;)V
.line 1054
iget v1, p1, Lcom/google/android/exoplayer2/Format;->width:I
const-string/jumbo v2, "width"
invoke-virtual {v0, v2, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 1055
iget v1, p1, Lcom/google/android/exoplayer2/Format;->height:I
const-string v2, "height"
invoke-virtual {v0, v2, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 1056
iget-object v1, p1, Lcom/google/android/exoplayer2/Format;->initializationData:Ljava/util/List;
invoke-static {v0, v1}, Lcom/google/android/exoplayer2/mediacodec/MediaFormatUtil;->setCsdBuffers(Landroid/media/MediaFormat;Ljava/util/List;)V
.line 1058
iget v1, p1, Lcom/google/android/exoplayer2/Format;->frameRate:F
const-string v2, "frame-rate"
invoke-static {v0, v2, v1}, Lcom/google/android/exoplayer2/mediacodec/MediaFormatUtil;->maybeSetFloat(Landroid/media/MediaFormat;Ljava/lang/String;F)V
.line 1059
iget v1, p1, Lcom/google/android/exoplayer2/Format;->rotationDegrees:I
const-string v2, "rotation-degrees"
invoke-static {v0, v2, v1}, Lcom/google/android/exoplayer2/mediacodec/MediaFormatUtil;->maybeSetInteger(Landroid/media/MediaFormat;Ljava/lang/String;I)V
.line 1060
iget-object v1, p1, Lcom/google/android/exoplayer2/Format;->colorInfo:Lcom/google/android/exoplayer2/video/ColorInfo;
invoke-static {v0, v1}, Lcom/google/android/exoplayer2/mediacodec/MediaFormatUtil;->maybeSetColorInfo(Landroid/media/MediaFormat;Lcom/google/android/exoplayer2/video/ColorInfo;)V
.line 1062
iget v1, p2, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;->width:I
const-string v2, "max-width"
invoke-virtual {v0, v2, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 1063
iget v1, p2, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;->height:I
const-string v2, "max-height"
invoke-virtual {v0, v2, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 1064
iget v1, p2, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$CodecMaxValues;->inputSize:I
const-string v2, "max-input-size"
invoke-static {v0, v2, v1}, Lcom/google/android/exoplayer2/mediacodec/MediaFormatUtil;->maybeSetInteger(Landroid/media/MediaFormat;Ljava/lang/String;I)V
.line 1067
sget v1, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/4 v2, 0x0
const/16 v3, 0x17
if-lt v1, v3, :cond_5f
.line 1068
const-string v1, "priority"
invoke-virtual {v0, v1, v2}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 1069
const/high16 v1, -0x40800000 # -1.0f
cmpl-float v1, p3, v1
if-eqz v1, :cond_5f
.line 1070
const-string v1, "operating-rate"
invoke-virtual {v0, v1, p3}, Landroid/media/MediaFormat;->setFloat(Ljava/lang/String;F)V
.line 1073
:cond_5f
if-eqz p4, :cond_6c
.line 1074
const/4 v1, 0x1
const-string v3, "no-post-process"
invoke-virtual {v0, v3, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 1075
const-string v1, "auto-frc"
invoke-virtual {v0, v1, v2}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 1077
:cond_6c
if-eqz p5, :cond_71
.line 1078
invoke-static {v0, p5}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->configureTunnelingV21(Landroid/media/MediaFormat;I)V
.line 1080
:cond_71
return-object v0
.end method
.method protected getOutputStreamOffsetUs()J
.registers 3
.line 740
iget-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->outputStreamOffsetUs:J
return-wide v0
.end method
.method public handleMessage(ILjava/lang/Object;)V
.registers 5
.param p1, "messageType" # I
.param p2, "message" # Ljava/lang/Object;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 399
const/4 v0, 0x1
if-ne p1, v0, :cond_a
.line 400
move-object v0, p2
check-cast v0, Landroid/view/Surface;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->setSurface(Landroid/view/Surface;)V
goto :goto_2e
.line 401
:cond_a
const/4 v0, 0x4
if-ne p1, v0, :cond_22
.line 402
move-object v0, p2
check-cast v0, Ljava/lang/Integer;
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->scalingMode:I
.line 403
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodec()Landroid/media/MediaCodec;
move-result-object v0
.line 404
.local v0, "codec":Landroid/media/MediaCodec;
if-eqz v0, :cond_21
.line 405
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->scalingMode:I
invoke-virtual {v0, v1}, Landroid/media/MediaCodec;->setVideoScalingMode(I)V
.line 407
.end local v0 # "codec":Landroid/media/MediaCodec;
:cond_21
goto :goto_2e
:cond_22
const/4 v0, 0x6
if-ne p1, v0, :cond_2b
.line 408
move-object v0, p2
check-cast v0, Lcom/google/android/exoplayer2/video/VideoFrameMetadataListener;
iput-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->frameMetadataListener:Lcom/google/android/exoplayer2/video/VideoFrameMetadataListener;
goto :goto_2e
.line 410
:cond_2b
invoke-super {p0, p1, p2}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->handleMessage(ILjava/lang/Object;)V
.line 412
:goto_2e
return-void
.end method
.method public isReady()Z
.registers 10
.line 333
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->isReady()Z
move-result v0
const/4 v1, 0x1
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
if-eqz v0, :cond_25
iget-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderedFirstFrame:Z
if-nez v0, :cond_22
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
if-eqz v0, :cond_18
iget-object v4, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
if-eq v4, v0, :cond_22
.line 334
:cond_18
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodec()Landroid/media/MediaCodec;
move-result-object v0
if-eqz v0, :cond_22
iget-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunneling:Z
if-eqz v0, :cond_25
.line 336
:cond_22
iput-wide v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->joiningDeadlineMs:J
.line 337
return v1
.line 338
:cond_25
iget-wide v4, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->joiningDeadlineMs:J
const/4 v0, 0x0
cmp-long v6, v4, v2
if-nez v6, :cond_2d
.line 340
return v0
.line 341
:cond_2d
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v4
iget-wide v6, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->joiningDeadlineMs:J
cmp-long v8, v4, v6
if-gez v8, :cond_38
.line 343
return v1
.line 346
:cond_38
iput-wide v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->joiningDeadlineMs:J
.line 347
return v0
.end method
.method protected maybeDropBuffersToKeyframe(Landroid/media/MediaCodec;IJJ)Z
.registers 11
.param p1, "codec" # Landroid/media/MediaCodec;
.param p2, "index" # I
.param p3, "presentationTimeUs" # J
.param p5, "positionUs" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 862
invoke-virtual {p0, p5, p6}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->skipSource(J)I
move-result v0
.line 863
.local v0, "droppedSourceBufferCount":I
if-nez v0, :cond_8
.line 864
const/4 v1, 0x0
return v1
.line 866
:cond_8
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
iget v2, v1, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->droppedToKeyframeCount:I
const/4 v3, 0x1
add-int/2addr v2, v3
iput v2, v1, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->droppedToKeyframeCount:I
.line 869
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->buffersInCodecCount:I
add-int/2addr v1, v0
invoke-virtual {p0, v1}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->updateDroppedBufferCounters(I)V
.line 870
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->flushOrReinitCodec()V
.line 871
return v3
.end method
.method maybeNotifyRenderedFirstFrame()V
.registers 3
.line 960
iget-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderedFirstFrame:Z
if-nez v0, :cond_e
.line 961
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderedFirstFrame:Z
.line 962
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->renderedFirstFrame(Landroid/view/Surface;)V
.line 964
:cond_e
return-void
.end method
.method protected onCodecInitialized(Ljava/lang/String;JJ)V
.registers 12
.param p1, "name" # Ljava/lang/String;
.param p2, "initializedTimestampMs" # J
.param p4, "initializationDurationMs" # J
.line 554
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
move-object v1, p1
move-wide v2, p2
move-wide v4, p4
invoke-virtual/range {v0 .. v5}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->decoderInitialized(Ljava/lang/String;JJ)V
.line 555
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->codecNeedsSetOutputSurfaceWorkaround(Ljava/lang/String;)Z
move-result v0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->codecNeedsSetOutputSurfaceWorkaround:Z
.line 556
return-void
.end method
.method protected onDisabled()V
.registers 4
.line 368
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastInputTimeUs:J
.line 369
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->outputStreamOffsetUs:J
.line 370
const/4 v0, 0x0
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
.line 371
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->clearReportedVideoSize()V
.line 372
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->clearRenderedFirstFrame()V
.line 373
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->frameReleaseTimeHelper:Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;->disable()V
.line 374
const/4 v0, 0x0
iput-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunnelingOnFrameRenderedListener:Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;
.line 376
:try_start_1a
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onDisabled()V
:try_end_1d
.catchall {:try_start_1a .. :try_end_1d} :catchall_26
.line 378
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->disabled(Lcom/google/android/exoplayer2/decoder/DecoderCounters;)V
.line 379
nop
.line 380
return-void
.line 378
:catchall_26
move-exception v0
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
iget-object v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->disabled(Lcom/google/android/exoplayer2/decoder/DecoderCounters;)V
.line 379
throw v0
.end method
.method protected onEnabled(Z)V
.registers 5
.param p1, "joining" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 285
invoke-super {p0, p1}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onEnabled(Z)V
.line 286
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunnelingAudioSessionId:I
.line 287
.local v0, "oldTunnelingAudioSessionId":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getConfiguration()Lcom/google/android/exoplayer2/RendererConfiguration;
move-result-object v1
iget v1, v1, Lcom/google/android/exoplayer2/RendererConfiguration;->tunnelingAudioSessionId:I
iput v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunnelingAudioSessionId:I
.line 288
if-eqz v1, :cond_11
const/4 v1, 0x1
goto :goto_12
:cond_11
const/4 v1, 0x0
:goto_12
iput-boolean v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunneling:Z
.line 289
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunnelingAudioSessionId:I
if-eq v1, v0, :cond_1b
.line 290
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->releaseCodec()V
.line 292
:cond_1b
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
iget-object v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->enabled(Lcom/google/android/exoplayer2/decoder/DecoderCounters;)V
.line 293
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->frameReleaseTimeHelper:Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;->enable()V
.line 294
return-void
.end method
.method protected onInputFormatChanged(Lcom/google/android/exoplayer2/Format;)V
.registers 3
.param p1, "newFormat" # Lcom/google/android/exoplayer2/Format;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 560
invoke-super {p0, p1}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onInputFormatChanged(Lcom/google/android/exoplayer2/Format;)V
.line 561
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/video/VideoRendererEventListener$EventDispatcher;->inputFormatChanged(Lcom/google/android/exoplayer2/Format;)V
.line 562
iget v0, p1, Lcom/google/android/exoplayer2/Format;->pixelWidthHeightRatio:F
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingPixelWidthHeightRatio:F
.line 563
iget v0, p1, Lcom/google/android/exoplayer2/Format;->rotationDegrees:I
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingRotationDegrees:I
.line 564
return-void
.end method
.method protected onOutputFormatChanged(Landroid/media/MediaCodec;Landroid/media/MediaFormat;)V
.registers 9
.param p1, "codec" # Landroid/media/MediaCodec;
.param p2, "outputFormat" # Landroid/media/MediaFormat;
.line 585
const-string v0, "crop-right"
invoke-virtual {p2, v0}, Landroid/media/MediaFormat;->containsKey(Ljava/lang/String;)Z
move-result v1
const-string v2, "crop-top"
const-string v3, "crop-bottom"
const-string v4, "crop-left"
const/4 v5, 0x1
if-eqz v1, :cond_23
.line 586
invoke-virtual {p2, v4}, Landroid/media/MediaFormat;->containsKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_23
invoke-virtual {p2, v3}, Landroid/media/MediaFormat;->containsKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_23
.line 587
invoke-virtual {p2, v2}, Landroid/media/MediaFormat;->containsKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_23
const/4 v1, 0x1
goto :goto_24
:cond_23
const/4 v1, 0x0
.line 588
.local v1, "hasCrop":Z
:goto_24
if-eqz v1, :cond_31
.line 590
invoke-virtual {p2, v0}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v0
invoke-virtual {p2, v4}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v4
sub-int/2addr v0, v4
add-int/2addr v0, v5
goto :goto_39
:cond_31
nop
.line 591
const-string/jumbo v0, "width"
invoke-virtual {p2, v0}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v0
:goto_39
nop
.line 592
.local v0, "width":I
if-eqz v1, :cond_47
.line 594
invoke-virtual {p2, v3}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v3
invoke-virtual {p2, v2}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v2
sub-int/2addr v3, v2
add-int/2addr v3, v5
goto :goto_4e
:cond_47
nop
.line 595
const-string v2, "height"
invoke-virtual {p2, v2}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v3
:goto_4e
move v2, v3
.line 596
.local v2, "height":I
invoke-direct {p0, p1, v0, v2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->processOutputFormat(Landroid/media/MediaCodec;II)V
.line 597
return-void
.end method
.method protected onPositionReset(JZ)V
.registers 9
.param p1, "positionUs" # J
.param p3, "joining" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 315
invoke-super {p0, p1, p2, p3}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onPositionReset(JZ)V
.line 316
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->clearRenderedFirstFrame()V
.line 317
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->initialPositionUs:J
.line 318
const/4 v2, 0x0
iput v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->consecutiveDroppedFrameCount:I
.line 319
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastInputTimeUs:J
.line 320
iget v3, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
if-eqz v3, :cond_20
.line 321
iget-object v4, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetsUs:[J
add-int/lit8 v3, v3, -0x1
aget-wide v3, v4, v3
iput-wide v3, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->outputStreamOffsetUs:J
.line 322
iput v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
.line 324
:cond_20
if-eqz p3, :cond_26
.line 325
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->setJoiningDeadlineMs()V
goto :goto_28
.line 327
:cond_26
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->joiningDeadlineMs:J
.line 329
:goto_28
return-void
.end method
.method protected onProcessedOutputBuffer(J)V
.registers 9
.param p1, "presentationTimeUs" # J
.line 762
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->buffersInCodecCount:I
const/4 v1, 0x1
sub-int/2addr v0, v1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->buffersInCodecCount:I
.line 763
:goto_6
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
if-eqz v0, :cond_28
iget-object v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamSwitchTimesUs:[J
const/4 v3, 0x0
aget-wide v4, v2, v3
cmp-long v2, p1, v4
if-ltz v2, :cond_28
.line 765
iget-object v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetsUs:[J
aget-wide v4, v2, v3
iput-wide v4, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->outputStreamOffsetUs:J
.line 766
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
.line 767
invoke-static {v2, v1, v2, v3, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 773
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamSwitchTimesUs:[J
iget v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
invoke-static {v0, v1, v0, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
goto :goto_6
.line 780
:cond_28
return-void
.end method
.method protected onProcessedTunneledBuffer(J)V
.registers 7
.param p1, "presentationTimeUs" # J
.line 745
invoke-virtual {p0, p1, p2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->updateOutputFormatForTime(J)Lcom/google/android/exoplayer2/Format;
move-result-object v0
.line 746
.local v0, "format":Lcom/google/android/exoplayer2/Format;
if-eqz v0, :cond_11
.line 747
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getCodec()Landroid/media/MediaCodec;
move-result-object v1
iget v2, v0, Lcom/google/android/exoplayer2/Format;->width:I
iget v3, v0, Lcom/google/android/exoplayer2/Format;->height:I
invoke-direct {p0, v1, v2, v3}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->processOutputFormat(Landroid/media/MediaCodec;II)V
.line 749
:cond_11
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeNotifyVideoSizeChanged()V
.line 750
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeNotifyRenderedFirstFrame()V
.line 751
invoke-virtual {p0, p1, p2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->onProcessedOutputBuffer(J)V
.line 752
return-void
.end method
.method protected onQueueInputBuffer(Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;)V
.registers 6
.param p1, "buffer" # Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;
.line 574
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->buffersInCodecCount:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->buffersInCodecCount:I
.line 575
iget-wide v0, p1, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->timeUs:J
iget-wide v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastInputTimeUs:J
invoke-static {v0, v1, v2, v3}, Ljava/lang/Math;->max(JJ)J
move-result-wide v0
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastInputTimeUs:J
.line 576
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x17
if-ge v0, v1, :cond_1f
iget-boolean v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->tunneling:Z
if-eqz v0, :cond_1f
.line 579
iget-wide v0, p1, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->timeUs:J
invoke-virtual {p0, v0, v1}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->onProcessedTunneledBuffer(J)V
.line 581
:cond_1f
return-void
.end method
.method protected onReset()V
.registers 5
.line 385
const/4 v0, 0x0
:try_start_1
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onReset()V
:try_end_4
.catchall {:try_start_1 .. :try_end_4} :catchall_16
.line 387
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
if-eqz v1, :cond_15
.line 388
iget-object v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
if-ne v2, v1, :cond_e
.line 389
iput-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
.line 391
:cond_e
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
invoke-virtual {v1}, Landroid/view/Surface;->release()V
.line 392
iput-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
.line 395
:cond_15
return-void
.line 387
:catchall_16
move-exception v1
iget-object v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
if-eqz v2, :cond_28
.line 388
iget-object v3, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
if-ne v3, v2, :cond_21
.line 389
iput-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
.line 391
:cond_21
iget-object v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
invoke-virtual {v2}, Landroid/view/Surface;->release()V
.line 392
iput-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
.line 394
:cond_28
throw v1
.end method
.method protected onStarted()V
.registers 5
.line 353
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onStarted()V
.line 354
const/4 v0, 0x0
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrames:I
.line 355
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v0
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrameAccumulationStartTimeMs:J
.line 356
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v0
const-wide/16 v2, 0x3e8
mul-long v0, v0, v2
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastRenderTimeUs:J
.line 357
return-void
.end method
.method protected onStopped()V
.registers 3
.line 361
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->joiningDeadlineMs:J
.line 362
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeNotifyDroppedFrames()V
.line 363
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onStopped()V
.line 364
return-void
.end method
.method protected onStreamChanged([Lcom/google/android/exoplayer2/Format;J)V
.registers 9
.param p1, "formats" # [Lcom/google/android/exoplayer2/Format;
.param p2, "offsetUs" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 298
iget-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->outputStreamOffsetUs:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v0, v2
if-nez v4, :cond_e
.line 299
iput-wide p2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->outputStreamOffsetUs:J
goto :goto_48
.line 301
:cond_e
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetsUs:[J
array-length v1, v1
if-ne v0, v1, :cond_34
.line 302
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Too many stream changes, so dropping offset: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetsUs:[J
iget v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
add-int/lit8 v2, v2, -0x1
aget-wide v2, v1, v2
invoke-virtual {v0, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "MediaCodecVideoRenderer"
invoke-static {v1, v0}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_38
.line 305
:cond_34
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
.line 307
:goto_38
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetsUs:[J
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamOffsetCount:I
add-int/lit8 v2, v1, -0x1
aput-wide p2, v0, v2
.line 308
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->pendingOutputStreamSwitchTimesUs:[J
add-int/lit8 v1, v1, -0x1
iget-wide v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastInputTimeUs:J
aput-wide v2, v0, v1
.line 310
:goto_48
invoke-super {p0, p1, p2, p3}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onStreamChanged([Lcom/google/android/exoplayer2/Format;J)V
.line 311
return-void
.end method
.method protected processOutputBuffer(JJLandroid/media/MediaCodec;Ljava/nio/ByteBuffer;IIJZLcom/google/android/exoplayer2/Format;)Z
.registers 44
.param p1, "positionUs" # J
.param p3, "elapsedRealtimeUs" # J
.param p5, "codec" # Landroid/media/MediaCodec;
.param p6, "buffer" # Ljava/nio/ByteBuffer;
.param p7, "bufferIndex" # I
.param p8, "bufferFlags" # I
.param p9, "bufferPresentationTimeUs" # J
.param p11, "shouldSkip" # Z
.param p12, "format" # Lcom/google/android/exoplayer2/Format;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 611
move-object/from16 v8, p0
move-wide/from16 v9, p1
move-wide/from16 v11, p3
move-object/from16 v13, p5
move/from16 v14, p7
move-wide/from16 v6, p9
iget-wide v0, v8, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->initialPositionUs:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v0, v2
if-nez v4, :cond_19
.line 612
iput-wide v9, v8, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->initialPositionUs:J
.line 615
:cond_19
iget-wide v0, v8, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->outputStreamOffsetUs:J
sub-long v4, v6, v0
.line 617
.local v4, "presentationTimeUs":J
const/4 v0, 0x1
if-eqz p11, :cond_24
.line 618
invoke-virtual {v8, v13, v14, v4, v5}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->skipOutputBuffer(Landroid/media/MediaCodec;IJ)V
.line 619
return v0
.line 622
:cond_24
sub-long v2, v6, v9
.line 623
.local v2, "earlyUs":J
iget-object v1, v8, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
iget-object v15, v8, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dummySurface:Landroid/view/Surface;
const/16 v16, 0x0
if-ne v1, v15, :cond_39
.line 625
invoke-static {v2, v3}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->isBufferLate(J)Z
move-result v1
if-eqz v1, :cond_38
.line 626
invoke-virtual {v8, v13, v14, v4, v5}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->skipOutputBuffer(Landroid/media/MediaCodec;IJ)V
.line 627
return v0
.line 629
:cond_38
return v16
.line 632
:cond_39
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v17
const-wide/16 v19, 0x3e8
mul-long v17, v17, v19
.line 633
.local v17, "elapsedRealtimeNowUs":J
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->getState()I
move-result v1
const/4 v15, 0x2
if-ne v1, v15, :cond_4a
const/4 v1, 0x1
goto :goto_4b
:cond_4a
const/4 v1, 0x0
:goto_4b
move v15, v1
.line 634
.local v15, "isStarted":Z
iget-boolean v1, v8, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderedFirstFrame:Z
if-eqz v1, :cond_10f
if-eqz v15, :cond_5f
iget-wide v0, v8, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastRenderTimeUs:J
sub-long v0, v17, v0
.line 636
invoke-virtual {v8, v2, v3, v0, v1}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->shouldForceRenderOutputBuffer(JJ)Z
move-result v0
if-eqz v0, :cond_5f
move-wide v6, v4
goto/16 :goto_110
.line 647
:cond_5f
if-eqz v15, :cond_10d
iget-wide v0, v8, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->initialPositionUs:J
cmp-long v21, v9, v0
if-nez v21, :cond_6a
move-wide v6, v4
goto/16 :goto_10e
.line 653
:cond_6a
sub-long v21, v17, v11
.line 654
.local v21, "elapsedSinceStartOfLoopUs":J
sub-long v2, v2, v21
.line 657
invoke-static {}, Ljava/lang/System;->nanoTime()J
move-result-wide v23
.line 658
.local v23, "systemTimeNs":J
mul-long v0, v2, v19
add-long v9, v23, v0
.line 661
.local v9, "unadjustedFrameReleaseTimeNs":J
iget-object v0, v8, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->frameReleaseTimeHelper:Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;
invoke-virtual {v0, v6, v7, v9, v10}, Lcom/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper;->adjustReleaseTime(JJ)J
move-result-wide v25
.line 663
.local v25, "adjustedReleaseTimeNs":J
sub-long v0, v25, v23
div-long v2, v0, v19
.line 665
invoke-virtual {v8, v2, v3, v11, v12}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->shouldDropBuffersToKeyframe(JJ)Z
move-result v0
if-eqz v0, :cond_9a
.line 666
move-object/from16 v1, p0
move-wide/from16 v27, v9
move-wide v9, v2
.end local v2 # "earlyUs":J
.local v9, "earlyUs":J
.local v27, "unadjustedFrameReleaseTimeNs":J
move-object/from16 v2, p5
move/from16 v3, p7
move-wide/from16 v29, v4
.end local v4 # "presentationTimeUs":J
.local v29, "presentationTimeUs":J
move-wide/from16 v6, p1
invoke-virtual/range {v1 .. v7}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeDropBuffersToKeyframe(Landroid/media/MediaCodec;IJJ)Z
move-result v0
if-eqz v0, :cond_9f
.line 667
return v16
.line 665
.end local v27 # "unadjustedFrameReleaseTimeNs":J
.end local v29 # "presentationTimeUs":J
.restart local v2 # "earlyUs":J
.restart local v4 # "presentationTimeUs":J
.local v9, "unadjustedFrameReleaseTimeNs":J
:cond_9a
move-wide/from16 v29, v4
move-wide/from16 v27, v9
move-wide v9, v2
.line 668
.end local v2 # "earlyUs":J
.end local v4 # "presentationTimeUs":J
.local v9, "earlyUs":J
.restart local v27 # "unadjustedFrameReleaseTimeNs":J
.restart local v29 # "presentationTimeUs":J
:cond_9f
invoke-virtual {v8, v9, v10, v11, v12}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->shouldDropOutputBuffer(JJ)Z
move-result v0
if-eqz v0, :cond_ac
.line 669
move-wide/from16 v6, v29
.end local v29 # "presentationTimeUs":J
.local v6, "presentationTimeUs":J
invoke-virtual {v8, v13, v14, v6, v7}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->dropOutputBuffer(Landroid/media/MediaCodec;IJ)V
.line 670
const/4 v0, 0x1
return v0
.line 673
.end local v6 # "presentationTimeUs":J
.restart local v29 # "presentationTimeUs":J
:cond_ac
move-wide/from16 v6, v29
.end local v29 # "presentationTimeUs":J
.restart local v6 # "presentationTimeUs":J
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_d7
.line 675
const-wide/32 v0, 0xc350
cmp-long v2, v9, v0
if-gez v2, :cond_d4
.line 676
move-object/from16 v1, p0
move-wide v2, v6
move-wide/from16 v4, v25
move-wide/from16 v29, v6
.end local v6 # "presentationTimeUs":J
.restart local v29 # "presentationTimeUs":J
move-object/from16 v6, p12
invoke-direct/range {v1 .. v6}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->notifyFrameMetadataListener(JJLcom/google/android/exoplayer2/Format;)V
.line 677
move-object/from16 v2, p5
move/from16 v3, p7
move-wide/from16 v4, v29
move-wide/from16 v6, v25
invoke-virtual/range {v1 .. v7}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderOutputBufferV21(Landroid/media/MediaCodec;IJJ)V
.line 678
const/4 v0, 0x1
return v0
.line 675
.end local v29 # "presentationTimeUs":J
.restart local v6 # "presentationTimeUs":J
:cond_d4
move-wide/from16 v29, v6
.end local v6 # "presentationTimeUs":J
.restart local v29 # "presentationTimeUs":J
goto :goto_10c
.line 682
.end local v29 # "presentationTimeUs":J
.restart local v6 # "presentationTimeUs":J
:cond_d7
move-wide/from16 v29, v6
.end local v6 # "presentationTimeUs":J
.restart local v29 # "presentationTimeUs":J
const-wide/16 v0, 0x7530
cmp-long v2, v9, v0
if-gez v2, :cond_10a
.line 683
const-wide/16 v0, 0x2af8
cmp-long v2, v9, v0
if-lez v2, :cond_f8
.line 688
const-wide/16 v0, 0x2710
sub-long v2, v9, v0
:try_start_e9
div-long v2, v2, v19
invoke-static {v2, v3}, Ljava/lang/Thread;->sleep(J)V
:try_end_ee
.catch Ljava/lang/InterruptedException; {:try_start_e9 .. :try_end_ee} :catch_ef
.line 692
goto :goto_f8
.line 689
:catch_ef
move-exception v0
.line 690
.local v0, "e":Ljava/lang/InterruptedException;
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V
.line 691
return v16
.line 694
.end local v0 # "e":Ljava/lang/InterruptedException;
:cond_f8
:goto_f8
move-object/from16 v1, p0
move-wide/from16 v2, v29
move-wide/from16 v4, v25
move-object/from16 v6, p12
invoke-direct/range {v1 .. v6}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->notifyFrameMetadataListener(JJLcom/google/android/exoplayer2/Format;)V
.line 695
move-wide/from16 v6, v29
.end local v29 # "presentationTimeUs":J
.restart local v6 # "presentationTimeUs":J
invoke-virtual {v8, v13, v14, v6, v7}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderOutputBuffer(Landroid/media/MediaCodec;IJ)V
.line 696
const/4 v0, 0x1
return v0
.line 682
.end local v6 # "presentationTimeUs":J
.restart local v29 # "presentationTimeUs":J
:cond_10a
move-wide/from16 v6, v29
.line 701
.end local v29 # "presentationTimeUs":J
.restart local v6 # "presentationTimeUs":J
:goto_10c
return v16
.line 647
.end local v6 # "presentationTimeUs":J
.end local v9 # "earlyUs":J
.end local v21 # "elapsedSinceStartOfLoopUs":J
.end local v23 # "systemTimeNs":J
.end local v25 # "adjustedReleaseTimeNs":J
.end local v27 # "unadjustedFrameReleaseTimeNs":J
.restart local v2 # "earlyUs":J
.restart local v4 # "presentationTimeUs":J
:cond_10d
move-wide v6, v4
.line 648
.end local v4 # "presentationTimeUs":J
.restart local v6 # "presentationTimeUs":J
:goto_10e
return v16
.line 634
.end local v6 # "presentationTimeUs":J
.restart local v4 # "presentationTimeUs":J
:cond_10f
move-wide v6, v4
.line 637
.end local v4 # "presentationTimeUs":J
.restart local v6 # "presentationTimeUs":J
:goto_110
invoke-static {}, Ljava/lang/System;->nanoTime()J
move-result-wide v9
.line 638
.local v9, "releaseTimeNs":J
move-object/from16 v1, p0
move-wide/from16 v19, v2
.end local v2 # "earlyUs":J
.local v19, "earlyUs":J
move-wide v2, v6
move-wide v4, v9
move-wide/from16 v29, v6
.end local v6 # "presentationTimeUs":J
.restart local v29 # "presentationTimeUs":J
move-object/from16 v6, p12
invoke-direct/range {v1 .. v6}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->notifyFrameMetadataListener(JJLcom/google/android/exoplayer2/Format;)V
.line 639
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_136
.line 640
move-object/from16 v1, p0
move-object/from16 v2, p5
move/from16 v3, p7
move-wide/from16 v4, v29
move-wide v6, v9
invoke-virtual/range {v1 .. v7}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderOutputBufferV21(Landroid/media/MediaCodec;IJJ)V
move-wide/from16 v1, v29
goto :goto_13b
.line 642
:cond_136
move-wide/from16 v1, v29
.end local v29 # "presentationTimeUs":J
.local v1, "presentationTimeUs":J
invoke-virtual {v8, v13, v14, v1, v2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->renderOutputBuffer(Landroid/media/MediaCodec;IJ)V
.line 644
:goto_13b
const/4 v0, 0x1
return v0
.end method
.method protected releaseCodec()V
.registers 3
.line 520
const/4 v0, 0x0
:try_start_1
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->releaseCodec()V
:try_end_4
.catchall {:try_start_1 .. :try_end_4} :catchall_8
.line 522
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->buffersInCodecCount:I
.line 523
nop
.line 524
return-void
.line 522
:catchall_8
move-exception v1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->buffersInCodecCount:I
.line 523
throw v1
.end method
.method protected renderOutputBuffer(Landroid/media/MediaCodec;IJ)V
.registers 10
.param p1, "codec" # Landroid/media/MediaCodec;
.param p2, "index" # I
.param p3, "presentationTimeUs" # J
.line 900
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeNotifyVideoSizeChanged()V
.line 901
const-string v0, "releaseOutputBuffer"
invoke-static {v0}, Lcom/google/android/exoplayer2/util/TraceUtil;->beginSection(Ljava/lang/String;)V
.line 902
const/4 v0, 0x1
invoke-virtual {p1, p2, v0}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
.line 903
invoke-static {}, Lcom/google/android/exoplayer2/util/TraceUtil;->endSection()V
.line 904
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v1
const-wide/16 v3, 0x3e8
mul-long v1, v1, v3
iput-wide v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastRenderTimeUs:J
.line 905
iget-object v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
iget v2, v1, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->renderedOutputBufferCount:I
add-int/2addr v2, v0
iput v2, v1, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->renderedOutputBufferCount:I
.line 906
const/4 v0, 0x0
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->consecutiveDroppedFrameCount:I
.line 907
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeNotifyRenderedFirstFrame()V
.line 908
return-void
.end method
.method protected renderOutputBufferV21(Landroid/media/MediaCodec;IJJ)V
.registers 11
.param p1, "codec" # Landroid/media/MediaCodec;
.param p2, "index" # I
.param p3, "presentationTimeUs" # J
.param p5, "releaseTimeNs" # J
.line 922
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeNotifyVideoSizeChanged()V
.line 923
const-string v0, "releaseOutputBuffer"
invoke-static {v0}, Lcom/google/android/exoplayer2/util/TraceUtil;->beginSection(Ljava/lang/String;)V
.line 924
invoke-virtual {p1, p2, p5, p6}, Landroid/media/MediaCodec;->releaseOutputBuffer(IJ)V
.line 925
invoke-static {}, Lcom/google/android/exoplayer2/util/TraceUtil;->endSection()V
.line 926
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v0
const-wide/16 v2, 0x3e8
mul-long v0, v0, v2
iput-wide v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->lastRenderTimeUs:J
.line 927
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
iget v1, v0, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->renderedOutputBufferCount:I
add-int/lit8 v1, v1, 0x1
iput v1, v0, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->renderedOutputBufferCount:I
.line 928
const/4 v0, 0x0
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->consecutiveDroppedFrameCount:I
.line 929
invoke-virtual {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeNotifyRenderedFirstFrame()V
.line 930
return-void
.end method
.method protected shouldDropBuffersToKeyframe(JJ)Z
.registers 6
.param p1, "earlyUs" # J
.param p3, "elapsedRealtimeUs" # J
.line 804
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->isBufferVeryLate(J)Z
move-result v0
return v0
.end method
.method protected shouldDropOutputBuffer(JJ)Z
.registers 6
.param p1, "earlyUs" # J
.param p3, "elapsedRealtimeUs" # J
.line 791
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->isBufferLate(J)Z
move-result v0
return v0
.end method
.method protected shouldForceRenderOutputBuffer(JJ)Z
.registers 8
.param p1, "earlyUs" # J
.param p3, "elapsedSinceLastRenderUs" # J
.line 817
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->isBufferLate(J)Z
move-result v0
if-eqz v0, :cond_f
const-wide/32 v0, 0x186a0
cmp-long v2, p3, v0
if-lez v2, :cond_f
const/4 v0, 0x1
goto :goto_10
:cond_f
const/4 v0, 0x0
:goto_10
return v0
.end method
.method protected shouldInitCodec(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;)Z
.registers 3
.param p1, "codecInfo" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.line 463
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->surface:Landroid/view/Surface;
if-nez v0, :cond_d
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->shouldUseDummySurface(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;)Z
move-result v0
if-eqz v0, :cond_b
goto :goto_d
:cond_b
const/4 v0, 0x0
goto :goto_e
:cond_d
:goto_d
const/4 v0, 0x1
:goto_e
return v0
.end method
.method protected skipOutputBuffer(Landroid/media/MediaCodec;IJ)V
.registers 7
.param p1, "codec" # Landroid/media/MediaCodec;
.param p2, "index" # I
.param p3, "presentationTimeUs" # J
.line 828
const-string/jumbo v0, "skipVideoBuffer"
invoke-static {v0}, Lcom/google/android/exoplayer2/util/TraceUtil;->beginSection(Ljava/lang/String;)V
.line 829
const/4 v0, 0x0
invoke-virtual {p1, p2, v0}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
.line 830
invoke-static {}, Lcom/google/android/exoplayer2/util/TraceUtil;->endSection()V
.line 831
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
iget v1, v0, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->skippedOutputBufferCount:I
add-int/lit8 v1, v1, 0x1
iput v1, v0, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->skippedOutputBufferCount:I
.line 832
return-void
.end method
.method protected supportsFormat(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;Lcom/google/android/exoplayer2/Format;)I
.registers 14
.param p1, "mediaCodecSelector" # Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;
.param p3, "format" # Lcom/google/android/exoplayer2/Format;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;",
"Lcom/google/android/exoplayer2/drm/DrmSessionManager<",
"Lcom/google/android/exoplayer2/drm/FrameworkMediaCrypto;",
">;",
"Lcom/google/android/exoplayer2/Format;",
")I"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/mediacodec/MediaCodecUtil$DecoderQueryException;
}
.end annotation
.line 247
.local p2, "drmSessionManager":Lcom/google/android/exoplayer2/drm/DrmSessionManager;, "Lcom/google/android/exoplayer2/drm/DrmSessionManager<Lcom/google/android/exoplayer2/drm/FrameworkMediaCrypto;>;"
iget-object v0, p3, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
.line 248
.local v0, "mimeType":Ljava/lang/String;
invoke-static {v0}, Lcom/google/android/exoplayer2/util/MimeTypes;->isVideo(Ljava/lang/String;)Z
move-result v1
const/4 v2, 0x0
if-nez v1, :cond_a
.line 249
return v2
.line 251
:cond_a
const/4 v1, 0x0
.line 252
.local v1, "requiresSecureDecryption":Z
iget-object v3, p3, Lcom/google/android/exoplayer2/Format;->drmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
.line 253
.local v3, "drmInitData":Lcom/google/android/exoplayer2/drm/DrmInitData;
if-eqz v3, :cond_1e
.line 254
const/4 v4, 0x0
.local v4, "i":I
:goto_10
iget v5, v3, Lcom/google/android/exoplayer2/drm/DrmInitData;->schemeDataCount:I
if-ge v4, v5, :cond_1e
.line 255
invoke-virtual {v3, v4}, Lcom/google/android/exoplayer2/drm/DrmInitData;->get(I)Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;
move-result-object v5
iget-boolean v5, v5, Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;->requiresSecureDecryption:Z
or-int/2addr v1, v5
.line 254
add-int/lit8 v4, v4, 0x1
goto :goto_10
.line 258
.end local v4 # "i":I
:cond_1e
iget-object v4, p3, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
.line 259
invoke-interface {p1, v4, v1}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;->getDecoderInfos(Ljava/lang/String;Z)Ljava/util/List;
move-result-object v4
.line 260
.local v4, "decoderInfos":Ljava/util/List;, "Ljava/util/List<Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;>;"
invoke-interface {v4}, Ljava/util/List;->isEmpty()Z
move-result v5
const/4 v6, 0x2
if-eqz v5, :cond_3c
.line 261
if-eqz v1, :cond_3a
iget-object v5, p3, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
.line 263
invoke-interface {p1, v5, v2}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;->getDecoderInfos(Ljava/lang/String;Z)Ljava/util/List;
move-result-object v2
.line 264
invoke-interface {v2}, Ljava/util/List;->isEmpty()Z
move-result v2
if-nez v2, :cond_3a
goto :goto_3b
:cond_3a
const/4 v6, 0x1
.line 261
:goto_3b
return v6
.line 268
:cond_3c
invoke-static {p2, v3}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->supportsFormatDrm(Lcom/google/android/exoplayer2/drm/DrmSessionManager;Lcom/google/android/exoplayer2/drm/DrmInitData;)Z
move-result v5
if-nez v5, :cond_43
.line 269
return v6
.line 272
:cond_43
invoke-interface {v4, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.line 273
.local v5, "decoderInfo":Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
invoke-virtual {v5, p3}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->isFormatSupported(Lcom/google/android/exoplayer2/Format;)Z
move-result v6
.line 274
.local v6, "isFormatSupported":Z
nop
.line 275
invoke-virtual {v5, p3}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->isSeamlessAdaptationSupported(Lcom/google/android/exoplayer2/Format;)Z
move-result v7
if-eqz v7, :cond_57
const/16 v7, 0x10
goto :goto_59
:cond_57
const/16 v7, 0x8
.line 278
.local v7, "adaptiveSupport":I
:goto_59
iget-boolean v8, v5, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->tunneling:Z
if-eqz v8, :cond_5f
const/16 v2, 0x20
.line 279
.local v2, "tunnelingSupport":I
:cond_5f
if-eqz v6, :cond_63
const/4 v8, 0x4
goto :goto_64
:cond_63
const/4 v8, 0x3
.line 280
.local v8, "formatSupport":I
:goto_64
or-int v9, v7, v2
or-int/2addr v9, v8
return v9
.end method
.method protected updateDroppedBufferCounters(I)V
.registers 5
.param p1, "droppedBufferCount" # I
.line 881
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
iget v1, v0, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->droppedBufferCount:I
add-int/2addr v1, p1
iput v1, v0, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->droppedBufferCount:I
.line 882
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrames:I
add-int/2addr v0, p1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrames:I
.line 883
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->consecutiveDroppedFrameCount:I
add-int/2addr v0, p1
iput v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->consecutiveDroppedFrameCount:I
.line 884
iget-object v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->consecutiveDroppedFrameCount:I
iget-object v2, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
iget v2, v2, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->maxConsecutiveDroppedBufferCount:I
invoke-static {v1, v2}, Ljava/lang/Math;->max(II)I
move-result v1
iput v1, v0, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->maxConsecutiveDroppedBufferCount:I
.line 886
iget v0, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maxDroppedFramesToNotify:I
if-lez v0, :cond_2a
iget v1, p0, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->droppedFrames:I
if-lt v1, v0, :cond_2a
.line 887
invoke-direct {p0}, Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;->maybeNotifyDroppedFrames()V
.line 889
:cond_2a
return-void
.end method