MediaCodecEncoder2.smali
.class public Lcom/polly/mobile/codec/MediaCodecEncoder2;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/polly/mobile/codec/MediaCodecEncoder2$b;,
Lcom/polly/mobile/codec/MediaCodecEncoder2$a;
}
.end annotation
# static fields
.field static final K_ENCODE_ERR_FATAL:I = -0x2
.field public static final MAX_INPUT_SIZE:I = 0x151800
.field public static final MAX_OUTPUT_SIZE:I = 0xe1000
.field static final qcomNewFirwareIsAvailable:Z = true
# instance fields
.field IpresentationTimeUs:J
.field public final PARAMETER_KEY_VIDEO_I_FRAME_INTERVAL:Ljava/lang/String;
.field aimCodeRate:I
.field codeRatePass2Encoder:I
.field encHeight:I
.field encWidth:I
.field encodeInputBuffers:[Ljava/nio/ByteBuffer;
.field encodeOutputBuffers:[Ljava/nio/ByteBuffer;
.field encoder:Landroid/media/MediaCodec;
.field encoderLock:Ljava/lang/Object;
.field format:Landroid/media/MediaFormat;
.field frameRate:I
.field gap:I
.field iFramesInterval:I
.field iFramesInterval_f:I
.field iItvlRst:Z
.field info:Landroid/media/MediaCodec$BufferInfo;
.field volatile lastFailTs:J
.field mBRFactor:F
.field mColorFormat:I
.field mConfigEntry:[Lcom/polly/mobile/codec/b$a;
.field mEncType:I
.field mEncoderName:Ljava/lang/String;
.field mFramesUntilNextI:I
.field mProxy:Lcom/polly/mobile/videosdk/YYVideoJniProxy;
.field mType:Ljava/lang/String;
.field mUseHighProfile:Z
.field mUseQcomLogicIn1v1Mode:Z
.field newRequestCodeRate:I
.field nextCodeRate:I
.field nextEncHeight:I
.field nextEncWidth:I
.field nextFrameRate:I
.field nextIFramesInterval:I
.field nextIFramesInterval_f:I
.field final preAdjustment:I
.field ptsStepFactor:F
.field releaserThread:Lcom/polly/mobile/codec/MediaCodecEncoder2$a;
.field requestIframe:Z
.field smallIFrameModeAim:Z
.field smallIFrameModeNow:Z
.field stride:I
.field switchLowIFrameSizeModeHelper:Lcom/polly/mobile/codec/MediaCodecEncoder2$b;
.field usingQcomNew264Firware:Z
.field usingQcomNew265Firware:Z
# direct methods
.method public constructor <init>(Lcom/polly/mobile/videosdk/YYVideoJniProxy;[Lcom/polly/mobile/codec/b$a;)V
.registers 7
.line 101
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const-string v0, "i-frame-interval"
.line 38
iput-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->PARAMETER_KEY_VIDEO_I_FRAME_INTERVAL:Ljava/lang/String;
const/4 v0, -0x1
.line 40
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mColorFormat:I
const/4 v0, 0x0
.line 41
iput-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncoderName:Ljava/lang/String;
.line 42
iput-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mType:Ljava/lang/String;
const/4 v1, 0x0
.line 43
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncType:I
.line 45
iput-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->releaserThread:Lcom/polly/mobile/codec/MediaCodecEncoder2$a;
.line 47
new-instance v2, Ljava/lang/Object;
invoke-direct {v2}, Ljava/lang/Object;-><init>()V
iput-object v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoderLock:Ljava/lang/Object;
.line 53
iput-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseHighProfile:Z
.line 55
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encWidth:I
.line 56
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encHeight:I
.line 57
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
.line 58
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->aimCodeRate:I
.line 59
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
.line 60
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
.line 61
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval_f:I
.line 62
iput-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeNow:Z
const-wide/16 v2, 0x0
.line 63
iput-wide v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->lastFailTs:J
.line 65
iput-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew265Firware:Z
.line 66
iput-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew264Firware:Z
.line 68
iput-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseQcomLogicIn1v1Mode:Z
.line 70
iput-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->switchLowIFrameSizeModeHelper:Lcom/polly/mobile/codec/MediaCodecEncoder2$b;
.line 72
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->newRequestCodeRate:I
const/high16 v2, 0x3f800000 # 1.0f
.line 73
iput v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->ptsStepFactor:F
const/4 v3, 0x3
.line 74
iput v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->preAdjustment:I
.line 78
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->stride:I
.line 80
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->gap:I
.line 90
iput-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeAim:Z
.line 92
iput-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iItvlRst:Z
.line 93
iput-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
.line 94
iput-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mProxy:Lcom/polly/mobile/videosdk/YYVideoJniProxy;
.line 95
iput v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mBRFactor:F
.line 96
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mFramesUntilNextI:I
.line 640
new-instance v0, Landroid/media/MediaCodec$BufferInfo;
invoke-direct {v0}, Landroid/media/MediaCodec$BufferInfo;-><init>()V
iput-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
const-string v0, "yy-audio"
const-string v1, "MediaCodecEncoder2 init"
.line 102
invoke-static {v0, v1}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I
.line 103
iput-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mProxy:Lcom/polly/mobile/videosdk/YYVideoJniProxy;
.line 104
iput-object p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mConfigEntry:[Lcom/polly/mobile/codec/b$a;
return-void
.end method
.method private PutEOS()I
.registers 13
const-string v0, "yy-videoencoder"
const/4 v1, -0x1
.line 427
:try_start_3
iget-object v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-eqz v2, :cond_3c
.line 428
iget-object v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
const-wide/16 v3, 0x0
invoke-virtual {v2, v3, v4}, Landroid/media/MediaCodec;->dequeueInputBuffer(J)I
move-result v2
if-ltz v2, :cond_2f
.line 430
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeInputBuffers:[Ljava/nio/ByteBuffer;
aget-object v3, v3, v2
invoke-virtual {v3}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
.line 431
iget-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
const/4 v7, 0x0
const/4 v8, 0x0
const-wide/16 v9, 0x0
const/4 v11, 0x4
move v6, v2
invoke-virtual/range {v5 .. v11}, Landroid/media/MediaCodec;->queueInputBuffer(IIIJI)V
.line 432
invoke-static {}, Lcom/polly/mobile/util/f;->c()Z
move-result v3
if-eqz v3, :cond_3a
const-string v3, "EOS put"
.line 433
invoke-static {v0, v3}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_3a
.line 437
:cond_2f
invoke-static {}, Lcom/polly/mobile/util/f;->c()Z
move-result v3
if-eqz v3, :cond_3a
const-string v3, "get media encoder input buffer failed!"
.line 438
invoke-static {v0, v3}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I
:cond_3a
:goto_3a
move v1, v2
goto :goto_47
.line 443
:cond_3c
invoke-static {}, Lcom/polly/mobile/util/f;->c()Z
move-result v2
if-eqz v2, :cond_47
const-string v2, "no media encoder instance!"
.line 444
invoke-static {v0, v2}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I
:try_end_47
.catch Ljava/lang/IllegalStateException; {:try_start_3 .. :try_end_47} :catch_48
:cond_47
:goto_47
return v1
.line 449
:catch_48
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v2
iput-wide v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->lastFailTs:J
const-string v2, "Something wrong happend in HW encoder resetting."
.line 450
invoke-static {v0, v2}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
return v1
.end method
.method private ReSetParamsIfNeeded()Z
.registers 12
.line 293
iget-boolean v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew265Firware:Z
const-string v1, "request-sync"
const/4 v2, 0x1
const/4 v3, 0x0
if-nez v0, :cond_88
iget-boolean v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew264Firware:Z
if-eqz v0, :cond_e
goto/16 :goto_88
.line 355
:cond_e
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextCodeRate:I
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
if-ne v0, v4, :cond_2f
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextFrameRate:I
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
if-ne v0, v4, :cond_2f
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval:I
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
if-ne v0, v4, :cond_2f
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncWidth:I
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encWidth:I
if-ne v0, v4, :cond_2f
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncHeight:I
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encHeight:I
if-eq v0, v4, :cond_2d
goto :goto_2f
:cond_2d
const/4 v0, 0x0
goto :goto_30
:cond_2f
:goto_2f
const/4 v0, 0x1
.line 356
:goto_30
sget v4, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v5, 0x13
if-ge v4, v5, :cond_3b
.line 357
iget-boolean v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
if-eqz v4, :cond_3b
const/4 v0, 0x1
:cond_3b
if-nez v0, :cond_56
.line 361
iget-boolean v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
if-eqz v4, :cond_56
.line 362
iget-object v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-eqz v4, :cond_56
.line 364
:try_start_45
new-instance v4, Landroid/os/Bundle;
invoke-direct {v4}, Landroid/os/Bundle;-><init>()V
.line 365
invoke-virtual {v4, v1, v3}, Landroid/os/Bundle;->putInt(Ljava/lang/String;I)V
.line 366
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1, v4}, Landroid/media/MediaCodec;->setParameters(Landroid/os/Bundle;)V
.line 367
iput-boolean v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
:try_end_54
.catch Ljava/lang/Exception; {:try_start_45 .. :try_end_54} :catch_55
goto :goto_56
:catch_55
const/4 v0, 0x1
:cond_56
:goto_56
if-eqz v0, :cond_1ce
.line 375
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextCodeRate:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
.line 376
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextFrameRate:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
.line 377
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
.line 378
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncWidth:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encWidth:I
.line 379
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncHeight:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encHeight:I
.line 380
iput-boolean v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
.line 381
invoke-direct {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->PutEOS()I
move-result v0
if-ltz v0, :cond_7d
.line 383
:try_start_74
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoderLock:Ljava/lang/Object;
const-wide/16 v3, 0x64
invoke-virtual {v0, v3, v4}, Ljava/lang/Object;->wait(J)V
:try_end_7b
.catch Ljava/lang/InterruptedException; {:try_start_74 .. :try_end_7b} :catch_7c
goto :goto_7d
:catch_7c
nop
.line 389
:cond_7d
:goto_7d
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-eqz v0, :cond_84
.line 391
:try_start_81
invoke-virtual {v0}, Landroid/media/MediaCodec;->flush()V
:try_end_84
.catch Ljava/lang/Exception; {:try_start_81 .. :try_end_84} :catch_84
.line 396
:catch_84
:cond_84
invoke-direct {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->resetEncoder()V
return v2
.line 296
:cond_88
:goto_88
iget-boolean v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew265Firware:Z
const/4 v4, 0x3
if-eqz v0, :cond_cc
.line 298
iput-boolean v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeAim:Z
iput-boolean v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeNow:Z
if-eq v3, v3, :cond_95
const/4 v0, 0x1
goto :goto_96
:cond_95
const/4 v0, 0x0
:goto_96
if-nez v0, :cond_f3
.line 300
iget-boolean v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeNow:Z
if-eqz v5, :cond_a2
iget v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextCodeRate:I
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->aimCodeRate:I
if-ne v5, v6, :cond_f3
:cond_a2
iget-boolean v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeNow:Z
if-nez v5, :cond_bd
iget v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextCodeRate:I
int-to-double v6, v5
const-wide/high16 v8, 0x4004000000000000L # 2.5
invoke-static {v6, v7}, Ljava/lang/Double;->isNaN(D)Z
mul-double v6, v6, v8
iget v8, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->aimCodeRate:I
int-to-double v8, v8
cmpg-double v10, v6, v8
if-lez v10, :cond_f3
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
mul-int/lit8 v6, v6, 0x3
if-gt v5, v6, :cond_f3
:cond_bd
iget v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncWidth:I
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encWidth:I
if-ne v5, v6, :cond_f3
iget v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncHeight:I
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encHeight:I
if-eq v5, v6, :cond_ca
goto :goto_f3
:cond_ca
const/4 v5, 0x0
goto :goto_f4
.line 303
:cond_cc
iget-boolean v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew264Firware:Z
if-eqz v0, :cond_f2
.line 305
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncWidth:I
iget v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encWidth:I
if-ne v0, v5, :cond_eb
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncHeight:I
iget v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encHeight:I
if-ne v0, v5, :cond_eb
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextCodeRate:I
mul-int/lit8 v5, v0, 0x2
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->aimCodeRate:I
if-le v5, v6, :cond_eb
iget v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
if-le v0, v5, :cond_e9
goto :goto_eb
:cond_e9
const/4 v5, 0x0
goto :goto_ec
:cond_eb
:goto_eb
const/4 v5, 0x1
.line 307
:goto_ec
iput-boolean v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeAim:Z
iput-boolean v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeNow:Z
const/4 v0, 0x0
goto :goto_f4
:cond_f2
const/4 v0, 0x0
:cond_f3
:goto_f3
const/4 v5, 0x1
.line 310
:goto_f4
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextCodeRate:I
iput v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->aimCodeRate:I
if-eqz v5, :cond_13c
.line 312
iget-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeAim:Z
iput-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeNow:Z
if-eqz v1, :cond_107
const v1, 0x3f333333 # 0.7f
int-to-float v5, v6
mul-float v5, v5, v1
float-to-int v6, v5
.line 313
:cond_107
iput v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
.line 314
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextFrameRate:I
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
.line 315
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval:I
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
.line 316
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval_f:I
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval_f:I
.line 317
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncWidth:I
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encWidth:I
.line 318
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncHeight:I
iput v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encHeight:I
.line 319
iput-boolean v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
.line 320
invoke-direct {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->resetEncoder()V
if-eqz v0, :cond_13b
.line 321
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->switchLowIFrameSizeModeHelper:Lcom/polly/mobile/codec/MediaCodecEncoder2$b;
if-eqz v0, :cond_13b
.line 1714
iput v3, v0, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->b:I
.line 1715
iput v3, v0, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
.line 1716
iput v3, v0, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->a:I
.line 1717
iput v3, v0, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->e:I
.line 1718
iget-object v1, v0, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->m:Lcom/polly/mobile/codec/MediaCodecEncoder2;
iget-boolean v1, v1, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeNow:Z
if-eqz v1, :cond_139
.line 1719
iput v4, v0, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
goto :goto_13b
.line 1722
:cond_139
iput v3, v0, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
:cond_13b
:goto_13b
return v2
.line 326
:cond_13c
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextFrameRate:I
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
if-ne v0, v4, :cond_14c
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval_f:I
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval_f:I
if-ne v0, v4, :cond_14c
iget-boolean v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
if-eqz v0, :cond_1ce
.line 327
:cond_14c
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextFrameRate:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
.line 328
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
.line 329
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval_f:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval_f:I
.line 330
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-eqz v0, :cond_1cc
.line 331
new-instance v0, Landroid/os/Bundle;
invoke-direct {v0}, Landroid/os/Bundle;-><init>()V
.line 332
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval_f:I
const-string v5, "i-frame-interval"
invoke-virtual {v0, v5, v4}, Landroid/os/Bundle;->putInt(Ljava/lang/String;I)V
.line 333
invoke-direct {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->getFixFrameRate()I
move-result v4
const-string v5, "frame-rate"
invoke-virtual {v0, v5, v4}, Landroid/os/Bundle;->putInt(Ljava/lang/String;I)V
.line 334
iget-boolean v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
const-string v5, "yy-video"
if-eqz v4, :cond_19a
.line 335
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncType:I
const/4 v6, 0x5
if-eq v4, v6, :cond_180
.line 336
invoke-virtual {v0, v1, v3}, Landroid/os/Bundle;->putInt(Ljava/lang/String;I)V
goto :goto_185
:cond_180
const-string v1, "when using h265hw codec, should not set PARAMETER_KEY_REQUEST_SYNC_FRAME param(it may cause unexpect frame size due to a bug of h265hw codec), and the codec will still produce a sync frame soon since the param PARAMETER_KEY_VIDEO_I_FRAME_INTERVAL is set"
.line 339
invoke-static {v5, v1}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I
.line 341
:goto_185
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->switchLowIFrameSizeModeHelper:Lcom/polly/mobile/codec/MediaCodecEncoder2$b;
if-eqz v1, :cond_195
.line 1727
iget-object v4, v1, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->m:Lcom/polly/mobile/codec/MediaCodecEncoder2;
iget-boolean v4, v4, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeNow:Z
if-eqz v4, :cond_192
.line 1728
iput v6, v1, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
goto :goto_195
:cond_192
const/4 v4, 0x2
.line 1731
iput v4, v1, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
:cond_195
:goto_195
const-string v1, "[ccc] requestIframe in mediaCodec2"
.line 344
invoke-static {v5, v1}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I
.line 346
:cond_19a
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1, v0}, Landroid/media/MediaCodec;->setParameters(Landroid/os/Bundle;)V
.line 347
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "[ccc] softReset encode seting, frameRate:"
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-direct {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->getFixFrameRate()I
move-result v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, ", i_frame_interval:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval_f:I
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, ", requestIframe:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v5, v0}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I
.line 348
iput-boolean v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
.line 349
iput v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mFramesUntilNextI:I
.line 351
:cond_1cc
iput-boolean v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iItvlRst:Z
:cond_1ce
return v3
.end method
.method private getFixFrameRate()I
.registers 6
.line 542
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncType:I
const-string v1, "error hardware codec parameter framerate = "
const-string v2, "yy-videoencoder"
const/4 v3, 0x2
if-ne v0, v3, :cond_2a
iget-boolean v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseQcomLogicIn1v1Mode:Z
if-eqz v0, :cond_2a
.line 543
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
if-lez v0, :cond_47
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
mul-int v0, v0, v4
if-gt v0, v3, :cond_47
.line 544
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
const/4 v0, 0x3
return v0
.line 549
:cond_2a
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
if-lez v0, :cond_47
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
mul-int v0, v0, v4
const/4 v4, 0x1
if-gt v0, v4, :cond_47
.line 550
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
return v3
.line 554
:cond_47
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
return v0
.end method
.method private getFixedIFrameIval(I)I
.registers 4
if-nez p1, :cond_13
.line 559
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncType:I
const/4 v1, 0x2
if-ne v0, v1, :cond_13
iget-boolean v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseQcomLogicIn1v1Mode:Z
if-eqz v0, :cond_13
const-string p1, "yy-videoencoder"
const-string v0, "fix iFrameInterval from 0 to 1 for MI NOTE Pro hardware avc encoder"
.line 560
invoke-static {p1, v0}, Lcom/polly/mobile/util/f;->d(Ljava/lang/String;Ljava/lang/String;)I
const/4 p1, 0x1
:cond_13
return p1
.end method
.method private resetEncoder()V
.registers 11
const-string v0, "ex"
.line 460
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
const/4 v2, 0x1
const/4 v3, 0x0
const/4 v4, 0x0
if-eqz v1, :cond_2b
.line 462
:try_start_9
invoke-virtual {v1}, Landroid/media/MediaCodec;->stop()V
:try_end_c
.catch Ljava/lang/Exception; {:try_start_9 .. :try_end_c} :catch_e
const/4 v1, 0x0
goto :goto_f
:catch_e
const/4 v1, 0x1
:goto_f
if-eqz v1, :cond_24
.line 468
new-instance v0, Lcom/polly/mobile/codec/MediaCodecEncoder2$a;
invoke-direct {v0, v4}, Lcom/polly/mobile/codec/MediaCodecEncoder2$a;-><init>(B)V
iput-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->releaserThread:Lcom/polly/mobile/codec/MediaCodecEncoder2$a;
.line 469
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
iput-object v1, v0, Lcom/polly/mobile/codec/MediaCodecEncoder2$a;->a:Landroid/media/MediaCodec;
.line 470
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
.line 471
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->releaserThread:Lcom/polly/mobile/codec/MediaCodecEncoder2$a;
invoke-virtual {v0}, Lcom/polly/mobile/codec/MediaCodecEncoder2$a;->start()V
return-void
.line 474
:cond_24
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->release()V
.line 475
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
.line 479
:cond_2b
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncoderName:Ljava/lang/String;
if-nez v1, :cond_30
return-void
.line 482
:cond_30
invoke-direct {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->getFixFrameRate()I
move-result v1
.line 483
new-instance v5, Ljava/lang/StringBuilder;
const-string v6, "resetEncoder:["
invoke-direct {v5, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encWidth:I
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, ", "
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encHeight:I
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, "], [BR:"
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, ", BR SET:"
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
int-to-float v6, v6
iget v7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mBRFactor:F
mul-float v6, v6, v7
float-to-int v6, v6
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, ", Format: "
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mColorFormat:I
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, "], [FR:"
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, "("
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, "), IFrameval: "
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, "]"
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
const-string v6, "yy-videoencoder"
invoke-static {v6, v5}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 486
iput v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->newRequestCodeRate:I
const/high16 v5, 0x3f800000 # 1.0f
.line 487
iput v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->ptsStepFactor:F
.line 489
:try_start_9e
iget-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncoderName:Ljava/lang/String;
invoke-static {v5}, Landroid/media/MediaCodec;->createByCodecName(Ljava/lang/String;)Landroid/media/MediaCodec;
move-result-object v5
iput-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
.line 490
iget-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mType:Ljava/lang/String;
iget v7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encWidth:I
iget v8, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encHeight:I
invoke-static {v5, v7, v8}, Landroid/media/MediaFormat;->createVideoFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;
move-result-object v5
iput-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string v7, "bitrate"
.line 491
iget v8, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
int-to-float v8, v8
iget v9, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mBRFactor:F
mul-float v8, v8, v9
float-to-int v8, v8
invoke-virtual {v5, v7, v8}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 492
iget-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string v7, "color-format"
iget v8, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mColorFormat:I
invoke-virtual {v5, v7, v8}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 493
iget-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string v7, "frame-rate"
invoke-virtual {v5, v7, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 494
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string v5, "i-frame-interval"
iget v7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
invoke-virtual {v1, v5, v7}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 496
iget-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseHighProfile:Z
if-eqz v1, :cond_f9
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v5, 0x17
if-le v1, v5, :cond_f9
.line 497
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string v5, "profile"
const/16 v7, 0x8
invoke-virtual {v1, v5, v7}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 498
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string v5, "level"
const/16 v7, 0x200
invoke-virtual {v1, v5, v7}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
const-string v1, "use HighProfile"
.line 500
invoke-static {v6, v1}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 503
:cond_f9
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
iget-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
invoke-virtual {v1, v5, v3, v3, v2}, Landroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
.line 504
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->start()V
.line 505
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mProxy:Lcom/polly/mobile/videosdk/YYVideoJniProxy;
invoke-virtual {v1}, Lcom/polly/mobile/videosdk/YYVideoJniProxy;->yyvideo_hardware_encoder_reset_done()V
.line 506
iput-boolean v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iItvlRst:Z
.line 507
iput-boolean v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
.line 508
iput v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mFramesUntilNextI:I
:try_end_110
.catch Ljava/lang/Exception; {:try_start_9e .. :try_end_110} :catch_137
.line 520
:try_start_110
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->getInputBuffers()[Ljava/nio/ByteBuffer;
move-result-object v1
iput-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeInputBuffers:[Ljava/nio/ByteBuffer;
.line 521
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->getOutputBuffers()[Ljava/nio/ByteBuffer;
move-result-object v1
iput-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeOutputBuffers:[Ljava/nio/ByteBuffer;
:try_end_120
.catch Ljava/lang/Exception; {:try_start_110 .. :try_end_120} :catch_121
return-void
:catch_121
move-exception v1
.line 523
invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v6, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 524
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-eqz v0, :cond_136
.line 525
invoke-virtual {v0}, Landroid/media/MediaCodec;->release()V
.line 526
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
:cond_136
return-void
:catch_137
move-exception v1
.line 511
invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v6, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 512
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-eqz v0, :cond_14c
.line 513
invoke-virtual {v0}, Landroid/media/MediaCodec;->release()V
.line 514
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
:cond_14c
return-void
.end method
.method private updatePtsStepFactor()V
.registers 7
.line 624
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->aimCodeRate:I
int-to-float v0, v0
.line 625
iget-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew265Firware:Z
const/high16 v2, 0x3f800000 # 1.0f
if-nez v1, :cond_d
iget-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew264Firware:Z
if-eqz v1, :cond_47
:cond_d
const/4 v1, 0x0
cmpl-float v0, v0, v1
if-lez v0, :cond_47
.line 626
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->aimCodeRate:I
int-to-float v0, v0
mul-float v0, v0, v2
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
int-to-float v1, v1
iget v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mBRFactor:F
mul-float v1, v1, v2
div-float/2addr v0, v1
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->ptsStepFactor:F
.line 627
iget-boolean v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew265Firware:Z
if-eqz v1, :cond_49
.line 628
iget v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mFramesUntilNextI:I
const/4 v2, 0x3
const/4 v3, 0x1
if-gt v1, v2, :cond_3b
if-le v1, v3, :cond_3b
float-to-double v0, v0
const-wide v4, 0x3fc999999999999aL # 0.2
.line 629
invoke-static {v0, v1}, Ljava/lang/Double;->isNaN(D)Z
mul-double v0, v0, v4
double-to-float v0, v0
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->ptsStepFactor:F
.line 630
:cond_3b
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mFramesUntilNextI:I
sub-int/2addr v0, v3
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mFramesUntilNextI:I
if-gez v0, :cond_49
.line 632
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval_f:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mFramesUntilNextI:I
return-void
.line 636
:cond_47
iput v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->ptsStepFactor:F
:cond_49
return-void
.end method
# virtual methods
.method public close()V
.registers 6
.line 232
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoderLock:Ljava/lang/Object;
monitor-enter v0
.line 233
:try_start_3
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
:try_end_5
.catchall {:try_start_3 .. :try_end_5} :catchall_3d
const/4 v2, 0x0
const/4 v3, 0x0
if-eqz v1, :cond_32
.line 235
:try_start_9
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->flush()V
.line 236
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->stop()V
:try_end_13
.catch Ljava/lang/IllegalStateException; {:try_start_9 .. :try_end_13} :catch_15
.catchall {:try_start_9 .. :try_end_13} :catchall_3d
const/4 v1, 0x0
goto :goto_16
:catch_15
const/4 v1, 0x1
:goto_16
if-eqz v1, :cond_2b
.line 242
:try_start_18
new-instance v1, Lcom/polly/mobile/codec/MediaCodecEncoder2$a;
invoke-direct {v1, v2}, Lcom/polly/mobile/codec/MediaCodecEncoder2$a;-><init>(B)V
iput-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->releaserThread:Lcom/polly/mobile/codec/MediaCodecEncoder2$a;
.line 243
iget-object v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
iput-object v4, v1, Lcom/polly/mobile/codec/MediaCodecEncoder2$a;->a:Landroid/media/MediaCodec;
.line 244
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
.line 245
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->releaserThread:Lcom/polly/mobile/codec/MediaCodecEncoder2$a;
invoke-virtual {v1}, Lcom/polly/mobile/codec/MediaCodecEncoder2$a;->start()V
goto :goto_32
.line 247
:cond_2b
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->release()V
.line 248
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
.line 251
:cond_32
:goto_32
monitor-exit v0
:try_end_33
.catchall {:try_start_18 .. :try_end_33} :catchall_3d
.line 254
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncoderName:Ljava/lang/String;
const/4 v0, -0x1
.line 255
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mColorFormat:I
.line 256
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mType:Ljava/lang/String;
.line 257
iput v2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncType:I
return-void
:catchall_3d
move-exception v1
.line 251
:try_start_3e
monitor-exit v0
:try_end_3f
.catchall {:try_start_3e .. :try_end_3f} :catchall_3d
throw v1
.end method
.method public getFrame()I
.registers 15
.line 643
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoderLock:Ljava/lang/Object;
monitor-enter v0
.line 644
:try_start_3
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
const/4 v2, -0x1
if-nez v1, :cond_a
.line 645
monitor-exit v0
:try_end_9
.catchall {:try_start_3 .. :try_end_9} :catchall_1d1
return v2
.line 648
:cond_a
:try_start_a
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
const-wide/16 v4, 0x0
invoke-virtual {v1, v3, v4, v5}, Landroid/media/MediaCodec;->dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I
move-result v1
if-eq v1, v2, :cond_1cd
.line 652
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
iget v3, v3, Landroid/media/MediaCodec$BufferInfo;->flags:I
const/4 v4, 0x4
and-int/2addr v3, v4
if-ne v3, v4, :cond_2c
const-string v1, "yy-videoencoder"
const-string v3, "EOS got"
.line 653
invoke-static {v1, v3}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I
.line 654
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoderLock:Ljava/lang/Object;
invoke-virtual {v1}, Ljava/lang/Object;->notifyAll()V
:try_end_2a
.catch Ljava/lang/Exception; {:try_start_a .. :try_end_2a} :catch_1cf
.catchall {:try_start_a .. :try_end_2a} :catchall_1d1
.line 655
:try_start_2a
monitor-exit v0
:try_end_2b
.catchall {:try_start_2a .. :try_end_2b} :catchall_1d1
return v2
:cond_2c
const/4 v3, -0x3
if-ne v1, v3, :cond_40
:try_start_2f
const-string v1, "yy-videoencoder"
const-string v3, "encode output buffer changed"
.line 661
invoke-static {v1, v3}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I
.line 662
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->getOutputBuffers()[Ljava/nio/ByteBuffer;
move-result-object v1
iput-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeOutputBuffers:[Ljava/nio/ByteBuffer;
goto/16 :goto_1cb
:cond_40
const/4 v3, -0x2
if-ne v1, v3, :cond_5e
const-string v1, "yy-videoencoder"
.line 665
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "encode output format changed:"
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v4}, Landroid/media/MediaCodec;->getOutputFormat()Landroid/media/MediaFormat;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-static {v1, v3}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
goto/16 :goto_1cb
.line 667
:cond_5e
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
iget v3, v3, Landroid/media/MediaCodec$BufferInfo;->flags:I
const/4 v5, 0x2
and-int/2addr v3, v5
const/4 v6, 0x0
if-ne v3, v5, :cond_7b
.line 668
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mProxy:Lcom/polly/mobile/videosdk/YYVideoJniProxy;
iget-object v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeOutputBuffers:[Ljava/nio/ByteBuffer;
aget-object v4, v4, v1
iget-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
iget v5, v5, Landroid/media/MediaCodec$BufferInfo;->offset:I
iget-object v7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
iget v7, v7, Landroid/media/MediaCodec$BufferInfo;->size:I
invoke-virtual {v3, v4, v5, v7}, Lcom/polly/mobile/videosdk/YYVideoJniProxy;->yyvideo_hardware_encoder_setconfig(Ljava/nio/ByteBuffer;II)I
const/4 v8, -0x1
goto/16 :goto_1c5
.line 670
:cond_7b
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
iget v3, v3, Landroid/media/MediaCodec$BufferInfo;->flags:I
const/4 v7, 0x1
and-int/2addr v3, v7
if-ne v3, v7, :cond_85
const/4 v3, 0x1
goto :goto_86
:cond_85
const/4 v3, 0x2
.line 675
:goto_86
iget-object v8, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mProxy:Lcom/polly/mobile/videosdk/YYVideoJniProxy;
iget-object v9, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeOutputBuffers:[Ljava/nio/ByteBuffer;
aget-object v9, v9, v1
iget-object v10, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
iget v10, v10, Landroid/media/MediaCodec$BufferInfo;->offset:I
iget-object v11, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
iget v11, v11, Landroid/media/MediaCodec$BufferInfo;->size:I
invoke-virtual {v8, v9, v10, v11, v3}, Lcom/polly/mobile/videosdk/YYVideoJniProxy;->yyvideo_hardware_encoder_frame_ready(Ljava/nio/ByteBuffer;IIB)I
move-result v8
.line 677
iget-object v9, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->switchLowIFrameSizeModeHelper:Lcom/polly/mobile/codec/MediaCodecEncoder2$b;
if-eqz v9, :cond_1c5
.line 678
iget-object v9, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->switchLowIFrameSizeModeHelper:Lcom/polly/mobile/codec/MediaCodecEncoder2$b;
iget-object v10, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->info:Landroid/media/MediaCodec$BufferInfo;
iget v10, v10, Landroid/media/MediaCodec$BufferInfo;->size:I
.line 1737
iget v11, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
if-nez v11, :cond_ae
if-ne v3, v7, :cond_1c5
.line 1739
iput v7, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
.line 1740
iput v6, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
goto/16 :goto_1c5
.line 1745
:cond_ae
iget v11, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
const/high16 v12, 0x3f800000 # 1.0f
const/4 v13, 0x3
if-ne v11, v7, :cond_127
if-ne v3, v7, :cond_120
.line 1747
iget v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
add-int/2addr v3, v10
iput v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
.line 1748
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
iget v4, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->e:I
int-to-float v10, v10
mul-float v10, v10, v12
iget v11, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
int-to-float v11, v11
div-float/2addr v10, v11
aput v10, v3, v4
const-string v3, "yy-video"
.line 1749
new-instance v4, Ljava/lang/StringBuilder;
const-string v10, "[ccc]IFrame Ratio:"
invoke-direct {v4, v10}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v10, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
iget v11, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->e:I
aget v10, v10, v11
invoke-virtual {v4, v10}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v3, v4}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I
.line 1750
iget v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->e:I
add-int/2addr v3, v7
iget-object v4, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
array-length v4, v4
rem-int/2addr v3, v4
iput v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->e:I
.line 1751
iget v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->a:I
add-int/2addr v3, v7
iput v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->a:I
.line 1752
iget v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->a:I
if-le v3, v13, :cond_11c
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
aget v3, v3, v6
float-to-double v3, v3
const-wide/high16 v10, 0x3fe0000000000000L # 0.5
cmpl-double v12, v3, v10
if-lez v12, :cond_11c
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
aget v3, v3, v7
float-to-double v3, v3
cmpl-double v12, v3, v10
if-lez v12, :cond_11c
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
aget v3, v3, v5
float-to-double v3, v3
cmpl-double v5, v3, v10
if-lez v5, :cond_11c
.line 1753
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->m:Lcom/polly/mobile/codec/MediaCodecEncoder2;
iput-boolean v7, v3, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeAim:Z
const-string v3, "yy-video"
const-string v4, "[ccc]switch to smallIFrameMode!"
.line 1754
invoke-static {v3, v4}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I
.line 1756
:cond_11c
iput v6, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
goto/16 :goto_1c5
.line 1760
:cond_120
iget v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
add-int/2addr v3, v10
iput v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
goto/16 :goto_1c5
.line 1765
:cond_127
iget v11, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
if-ne v11, v5, :cond_133
if-ne v3, v7, :cond_1c5
.line 1767
iput v6, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
.line 1768
iput v6, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
goto/16 :goto_1c5
.line 1772
:cond_133
iget v11, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
if-ne v11, v13, :cond_141
if-ne v3, v7, :cond_1c5
.line 1774
iput v10, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->b:I
.line 1775
iput v10, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
.line 1776
iput v4, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
goto/16 :goto_1c5
.line 1780
:cond_141
iget v11, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
if-ne v11, v4, :cond_1ba
if-ne v3, v7, :cond_1b4
.line 1782
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
iget v4, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->e:I
iget v11, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->b:I
int-to-float v11, v11
mul-float v11, v11, v12
iget v12, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
int-to-float v12, v12
div-float/2addr v11, v12
aput v11, v3, v4
const-string v3, "yy-video"
.line 1783
new-instance v4, Ljava/lang/StringBuilder;
const-string v11, "[ccc]IFrame Ratio:"
invoke-direct {v4, v11}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v11, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
iget v12, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->e:I
aget v11, v11, v12
invoke-virtual {v4, v11}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v3, v4}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I
.line 1784
iget v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->e:I
add-int/2addr v3, v7
iget-object v4, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
array-length v4, v4
rem-int/2addr v3, v4
iput v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->e:I
.line 1785
iget v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->a:I
add-int/2addr v3, v7
iput v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->a:I
.line 1786
iget v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->a:I
if-le v3, v13, :cond_1ad
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
aget v3, v3, v6
float-to-double v3, v3
const-wide v11, 0x3fd6666666666666L # 0.35
cmpg-double v13, v3, v11
if-gez v13, :cond_1ad
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
aget v3, v3, v7
float-to-double v3, v3
cmpg-double v7, v3, v11
if-gez v7, :cond_1ad
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->d:[F
aget v3, v3, v5
float-to-double v3, v3
cmpg-double v5, v3, v11
if-gez v5, :cond_1ad
.line 1787
iget-object v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->m:Lcom/polly/mobile/codec/MediaCodecEncoder2;
iput-boolean v6, v3, Lcom/polly/mobile/codec/MediaCodecEncoder2;->smallIFrameModeAim:Z
const-string v3, "yy-video"
const-string v4, "[ccc]switch to normalIFrameMode!"
.line 1788
invoke-static {v3, v4}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_1af
.line 1791
:cond_1ad
iput v6, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
.line 1793
:goto_1af
iput v10, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->b:I
.line 1794
iput v10, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
goto :goto_1c5
.line 1797
:cond_1b4
iget v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
add-int/2addr v3, v10
iput v3, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
goto :goto_1c5
.line 1802
:cond_1ba
iget v4, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
const/4 v5, 0x5
if-ne v4, v5, :cond_1c5
if-ne v3, v7, :cond_1c5
.line 1804
iput v13, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->l:I
.line 1805
iput v6, v9, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;->c:I
.line 681
:cond_1c5
:goto_1c5
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v3, v1, v6}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
:try_end_1ca
.catch Ljava/lang/Exception; {:try_start_2f .. :try_end_1ca} :catch_1cf
.catchall {:try_start_2f .. :try_end_1ca} :catchall_1d1
move v2, v8
.line 684
:goto_1cb
:try_start_1cb
monitor-exit v0
return v2
.line 686
:cond_1cd
monitor-exit v0
return v2
.line 689
:catch_1cf
monitor-exit v0
return v2
:catchall_1d1
move-exception v1
.line 691
monitor-exit v0
:try_end_1d3
.catchall {:try_start_1cb .. :try_end_1d3} :catchall_1d1
throw v1
.end method
.method public isEncoderValid()Z
.registers 3
.line 225
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoderLock:Ljava/lang/Object;
monitor-enter v0
.line 226
:try_start_3
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-eqz v1, :cond_9
const/4 v1, 0x1
goto :goto_a
:cond_9
const/4 v1, 0x0
:goto_a
monitor-exit v0
return v1
:catchall_c
move-exception v1
.line 227
monitor-exit v0
:try_end_e
.catchall {:try_start_3 .. :try_end_e} :catchall_c
throw v1
.end method
.method public open(IIIIIII)I
.registers 13
const-wide/16 p4, 0x0
.line 114
iput-wide p4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->IpresentationTimeUs:J
.line 115
iput p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncWidth:I
iput p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encWidth:I
.line 116
iput p3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncHeight:I
iput p3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encHeight:I
.line 117
iput p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextFrameRate:I
iput p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
.line 118
iput p6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextCodeRate:I
iput p6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->codeRatePass2Encoder:I
iput p6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->aimCodeRate:I
const/4 p4, 0x2
.line 119
iput p4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval:I
iput p4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
const/4 p5, 0x0
.line 120
iput p5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->newRequestCodeRate:I
const/high16 v0, 0x3f800000 # 1.0f
.line 121
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->ptsStepFactor:F
.line 122
iput p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncType:I
.line 123
invoke-direct {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->getFixFrameRate()I
move-result p1
mul-int/lit8 v0, p1, 0x2
const/4 v1, 0x1
sub-int/2addr v0, v1
.line 124
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval_f:I
iput v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval_f:I
.line 126
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mConfigEntry:[Lcom/polly/mobile/codec/b$a;
const/4 v2, -0x1
if-eqz v0, :cond_25e
array-length v0, v0
if-nez v0, :cond_3a
goto/16 :goto_25e
:cond_3a
const/4 v0, 0x0
.line 131
:goto_3b
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mConfigEntry:[Lcom/polly/mobile/codec/b$a;
array-length v4, v3
if-ge v0, v4, :cond_6b
.line 132
aget-object v3, v3, v0
iget v3, v3, Lcom/polly/mobile/codec/b$a;->e:I
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncType:I
if-ne v3, v4, :cond_68
.line 133
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mConfigEntry:[Lcom/polly/mobile/codec/b$a;
aget-object v3, v3, v0
iget-object v3, v3, Lcom/polly/mobile/codec/b$a;->c:Ljava/lang/String;
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mType:Ljava/lang/String;
.line 134
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mConfigEntry:[Lcom/polly/mobile/codec/b$a;
aget-object v3, v3, v0
iget-object v3, v3, Lcom/polly/mobile/codec/b$a;->a:Ljava/lang/String;
iput-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncoderName:Ljava/lang/String;
.line 135
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mConfigEntry:[Lcom/polly/mobile/codec/b$a;
aget-object v3, v3, v0
iget v3, v3, Lcom/polly/mobile/codec/b$a;->b:I
iput v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mColorFormat:I
.line 136
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mConfigEntry:[Lcom/polly/mobile/codec/b$a;
aget-object v3, v3, v0
iget-boolean v3, v3, Lcom/polly/mobile/codec/b$a;->g:Z
iput-boolean v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseHighProfile:Z
:cond_68
add-int/lit8 v0, v0, 0x1
goto :goto_3b
.line 139
:cond_6b
new-instance v0, Ljava/lang/StringBuilder;
const-string v3, "hardware encoder name:"
invoke-direct {v0, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncoderName:Ljava/lang/String;
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v3, "yy-videoencoder"
invoke-static {v3, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 140
new-instance v0, Ljava/lang/StringBuilder;
const-string v3, "open:["
invoke-direct {v0, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v3, ", "
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v3, "]"
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v3, "yy-videoencoder"
invoke-static {v3, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 141
new-instance v0, Ljava/lang/StringBuilder;
const-string v3, "open:[BR:"
invoke-direct {v0, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v3, ", Format: "
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mColorFormat:I
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v3, "]"
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v3, "yy-videoencoder"
invoke-static {v3, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 142
new-instance v0, Ljava/lang/StringBuilder;
const-string v3, "open:[FR:"
invoke-direct {v0, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p7, "("
invoke-virtual {v0, p7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p7, "), IFrameval: "
invoke-virtual {v0, p7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
invoke-virtual {v0, p7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p7, "]"
invoke-virtual {v0, p7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p7
const-string v0, "yy-videoencoder"
invoke-static {v0, p7}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 143
new-instance p7, Ljava/lang/StringBuilder;
const-string v0, "mUseHighProfile : "
invoke-direct {p7, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-boolean v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseHighProfile:Z
invoke-virtual {p7, v0}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {p7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p7
const-string v0, "yy-videoencoder"
invoke-static {v0, p7}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 144
iget-object p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncoderName:Ljava/lang/String;
if-nez p7, :cond_106
return v2
.line 148
:cond_106
iget p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncType:I
const/4 v0, 0x5
const/16 v3, 0x13
if-ne p7, v0, :cond_117
iget-boolean p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseQcomLogicIn1v1Mode:Z
if-eqz p7, :cond_117
sget p7, Landroid/os/Build$VERSION;->SDK_INT:I
if-lt p7, v3, :cond_117
const/4 p7, 0x1
goto :goto_118
:cond_117
const/4 p7, 0x0
:goto_118
iput-boolean p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew265Firware:Z
.line 149
iget p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncType:I
if-ne p7, p4, :cond_128
iget-boolean p4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseQcomLogicIn1v1Mode:Z
if-eqz p4, :cond_128
sget p4, Landroid/os/Build$VERSION;->SDK_INT:I
if-lt p4, v3, :cond_128
const/4 p4, 0x1
goto :goto_129
:cond_128
const/4 p4, 0x0
:goto_129
iput-boolean p4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew264Firware:Z
.line 151
iput-boolean p5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew264Firware:Z
.line 152
iput-boolean p5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew265Firware:Z
const p4, 0x3e4ccccd # 0.2f
if-eqz p5, :cond_15a
.line 155
iput p4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mBRFactor:F
const-string p4, "yy-video"
const-string p7, "[ccc]using new Qcom firware!"
.line 156
invoke-static {p4, p7}, Lcom/polly/mobile/util/f;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 157
new-instance p4, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;
invoke-direct {p4, p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2$b;-><init>(Lcom/polly/mobile/codec/MediaCodecEncoder2;)V
iput-object p4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->switchLowIFrameSizeModeHelper:Lcom/polly/mobile/codec/MediaCodecEncoder2$b;
.line 158
new-instance p4, Ljava/lang/StringBuilder;
const-string p7, "[ccc]Set BR factor: "
invoke-direct {p4, p7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mBRFactor:F
invoke-virtual {p4, p7}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {p4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p4
const-string p7, "yy-video"
invoke-static {p7, p4}, Lcom/polly/mobile/util/f;->d(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_17b
:cond_15a
if-eqz p5, :cond_174
.line 160
iput p4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mBRFactor:F
.line 161
new-instance p4, Ljava/lang/StringBuilder;
const-string p7, "[ccc]Set BR factor: "
invoke-direct {p4, p7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mBRFactor:F
invoke-virtual {p4, p7}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {p4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p4
const-string p7, "yy-video"
invoke-static {p7, p4}, Lcom/polly/mobile/util/f;->d(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_17b
:cond_174
const-string p4, "yy-video"
const-string p7, "[ccc]Set BR factor: 1"
.line 163
invoke-static {p4, p7}, Lcom/polly/mobile/util/f;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 165
:goto_17b
iget-object p4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoderLock:Ljava/lang/Object;
monitor-enter p4
const/4 p7, 0x0
.line 167
:try_start_17f
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-eqz v0, :cond_18f
.line 168
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v0}, Landroid/media/MediaCodec;->stop()V
.line 169
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {v0}, Landroid/media/MediaCodec;->release()V
.line 170
iput-object p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
.line 173
:cond_18f
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncoderName:Ljava/lang/String;
invoke-static {v0}, Landroid/media/MediaCodec;->createByCodecName(Ljava/lang/String;)Landroid/media/MediaCodec;
move-result-object v0
iput-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
.line 174
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mType:Ljava/lang/String;
invoke-static {v0, p2, p3}, Landroid/media/MediaFormat;->createVideoFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;
move-result-object p3
iput-object p3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string v0, "bitrate"
int-to-float p6, p6
.line 175
iget v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mBRFactor:F
mul-float p6, p6, v3
float-to-int p6, p6
invoke-virtual {p3, v0, p6}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 176
iget-object p3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string p6, "color-format"
iget v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mColorFormat:I
invoke-virtual {p3, p6, v0}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 177
iget-object p3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string p6, "frame-rate"
invoke-virtual {p3, p6, p1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 178
iget-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string p3, "i-frame-interval"
iget p6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iFramesInterval:I
invoke-virtual {p1, p3, p6}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 180
iget-boolean p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseHighProfile:Z
if-eqz p1, :cond_1e6
sget p1, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 p3, 0x17
if-le p1, p3, :cond_1e6
.line 181
iget-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string p3, "profile"
const/16 p6, 0x8
invoke-virtual {p1, p3, p6}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 182
iget-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
const-string p3, "level"
const/16 p6, 0x200
invoke-virtual {p1, p3, p6}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
const-string p1, "yy-videoencoder"
const-string p3, "use HighProfile"
.line 184
invoke-static {p1, p3}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 187
:cond_1e6
iget-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
iget-object p3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
invoke-virtual {p1, p3, p7, p7, v1}, Landroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
.line 188
iget-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {p1}, Landroid/media/MediaCodec;->start()V
.line 189
iput-boolean p5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->iItvlRst:Z
.line 190
iput p5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mFramesUntilNextI:I
:try_end_1f6
.catch Ljava/lang/Exception; {:try_start_17f .. :try_end_1f6} :catch_22d
.catchall {:try_start_17f .. :try_end_1f6} :catchall_22b
:try_start_1f6
const-string p1, "yy-videoencoder"
.line 200
new-instance p3, Ljava/lang/StringBuilder;
const-string p6, "open:"
invoke-direct {p3, p6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object p6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {p3, p6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string p6, ", format:"
invoke-virtual {p3, p6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object p6, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->format:Landroid/media/MediaFormat;
invoke-virtual {p3, p6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p3
invoke-static {p1, p3}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 201
iget-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {p1}, Landroid/media/MediaCodec;->getInputBuffers()[Ljava/nio/ByteBuffer;
move-result-object p1
iput-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeInputBuffers:[Ljava/nio/ByteBuffer;
.line 202
iget-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {p1}, Landroid/media/MediaCodec;->getOutputBuffers()[Ljava/nio/ByteBuffer;
move-result-object p1
iput-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeOutputBuffers:[Ljava/nio/ByteBuffer;
.line 203
monitor-exit p4
:try_end_226
.catchall {:try_start_1f6 .. :try_end_226} :catchall_22b
.line 214
iput p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->stride:I
.line 215
iput p5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->gap:I
return p5
:catchall_22b
move-exception p1
goto :goto_25c
:catch_22d
move-exception p1
:try_start_22e
const-string p2, "yy-videodecoder"
.line 193
new-instance p3, Ljava/lang/StringBuilder;
const-string p5, "failed to start hardware encoder: "
invoke-direct {p3, p5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object p5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mEncoderName:Ljava/lang/String;
invoke-virtual {p3, p5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p5, " message: "
invoke-virtual {p3, p5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object p5
invoke-virtual {p3, p5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p3
invoke-static {p2, p3, p1}, Lcom/polly/mobile/util/f;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
.line 194
iget-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-eqz p1, :cond_25a
.line 195
iget-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
invoke-virtual {p1}, Landroid/media/MediaCodec;->release()V
.line 196
iput-object p7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
.line 198
:cond_25a
monitor-exit p4
return v2
.line 203
:goto_25c
monitor-exit p4
:try_end_25d
.catchall {:try_start_22e .. :try_end_25d} :catchall_22b
throw p1
:cond_25e
:goto_25e
return v2
.end method
.method public putFrame()I
.registers 15
.line 571
iget-object v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoderLock:Ljava/lang/Object;
monitor-enter v0
.line 572
:try_start_3
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
const/4 v2, -0x2
if-nez v1, :cond_a
.line 573
monitor-exit v0
return v2
.line 575
:cond_a
invoke-direct {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->ReSetParamsIfNeeded()Z
move-result v1
if-eqz v1, :cond_16
.line 576
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
if-nez v1, :cond_16
.line 577
monitor-exit v0
return v2
.line 580
:cond_16
invoke-direct {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->updatePtsStepFactor()V
.line 581
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v3
:try_end_1d
.catchall {:try_start_3 .. :try_end_1d} :catchall_90
.line 585
:cond_1d
:try_start_1d
iget-object v1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
const-wide/16 v5, 0x0
invoke-virtual {v1, v5, v6}, Landroid/media/MediaCodec;->dequeueInputBuffer(J)I
move-result v1
:try_end_25
.catch Ljava/lang/IllegalStateException; {:try_start_1d .. :try_end_25} :catch_87
.catchall {:try_start_1d .. :try_end_25} :catchall_90
if-gez v1, :cond_30
.line 588
:try_start_27
iget-object v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoderLock:Ljava/lang/Object;
const-wide/16 v6, 0xa
invoke-virtual {v5, v6, v7}, Ljava/lang/Object;->wait(J)V
:try_end_2e
.catch Ljava/lang/InterruptedException; {:try_start_27 .. :try_end_2e} :catch_2f
.catch Ljava/lang/IllegalStateException; {:try_start_27 .. :try_end_2e} :catch_87
.catchall {:try_start_27 .. :try_end_2e} :catchall_90
goto :goto_30
:catch_2f
nop
:cond_30
:goto_30
if-gez v1, :cond_3d
.line 594
:try_start_32
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v5
sub-long/2addr v5, v3
const-wide/16 v7, 0x14
cmp-long v9, v5, v7
if-ltz v9, :cond_1d
:cond_3d
if-gez v1, :cond_46
const-string v3, "yy-videoencoder"
const-string v4, "Got negative index"
.line 596
invoke-static {v3, v4}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I
:cond_46
if-ltz v1, :cond_85
.line 598
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeInputBuffers:[Ljava/nio/ByteBuffer;
aget-object v3, v3, v1
invoke-virtual {v3}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
.line 599
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mProxy:Lcom/polly/mobile/videosdk/YYVideoJniProxy;
iget-object v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeInputBuffers:[Ljava/nio/ByteBuffer;
aget-object v4, v4, v1
invoke-virtual {v3, v4}, Lcom/polly/mobile/videosdk/YYVideoJniProxy;->yyvideo_hardware_encoder_put_frame(Ljava/nio/ByteBuffer;)I
move-result v10
.line 600
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encodeInputBuffers:[Ljava/nio/ByteBuffer;
aget-object v3, v3, v1
invoke-virtual {v3, v10}, Ljava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer;
.line 602
iget-wide v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->IpresentationTimeUs:J
long-to-float v3, v3
iget v4, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
if-nez v4, :cond_69
const/4 v4, 0x1
goto :goto_6f
:cond_69
const v4, 0xf4240
iget v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->frameRate:I
div-int/2addr v4, v5
:goto_6f
int-to-float v4, v4
iget v5, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->ptsStepFactor:F
mul-float v4, v4, v5
add-float/2addr v3, v4
float-to-long v11, v3
iput-wide v11, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->IpresentationTimeUs:J
.line 604
iget-object v7, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->encoder:Landroid/media/MediaCodec;
const/4 v9, 0x0
const/4 v13, 0x0
move v8, v1
invoke-virtual/range {v7 .. v13}, Landroid/media/MediaCodec;->queueInputBuffer(IIIJI)V
.line 605
iget-object v3, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mProxy:Lcom/polly/mobile/videosdk/YYVideoJniProxy;
invoke-virtual {v3}, Lcom/polly/mobile/videosdk/YYVideoJniProxy;->yyvideo_hardware_encoder_putframe_succeed()V
:try_end_85
.catch Ljava/lang/IllegalStateException; {:try_start_32 .. :try_end_85} :catch_87
.catchall {:try_start_32 .. :try_end_85} :catchall_90
.line 619
:cond_85
:try_start_85
monitor-exit v0
return v1
:catch_87
const-string v1, "yy-videoencoder"
const-string v3, "Something wrong happend in HW encoder."
.line 608
invoke-static {v1, v3}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 612
monitor-exit v0
return v2
:catchall_90
move-exception v1
.line 620
monitor-exit v0
:try_end_92
.catchall {:try_start_85 .. :try_end_92} :catchall_90
goto :goto_94
:goto_93
throw v1
:goto_94
goto :goto_93
.end method
.method public requseIFrame()V
.registers 2
const/4 v0, 0x1
.line 266
iput-boolean v0, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->requestIframe:Z
return-void
.end method
.method public requseNewCodeRate(I)V
.registers 2
return-void
.end method
.method public resetEncodeSize(IIII)V
.registers 5
.line 406
iput p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncWidth:I
.line 407
iput p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextEncHeight:I
.line 415
iput p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->stride:I
const/4 p1, 0x0
.line 416
iput p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->gap:I
return-void
.end method
.method public resetParams(III)V
.registers 6
.line 270
invoke-static {}, Lcom/polly/mobile/util/f;->c()Z
move-result v0
if-eqz v0, :cond_27
.line 271
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "ResetParams "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, " "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "yy-videodecoder"
invoke-static {v1, v0}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I
.line 273
:cond_27
iput p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextCodeRate:I
.line 274
iput p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextFrameRate:I
.line 275
iget-boolean p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew265Firware:Z
const/4 v0, 0x1
if-nez p2, :cond_34
iget-boolean p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->usingQcomNew264Firware:Z
if-eqz p2, :cond_3d
:cond_34
add-int/lit8 p2, p3, -0x1
.line 276
iput p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval_f:I
if-gtz p2, :cond_3b
const/4 p2, 0x1
.line 277
:cond_3b
iput p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval_f:I
.line 281
:cond_3d
div-int/2addr p3, p1
if-gtz p3, :cond_41
goto :goto_42
:cond_41
move v0, p3
.line 283
:goto_42
invoke-direct {p0, v0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->getFixedIFrameIval(I)I
move-result p1
iput p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->nextIFramesInterval:I
return-void
.end method
.method public setConfig([Lcom/polly/mobile/codec/b$a;Z)V
.registers 3
.line 108
iput-object p1, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mConfigEntry:[Lcom/polly/mobile/codec/b$a;
.line 109
iput-boolean p2, p0, Lcom/polly/mobile/codec/MediaCodecEncoder2;->mUseQcomLogicIn1v1Mode:Z
.line 110
invoke-static {p2}, Ljava/lang/String;->valueOf(Z)Ljava/lang/String;
move-result-object p1
const-string p2, "Using qcom logic: "
invoke-virtual {p2, p1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
const-string p2, "yy-videoencoder"
invoke-static {p2, p1}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I
return-void
.end method
.method public native setJniObject()V
.end method
.method public stopEncodeThread()V
.registers 1
.line 567
invoke-virtual {p0}, Lcom/polly/mobile/codec/MediaCodecEncoder2;->close()V
return-void
.end method