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