packages feed

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