{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Provides a base class for CD digital audio (CDDA) sources, which handles things like seeking, querying, discid calculation, tags, and buffer timestamping. == Using GstAudioCdSrc-based elements in applications GstAudioCdSrc registers two 'GI.Gst.Enums.Format'\s of its own, namely the \"track\" format and the \"sector\" format. Applications will usually only find the \"track\" format interesting. You can retrieve that 'GI.Gst.Enums.Format' for use in seek events or queries with gst_format_get_by_nick(\"track\"). In order to query the number of tracks, for example, an application would set the CDDA source element to READY or PAUSED state and then query the the number of tracks via 'GI.Gst.Objects.Element.elementQueryDuration' using the track format acquired above. Applications can query the currently playing track in the same way. Alternatively, applications may retrieve the currently playing track and the total number of tracks from the taglist that will posted on the bus whenever the CD is opened or the currently playing track changes. The taglist will contain GST_TAG_TRACK_NUMBER and GST_TAG_TRACK_COUNT tags. Applications playing back CD audio using playbin and cdda:\/\/n URIs should issue a seek command in track format to change between tracks, rather than setting a new cdda:\/\/n+1 URI on playbin (as setting a new URI on playbin involves closing and re-opening the CD device, which is much much slower). == Tags and meta-information CDDA sources will automatically emit a number of tags, details about which can be found in the libgsttag documentation. Those tags are: 'GI.GstTag.Constants.TAG_CDDA_CDDB_DISCID', 'GI.GstTag.Constants.TAG_CDDA_CDDB_DISCID_FULL', 'GI.GstTag.Constants.TAG_CDDA_MUSICBRAINZ_DISCID', 'GI.GstTag.Constants.TAG_CDDA_MUSICBRAINZ_DISCID_FULL', among others. == Tracks and Table of Contents (TOC) Applications will be informed of the available tracks via a TOC message on the pipeline\'s 'GI.Gst.Objects.Bus.Bus'. The 'GI.Gst.Structs.Toc.Toc' will contain a 'GI.Gst.Structs.TocEntry.TocEntry' for each track, with information about each track. The duration for each track can be retrieved via the 'GI.Gst.Constants.TAG_DURATION' tag from each entry\'s tag list, or calculated via 'GI.Gst.Structs.TocEntry.tocEntryGetStartStopTimes'. The track entries in the TOC will be sorted by track number. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.GstAudio.Objects.AudioCdSrc ( -- * Exported types AudioCdSrc(..) , IsAudioCdSrc , toAudioCdSrc , noAudioCdSrc , -- * Methods -- ** addTrack #method:addTrack# #if ENABLE_OVERLOADING AudioCdSrcAddTrackMethodInfo , #endif audioCdSrcAddTrack , -- * Properties -- ** device #attr:device# {- | /No description available in the introspection data./ -} #if ENABLE_OVERLOADING AudioCdSrcDevicePropertyInfo , #endif #if ENABLE_OVERLOADING audioCdSrcDevice , #endif clearAudioCdSrcDevice , constructAudioCdSrcDevice , getAudioCdSrcDevice , setAudioCdSrcDevice , -- ** mode #attr:mode# {- | /No description available in the introspection data./ -} #if ENABLE_OVERLOADING AudioCdSrcModePropertyInfo , #endif #if ENABLE_OVERLOADING audioCdSrcMode , #endif constructAudioCdSrcMode , getAudioCdSrcMode , setAudioCdSrcMode , -- ** track #attr:track# {- | /No description available in the introspection data./ -} #if ENABLE_OVERLOADING AudioCdSrcTrackPropertyInfo , #endif #if ENABLE_OVERLOADING audioCdSrcTrack , #endif constructAudioCdSrcTrack , getAudioCdSrcTrack , setAudioCdSrcTrack , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GObject.Objects.Object as GObject.Object import qualified GI.Gst.Interfaces.URIHandler as Gst.URIHandler import qualified GI.Gst.Objects.Element as Gst.Element import qualified GI.Gst.Objects.Object as Gst.Object import {-# SOURCE #-} qualified GI.GstAudio.Enums as GstAudio.Enums import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioCdSrcTrack as GstAudio.AudioCdSrcTrack import qualified GI.GstBase.Objects.BaseSrc as GstBase.BaseSrc import qualified GI.GstBase.Objects.PushSrc as GstBase.PushSrc -- | Memory-managed wrapper type. newtype AudioCdSrc = AudioCdSrc (ManagedPtr AudioCdSrc) foreign import ccall "gst_audio_cd_src_get_type" c_gst_audio_cd_src_get_type :: IO GType instance GObject AudioCdSrc where gobjectType = c_gst_audio_cd_src_get_type -- | Type class for types which can be safely cast to `AudioCdSrc`, for instance with `toAudioCdSrc`. class (GObject o, O.IsDescendantOf AudioCdSrc o) => IsAudioCdSrc o instance (GObject o, O.IsDescendantOf AudioCdSrc o) => IsAudioCdSrc o instance O.HasParentTypes AudioCdSrc type instance O.ParentTypes AudioCdSrc = '[GstBase.PushSrc.PushSrc, GstBase.BaseSrc.BaseSrc, Gst.Element.Element, Gst.Object.Object, GObject.Object.Object, Gst.URIHandler.URIHandler] -- | Cast to `AudioCdSrc`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toAudioCdSrc :: (MonadIO m, IsAudioCdSrc o) => o -> m AudioCdSrc toAudioCdSrc = liftIO . unsafeCastTo AudioCdSrc -- | A convenience alias for `Nothing` :: `Maybe` `AudioCdSrc`. noAudioCdSrc :: Maybe AudioCdSrc noAudioCdSrc = Nothing #if ENABLE_OVERLOADING type family ResolveAudioCdSrcMethod (t :: Symbol) (o :: *) :: * where ResolveAudioCdSrcMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo ResolveAudioCdSrcMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo ResolveAudioCdSrcMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo ResolveAudioCdSrcMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo ResolveAudioCdSrcMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo ResolveAudioCdSrcMethod "addTrack" o = AudioCdSrcAddTrackMethodInfo ResolveAudioCdSrcMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveAudioCdSrcMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveAudioCdSrcMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo ResolveAudioCdSrcMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo ResolveAudioCdSrcMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo ResolveAudioCdSrcMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo ResolveAudioCdSrcMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo ResolveAudioCdSrcMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveAudioCdSrcMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo ResolveAudioCdSrcMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo ResolveAudioCdSrcMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo ResolveAudioCdSrcMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveAudioCdSrcMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveAudioCdSrcMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo ResolveAudioCdSrcMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo ResolveAudioCdSrcMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo ResolveAudioCdSrcMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo ResolveAudioCdSrcMethod "isAsync" o = GstBase.BaseSrc.BaseSrcIsAsyncMethodInfo ResolveAudioCdSrcMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveAudioCdSrcMethod "isLive" o = GstBase.BaseSrc.BaseSrcIsLiveMethodInfo ResolveAudioCdSrcMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo ResolveAudioCdSrcMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo ResolveAudioCdSrcMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo ResolveAudioCdSrcMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo ResolveAudioCdSrcMethod "link" o = Gst.Element.ElementLinkMethodInfo ResolveAudioCdSrcMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo ResolveAudioCdSrcMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo ResolveAudioCdSrcMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo ResolveAudioCdSrcMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo ResolveAudioCdSrcMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo ResolveAudioCdSrcMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo ResolveAudioCdSrcMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo ResolveAudioCdSrcMethod "newSeamlessSegment" o = GstBase.BaseSrc.BaseSrcNewSeamlessSegmentMethodInfo ResolveAudioCdSrcMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo ResolveAudioCdSrcMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveAudioCdSrcMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveAudioCdSrcMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo ResolveAudioCdSrcMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo ResolveAudioCdSrcMethod "query" o = Gst.Element.ElementQueryMethodInfo ResolveAudioCdSrcMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo ResolveAudioCdSrcMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo ResolveAudioCdSrcMethod "queryLatency" o = GstBase.BaseSrc.BaseSrcQueryLatencyMethodInfo ResolveAudioCdSrcMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo ResolveAudioCdSrcMethod "ref" o = Gst.Object.ObjectRefMethodInfo ResolveAudioCdSrcMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveAudioCdSrcMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo ResolveAudioCdSrcMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo ResolveAudioCdSrcMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo ResolveAudioCdSrcMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo ResolveAudioCdSrcMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo ResolveAudioCdSrcMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveAudioCdSrcMethod "seek" o = Gst.Element.ElementSeekMethodInfo ResolveAudioCdSrcMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo ResolveAudioCdSrcMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo ResolveAudioCdSrcMethod "startComplete" o = GstBase.BaseSrc.BaseSrcStartCompleteMethodInfo ResolveAudioCdSrcMethod "startWait" o = GstBase.BaseSrc.BaseSrcStartWaitMethodInfo ResolveAudioCdSrcMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveAudioCdSrcMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveAudioCdSrcMethod "submitBufferList" o = GstBase.BaseSrc.BaseSrcSubmitBufferListMethodInfo ResolveAudioCdSrcMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo ResolveAudioCdSrcMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo ResolveAudioCdSrcMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo ResolveAudioCdSrcMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveAudioCdSrcMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo ResolveAudioCdSrcMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo ResolveAudioCdSrcMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo ResolveAudioCdSrcMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo ResolveAudioCdSrcMethod "waitPlaying" o = GstBase.BaseSrc.BaseSrcWaitPlayingMethodInfo ResolveAudioCdSrcMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveAudioCdSrcMethod "getAllocator" o = GstBase.BaseSrc.BaseSrcGetAllocatorMethodInfo ResolveAudioCdSrcMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo ResolveAudioCdSrcMethod "getBlocksize" o = GstBase.BaseSrc.BaseSrcGetBlocksizeMethodInfo ResolveAudioCdSrcMethod "getBufferPool" o = GstBase.BaseSrc.BaseSrcGetBufferPoolMethodInfo ResolveAudioCdSrcMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo ResolveAudioCdSrcMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo ResolveAudioCdSrcMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo ResolveAudioCdSrcMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo ResolveAudioCdSrcMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo ResolveAudioCdSrcMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo ResolveAudioCdSrcMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo ResolveAudioCdSrcMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo ResolveAudioCdSrcMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo ResolveAudioCdSrcMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveAudioCdSrcMethod "getDoTimestamp" o = GstBase.BaseSrc.BaseSrcGetDoTimestampMethodInfo ResolveAudioCdSrcMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo ResolveAudioCdSrcMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo ResolveAudioCdSrcMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo ResolveAudioCdSrcMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo ResolveAudioCdSrcMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo ResolveAudioCdSrcMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo ResolveAudioCdSrcMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo ResolveAudioCdSrcMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo ResolveAudioCdSrcMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveAudioCdSrcMethod "getProtocols" o = Gst.URIHandler.URIHandlerGetProtocolsMethodInfo ResolveAudioCdSrcMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveAudioCdSrcMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo ResolveAudioCdSrcMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo ResolveAudioCdSrcMethod "getState" o = Gst.Element.ElementGetStateMethodInfo ResolveAudioCdSrcMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo ResolveAudioCdSrcMethod "getUri" o = Gst.URIHandler.URIHandlerGetUriMethodInfo ResolveAudioCdSrcMethod "getUriType" o = Gst.URIHandler.URIHandlerGetUriTypeMethodInfo ResolveAudioCdSrcMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo ResolveAudioCdSrcMethod "setAsync" o = GstBase.BaseSrc.BaseSrcSetAsyncMethodInfo ResolveAudioCdSrcMethod "setAutomaticEos" o = GstBase.BaseSrc.BaseSrcSetAutomaticEosMethodInfo ResolveAudioCdSrcMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo ResolveAudioCdSrcMethod "setBlocksize" o = GstBase.BaseSrc.BaseSrcSetBlocksizeMethodInfo ResolveAudioCdSrcMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo ResolveAudioCdSrcMethod "setCaps" o = GstBase.BaseSrc.BaseSrcSetCapsMethodInfo ResolveAudioCdSrcMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo ResolveAudioCdSrcMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo ResolveAudioCdSrcMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo ResolveAudioCdSrcMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo ResolveAudioCdSrcMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo ResolveAudioCdSrcMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveAudioCdSrcMethod "setDoTimestamp" o = GstBase.BaseSrc.BaseSrcSetDoTimestampMethodInfo ResolveAudioCdSrcMethod "setDynamicSize" o = GstBase.BaseSrc.BaseSrcSetDynamicSizeMethodInfo ResolveAudioCdSrcMethod "setFormat" o = GstBase.BaseSrc.BaseSrcSetFormatMethodInfo ResolveAudioCdSrcMethod "setLive" o = GstBase.BaseSrc.BaseSrcSetLiveMethodInfo ResolveAudioCdSrcMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo ResolveAudioCdSrcMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo ResolveAudioCdSrcMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo ResolveAudioCdSrcMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveAudioCdSrcMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo ResolveAudioCdSrcMethod "setState" o = Gst.Element.ElementSetStateMethodInfo ResolveAudioCdSrcMethod "setUri" o = Gst.URIHandler.URIHandlerSetUriMethodInfo ResolveAudioCdSrcMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveAudioCdSrcMethod t AudioCdSrc, O.MethodInfo info AudioCdSrc p) => OL.IsLabel t (AudioCdSrc -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif -- VVV Prop "device" -- Type: TBasicType TUTF8 -- Flags: [PropertyReadable,PropertyWritable] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@device@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' audioCdSrc #device @ -} getAudioCdSrcDevice :: (MonadIO m, IsAudioCdSrc o) => o -> m (Maybe T.Text) getAudioCdSrcDevice obj = liftIO $ B.Properties.getObjectPropertyString obj "device" {- | Set the value of the “@device@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' audioCdSrc [ #device 'Data.GI.Base.Attributes.:=' value ] @ -} setAudioCdSrcDevice :: (MonadIO m, IsAudioCdSrc o) => o -> T.Text -> m () setAudioCdSrcDevice obj val = liftIO $ B.Properties.setObjectPropertyString obj "device" (Just val) {- | Construct a `GValueConstruct` with valid value for the “@device@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructAudioCdSrcDevice :: (IsAudioCdSrc o) => T.Text -> IO (GValueConstruct o) constructAudioCdSrcDevice val = B.Properties.constructObjectPropertyString "device" (Just val) {- | Set the value of the “@device@” property to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #device @ -} clearAudioCdSrcDevice :: (MonadIO m, IsAudioCdSrc o) => o -> m () clearAudioCdSrcDevice obj = liftIO $ B.Properties.setObjectPropertyString obj "device" (Nothing :: Maybe T.Text) #if ENABLE_OVERLOADING data AudioCdSrcDevicePropertyInfo instance AttrInfo AudioCdSrcDevicePropertyInfo where type AttrAllowedOps AudioCdSrcDevicePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint AudioCdSrcDevicePropertyInfo = (~) T.Text type AttrBaseTypeConstraint AudioCdSrcDevicePropertyInfo = IsAudioCdSrc type AttrGetType AudioCdSrcDevicePropertyInfo = (Maybe T.Text) type AttrLabel AudioCdSrcDevicePropertyInfo = "device" type AttrOrigin AudioCdSrcDevicePropertyInfo = AudioCdSrc attrGet _ = getAudioCdSrcDevice attrSet _ = setAudioCdSrcDevice attrConstruct _ = constructAudioCdSrcDevice attrClear _ = clearAudioCdSrcDevice #endif -- VVV Prop "mode" -- Type: TInterface (Name {namespace = "GstAudio", name = "AudioCdSrcMode"}) -- Flags: [PropertyReadable,PropertyWritable] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@mode@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' audioCdSrc #mode @ -} getAudioCdSrcMode :: (MonadIO m, IsAudioCdSrc o) => o -> m GstAudio.Enums.AudioCdSrcMode getAudioCdSrcMode obj = liftIO $ B.Properties.getObjectPropertyEnum obj "mode" {- | Set the value of the “@mode@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' audioCdSrc [ #mode 'Data.GI.Base.Attributes.:=' value ] @ -} setAudioCdSrcMode :: (MonadIO m, IsAudioCdSrc o) => o -> GstAudio.Enums.AudioCdSrcMode -> m () setAudioCdSrcMode obj val = liftIO $ B.Properties.setObjectPropertyEnum obj "mode" val {- | Construct a `GValueConstruct` with valid value for the “@mode@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructAudioCdSrcMode :: (IsAudioCdSrc o) => GstAudio.Enums.AudioCdSrcMode -> IO (GValueConstruct o) constructAudioCdSrcMode val = B.Properties.constructObjectPropertyEnum "mode" val #if ENABLE_OVERLOADING data AudioCdSrcModePropertyInfo instance AttrInfo AudioCdSrcModePropertyInfo where type AttrAllowedOps AudioCdSrcModePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint AudioCdSrcModePropertyInfo = (~) GstAudio.Enums.AudioCdSrcMode type AttrBaseTypeConstraint AudioCdSrcModePropertyInfo = IsAudioCdSrc type AttrGetType AudioCdSrcModePropertyInfo = GstAudio.Enums.AudioCdSrcMode type AttrLabel AudioCdSrcModePropertyInfo = "mode" type AttrOrigin AudioCdSrcModePropertyInfo = AudioCdSrc attrGet _ = getAudioCdSrcMode attrSet _ = setAudioCdSrcMode attrConstruct _ = constructAudioCdSrcMode attrClear _ = undefined #endif -- VVV Prop "track" -- Type: TBasicType TUInt -- Flags: [PropertyReadable,PropertyWritable] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@track@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' audioCdSrc #track @ -} getAudioCdSrcTrack :: (MonadIO m, IsAudioCdSrc o) => o -> m Word32 getAudioCdSrcTrack obj = liftIO $ B.Properties.getObjectPropertyUInt32 obj "track" {- | Set the value of the “@track@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' audioCdSrc [ #track 'Data.GI.Base.Attributes.:=' value ] @ -} setAudioCdSrcTrack :: (MonadIO m, IsAudioCdSrc o) => o -> Word32 -> m () setAudioCdSrcTrack obj val = liftIO $ B.Properties.setObjectPropertyUInt32 obj "track" val {- | Construct a `GValueConstruct` with valid value for the “@track@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructAudioCdSrcTrack :: (IsAudioCdSrc o) => Word32 -> IO (GValueConstruct o) constructAudioCdSrcTrack val = B.Properties.constructObjectPropertyUInt32 "track" val #if ENABLE_OVERLOADING data AudioCdSrcTrackPropertyInfo instance AttrInfo AudioCdSrcTrackPropertyInfo where type AttrAllowedOps AudioCdSrcTrackPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint AudioCdSrcTrackPropertyInfo = (~) Word32 type AttrBaseTypeConstraint AudioCdSrcTrackPropertyInfo = IsAudioCdSrc type AttrGetType AudioCdSrcTrackPropertyInfo = Word32 type AttrLabel AudioCdSrcTrackPropertyInfo = "track" type AttrOrigin AudioCdSrcTrackPropertyInfo = AudioCdSrc attrGet _ = getAudioCdSrcTrack attrSet _ = setAudioCdSrcTrack attrConstruct _ = constructAudioCdSrcTrack attrClear _ = undefined #endif #if ENABLE_OVERLOADING instance O.HasAttributeList AudioCdSrc type instance O.AttributeList AudioCdSrc = AudioCdSrcAttributeList type AudioCdSrcAttributeList = ('[ '("blocksize", GstBase.BaseSrc.BaseSrcBlocksizePropertyInfo), '("device", AudioCdSrcDevicePropertyInfo), '("doTimestamp", GstBase.BaseSrc.BaseSrcDoTimestampPropertyInfo), '("mode", AudioCdSrcModePropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("numBuffers", GstBase.BaseSrc.BaseSrcNumBuffersPropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("track", AudioCdSrcTrackPropertyInfo), '("typefind", GstBase.BaseSrc.BaseSrcTypefindPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING audioCdSrcDevice :: AttrLabelProxy "device" audioCdSrcDevice = AttrLabelProxy audioCdSrcMode :: AttrLabelProxy "mode" audioCdSrcMode = AttrLabelProxy audioCdSrcTrack :: AttrLabelProxy "track" audioCdSrcTrack = AttrLabelProxy #endif #if ENABLE_OVERLOADING type instance O.SignalList AudioCdSrc = AudioCdSrcSignalList type AudioCdSrcSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)]) #endif -- method AudioCdSrc::add_track -- method type : OrdinaryMethod -- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstAudio", name = "AudioCdSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstAudioCdSrc", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "track", argType = TInterface (Name {namespace = "GstAudio", name = "AudioCdSrcTrack"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "address of #GstAudioCdSrcTrack to add", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_audio_cd_src_add_track" gst_audio_cd_src_add_track :: Ptr AudioCdSrc -> -- src : TInterface (Name {namespace = "GstAudio", name = "AudioCdSrc"}) Ptr GstAudio.AudioCdSrcTrack.AudioCdSrcTrack -> -- track : TInterface (Name {namespace = "GstAudio", name = "AudioCdSrcTrack"}) IO CInt {- | CDDA sources use this function from their start vfunc to announce the available data and audio tracks to the base source class. The caller should allocate /@track@/ on the stack, the base source will do a shallow copy of the structure (and take ownership of the taglist if there is one). -} audioCdSrcAddTrack :: (B.CallStack.HasCallStack, MonadIO m, IsAudioCdSrc a) => a {- ^ /@src@/: a 'GI.GstAudio.Objects.AudioCdSrc.AudioCdSrc' -} -> GstAudio.AudioCdSrcTrack.AudioCdSrcTrack {- ^ /@track@/: address of 'GI.GstAudio.Structs.AudioCdSrcTrack.AudioCdSrcTrack' to add -} -> m Bool {- ^ __Returns:__ FALSE on error, otherwise TRUE. -} audioCdSrcAddTrack src track = liftIO $ do src' <- unsafeManagedPtrCastPtr src track' <- unsafeManagedPtrGetPtr track result <- gst_audio_cd_src_add_track src' track' let result' = (/= 0) result touchManagedPtr src touchManagedPtr track return result' #if ENABLE_OVERLOADING data AudioCdSrcAddTrackMethodInfo instance (signature ~ (GstAudio.AudioCdSrcTrack.AudioCdSrcTrack -> m Bool), MonadIO m, IsAudioCdSrc a) => O.MethodInfo AudioCdSrcAddTrackMethodInfo a signature where overloadedMethod _ = audioCdSrcAddTrack #endif