gi-gstaudio-0.1.6.13: GI/GstAudio/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.GstAudio.Callbacks
(
-- * Signals
-- ** AudioBaseSinkCustomSlavingCallback
AudioBaseSinkCustomSlavingCallback ,
AudioBaseSinkCustomSlavingCallbackC ,
audioBaseSinkCustomSlavingCallbackClosure,
audioBaseSinkCustomSlavingCallbackWrapper,
mkAudioBaseSinkCustomSlavingCallback ,
noAudioBaseSinkCustomSlavingCallback ,
-- ** AudioClockGetTimeFunc
AudioClockGetTimeFunc ,
AudioClockGetTimeFuncC ,
audioClockGetTimeFuncClosure ,
audioClockGetTimeFuncWrapper ,
mkAudioClockGetTimeFunc ,
noAudioClockGetTimeFunc ,
-- ** AudioFormatPack
AudioFormatPack ,
AudioFormatPackC ,
audioFormatPackClosure ,
audioFormatPackWrapper ,
mkAudioFormatPack ,
noAudioFormatPack ,
-- ** AudioFormatUnpack
AudioFormatUnpack ,
AudioFormatUnpackC ,
audioFormatUnpackClosure ,
audioFormatUnpackWrapper ,
mkAudioFormatUnpack ,
noAudioFormatUnpack ,
-- ** AudioRingBufferCallback
AudioRingBufferCallback ,
AudioRingBufferCallbackC ,
audioRingBufferCallbackClosure ,
audioRingBufferCallbackWrapper ,
mkAudioRingBufferCallback ,
noAudioRingBufferCallback ,
) 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.GstAudio.Types
import qualified GI.Gst as Gst
-- callback AudioRingBufferCallback
audioRingBufferCallbackClosure :: AudioRingBufferCallback -> IO Closure
audioRingBufferCallbackClosure cb = newCClosure =<< mkAudioRingBufferCallback wrapped
where wrapped = audioRingBufferCallbackWrapper Nothing cb
type AudioRingBufferCallbackC =
Ptr AudioRingBuffer ->
Ptr Word8 ->
Word32 ->
Ptr () ->
IO ()
foreign import ccall "wrapper"
mkAudioRingBufferCallback :: AudioRingBufferCallbackC -> IO (FunPtr AudioRingBufferCallbackC)
type AudioRingBufferCallback =
AudioRingBuffer ->
ByteString ->
IO ()
noAudioRingBufferCallback :: Maybe AudioRingBufferCallback
noAudioRingBufferCallback = Nothing
audioRingBufferCallbackWrapper ::
Maybe (Ptr (FunPtr (AudioRingBufferCallbackC))) ->
AudioRingBufferCallback ->
Ptr AudioRingBuffer ->
Ptr Word8 ->
Word32 ->
Ptr () ->
IO ()
audioRingBufferCallbackWrapper funptrptr _cb rbuf data_ len _ = do
rbuf' <- (newObject AudioRingBuffer) rbuf
data_' <- (unpackByteStringWithLength len) data_
_cb rbuf' data_'
maybeReleaseFunPtr funptrptr
-- callback AudioFormatUnpack
audioFormatUnpackClosure :: AudioFormatUnpack -> IO Closure
audioFormatUnpackClosure cb = newCClosure =<< mkAudioFormatUnpack wrapped
where wrapped = audioFormatUnpackWrapper Nothing cb
type AudioFormatUnpackC =
Ptr AudioFormatInfo ->
CUInt ->
Ptr Word8 ->
Ptr Word8 ->
Int32 ->
IO ()
foreign import ccall "wrapper"
mkAudioFormatUnpack :: AudioFormatUnpackC -> IO (FunPtr AudioFormatUnpackC)
type AudioFormatUnpack =
AudioFormatInfo ->
AudioPackFlags ->
Ptr Word8 ->
Ptr Word8 ->
Int32 ->
IO ()
noAudioFormatUnpack :: Maybe AudioFormatUnpack
noAudioFormatUnpack = Nothing
audioFormatUnpackWrapper ::
Maybe (Ptr (FunPtr (AudioFormatUnpackC))) ->
AudioFormatUnpack ->
Ptr AudioFormatInfo ->
CUInt ->
Ptr Word8 ->
Ptr Word8 ->
Int32 ->
IO ()
audioFormatUnpackWrapper funptrptr _cb info flags dest data_ length_ = do
info' <- (newPtr 104 AudioFormatInfo) info
let flags' = (toEnum . fromIntegral) flags
_cb info' flags' dest data_ length_
maybeReleaseFunPtr funptrptr
-- callback AudioFormatPack
audioFormatPackClosure :: AudioFormatPack -> IO Closure
audioFormatPackClosure cb = newCClosure =<< mkAudioFormatPack wrapped
where wrapped = audioFormatPackWrapper Nothing cb
type AudioFormatPackC =
Ptr AudioFormatInfo ->
CUInt ->
Ptr Word8 ->
Ptr Word8 ->
Int32 ->
IO ()
foreign import ccall "wrapper"
mkAudioFormatPack :: AudioFormatPackC -> IO (FunPtr AudioFormatPackC)
type AudioFormatPack =
AudioFormatInfo ->
AudioPackFlags ->
Ptr Word8 ->
Ptr Word8 ->
Int32 ->
IO ()
noAudioFormatPack :: Maybe AudioFormatPack
noAudioFormatPack = Nothing
audioFormatPackWrapper ::
Maybe (Ptr (FunPtr (AudioFormatPackC))) ->
AudioFormatPack ->
Ptr AudioFormatInfo ->
CUInt ->
Ptr Word8 ->
Ptr Word8 ->
Int32 ->
IO ()
audioFormatPackWrapper funptrptr _cb info flags src data_ length_ = do
info' <- (newPtr 104 AudioFormatInfo) info
let flags' = (toEnum . fromIntegral) flags
_cb info' flags' src data_ length_
maybeReleaseFunPtr funptrptr
-- callback AudioClockGetTimeFunc
audioClockGetTimeFuncClosure :: AudioClockGetTimeFunc -> IO Closure
audioClockGetTimeFuncClosure cb = newCClosure =<< mkAudioClockGetTimeFunc wrapped
where wrapped = audioClockGetTimeFuncWrapper Nothing cb
type AudioClockGetTimeFuncC =
Ptr Gst.Clock ->
Ptr () ->
IO Word64
foreign import ccall "wrapper"
mkAudioClockGetTimeFunc :: AudioClockGetTimeFuncC -> IO (FunPtr AudioClockGetTimeFuncC)
type AudioClockGetTimeFunc =
Gst.Clock ->
IO Word64
noAudioClockGetTimeFunc :: Maybe AudioClockGetTimeFunc
noAudioClockGetTimeFunc = Nothing
audioClockGetTimeFuncWrapper ::
Maybe (Ptr (FunPtr (AudioClockGetTimeFuncC))) ->
AudioClockGetTimeFunc ->
Ptr Gst.Clock ->
Ptr () ->
IO Word64
audioClockGetTimeFuncWrapper funptrptr _cb clock _ = do
clock' <- (newObject Gst.Clock) clock
result <- _cb clock'
maybeReleaseFunPtr funptrptr
return result
-- callback AudioBaseSinkCustomSlavingCallback
audioBaseSinkCustomSlavingCallbackClosure :: AudioBaseSinkCustomSlavingCallback -> IO Closure
audioBaseSinkCustomSlavingCallbackClosure cb = newCClosure =<< mkAudioBaseSinkCustomSlavingCallback wrapped
where wrapped = audioBaseSinkCustomSlavingCallbackWrapper Nothing cb
type AudioBaseSinkCustomSlavingCallbackC =
Ptr AudioBaseSink ->
Word64 ->
Word64 ->
Int64 ->
CUInt ->
Ptr () ->
IO ()
foreign import ccall "wrapper"
mkAudioBaseSinkCustomSlavingCallback :: AudioBaseSinkCustomSlavingCallbackC -> IO (FunPtr AudioBaseSinkCustomSlavingCallbackC)
type AudioBaseSinkCustomSlavingCallback =
AudioBaseSink ->
Word64 ->
Word64 ->
Int64 ->
AudioBaseSinkDiscontReason ->
IO ()
noAudioBaseSinkCustomSlavingCallback :: Maybe AudioBaseSinkCustomSlavingCallback
noAudioBaseSinkCustomSlavingCallback = Nothing
audioBaseSinkCustomSlavingCallbackWrapper ::
Maybe (Ptr (FunPtr (AudioBaseSinkCustomSlavingCallbackC))) ->
AudioBaseSinkCustomSlavingCallback ->
Ptr AudioBaseSink ->
Word64 ->
Word64 ->
Int64 ->
CUInt ->
Ptr () ->
IO ()
audioBaseSinkCustomSlavingCallbackWrapper funptrptr _cb sink etime itime requestedSkew discontReason _ = do
sink' <- (newObject AudioBaseSink) sink
let discontReason' = (toEnum . fromIntegral) discontReason
_cb sink' etime itime requestedSkew discontReason'
maybeReleaseFunPtr funptrptr