HardwareVideoDecoder$3.smali
.class Lio/agora/base/internal/video/HardwareVideoDecoder$3;
.super Ljava/lang/Object;
.source "HardwareVideoDecoder.java"
# interfaces
.implements Ljava/util/concurrent/Callable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lio/agora/base/internal/video/HardwareVideoDecoder;->decode(Lio/agora/base/internal/video/EncodedImage;Lio/agora/base/internal/video/VideoDecoder$DecodeInfo;Lio/agora/base/internal/video/CodecSpecificInfo;)Lio/agora/base/internal/video/VideoCodecStatus;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Object;",
"Ljava/util/concurrent/Callable<",
"Lio/agora/base/internal/video/VideoCodecStatus;",
">;"
}
.end annotation
# instance fields
.field final synthetic this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
.field final synthetic val$codecSpecificInfo:Lio/agora/base/internal/video/CodecSpecificInfo;
.field final synthetic val$frame:Lio/agora/base/internal/video/EncodedImage;
.field final synthetic val$size:I
# direct methods
.method constructor <init>(Lio/agora/base/internal/video/HardwareVideoDecoder;ILio/agora/base/internal/video/EncodedImage;Lio/agora/base/internal/video/CodecSpecificInfo;)V
.registers 5
.line 428
iput-object p1, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
iput p2, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$size:I
iput-object p3, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$frame:Lio/agora/base/internal/video/EncodedImage;
iput-object p4, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$codecSpecificInfo:Lio/agora/base/internal/video/CodecSpecificInfo;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public call()Lio/agora/base/internal/video/VideoCodecStatus;
.registers 12
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
const-string v0, "HardwareVideoDecoder"
.line 433
:try_start_2
iget-object v1, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->codec:Lio/agora/base/internal/video/MediaCodecWrapper;
invoke-static {v1}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$000(Lio/agora/base/internal/video/HardwareVideoDecoder;)Lio/agora/base/internal/video/MediaCodecWrapper;
move-result-object v1
const-wide/32 v2, 0x7a120
invoke-interface {v1, v2, v3}, Lio/agora/base/internal/video/MediaCodecWrapper;->dequeueInputBuffer(J)I
move-result v5
:try_end_f
.catch Ljava/lang/IllegalStateException; {:try_start_2 .. :try_end_f} :catch_e0
if-gez v5, :cond_19
const-string v1, "decode() - no HW buffers available; decoder falling behind"
.line 441
invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 442
sget-object v0, Lio/agora/base/internal/video/VideoCodecStatus;->ERROR:Lio/agora/base/internal/video/VideoCodecStatus;
return-object v0
.line 447
:cond_19
:try_start_19
iget-object v1, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->codec:Lio/agora/base/internal/video/MediaCodecWrapper;
invoke-static {v1}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$000(Lio/agora/base/internal/video/HardwareVideoDecoder;)Lio/agora/base/internal/video/MediaCodecWrapper;
move-result-object v1
invoke-interface {v1}, Lio/agora/base/internal/video/MediaCodecWrapper;->getInputBuffers()[Ljava/nio/ByteBuffer;
move-result-object v1
aget-object v1, v1, v5
:try_end_25
.catch Ljava/lang/IllegalStateException; {:try_start_19 .. :try_end_25} :catch_d7
.line 453
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->capacity()I
move-result v2
iget v3, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$size:I
if-ge v2, v3, :cond_35
const-string v1, "decode() - HW buffer too small"
.line 454
invoke-static {v0, v1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 455
sget-object v0, Lio/agora/base/internal/video/VideoCodecStatus;->ERROR:Lio/agora/base/internal/video/VideoCodecStatus;
return-object v0
.line 457
:cond_35
iget-object v2, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$frame:Lio/agora/base/internal/video/EncodedImage;
iget-object v2, v2, Lio/agora/base/internal/video/EncodedImage;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1, v2}, Ljava/nio/ByteBuffer;->put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
.line 459
iget-object v1, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->frameInfos:Ljava/util/concurrent/BlockingDeque;
invoke-static {v1}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$500(Lio/agora/base/internal/video/HardwareVideoDecoder;)Ljava/util/concurrent/BlockingDeque;
move-result-object v1
new-instance v2, Lio/agora/base/internal/video/HardwareVideoDecoder$FrameInfo;
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v3
iget-object v6, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$frame:Lio/agora/base/internal/video/EncodedImage;
iget v6, v6, Lio/agora/base/internal/video/EncodedImage;->rotation:I
invoke-direct {v2, v3, v4, v6}, Lio/agora/base/internal/video/HardwareVideoDecoder$FrameInfo;-><init>(JI)V
invoke-interface {v1, v2}, Ljava/util/concurrent/BlockingDeque;->offer(Ljava/lang/Object;)Z
.line 460
sget-object v1, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit;
iget-object v2, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$frame:Lio/agora/base/internal/video/EncodedImage;
iget-wide v2, v2, Lio/agora/base/internal/video/EncodedImage;->captureTimeNs:J
invoke-virtual {v1, v2, v3}, Ljava/util/concurrent/TimeUnit;->toMicros(J)J
move-result-wide v1
.line 462
:try_start_5c
iget-object v3, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$codecSpecificInfo:Lio/agora/base/internal/video/CodecSpecificInfo;
if-eqz v3, :cond_6f
.line 463
iget-object v3, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->codecSpecificInfoMap:Ljava/util/Map;
invoke-static {v3}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$600(Lio/agora/base/internal/video/HardwareVideoDecoder;)Ljava/util/Map;
move-result-object v3
invoke-static {v1, v2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v4
iget-object v6, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$codecSpecificInfo:Lio/agora/base/internal/video/CodecSpecificInfo;
invoke-interface {v3, v4, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 465
:cond_6f
new-instance v3, Lio/agora/base/internal/video/HardwareVideoDecoder$TimeStamps;
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v6
invoke-direct {v3, v6, v7, v1, v2}, Lio/agora/base/internal/video/HardwareVideoDecoder$TimeStamps;-><init>(JJ)V
.line 466
iget-object v4, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->decodeTimeStamps:Ljava/util/Queue;
invoke-static {v4}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$700(Lio/agora/base/internal/video/HardwareVideoDecoder;)Ljava/util/Queue;
move-result-object v4
invoke-interface {v4, v3}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
.line 467
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v6, "queue input buffer, pts_us: "
invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder$TimeStamps;->presentationTimeStampUs:J
invoke-static {v3}, Lio/agora/base/internal/video/HardwareVideoDecoder$TimeStamps;->access$800(Lio/agora/base/internal/video/HardwareVideoDecoder$TimeStamps;)J
move-result-wide v6
invoke-virtual {v4, v6, v7}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
# invokes: Lio/agora/base/internal/video/HardwareVideoDecoder;->debug_log(Ljava/lang/String;)V
invoke-static {v3}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$900(Ljava/lang/String;)V
.line 468
iget-object v3, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->codec:Lio/agora/base/internal/video/MediaCodecWrapper;
invoke-static {v3}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$000(Lio/agora/base/internal/video/HardwareVideoDecoder;)Lio/agora/base/internal/video/MediaCodecWrapper;
move-result-object v4
const/4 v6, 0x0
iget v7, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->val$size:I
const/4 v10, 0x0
move-wide v8, v1
invoke-interface/range {v4 .. v10}, Lio/agora/base/internal/video/MediaCodecWrapper;->queueInputBuffer(IIIJI)V
:try_end_a7
.catch Ljava/lang/RuntimeException; {:try_start_5c .. :try_end_a7} :catch_b8
.line 475
iget-object v0, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->keyFrameRequired:Z
invoke-static {v0}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$1000(Lio/agora/base/internal/video/HardwareVideoDecoder;)Z
move-result v0
if-eqz v0, :cond_b5
.line 476
iget-object v0, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
const/4 v1, 0x0
# setter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->keyFrameRequired:Z
invoke-static {v0, v1}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$1002(Lio/agora/base/internal/video/HardwareVideoDecoder;Z)Z
.line 478
:cond_b5
sget-object v0, Lio/agora/base/internal/video/VideoCodecStatus;->OK:Lio/agora/base/internal/video/VideoCodecStatus;
return-object v0
:catch_b8
move-exception v3
const-string v4, "queueInputBuffer failed"
.line 470
invoke-static {v0, v4, v3}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 471
iget-object v0, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->frameInfos:Ljava/util/concurrent/BlockingDeque;
invoke-static {v0}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$500(Lio/agora/base/internal/video/HardwareVideoDecoder;)Ljava/util/concurrent/BlockingDeque;
move-result-object v0
invoke-interface {v0}, Ljava/util/concurrent/BlockingDeque;->pollLast()Ljava/lang/Object;
.line 472
iget-object v0, p0, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->this$0:Lio/agora/base/internal/video/HardwareVideoDecoder;
# getter for: Lio/agora/base/internal/video/HardwareVideoDecoder;->codecSpecificInfoMap:Ljava/util/Map;
invoke-static {v0}, Lio/agora/base/internal/video/HardwareVideoDecoder;->access$600(Lio/agora/base/internal/video/HardwareVideoDecoder;)Ljava/util/Map;
move-result-object v0
invoke-static {v1, v2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 473
sget-object v0, Lio/agora/base/internal/video/VideoCodecStatus;->ERROR:Lio/agora/base/internal/video/VideoCodecStatus;
return-object v0
:catch_d7
move-exception v1
const-string v2, "getInputBuffers failed"
.line 449
invoke-static {v0, v2, v1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 450
sget-object v0, Lio/agora/base/internal/video/VideoCodecStatus;->ERROR:Lio/agora/base/internal/video/VideoCodecStatus;
return-object v0
:catch_e0
move-exception v1
const-string v2, "dequeueInputBuffer failed"
.line 435
invoke-static {v0, v2, v1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 436
sget-object v0, Lio/agora/base/internal/video/VideoCodecStatus;->ERROR:Lio/agora/base/internal/video/VideoCodecStatus;
return-object v0
.end method
.method public bridge synthetic call()Ljava/lang/Object;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 428
invoke-virtual {p0}, Lio/agora/base/internal/video/HardwareVideoDecoder$3;->call()Lio/agora/base/internal/video/VideoCodecStatus;
move-result-object v0
return-object v0
.end method