package com.bumptech.glide.load.resource.bitmap; import android.graphics.Bitmap; import android.os.ParcelFileDescriptor; import com.bumptech.glide.load.Encoder; import com.bumptech.glide.load.ResourceDecoder; import com.bumptech.glide.load.ResourceEncoder; import com.bumptech.glide.load.model.ImageVideoWrapper; import com.bumptech.glide.load.model.ImageVideoWrapperEncoder; import com.bumptech.glide.provider.DataLoadProvider; import java.io.File; import java.io.InputStream; /** * A {@link com.bumptech.glide.provider.DataLoadProvider} for loading either an {@link java.io.InputStream} or an * {@link android.os.ParcelFileDescriptor} as an {@link android.graphics.Bitmap}. */ public class ImageVideoDataLoadProvider implements DataLoadProvider { private final ImageVideoBitmapDecoder sourceDecoder; private final ResourceDecoder cacheDecoder; private final ResourceEncoder encoder; private final ImageVideoWrapperEncoder sourceEncoder; public ImageVideoDataLoadProvider(DataLoadProvider streamBitmapProvider, DataLoadProvider fileDescriptorBitmapProvider) { encoder = streamBitmapProvider.getEncoder(); sourceEncoder = new ImageVideoWrapperEncoder(streamBitmapProvider.getSourceEncoder(), fileDescriptorBitmapProvider.getSourceEncoder()); cacheDecoder = streamBitmapProvider.getCacheDecoder(); sourceDecoder = new ImageVideoBitmapDecoder(streamBitmapProvider.getSourceDecoder(), fileDescriptorBitmapProvider.getSourceDecoder()); } @Override public ResourceDecoder getCacheDecoder() { return cacheDecoder; } @Override public ResourceDecoder getSourceDecoder() { return sourceDecoder; } @Override public Encoder getSourceEncoder() { return sourceEncoder; } @Override public ResourceEncoder getEncoder() { return encoder; } }