package com.bumptech.glide.load.resource.bitmap; import android.graphics.Bitmap; import android.os.ParcelFileDescriptor; import com.bumptech.glide.Resource; import com.bumptech.glide.load.ResourceDecoder; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.DecodeFormat; import java.io.IOException; public class FileDescriptorBitmapDecoder implements ResourceDecoder<ParcelFileDescriptor, Bitmap> { private final VideoBitmapDecoder bitmapDecoder; private final BitmapPool bitmapPool; private DecodeFormat decodeFormat; public FileDescriptorBitmapDecoder(BitmapPool bitmapPool) { this(new VideoBitmapDecoder(), bitmapPool, DecodeFormat.PREFER_RGB_565); } public FileDescriptorBitmapDecoder(VideoBitmapDecoder bitmapDecoder, BitmapPool bitmapPool, DecodeFormat decodeFormat) { this.bitmapDecoder = bitmapDecoder; this.bitmapPool = bitmapPool; this.decodeFormat = decodeFormat; } @Override public Resource<Bitmap> decode(ParcelFileDescriptor source, int width, int height) throws IOException { Bitmap bitmap = bitmapDecoder.decode(source, bitmapPool, width, height, decodeFormat); if (bitmap == null) { return null; } else { return new BitmapResource(bitmap, bitmapPool); } } @Override public String getId() { return "FileDescriptorBitmapDecoder.com.bumptech.glide.load.data.bitmap"; } }