module Media.Streaming.GStreamer.Base.Adapter (
Adapter,
AdapterClass,
castToAdapter,
gTypeAdapter,
adapterNew,
adapterClear,
adapterPush,
adapterFlush,
adapterAvailable,
adapterAvailableFast,
adapterTakeBuffer
) where
import Control.Monad (liftM)
import Media.Streaming.GStreamer.Base.Types
import System.Glib.FFI
import System.Glib.GObject
import System.Glib.Flags
import System.Glib.Attributes
import System.Glib.Properties
adapterNew :: IO Adapter
adapterNew =
wrapNewGObject mkAdapter gst_adapter_new
adapterClear :: AdapterClass adapterT
=> adapterT
-> IO ()
adapterClear =
(\(Adapter arg1) -> withForeignPtr arg1 $ \argPtr1 ->gst_adapter_clear argPtr1) . toAdapter
adapterPush :: (AdapterClass adapterT, BufferClass bufferT)
=> adapterT
-> bufferT
-> IO ()
adapterPush adapter buffer =
(\(Adapter arg1) (Buffer arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gst_adapter_push argPtr1 argPtr2) (toAdapter adapter) (toBuffer buffer)
adapterFlush :: AdapterClass adapterT
=> adapterT
-> Word
-> IO ()
adapterFlush adapter flush =
(\(Adapter arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_adapter_flush argPtr1 arg2) (toAdapter adapter) $ fromIntegral flush
adapterAvailable :: AdapterClass adapterT
=> adapterT
-> IO Word
adapterAvailable adapter =
liftM fromIntegral $
(\(Adapter arg1) -> withForeignPtr arg1 $ \argPtr1 ->gst_adapter_available argPtr1) $ toAdapter adapter
adapterAvailableFast :: AdapterClass adapterT
=> adapterT
-> IO Word
adapterAvailableFast adapter =
liftM fromIntegral $
(\(Adapter arg1) -> withForeignPtr arg1 $ \argPtr1 ->gst_adapter_available_fast argPtr1) $ toAdapter adapter
adapterTakeBuffer :: AdapterClass adapterT
=> adapterT
-> Word
-> IO (Maybe Buffer)
adapterTakeBuffer adapter nBytes =
(\(Adapter arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_adapter_take_buffer argPtr1 arg2) (toAdapter adapter) (fromIntegral nBytes) >>=
maybePeek takeMiniObject
foreign import ccall safe "gst_adapter_new"
gst_adapter_new :: (IO (Ptr Adapter))
foreign import ccall safe "gst_adapter_clear"
gst_adapter_clear :: ((Ptr Adapter) -> (IO ()))
foreign import ccall safe "gst_adapter_push"
gst_adapter_push :: ((Ptr Adapter) -> ((Ptr Buffer) -> (IO ())))
foreign import ccall safe "gst_adapter_flush"
gst_adapter_flush :: ((Ptr Adapter) -> (CUInt -> (IO ())))
foreign import ccall safe "gst_adapter_available"
gst_adapter_available :: ((Ptr Adapter) -> (IO CUInt))
foreign import ccall safe "gst_adapter_available_fast"
gst_adapter_available_fast :: ((Ptr Adapter) -> (IO CUInt))
foreign import ccall safe "gst_adapter_take_buffer"
gst_adapter_take_buffer :: ((Ptr Adapter) -> (CUInt -> (IO (Ptr Buffer))))