gi-gstaudio-1.0.17: GI/GstAudio/Objects/AudioCdSrc.hs
{- |
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 <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> 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 <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> 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 <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> 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 <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> 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 <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> 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 <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> 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 <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> 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