Class VideoDecoder<T>
- java.lang.Object
-
- com.bumptech.glide.load.resource.bitmap.VideoDecoder<T>
-
- Type Parameters:
T- The type of data, currently eitherParcelFileDescriptororAssetFileDescriptor.
- All Implemented Interfaces:
ResourceDecoder<T,android.graphics.Bitmap>
- Direct Known Subclasses:
VideoBitmapDecoder
public class VideoDecoder<T> extends java.lang.Object implements ResourceDecoder<T,android.graphics.Bitmap>
Decodes video data to Bitmaps fromParcelFileDescriptors andAssetFileDescriptors.
-
-
Field Summary
Fields Modifier and Type Field Description static longDEFAULT_FRAMEA constant indicating we should use whatever frame we consider best, frequently not the first frame.static Option<java.lang.Integer>FRAME_OPTIONAn integer indicating the frame option used to retrieve a target frame.static Option<java.lang.Long>TARGET_FRAMEA long indicating the time position (in microseconds) of the target frame which will be retrieved.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ResourceDecoder<android.content.res.AssetFileDescriptor,android.graphics.Bitmap>asset(BitmapPool bitmapPool)static ResourceDecoder<java.nio.ByteBuffer,android.graphics.Bitmap>byteBuffer(BitmapPool bitmapPool)Resource<android.graphics.Bitmap>decode(T resource, int outWidth, int outHeight, Options options)Returns a decoded resource from the given data or null if no resource could be decoded.booleanhandles(T data, Options options)Returnstrueif this decoder is capable of decoding the given source with the given options, andfalseotherwise.static ResourceDecoder<android.os.ParcelFileDescriptor,android.graphics.Bitmap>parcel(BitmapPool bitmapPool)
-
-
-
Field Detail
-
DEFAULT_FRAME
public static final long DEFAULT_FRAME
A constant indicating we should use whatever frame we consider best, frequently not the first frame.- See Also:
- Constant Field Values
-
TARGET_FRAME
public static final Option<java.lang.Long> TARGET_FRAME
A long indicating the time position (in microseconds) of the target frame which will be retrieved.MediaMetadataRetriever.getFrameAtTime(long)is used to extract the video frame.When retrieving the frame at the given time position, there is no guarantee that the data source has a frame located at the position. When this happens, a frame nearby will be returned. If the long is negative, time position and option will ignored, and any frame that the implementation considers as representative may be returned.
-
FRAME_OPTION
public static final Option<java.lang.Integer> FRAME_OPTION
An integer indicating the frame option used to retrieve a target frame.This option will be ignored if
TARGET_FRAMEis not set or is set toDEFAULT_FRAME.- See Also:
MediaMetadataRetriever.getFrameAtTime(long, int)
-
-
Method Detail
-
asset
public static ResourceDecoder<android.content.res.AssetFileDescriptor,android.graphics.Bitmap> asset(BitmapPool bitmapPool)
-
parcel
public static ResourceDecoder<android.os.ParcelFileDescriptor,android.graphics.Bitmap> parcel(BitmapPool bitmapPool)
-
byteBuffer
@RequiresApi(api=23) public static ResourceDecoder<java.nio.ByteBuffer,android.graphics.Bitmap> byteBuffer(BitmapPool bitmapPool)
-
handles
public boolean handles(@NonNull T data, @NonNull Options options)Description copied from interface:ResourceDecoderReturnstrueif this decoder is capable of decoding the given source with the given options, andfalseotherwise.Decoders should make a best effort attempt to quickly determine if they are likely to be able to decode data, but should not attempt to completely read the given data. A typical implementation would check the file headers verify they match content the decoder expects to handle (i.e. a GIF decoder should verify that the image contains the GIF header block.
Decoders that return
truefromhandlesmay still returnnullfromResourceDecoder.decode(Object, int, int, Options)if the data is partial or formatted incorrectly.- Specified by:
handlesin interfaceResourceDecoder<T,android.graphics.Bitmap>
-
decode
public Resource<android.graphics.Bitmap> decode(@NonNull T resource, int outWidth, int outHeight, @NonNull Options options) throws java.io.IOException
Description copied from interface:ResourceDecoderReturns a decoded resource from the given data or null if no resource could be decoded.The
sourceis managed by the caller, there's no need to close it. The returnedResourcewill bereleasedwhen the engine sees fit.Note - The
widthandheightarguments are hints only, there is no requirement that the decoded resource exactly match the given dimensions. A typical use case would be to use the target dimensions to determine how much to downsample Bitmaps by to avoid overly large allocations.- Specified by:
decodein interfaceResourceDecoder<T,android.graphics.Bitmap>- Parameters:
resource- The data the resource should be decoded from.outWidth- The ideal width in pixels of the decoded resource, orTarget.SIZE_ORIGINALto indicate the original resource width.outHeight- The ideal height in pixels of the decoded resource, orTarget.SIZE_ORIGINALto indicate the original resource height.options- A map of string keys to objects that may or may not contain options available to this particular implementation. Implementations should not assume that any or all of their option keys are present. However, implementations may assume that if one of their option keys is present, it's value is non-null and is of the expected type.- Throws:
java.io.IOException- typically only if thesource(InputStream,ParcelFileDescriptoretc) throws while being read.
-
-