ffmpeg-light-0.13.0: Minimal bindings to the FFmpeg library.
Safe HaskellNone
LanguageHaskell2010

Codec.FFmpeg.Juicy

Description

Convert between FFmpeg frames and JuicyPixels images.

Synopsis

Documentation

frameToVector :: AVFrame -> IO (Maybe (Vector CUChar)) Source #

Convert AVFrame to a Vector.

frameToVectorT :: AVFrame -> MaybeT IO (Vector CUChar) Source #

Convert AVFrame to a Vector with the result in the MaybeT transformer.

toJuicyT :: AVFrame -> MaybeT IO DynamicImage Source #

Convert an AVFrame to a DynamicImage with the result in the MaybeT transformer.

toJuicyT = MaybeT . toJuicy

toJuicy :: AVFrame -> IO (Maybe DynamicImage) Source #

Convert an AVFrame to a DynamicImage.

toJuicyImage :: forall p. JuicyPixelFormat p => AVFrame -> IO (Maybe (Image p)) Source #

Convert an AVFrame to an Image.

saveJuicy :: FilePath -> AVFrame -> IO () Source #

Save an AVFrame to a PNG file on disk assuming the frame could be converted to a DynamicImage using toJuicy.

class Pixel a => JuicyPixelFormat a where Source #

Mapping of JuicyPixels pixel types to FFmpeg pixel formats.

Methods

juicyPixelFormat :: proxy a -> AVPixelFormat Source #

Instances

Instances details
JuicyPixelFormat Pixel8 Source # 
Instance details

Defined in Codec.FFmpeg.Juicy

Methods

juicyPixelFormat :: proxy Pixel8 -> AVPixelFormat Source #

JuicyPixelFormat PixelRGB8 Source # 
Instance details

Defined in Codec.FFmpeg.Juicy

Methods

juicyPixelFormat :: proxy PixelRGB8 -> AVPixelFormat Source #

JuicyPixelFormat PixelRGBA8 Source # 
Instance details

Defined in Codec.FFmpeg.Juicy

Methods

juicyPixelFormat :: proxy PixelRGBA8 -> AVPixelFormat Source #

juicyPixelStride :: forall a proxy. Pixel a => proxy a -> Int Source #

Bytes-per-pixel for a JuicyPixels Pixel type.

imageReaderT :: forall m p. (Functor m, MonadIO m, MonadError String m, JuicyPixelFormat p) => InputSource -> m (IO (Maybe (Image p)), IO ()) Source #

Read frames from a video stream.

imageReader :: JuicyPixelFormat p => InputSource -> IO (IO (Maybe (Image p)), IO ()) Source #

Read frames from a video stream. Errors are thrown as IOExceptions.

imageReaderTimeT :: forall m p. (Functor m, MonadIO m, MonadError String m, JuicyPixelFormat p) => InputSource -> m (IO (Maybe (Image p, Double)), IO ()) Source #

Read time stamped frames from a video stream. Time is given in seconds from the start of the stream.

imageReaderTime :: JuicyPixelFormat p => InputSource -> IO (IO (Maybe (Image p, Double)), IO ()) Source #

Read time stamped frames from a video stream. Time is given in seconds from the start of the stream. Errors are thrown as IOExceptions.

imageWriter :: forall p. JuicyPixelFormat p => EncodingParams -> FilePath -> IO (Maybe (Image p) -> IO ()) Source #

Open a target file for writing a video stream. When the returned function is applied to Nothing, the output stream is closed. Note that Nothing must be provided when finishing in order to properly terminate video encoding.

Support for source images that are of a different size to the output resolution is limited to non-palettized destination formats (i.e. those that are handled by libswscaler). Practically, this means that animated gif output is only supported if the source images are of the target resolution.