{- | 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