public class

KitKatPurgeableDecoder

extends Object
implements PlatformDecoder
java.lang.Object
   ↳ com.facebook.imagepipeline.platform.KitKatPurgeableDecoder

Class Overview

Bitmap Decoder implementation for KitKat

The MemoryFile trick used in GingerbreadPurgeableDecoder does not work in KitKat. Here, we instead use Java memory to store the encoded images, but make use of a pool to minimize allocations. We cannot decode from a stream, as that does not support purgeable decodes.

Summary

Fields
protected static final byte[] EOI
Public Constructors
KitKatPurgeableDecoder(FlexByteArrayPool flexByteArrayPool)
Public Methods
CloseableReference<Bitmap> decodeFromEncodedImage(EncodedImage encodedImage, Bitmap.Config bitmapConfig)
Creates a bitmap from encoded bytes.
CloseableReference<Bitmap> decodeJPEGFromEncodedImage(EncodedImage encodedImage, Bitmap.Config bitmapConfig, int length)
Creates a bitmap from encoded JPEG bytes.
CloseableReference<Bitmap> pinBitmap(Bitmap bitmap)
Pins the bitmap
Protected Methods
Bitmap decodeByteArrayAsPurgeable(CloseableReference<PooledByteBuffer> bytesRef, BitmapFactory.Options options)
Decodes a byteArray into a purgeable bitmap
Bitmap decodeJPEGByteArrayAsPurgeable(CloseableReference<PooledByteBuffer> bytesRef, int length, BitmapFactory.Options options)
Decodes a byteArray containing jpeg encoded bytes into a purgeable bitmap

Adds a JFIF End-Of-Image marker if needed before decoding.

static boolean endsWithEOI(CloseableReference<PooledByteBuffer> bytesRef, int length)
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.facebook.imagepipeline.platform.PlatformDecoder

Fields

protected static final byte[] EOI

Public Constructors

public KitKatPurgeableDecoder (FlexByteArrayPool flexByteArrayPool)

Public Methods

public CloseableReference<Bitmap> decodeFromEncodedImage (EncodedImage encodedImage, Bitmap.Config bitmapConfig)

Creates a bitmap from encoded bytes.

Parameters
encodedImage the encoded image with reference to the encoded bytes
bitmapConfig the android.graphics.Bitmap.Config used to create the decoded Bitmap
Returns
  • the bitmap
Throws
if the pool is full
OutOfMemoryError if the Bitmap cannot be allocated

public CloseableReference<Bitmap> decodeJPEGFromEncodedImage (EncodedImage encodedImage, Bitmap.Config bitmapConfig, int length)

Creates a bitmap from encoded JPEG bytes. Supports a partial JPEG image.

Parameters
encodedImage the encoded image with reference to the encoded bytes
bitmapConfig the android.graphics.Bitmap.Config used to create the decoded Bitmap
length the number of encoded bytes in the buffer
Returns
  • the bitmap
Throws
if the pool is full
OutOfMemoryError if the Bitmap cannot be allocated

public CloseableReference<Bitmap> pinBitmap (Bitmap bitmap)

Pins the bitmap

Protected Methods

protected Bitmap decodeByteArrayAsPurgeable (CloseableReference<PooledByteBuffer> bytesRef, BitmapFactory.Options options)

Decodes a byteArray into a purgeable bitmap

Parameters
bytesRef the byte buffer that contains the encoded bytes
options the options passed to the BitmapFactory

protected Bitmap decodeJPEGByteArrayAsPurgeable (CloseableReference<PooledByteBuffer> bytesRef, int length, BitmapFactory.Options options)

Decodes a byteArray containing jpeg encoded bytes into a purgeable bitmap

Adds a JFIF End-Of-Image marker if needed before decoding.

Parameters
bytesRef the byte buffer that contains the encoded bytes
length the number of encoded bytes in the buffer
options the options passed to the BitmapFactory

protected static boolean endsWithEOI (CloseableReference<PooledByteBuffer> bytesRef, int length)