gi-gstaudio-0.1.6.13: GI/GstAudio/Structs/AudioCdSrcTrack.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)
CD track abstraction to communicate TOC entries to the base class.
This structure is only for use by sub-classed in connection with
gst_audio_cd_src_add_track().
Applications will be informed of the available tracks via a TOC message
on the pipeline's #GstBus instead.
-}
module GI.GstAudio.Structs.AudioCdSrcTrack
(
-- * Exported types
AudioCdSrcTrack(..) ,
newZeroAudioCdSrcTrack ,
noAudioCdSrcTrack ,
-- * Properties
-- ** End
audioCdSrcTrackReadEnd ,
-- ** IsAudio
audioCdSrcTrackReadIsAudio ,
-- ** Num
audioCdSrcTrackReadNum ,
-- ** Start
audioCdSrcTrackReadStart ,
-- ** Tags
audioCdSrcTrackReadTags ,
) 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 GI.GstAudio.Callbacks
import qualified GI.Gst as Gst
newtype AudioCdSrcTrack = AudioCdSrcTrack (ForeignPtr AudioCdSrcTrack)
-- | Construct a `AudioCdSrcTrack` struct initialized to zero.
newZeroAudioCdSrcTrack :: MonadIO m => m AudioCdSrcTrack
newZeroAudioCdSrcTrack = liftIO $ callocBytes 48 >>= wrapPtr AudioCdSrcTrack
noAudioCdSrcTrack :: Maybe AudioCdSrcTrack
noAudioCdSrcTrack = Nothing
audioCdSrcTrackReadIsAudio :: AudioCdSrcTrack -> IO Bool
audioCdSrcTrackReadIsAudio s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CInt
let val' = (/= 0) val
return val'
audioCdSrcTrackReadNum :: AudioCdSrcTrack -> IO Word32
audioCdSrcTrackReadNum s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 4) :: IO Word32
return val
audioCdSrcTrackReadStart :: AudioCdSrcTrack -> IO Word32
audioCdSrcTrackReadStart s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 8) :: IO Word32
return val
audioCdSrcTrackReadEnd :: AudioCdSrcTrack -> IO Word32
audioCdSrcTrackReadEnd s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 12) :: IO Word32
return val
audioCdSrcTrackReadTags :: AudioCdSrcTrack -> IO Gst.TagList
audioCdSrcTrackReadTags s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 16) :: IO (Ptr Gst.TagList)
val' <- (newBoxed Gst.TagList) val
return val'
type family ResolveAudioCdSrcTrackMethod (t :: Symbol) (o :: *) :: * where
ResolveAudioCdSrcTrackMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveAudioCdSrcTrackMethod t AudioCdSrcTrack, MethodInfo info AudioCdSrcTrack p) => IsLabelProxy t (AudioCdSrcTrack -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveAudioCdSrcTrackMethod t AudioCdSrcTrack, MethodInfo info AudioCdSrcTrack p) => IsLabel t (AudioCdSrcTrack -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif