{-# LANGUAGE ForeignFunctionInterface, FlexibleContexts #-}
-- | Interface to initialize FFmpeg, decode video files, encode video
-- files, and convert decoded image frames to JuicyPixels images.
module Codec.FFmpeg (-- * Initialization
                     initFFmpeg, 
                     -- * Decoding
                     imageReader, imageReaderTime,
                     -- * Encoding
                     EncodingParams(..), defaultParams, imageWriter,
                     -- * JuicyPixels interop
                     toJuicy, toJuicyT, saveJuicy,
                     -- * Types and Enums
                     module Codec.FFmpeg.Types, 
                     module Codec.FFmpeg.Enums
                     )where
import Codec.FFmpeg.Encode
import Codec.FFmpeg.Enums
import Codec.FFmpeg.Juicy
import Codec.FFmpeg.Types

foreign import ccall "av_register_all" av_register_all :: IO ()

-- foreign import ccall "avcodec_register_all" avcodec_register_all :: IO ()

-- | Initialize FFmpeg by registering all known codecs. This /must/
-- be called before using other FFmpeg functions.
initFFmpeg :: IO ()
initFFmpeg = av_register_all