{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) Information for an audio format. -} module GI.GstAudio.Structs.AudioFormatInfo ( -- * Exported types AudioFormatInfo(..) , newZeroAudioFormatInfo , noAudioFormatInfo , -- * Properties -- ** Depth audioFormatInfoReadDepth , -- ** Description audioFormatInfoReadDescription , -- ** Endianness audioFormatInfoReadEndianness , -- ** Flags audioFormatInfoReadFlags , -- ** Format audioFormatInfoReadFormat , -- ** Name audioFormatInfoReadName , -- ** UnpackFormat audioFormatInfoReadUnpackFormat , -- ** Width audioFormatInfoReadWidth , ) 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 newtype AudioFormatInfo = AudioFormatInfo (ForeignPtr AudioFormatInfo) -- | Construct a `AudioFormatInfo` struct initialized to zero. newZeroAudioFormatInfo :: MonadIO m => m AudioFormatInfo newZeroAudioFormatInfo = liftIO $ callocBytes 104 >>= wrapPtr AudioFormatInfo noAudioFormatInfo :: Maybe AudioFormatInfo noAudioFormatInfo = Nothing audioFormatInfoReadFormat :: AudioFormatInfo -> IO AudioFormat audioFormatInfoReadFormat s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO CUInt let val' = (toEnum . fromIntegral) val return val' audioFormatInfoReadName :: AudioFormatInfo -> IO T.Text audioFormatInfoReadName s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO CString val' <- cstringToText val return val' audioFormatInfoReadDescription :: AudioFormatInfo -> IO T.Text audioFormatInfoReadDescription s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO CString val' <- cstringToText val return val' audioFormatInfoReadFlags :: AudioFormatInfo -> IO [AudioFormatFlags] audioFormatInfoReadFlags s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 24) :: IO CUInt let val' = wordToGFlags val return val' audioFormatInfoReadEndianness :: AudioFormatInfo -> IO Int32 audioFormatInfoReadEndianness s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 28) :: IO Int32 return val audioFormatInfoReadWidth :: AudioFormatInfo -> IO Int32 audioFormatInfoReadWidth s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 32) :: IO Int32 return val audioFormatInfoReadDepth :: AudioFormatInfo -> IO Int32 audioFormatInfoReadDepth s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 36) :: IO Int32 return val -- XXX Skipped getter for "AudioFormatInfo:silence" :: Not implemented: "Don't know how to unpack C array of type TCArray False 8 (-1) (TBasicType TUInt8)" audioFormatInfoReadUnpackFormat :: AudioFormatInfo -> IO AudioFormat audioFormatInfoReadUnpackFormat s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 48) :: IO CUInt let val' = (toEnum . fromIntegral) val return val' -- XXX Skipped getter for "AudioFormatInfo:unpack_func" :: Not implemented: "Wrapping foreign callbacks is not supported yet" -- XXX Skipped getter for "AudioFormatInfo:pack_func" :: Not implemented: "Wrapping foreign callbacks is not supported yet" type family ResolveAudioFormatInfoMethod (t :: Symbol) (o :: *) :: * where ResolveAudioFormatInfoMethod l o = MethodResolutionFailed l o instance (info ~ ResolveAudioFormatInfoMethod t AudioFormatInfo, MethodInfo info AudioFormatInfo p) => IsLabelProxy t (AudioFormatInfo -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveAudioFormatInfoMethod t AudioFormatInfo, MethodInfo info AudioFormatInfo p) => IsLabel t (AudioFormatInfo -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif