packages feed

gi-gstvideo-0.1.6.13: GI/GstVideo/Callbacks.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.GstVideo.Callbacks
    ( 

 -- * Signals
-- ** VideoConvertSampleCallback
    VideoConvertSampleCallback              ,
    VideoConvertSampleCallbackC             ,
    mkVideoConvertSampleCallback            ,
    noVideoConvertSampleCallback            ,
    videoConvertSampleCallbackClosure       ,
    videoConvertSampleCallbackWrapper       ,


-- ** VideoFormatPack
    VideoFormatPack                         ,
    VideoFormatPackC                        ,
    mkVideoFormatPack                       ,
    noVideoFormatPack                       ,
    videoFormatPackClosure                  ,
    videoFormatPackWrapper                  ,


-- ** VideoFormatUnpack
    VideoFormatUnpack                       ,
    VideoFormatUnpackC                      ,
    mkVideoFormatUnpack                     ,
    noVideoFormatUnpack                     ,
    videoFormatUnpackClosure                ,
    videoFormatUnpackWrapper                ,


-- ** VideoGLTextureUpload
    VideoGLTextureUpload                    ,
    VideoGLTextureUploadC                   ,
    mkVideoGLTextureUpload                  ,
    noVideoGLTextureUpload                  ,
    videoGLTextureUploadClosure             ,
    videoGLTextureUploadWrapper             ,


-- ** VideoMetaMapFieldCallback
    VideoMetaMapFieldCallback               ,
    VideoMetaMapFieldCallbackC              ,
    mkVideoMetaMapFieldCallback             ,
    noVideoMetaMapFieldCallback             ,
    videoMetaMapFieldCallbackClosure        ,
    videoMetaMapFieldCallbackWrapper        ,


-- ** VideoMetaUnmapFieldCallback
    VideoMetaUnmapFieldCallback             ,
    VideoMetaUnmapFieldCallbackC            ,
    mkVideoMetaUnmapFieldCallback           ,
    noVideoMetaUnmapFieldCallback           ,
    videoMetaUnmapFieldCallbackClosure      ,
    videoMetaUnmapFieldCallbackWrapper      ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.GstVideo.Types

import qualified GI.Gst as Gst

-- callback VideoMetaUnmapFieldCallback
videoMetaUnmapFieldCallbackClosure :: VideoMetaUnmapFieldCallback -> IO Closure
videoMetaUnmapFieldCallbackClosure cb = newCClosure =<< mkVideoMetaUnmapFieldCallback wrapped
    where wrapped = videoMetaUnmapFieldCallbackWrapper Nothing cb

type VideoMetaUnmapFieldCallbackC =
    Ptr VideoMeta ->
    Word32 ->
    Ptr Gst.MapInfo ->
    IO CInt

foreign import ccall "wrapper"
    mkVideoMetaUnmapFieldCallback :: VideoMetaUnmapFieldCallbackC -> IO (FunPtr VideoMetaUnmapFieldCallbackC)

type VideoMetaUnmapFieldCallback =
    VideoMeta ->
    Word32 ->
    Gst.MapInfo ->
    IO Bool

noVideoMetaUnmapFieldCallback :: Maybe VideoMetaUnmapFieldCallback
noVideoMetaUnmapFieldCallback = Nothing

videoMetaUnmapFieldCallbackWrapper ::
    Maybe (Ptr (FunPtr (VideoMetaUnmapFieldCallbackC))) ->
    VideoMetaUnmapFieldCallback ->
    Ptr VideoMeta ->
    Word32 ->
    Ptr Gst.MapInfo ->
    IO CInt
videoMetaUnmapFieldCallbackWrapper funptrptr _cb meta plane info = do
    meta' <- (newPtr 112 VideoMeta) meta
    info' <- (newPtr 104 Gst.MapInfo) info
    result <- _cb  meta' plane info'
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'

-- callback VideoMetaMapFieldCallback
videoMetaMapFieldCallbackClosure :: VideoMetaMapFieldCallback -> IO Closure
videoMetaMapFieldCallbackClosure cb = newCClosure =<< mkVideoMetaMapFieldCallback wrapped
    where wrapped = videoMetaMapFieldCallbackWrapper Nothing cb

type VideoMetaMapFieldCallbackC =
    Ptr VideoMeta ->
    Word32 ->
    Ptr Gst.MapInfo ->
    Ptr () ->
    Int32 ->
    CUInt ->
    IO CInt

foreign import ccall "wrapper"
    mkVideoMetaMapFieldCallback :: VideoMetaMapFieldCallbackC -> IO (FunPtr VideoMetaMapFieldCallbackC)

type VideoMetaMapFieldCallback =
    VideoMeta ->
    Word32 ->
    Gst.MapInfo ->
    Ptr () ->
    Int32 ->
    [Gst.MapFlags] ->
    IO Bool

noVideoMetaMapFieldCallback :: Maybe VideoMetaMapFieldCallback
noVideoMetaMapFieldCallback = Nothing

videoMetaMapFieldCallbackWrapper ::
    Maybe (Ptr (FunPtr (VideoMetaMapFieldCallbackC))) ->
    VideoMetaMapFieldCallback ->
    Ptr VideoMeta ->
    Word32 ->
    Ptr Gst.MapInfo ->
    Ptr () ->
    Int32 ->
    CUInt ->
    IO CInt
videoMetaMapFieldCallbackWrapper funptrptr _cb meta plane info data_ stride flags = do
    meta' <- (newPtr 112 VideoMeta) meta
    info' <- (newPtr 104 Gst.MapInfo) info
    let flags' = wordToGFlags flags
    result <- _cb  meta' plane info' data_ stride flags'
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'

-- callback VideoGLTextureUpload
videoGLTextureUploadClosure :: VideoGLTextureUpload -> IO Closure
videoGLTextureUploadClosure cb = newCClosure =<< mkVideoGLTextureUpload wrapped
    where wrapped = videoGLTextureUploadWrapper Nothing cb

type VideoGLTextureUploadC =
    Ptr VideoGLTextureUploadMeta ->
    Word32 ->
    IO CInt

foreign import ccall "wrapper"
    mkVideoGLTextureUpload :: VideoGLTextureUploadC -> IO (FunPtr VideoGLTextureUploadC)

type VideoGLTextureUpload =
    VideoGLTextureUploadMeta ->
    Word32 ->
    IO Bool

noVideoGLTextureUpload :: Maybe VideoGLTextureUpload
noVideoGLTextureUpload = Nothing

videoGLTextureUploadWrapper ::
    Maybe (Ptr (FunPtr (VideoGLTextureUploadC))) ->
    VideoGLTextureUpload ->
    Ptr VideoGLTextureUploadMeta ->
    Word32 ->
    IO CInt
videoGLTextureUploadWrapper funptrptr _cb meta textureId = do
    meta' <- (newPtr 80 VideoGLTextureUploadMeta) meta
    result <- _cb  meta' textureId
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'

-- callback VideoFormatUnpack
videoFormatUnpackClosure :: VideoFormatUnpack -> IO Closure
videoFormatUnpackClosure cb = newCClosure =<< mkVideoFormatUnpack wrapped
    where wrapped = videoFormatUnpackWrapper Nothing cb

type VideoFormatUnpackC =
    Ptr VideoFormatInfo ->
    CUInt ->
    Ptr () ->
    Ptr () ->
    Int32 ->
    Int32 ->
    Int32 ->
    Int32 ->
    IO ()

foreign import ccall "wrapper"
    mkVideoFormatUnpack :: VideoFormatUnpackC -> IO (FunPtr VideoFormatUnpackC)

type VideoFormatUnpack =
    VideoFormatInfo ->
    [VideoPackFlags] ->
    Ptr () ->
    Ptr () ->
    Int32 ->
    Int32 ->
    Int32 ->
    Int32 ->
    IO ()

noVideoFormatUnpack :: Maybe VideoFormatUnpack
noVideoFormatUnpack = Nothing

videoFormatUnpackWrapper ::
    Maybe (Ptr (FunPtr (VideoFormatUnpackC))) ->
    VideoFormatUnpack ->
    Ptr VideoFormatInfo ->
    CUInt ->
    Ptr () ->
    Ptr () ->
    Int32 ->
    Int32 ->
    Int32 ->
    Int32 ->
    IO ()
videoFormatUnpackWrapper funptrptr _cb info flags dest data_ stride x y width = do
    info' <- (newPtr 232 VideoFormatInfo) info
    let flags' = wordToGFlags flags
    _cb  info' flags' dest data_ stride x y width
    maybeReleaseFunPtr funptrptr

-- callback VideoFormatPack
videoFormatPackClosure :: VideoFormatPack -> IO Closure
videoFormatPackClosure cb = newCClosure =<< mkVideoFormatPack wrapped
    where wrapped = videoFormatPackWrapper Nothing cb

type VideoFormatPackC =
    Ptr VideoFormatInfo ->
    CUInt ->
    Ptr () ->
    Int32 ->
    Ptr () ->
    Int32 ->
    CUInt ->
    Int32 ->
    Int32 ->
    IO ()

foreign import ccall "wrapper"
    mkVideoFormatPack :: VideoFormatPackC -> IO (FunPtr VideoFormatPackC)

type VideoFormatPack =
    VideoFormatInfo ->
    [VideoPackFlags] ->
    Ptr () ->
    Int32 ->
    Ptr () ->
    Int32 ->
    [VideoChromaSite] ->
    Int32 ->
    Int32 ->
    IO ()

noVideoFormatPack :: Maybe VideoFormatPack
noVideoFormatPack = Nothing

videoFormatPackWrapper ::
    Maybe (Ptr (FunPtr (VideoFormatPackC))) ->
    VideoFormatPack ->
    Ptr VideoFormatInfo ->
    CUInt ->
    Ptr () ->
    Int32 ->
    Ptr () ->
    Int32 ->
    CUInt ->
    Int32 ->
    Int32 ->
    IO ()
videoFormatPackWrapper funptrptr _cb info flags src sstride data_ stride chromaSite y width = do
    info' <- (newPtr 232 VideoFormatInfo) info
    let flags' = wordToGFlags flags
    let chromaSite' = wordToGFlags chromaSite
    _cb  info' flags' src sstride data_ stride chromaSite' y width
    maybeReleaseFunPtr funptrptr

-- callback VideoConvertSampleCallback
videoConvertSampleCallbackClosure :: VideoConvertSampleCallback -> IO Closure
videoConvertSampleCallbackClosure cb = newCClosure =<< mkVideoConvertSampleCallback wrapped
    where wrapped = videoConvertSampleCallbackWrapper Nothing cb

type VideoConvertSampleCallbackC =
    Ptr Gst.Sample ->
    Ptr GError ->
    Ptr () ->
    IO ()

foreign import ccall "wrapper"
    mkVideoConvertSampleCallback :: VideoConvertSampleCallbackC -> IO (FunPtr VideoConvertSampleCallbackC)

type VideoConvertSampleCallback =
    Gst.Sample ->
    GError ->
    IO ()

noVideoConvertSampleCallback :: Maybe VideoConvertSampleCallback
noVideoConvertSampleCallback = Nothing

videoConvertSampleCallbackWrapper ::
    Maybe (Ptr (FunPtr (VideoConvertSampleCallbackC))) ->
    VideoConvertSampleCallback ->
    Ptr Gst.Sample ->
    Ptr GError ->
    Ptr () ->
    IO ()
videoConvertSampleCallbackWrapper funptrptr _cb sample error_ _ = do
    sample' <- (newBoxed Gst.Sample) sample
    error_' <- (newBoxed GError) error_
    _cb  sample' error_'
    maybeReleaseFunPtr funptrptr