SpectrumHybrid.smali

.class public Lcom/facebook/spectrum/SpectrumHybrid;
.super Ljava/lang/Object;
.source "SpectrumHybrid.java"


# annotations
.annotation build Landroid/annotation/SuppressLint;
    value = {
        "MissingNativeLoadLibrary"
    }
.end annotation

.annotation build Lcom/facebook/jni/annotations/DoNotStrip;
.end annotation


# static fields
.field public static final TAG:Ljava/lang/String; = "SpectrumHybrid"


# instance fields
.field public final mConfiguration:Lcom/facebook/spectrum/Configuration;

.field public mHybridData:Lcom/facebook/jni/HybridData;
    .annotation build Lcom/facebook/jni/annotations/DoNotStrip;
    .end annotation

    .annotation runtime Ljavax/annotation/Nullable;
    .end annotation
.end field

.field public final mPlugins:[Lcom/facebook/spectrum/plugins/SpectrumPlugin;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    return-void
.end method

.method public constructor <init>(Lcom/facebook/spectrum/Configuration;[Lcom/facebook/spectrum/plugins/SpectrumPlugin;)V
    .registers 3

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    invoke-static {p1}, Lcom/facebook/spectrum/utils/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object p1

    check-cast p1, Lcom/facebook/spectrum/Configuration;

    iput-object p1, p0, Lcom/facebook/spectrum/SpectrumHybrid;->mConfiguration:Lcom/facebook/spectrum/Configuration;

    invoke-static {p2}, Lcom/facebook/spectrum/utils/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object p1

    check-cast p1, [Lcom/facebook/spectrum/plugins/SpectrumPlugin;

    iput-object p1, p0, Lcom/facebook/spectrum/SpectrumHybrid;->mPlugins:[Lcom/facebook/spectrum/plugins/SpectrumPlugin;

    return-void
.end method

.method private native initHybrid(Lcom/facebook/spectrum/Configuration;[Lcom/facebook/spectrum/plugins/SpectrumPlugin;)Lcom/facebook/jni/HybridData;
    .annotation build Lcom/facebook/jni/annotations/DoNotStrip;
    .end annotation
.end method

.method private native nativeDecode(Ljava/io/InputStream;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/DecodeOptions;)Lcom/facebook/spectrum/SpectrumResult;
    .annotation build Lcom/facebook/jni/annotations/DoNotStrip;
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation
.end method

.method private native nativeEncode(Landroid/graphics/Bitmap;Ljava/io/OutputStream;Lcom/facebook/spectrum/options/EncodeOptions;)Lcom/facebook/spectrum/SpectrumResult;
    .annotation build Lcom/facebook/jni/annotations/DoNotStrip;
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation
.end method

.method private native nativeTranscode(Ljava/io/InputStream;Ljava/io/OutputStream;Lcom/facebook/spectrum/options/TranscodeOptions;)Lcom/facebook/spectrum/SpectrumResult;
    .annotation build Lcom/facebook/jni/annotations/DoNotStrip;
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation
.end method

.method private native nativeTransform(Landroid/graphics/Bitmap;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/TransformOptions;)Lcom/facebook/spectrum/SpectrumResult;
    .annotation build Lcom/facebook/jni/annotations/DoNotStrip;
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation
.end method


# virtual methods
.method public decode(Ljava/io/InputStream;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/DecodeOptions;)Lcom/facebook/spectrum/SpectrumResult;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation

    invoke-virtual {p0}, Lcom/facebook/spectrum/SpectrumHybrid;->ensureNativeLibraryInitialized()V

    invoke-direct {p0, p1, p2, p3}, Lcom/facebook/spectrum/SpectrumHybrid;->nativeDecode(Ljava/io/InputStream;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/DecodeOptions;)Lcom/facebook/spectrum/SpectrumResult;

    move-result-object p1

    return-object p1
.end method

.method public encode(Landroid/graphics/Bitmap;Ljava/io/OutputStream;Lcom/facebook/spectrum/options/EncodeOptions;)Lcom/facebook/spectrum/SpectrumResult;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation

    invoke-virtual {p0}, Lcom/facebook/spectrum/SpectrumHybrid;->ensureNativeLibraryInitialized()V

    invoke-direct {p0, p1, p2, p3}, Lcom/facebook/spectrum/SpectrumHybrid;->nativeEncode(Landroid/graphics/Bitmap;Ljava/io/OutputStream;Lcom/facebook/spectrum/options/EncodeOptions;)Lcom/facebook/spectrum/SpectrumResult;

    move-result-object p1

    return-object p1
.end method

.method public declared-synchronized ensureNativeLibraryInitialized()V
    .registers 3

    monitor-enter p0

    :try_start_1
    iget-object v0, p0, Lcom/facebook/spectrum/SpectrumHybrid;->mHybridData:Lcom/facebook/jni/HybridData;

    if-eqz v0, :cond_f

    iget-object v0, p0, Lcom/facebook/spectrum/SpectrumHybrid;->mHybridData:Lcom/facebook/jni/HybridData;

    invoke-virtual {v0}, Lcom/facebook/jni/HybridData;->isValid()Z

    move-result v0
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_20

    if-eqz v0, :cond_f

    monitor-exit p0

    return-void

    :cond_f
    :try_start_f
    const-string v0, "spectrum"

    invoke-static {v0}, Lcom/facebook/spectrum/SpectrumSoLoader;->loadLibrary(Ljava/lang/String;)V

    iget-object v0, p0, Lcom/facebook/spectrum/SpectrumHybrid;->mConfiguration:Lcom/facebook/spectrum/Configuration;

    iget-object v1, p0, Lcom/facebook/spectrum/SpectrumHybrid;->mPlugins:[Lcom/facebook/spectrum/plugins/SpectrumPlugin;

    invoke-direct {p0, v0, v1}, Lcom/facebook/spectrum/SpectrumHybrid;->initHybrid(Lcom/facebook/spectrum/Configuration;[Lcom/facebook/spectrum/plugins/SpectrumPlugin;)Lcom/facebook/jni/HybridData;

    move-result-object v0

    iput-object v0, p0, Lcom/facebook/spectrum/SpectrumHybrid;->mHybridData:Lcom/facebook/jni/HybridData;
    :try_end_1e
    .catchall {:try_start_f .. :try_end_1e} :catchall_20

    monitor-exit p0

    return-void

    :catchall_20
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public isAvailable()Z
    .registers 6
    .annotation build Landroid/annotation/SuppressLint;
        value = {
            "CatchGeneralException"
        }
    .end annotation

    const/4 v0, 0x1

    const/4 v1, 0x0

    :try_start_2
    invoke-virtual {p0}, Lcom/facebook/spectrum/SpectrumHybrid;->ensureNativeLibraryInitialized()V

    iget-object v2, p0, Lcom/facebook/spectrum/SpectrumHybrid;->mHybridData:Lcom/facebook/jni/HybridData;

    if-eqz v2, :cond_12

    iget-object v2, p0, Lcom/facebook/spectrum/SpectrumHybrid;->mHybridData:Lcom/facebook/jni/HybridData;

    invoke-virtual {v2}, Lcom/facebook/jni/HybridData;->isValid()Z

    move-result v2
    :try_end_f
    .catchall {:try_start_2 .. :try_end_f} :catchall_14

    if-eqz v2, :cond_12

    goto :goto_13

    :cond_12
    const/4 v0, 0x0

    :goto_13
    return v0

    :catchall_14
    move-exception v2

    const/4 v3, 0x0

    new-array v0, v0, [Ljava/lang/Object;

    invoke-virtual {v2}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;

    move-result-object v4

    aput-object v4, v0, v1

    const-string v4, "Failed to load and initialize native: %s"

    invoke-static {v3, v4, v0}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v0

    const-string v3, "SpectrumHybrid"

    invoke-static {v3, v0, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    return v1
.end method

.method public transcode(Ljava/io/InputStream;Ljava/io/OutputStream;Lcom/facebook/spectrum/options/TranscodeOptions;)Lcom/facebook/spectrum/SpectrumResult;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation

    invoke-virtual {p0}, Lcom/facebook/spectrum/SpectrumHybrid;->ensureNativeLibraryInitialized()V

    invoke-direct {p0, p1, p2, p3}, Lcom/facebook/spectrum/SpectrumHybrid;->nativeTranscode(Ljava/io/InputStream;Ljava/io/OutputStream;Lcom/facebook/spectrum/options/TranscodeOptions;)Lcom/facebook/spectrum/SpectrumResult;

    move-result-object p1

    return-object p1
.end method

.method public transform(Landroid/graphics/Bitmap;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/TransformOptions;)Lcom/facebook/spectrum/SpectrumResult;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation

    invoke-virtual {p0}, Lcom/facebook/spectrum/SpectrumHybrid;->ensureNativeLibraryInitialized()V

    invoke-direct {p0, p1, p2, p3}, Lcom/facebook/spectrum/SpectrumHybrid;->nativeTransform(Landroid/graphics/Bitmap;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/TransformOptions;)Lcom/facebook/spectrum/SpectrumResult;

    move-result-object p1

    return-object p1
.end method