FileDescriptorBitmapDecoder.java revision ac28599e2b40e0dd6b97f6a91849585531264622
1package com.bumptech.glide.load.resource.bitmap;
2
3import android.graphics.Bitmap;
4import android.os.ParcelFileDescriptor;
5import com.bumptech.glide.Resource;
6import com.bumptech.glide.load.ResourceDecoder;
7import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
8import com.bumptech.glide.load.DecodeFormat;
9
10import java.io.IOException;
11
12public class FileDescriptorBitmapDecoder implements ResourceDecoder<ParcelFileDescriptor, Bitmap> {
13    private final VideoBitmapDecoder bitmapDecoder;
14    private final BitmapPool bitmapPool;
15    private DecodeFormat decodeFormat;
16
17    public FileDescriptorBitmapDecoder(BitmapPool bitmapPool) {
18        this(new VideoBitmapDecoder(), bitmapPool, DecodeFormat.PREFER_RGB_565);
19    }
20
21    public FileDescriptorBitmapDecoder(VideoBitmapDecoder bitmapDecoder, BitmapPool bitmapPool,
22            DecodeFormat decodeFormat) {
23        this.bitmapDecoder = bitmapDecoder;
24        this.bitmapPool = bitmapPool;
25        this.decodeFormat = decodeFormat;
26    }
27
28    @Override
29    public Resource<Bitmap> decode(ParcelFileDescriptor source, int width, int height) throws IOException {
30        Bitmap bitmap = bitmapDecoder.decode(source, bitmapPool, width, height, decodeFormat);
31        if (bitmap == null) {
32            return null;
33        } else {
34            return new BitmapResource(bitmap, bitmapPool);
35        }
36    }
37
38    @Override
39    public String getId() {
40        return "FileDescriptorBitmapDecoder.com.bumptech.glide.load.data.bitmap";
41    }
42}
43