VideoCodeUtil.smali
.class public Lcom/imo/android/imoim/av/macaw/VideoCodeUtil;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field private static final TAG:Ljava/lang/String; = "VideoCodeUtil"
# direct methods
.method public constructor <init>()V
.registers 1
.line 8
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static bitmap2NV21(Landroid/graphics/Bitmap;II)[B
.registers 3
.line 13
invoke-static {p0, p1, p2}, Lcom/imo/android/imoim/av/macaw/VideoCodeUtil;->getYUVByBitmap(Landroid/graphics/Bitmap;II)[B
move-result-object p1
.line 14
invoke-virtual {p0}, Landroid/graphics/Bitmap;->isRecycled()Z
move-result p2
if-nez p2, :cond_d
.line 15
invoke-virtual {p0}, Landroid/graphics/Bitmap;->recycle()V
:cond_d
return-object p1
.end method
.method private static encodeYUV420SP([III)[B
.registers 19
move/from16 v0, p1
move/from16 v1, p2
mul-int v2, v0, v1
mul-int/lit8 v3, v2, 0x3
.line 37
div-int/lit8 v3, v3, 0x2
new-array v3, v3, [B
const/4 v4, 0x0
const/4 v5, 0x0
const/4 v6, 0x0
const/4 v7, 0x0
:goto_10
if-ge v5, v1, :cond_8b
const/4 v8, 0x0
:goto_13
if-ge v8, v0, :cond_88
.line 47
:try_start_15
aget v9, p0, v7
const/high16 v10, 0xff0000
and-int/2addr v9, v10
shr-int/lit8 v9, v9, 0x10
.line 48
aget v10, p0, v7
const v11, 0xff00
and-int/2addr v10, v11
shr-int/lit8 v10, v10, 0x8
.line 49
aget v11, p0, v7
const/16 v12, 0xff
and-int/2addr v11, v12
mul-int/lit8 v13, v9, 0x42
mul-int/lit16 v14, v10, 0x81
add-int/2addr v13, v14
mul-int/lit8 v14, v11, 0x19
add-int/2addr v13, v14
add-int/lit16 v13, v13, 0x80
shr-int/lit8 v13, v13, 0x8
add-int/lit8 v13, v13, 0x10
mul-int/lit8 v14, v9, -0x26
mul-int/lit8 v15, v10, 0x4a
sub-int/2addr v14, v15
mul-int/lit8 v15, v11, 0x70
add-int/2addr v14, v15
add-int/lit16 v14, v14, 0x80
shr-int/lit8 v14, v14, 0x8
add-int/lit16 v14, v14, 0x80
mul-int/lit8 v9, v9, 0x70
mul-int/lit8 v10, v10, 0x5e
sub-int/2addr v9, v10
mul-int/lit8 v11, v11, 0x12
sub-int/2addr v9, v11
add-int/lit16 v9, v9, 0x80
shr-int/lit8 v9, v9, 0x8
add-int/lit16 v9, v9, 0x80
add-int/lit8 v10, v6, 0x1
if-gez v13, :cond_59
const/4 v13, 0x0
goto :goto_5d
:cond_59
if-le v13, v12, :cond_5d
const/16 v13, 0xff
:cond_5d
:goto_5d
int-to-byte v11, v13
.line 55
aput-byte v11, v3, v6
and-int/lit8 v6, v5, 0x1
if-nez v6, :cond_82
and-int/lit8 v6, v7, 0x1
if-nez v6, :cond_82
add-int/lit8 v6, v2, 0x1
if-gez v9, :cond_6e
const/4 v9, 0x0
goto :goto_72
:cond_6e
if-le v9, v12, :cond_72
const/16 v9, 0xff
:cond_72
:goto_72
int-to-byte v9, v9
.line 57
aput-byte v9, v3, v2
add-int/lit8 v2, v6, 0x1
if-gez v14, :cond_7b
const/4 v12, 0x0
goto :goto_7f
:cond_7b
if-le v14, v12, :cond_7e
goto :goto_7f
:cond_7e
move v12, v14
:goto_7f
int-to-byte v9, v12
.line 58
aput-byte v9, v3, v6
:try_end_82
.catch Ljava/lang/Exception; {:try_start_15 .. :try_end_82} :catch_8b
:cond_82
add-int/lit8 v7, v7, 0x1
add-int/lit8 v8, v8, 0x1
move v6, v10
goto :goto_13
:cond_88
add-int/lit8 v5, v5, 0x1
goto :goto_10
:catch_8b
:cond_8b
return-object v3
.end method
.method public static getYUVByBitmap(Landroid/graphics/Bitmap;II)[B
.registers 12
if-nez p0, :cond_4
const/4 p0, 0x0
return-object p0
:cond_4
mul-int v0, p1, p2
.line 27
new-array v0, v0, [I
const/4 v3, 0x0
const/4 v5, 0x0
const/4 v6, 0x0
move-object v1, p0
move-object v2, v0
move v4, p1
move v7, p1
move v8, p2
.line 28
invoke-virtual/range {v1 .. v8}, Landroid/graphics/Bitmap;->getPixels([IIIIIII)V
.line 30
invoke-static {v0, p1, p2}, Lcom/imo/android/imoim/av/macaw/VideoCodeUtil;->encodeYUV420SP([III)[B
move-result-object p0
return-object p0
.end method