a$b.smali
.class final Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Landroid/media/ImageReader$OnImageAvailableListener;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x10
name = "b"
.end annotation
# instance fields
.field final synthetic a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
# direct methods
.method public constructor <init>(Lcom/imo/android/imoim/rooms/sharescreen/capture/a;)V
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()V"
}
.end annotation
.line 170
iput-object p1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public final onImageAvailable(Landroid/media/ImageReader;)V
.registers 21
move-object/from16 v1, p0
move-object/from16 v0, p1
const-string v2, "reader"
invoke-static {v0, v2}, Lkotlin/f/b/o;->b(Ljava/lang/Object;Ljava/lang/String;)V
.line 172
iget-object v2, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
.line 2032
iget-object v2, v2, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->a:Ljava/lang/Object;
.line 172
monitor-enter v2
.line 173
:try_start_e
iget-object v3, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
invoke-virtual {v3}, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->c()Z
move-result v3
if-eqz v3, :cond_1e6
iget-object v3, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
.line 3032
iget-object v3, v3, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->b:Landroid/media/ImageReader;
if-ne v0, v3, :cond_1e6
.line 173
invoke-virtual/range {p1 .. p1}, Landroid/media/ImageReader;->getSurface()Landroid/view/Surface;
move-result-object v3
if-eqz v3, :cond_1e6
invoke-virtual/range {p1 .. p1}, Landroid/media/ImageReader;->getSurface()Landroid/view/Surface;
move-result-object v3
const-string v4, "reader.surface"
invoke-static {v3, v4}, Lkotlin/f/b/o;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v3}, Landroid/view/Surface;->isValid()Z
move-result v3
if-nez v3, :cond_33
goto/16 :goto_1e6
.line 177
:cond_33
sget-object v3, Lkotlin/w;->a:Lkotlin/w;
:try_end_35
.catchall {:try_start_e .. :try_end_35} :catchall_1e8
.line 172
monitor-exit v2
.line 180
:try_start_36
invoke-virtual/range {p1 .. p1}, Landroid/media/ImageReader;->acquireLatestImage()Landroid/media/Image;
move-result-object v2
if-eqz v2, :cond_1d4
.line 181
invoke-virtual {v2}, Landroid/media/Image;->getWidth()I
move-result v4
.line 182
invoke-virtual {v2}, Landroid/media/Image;->getHeight()I
move-result v5
.line 184
invoke-virtual {v2}, Landroid/media/Image;->getPlanes()[Landroid/media/Image$Plane;
move-result-object v0
const/4 v3, 0x0
aget-object v0, v0, v3
const-string v6, "planes[0]"
invoke-static {v0, v6}, Lkotlin/f/b/o;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v0}, Landroid/media/Image$Plane;->getRowStride()I
move-result v0
invoke-virtual {v2}, Landroid/media/Image;->getPlanes()[Landroid/media/Image$Plane;
move-result-object v6
aget-object v6, v6, v3
const-string v7, "planes[0]"
invoke-static {v6, v7}, Lkotlin/f/b/o;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v6}, Landroid/media/Image$Plane;->getPixelStride()I
move-result v6
div-int/2addr v0, v6
.line 185
invoke-virtual {v2}, Landroid/media/Image;->getPlanes()[Landroid/media/Image$Plane;
move-result-object v6
aget-object v6, v6, v3
const-string v7, "planes[0]"
invoke-static {v6, v7}, Lkotlin/f/b/o;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v6}, Landroid/media/Image$Plane;->getBuffer()Ljava/nio/ByteBuffer;
move-result-object v6
if-lez v0, :cond_1c2
.line 186
invoke-virtual {v6}, Ljava/nio/ByteBuffer;->limit()I
move-result v7
mul-int/lit8 v8, v0, 0x4
mul-int v8, v8, v5
if-lt v7, v8, :cond_1c2
invoke-virtual {v6}, Ljava/nio/ByteBuffer;->capacity()I
move-result v6
if-ge v6, v8, :cond_87
goto/16 :goto_1c2
.line 192
:cond_87
new-instance v6, Lkotlin/f/b/aa$f;
invoke-direct {v6}, Lkotlin/f/b/aa$f;-><init>()V
.line 193
invoke-virtual {v2}, Landroid/media/Image;->getPlanes()[Landroid/media/Image$Plane;
move-result-object v7
aget-object v7, v7, v3
const-string v8, "planes[0]"
invoke-static {v7, v8}, Lkotlin/f/b/o;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v7}, Landroid/media/Image$Plane;->getBuffer()Ljava/nio/ByteBuffer;
move-result-object v7
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->asIntBuffer()Ljava/nio/IntBuffer;
move-result-object v7
.line 194
invoke-virtual {v7}, Ljava/nio/IntBuffer;->limit()I
move-result v8
.line 195
iget-object v9, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
.line 4032
iget-object v9, v9, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->a:Ljava/lang/Object;
.line 195
monitor-enter v9
:try_end_a8
.catch Ljava/lang/Exception; {:try_start_36 .. :try_end_a8} :catch_1d5
.line 196
:try_start_a8
iget-object v10, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
invoke-virtual {v10}, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->c()Z
move-result v10
if-nez v10, :cond_b5
.line 198
invoke-virtual {v2}, Landroid/media/Image;->close()V
:try_end_b3
.catchall {:try_start_a8 .. :try_end_b3} :catchall_1bf
.line 199
:try_start_b3
monitor-exit v9
:try_end_b4
.catch Ljava/lang/Exception; {:try_start_b3 .. :try_end_b4} :catch_1d5
return-void
.line 202
:cond_b5
:try_start_b5
iget-object v10, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
.line 5032
iget-object v10, v10, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->c:[I
if-eqz v10, :cond_d4
.line 202
iget-object v10, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
.line 6032
iget-object v10, v10, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->c:[I
if-nez v10, :cond_c4
.line 202
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_c4
array-length v10, v10
if-eq v10, v8, :cond_c8
goto :goto_d4
.line 207
:cond_c8
iget-object v8, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
.line 8032
iget-object v8, v8, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->c:[I
if-nez v8, :cond_d1
.line 207
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_d1
iput-object v8, v6, Lkotlin/f/b/aa$f;->a:Ljava/lang/Object;
goto :goto_e0
.line 204
:cond_d4
:goto_d4
new-array v8, v8, [I
iput-object v8, v6, Lkotlin/f/b/aa$f;->a:Ljava/lang/Object;
.line 205
iget-object v8, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
iget-object v10, v6, Lkotlin/f/b/aa$f;->a:Ljava/lang/Object;
check-cast v10, [I
.line 7032
iput-object v10, v8, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->c:[I
.line 209
:goto_e0
sget-object v8, Lkotlin/w;->a:Lkotlin/w;
:try_end_e2
.catchall {:try_start_b5 .. :try_end_e2} :catchall_1bf
.line 195
:try_start_e2
monitor-exit v9
.line 211
iget-object v8, v6, Lkotlin/f/b/aa$f;->a:Ljava/lang/Object;
check-cast v8, [I
invoke-virtual {v7, v8}, Ljava/nio/IntBuffer;->get([I)Ljava/nio/IntBuffer;
mul-int v7, v4, v5
mul-int/lit8 v8, v7, 0x3
.line 213
div-int/lit8 v8, v8, 0x2
new-array v8, v8, [B
.line 214
iget-object v6, v6, Lkotlin/f/b/aa$f;->a:Ljava/lang/Object;
check-cast v6, [I
:try_end_f6
.catch Ljava/lang/Exception; {:try_start_e2 .. :try_end_f6} :catch_1d5
const/4 v9, 0x0
const/4 v10, 0x0
:goto_f8
if-ge v9, v5, :cond_19a
mul-int v11, v9, v0
const/4 v12, 0x0
:goto_fd
if-ge v12, v4, :cond_193
.line 9249
:try_start_ff
aget v13, v6, v11
const/high16 v14, 0xff0000
and-int/2addr v13, v14
shr-int/lit8 v13, v13, 0x10
.line 9250
aget v14, v6, v11
const v15, 0xff00
and-int/2addr v14, v15
shr-int/lit8 v14, v14, 0x8
.line 9251
aget v15, v6, v11
const/16 v3, 0xff
and-int/2addr v15, v3
mul-int/lit8 v16, v13, 0x42
mul-int/lit16 v3, v14, 0x81
add-int v16, v16, v3
mul-int/lit8 v3, v15, 0x19
add-int v3, v16, v3
add-int/lit16 v3, v3, 0x80
shr-int/lit8 v3, v3, 0x8
add-int/lit8 v3, v3, 0x10
mul-int/lit8 v16, v13, -0x26
mul-int/lit8 v17, v14, 0x4a
sub-int v16, v16, v17
mul-int/lit8 v17, v15, 0x70
move-object/from16 v18, v6
add-int v6, v16, v17
add-int/lit16 v6, v6, 0x80
shr-int/lit8 v6, v6, 0x8
add-int/lit16 v6, v6, 0x80
mul-int/lit8 v13, v13, 0x70
mul-int/lit8 v14, v14, 0x5e
sub-int/2addr v13, v14
mul-int/lit8 v15, v15, 0x12
sub-int/2addr v13, v15
add-int/lit16 v13, v13, 0x80
shr-int/lit8 v13, v13, 0x8
add-int/lit16 v13, v13, 0x80
add-int/lit8 v14, v10, 0x1
if-gez v3, :cond_149
const/4 v3, 0x0
goto :goto_14f
:cond_149
const/16 v15, 0xff
if-le v3, v15, :cond_14f
const/16 v3, 0xff
:cond_14f
:goto_14f
int-to-byte v3, v3
.line 9255
aput-byte v3, v8, v10
and-int/lit8 v3, v9, 0x1
if-nez v3, :cond_178
and-int/lit8 v3, v11, 0x1
if-nez v3, :cond_178
add-int/lit8 v3, v7, 0x1
if-gez v6, :cond_162
const/4 v6, 0x0
const/16 v10, 0xff
goto :goto_168
:cond_162
const/16 v10, 0xff
if-le v6, v10, :cond_168
const/16 v6, 0xff
:cond_168
:goto_168
int-to-byte v6, v6
.line 9257
aput-byte v6, v8, v7
add-int/lit8 v7, v3, 0x1
if-gez v13, :cond_171
const/4 v10, 0x0
goto :goto_175
:cond_171
if-le v13, v10, :cond_174
goto :goto_175
:cond_174
move v10, v13
:goto_175
int-to-byte v6, v10
.line 9258
aput-byte v6, v8, v3
:try_end_178
.catch Ljava/lang/Exception; {:try_start_ff .. :try_end_178} :catch_182
:cond_178
add-int/lit8 v11, v11, 0x1
add-int/lit8 v12, v12, 0x1
move v10, v14
move-object/from16 v6, v18
const/4 v3, 0x0
goto/16 :goto_fd
:catch_182
move-exception v0
:try_start_183
const-string v3, "AndroidScreenCapture"
const-string v6, "encodeYUV420SP: "
.line 9264
invoke-static {v0}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
invoke-virtual {v6, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 10071
invoke-static {v3, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_19a
:cond_193
move-object/from16 v18, v6
add-int/lit8 v9, v9, 0x1
const/4 v3, 0x0
goto/16 :goto_f8
.line 216
:cond_19a
:goto_19a
iget-object v0, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;->a:Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
invoke-virtual {v0}, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->c()Z
move-result v0
if-nez v0, :cond_1a6
.line 218
invoke-virtual {v2}, Landroid/media/Image;->close()V
return-void
.line 222
:cond_1a6
sget-object v0, Lcom/imo/android/imoim/IMO;->z:Lcom/imo/android/imoim/av/GroupAVManager;
const-string v3, "IMO.groupAvManager"
invoke-static {v0, v3}, Lkotlin/f/b/o;->a(Ljava/lang/Object;Ljava/lang/String;)V
.line 10600
iget-object v3, v0, Lcom/imo/android/imoim/av/GroupAVManager;->I:Lcom/imo/android/imoim/av/macaw/GroupMacawHandler;
if-eqz v3, :cond_1bb
.line 223
invoke-virtual {v3}, Lcom/imo/android/imoim/av/macaw/GroupMacawHandler;->capturedFrame()V
const/4 v7, -0x1
const/4 v0, 0x1
move-object v6, v8
move v8, v0
.line 224
invoke-virtual/range {v3 .. v8}, Lcom/imo/android/imoim/av/macaw/GroupMacawHandler;->sendFrame(II[BII)V
.line 227
:cond_1bb
invoke-virtual {v2}, Landroid/media/Image;->close()V
return-void
:catchall_1bf
move-exception v0
.line 195
monitor-exit v9
throw v0
:cond_1c2
:goto_1c2
const-string v3, "AndroidScreenCapture"
const-string v4, "stride is invalid "
.line 187
invoke-static {v0}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v0
invoke-virtual {v4, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 3075
invoke-static {v3, v0}, Lcom/imo/android/imoim/util/bt;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 188
invoke-virtual {v2}, Landroid/media/Image;->close()V
:try_end_1d4
.catch Ljava/lang/Exception; {:try_start_183 .. :try_end_1d4} :catch_1d5
:cond_1d4
return-void
:catch_1d5
move-exception v0
.line 230
invoke-static {v0}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
const-string v2, "onImageAvailable: "
invoke-virtual {v2, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
const-string v2, "AndroidScreenCapture"
.line 11071
invoke-static {v2, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 175
:cond_1e6
:goto_1e6
monitor-exit v2
return-void
:catchall_1e8
move-exception v0
.line 172
monitor-exit v2
goto :goto_1ec
:goto_1eb
throw v0
:goto_1ec
goto :goto_1eb
.end method