{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) A baseclass for scopes (visualizers). It takes care of re-fitting the audio-rate to video-rate and handles renegotiation (downstream video size changes). It also provides several background shading effects. These effects are applied to a previous picture before the @/render()/@ implementation can draw a new frame. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.GstPbutils.Objects.AudioVisualizer ( -- * Exported types AudioVisualizer(..) , IsAudioVisualizer , toAudioVisualizer , noAudioVisualizer , -- * Properties -- ** shadeAmount #attr:shadeAmount# {- | /No description available in the introspection data./ -} #if ENABLE_OVERLOADING AudioVisualizerShadeAmountPropertyInfo , #endif #if ENABLE_OVERLOADING audioVisualizerShadeAmount , #endif constructAudioVisualizerShadeAmount , getAudioVisualizerShadeAmount , setAudioVisualizerShadeAmount , -- ** shader #attr:shader# {- | /No description available in the introspection data./ -} #if ENABLE_OVERLOADING AudioVisualizerShaderPropertyInfo , #endif #if ENABLE_OVERLOADING audioVisualizerShader , #endif constructAudioVisualizerShader , getAudioVisualizerShader , setAudioVisualizerShader , ) 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.Objects.Element as Gst.Element import qualified GI.Gst.Objects.Object as Gst.Object import {-# SOURCE #-} qualified GI.GstPbutils.Enums as GstPbutils.Enums -- | Memory-managed wrapper type. newtype AudioVisualizer = AudioVisualizer (ManagedPtr AudioVisualizer) foreign import ccall "gst_audio_visualizer_get_type" c_gst_audio_visualizer_get_type :: IO GType instance GObject AudioVisualizer where gobjectType = c_gst_audio_visualizer_get_type -- | Type class for types which can be safely cast to `AudioVisualizer`, for instance with `toAudioVisualizer`. class (GObject o, O.IsDescendantOf AudioVisualizer o) => IsAudioVisualizer o instance (GObject o, O.IsDescendantOf AudioVisualizer o) => IsAudioVisualizer o instance O.HasParentTypes AudioVisualizer type instance O.ParentTypes AudioVisualizer = '[Gst.Element.Element, Gst.Object.Object, GObject.Object.Object] -- | Cast to `AudioVisualizer`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toAudioVisualizer :: (MonadIO m, IsAudioVisualizer o) => o -> m AudioVisualizer toAudioVisualizer = liftIO . unsafeCastTo AudioVisualizer -- | A convenience alias for `Nothing` :: `Maybe` `AudioVisualizer`. noAudioVisualizer :: Maybe AudioVisualizer noAudioVisualizer = Nothing #if ENABLE_OVERLOADING type family ResolveAudioVisualizerMethod (t :: Symbol) (o :: *) :: * where ResolveAudioVisualizerMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo ResolveAudioVisualizerMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo ResolveAudioVisualizerMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo ResolveAudioVisualizerMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo ResolveAudioVisualizerMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo ResolveAudioVisualizerMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveAudioVisualizerMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveAudioVisualizerMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo ResolveAudioVisualizerMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo ResolveAudioVisualizerMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo ResolveAudioVisualizerMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo ResolveAudioVisualizerMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo ResolveAudioVisualizerMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveAudioVisualizerMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo ResolveAudioVisualizerMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo ResolveAudioVisualizerMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo ResolveAudioVisualizerMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveAudioVisualizerMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveAudioVisualizerMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo ResolveAudioVisualizerMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo ResolveAudioVisualizerMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo ResolveAudioVisualizerMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo ResolveAudioVisualizerMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveAudioVisualizerMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo ResolveAudioVisualizerMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo ResolveAudioVisualizerMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo ResolveAudioVisualizerMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo ResolveAudioVisualizerMethod "link" o = Gst.Element.ElementLinkMethodInfo ResolveAudioVisualizerMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo ResolveAudioVisualizerMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo ResolveAudioVisualizerMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo ResolveAudioVisualizerMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo ResolveAudioVisualizerMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo ResolveAudioVisualizerMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo ResolveAudioVisualizerMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo ResolveAudioVisualizerMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo ResolveAudioVisualizerMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveAudioVisualizerMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveAudioVisualizerMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo ResolveAudioVisualizerMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo ResolveAudioVisualizerMethod "query" o = Gst.Element.ElementQueryMethodInfo ResolveAudioVisualizerMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo ResolveAudioVisualizerMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo ResolveAudioVisualizerMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo ResolveAudioVisualizerMethod "ref" o = Gst.Object.ObjectRefMethodInfo ResolveAudioVisualizerMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveAudioVisualizerMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo ResolveAudioVisualizerMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo ResolveAudioVisualizerMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo ResolveAudioVisualizerMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo ResolveAudioVisualizerMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo ResolveAudioVisualizerMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveAudioVisualizerMethod "seek" o = Gst.Element.ElementSeekMethodInfo ResolveAudioVisualizerMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo ResolveAudioVisualizerMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo ResolveAudioVisualizerMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveAudioVisualizerMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveAudioVisualizerMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo ResolveAudioVisualizerMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo ResolveAudioVisualizerMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo ResolveAudioVisualizerMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveAudioVisualizerMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo ResolveAudioVisualizerMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo ResolveAudioVisualizerMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo ResolveAudioVisualizerMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo ResolveAudioVisualizerMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveAudioVisualizerMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo ResolveAudioVisualizerMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo ResolveAudioVisualizerMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo ResolveAudioVisualizerMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo ResolveAudioVisualizerMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo ResolveAudioVisualizerMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo ResolveAudioVisualizerMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo ResolveAudioVisualizerMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo ResolveAudioVisualizerMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo ResolveAudioVisualizerMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo ResolveAudioVisualizerMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveAudioVisualizerMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo ResolveAudioVisualizerMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo ResolveAudioVisualizerMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo ResolveAudioVisualizerMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo ResolveAudioVisualizerMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo ResolveAudioVisualizerMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo ResolveAudioVisualizerMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo ResolveAudioVisualizerMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo ResolveAudioVisualizerMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveAudioVisualizerMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveAudioVisualizerMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo ResolveAudioVisualizerMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo ResolveAudioVisualizerMethod "getState" o = Gst.Element.ElementGetStateMethodInfo ResolveAudioVisualizerMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo ResolveAudioVisualizerMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo ResolveAudioVisualizerMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo ResolveAudioVisualizerMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo ResolveAudioVisualizerMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo ResolveAudioVisualizerMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo ResolveAudioVisualizerMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo ResolveAudioVisualizerMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo ResolveAudioVisualizerMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo ResolveAudioVisualizerMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveAudioVisualizerMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo ResolveAudioVisualizerMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo ResolveAudioVisualizerMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo ResolveAudioVisualizerMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveAudioVisualizerMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo ResolveAudioVisualizerMethod "setState" o = Gst.Element.ElementSetStateMethodInfo ResolveAudioVisualizerMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveAudioVisualizerMethod t AudioVisualizer, O.MethodInfo info AudioVisualizer p) => OL.IsLabel t (AudioVisualizer -> 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 "shade-amount" -- Type: TBasicType TUInt -- Flags: [PropertyReadable,PropertyWritable] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@shade-amount@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' audioVisualizer #shadeAmount @ -} getAudioVisualizerShadeAmount :: (MonadIO m, IsAudioVisualizer o) => o -> m Word32 getAudioVisualizerShadeAmount obj = liftIO $ B.Properties.getObjectPropertyUInt32 obj "shade-amount" {- | Set the value of the “@shade-amount@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' audioVisualizer [ #shadeAmount 'Data.GI.Base.Attributes.:=' value ] @ -} setAudioVisualizerShadeAmount :: (MonadIO m, IsAudioVisualizer o) => o -> Word32 -> m () setAudioVisualizerShadeAmount obj val = liftIO $ B.Properties.setObjectPropertyUInt32 obj "shade-amount" val {- | Construct a `GValueConstruct` with valid value for the “@shade-amount@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructAudioVisualizerShadeAmount :: (IsAudioVisualizer o) => Word32 -> IO (GValueConstruct o) constructAudioVisualizerShadeAmount val = B.Properties.constructObjectPropertyUInt32 "shade-amount" val #if ENABLE_OVERLOADING data AudioVisualizerShadeAmountPropertyInfo instance AttrInfo AudioVisualizerShadeAmountPropertyInfo where type AttrAllowedOps AudioVisualizerShadeAmountPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint AudioVisualizerShadeAmountPropertyInfo = (~) Word32 type AttrBaseTypeConstraint AudioVisualizerShadeAmountPropertyInfo = IsAudioVisualizer type AttrGetType AudioVisualizerShadeAmountPropertyInfo = Word32 type AttrLabel AudioVisualizerShadeAmountPropertyInfo = "shade-amount" type AttrOrigin AudioVisualizerShadeAmountPropertyInfo = AudioVisualizer attrGet _ = getAudioVisualizerShadeAmount attrSet _ = setAudioVisualizerShadeAmount attrConstruct _ = constructAudioVisualizerShadeAmount attrClear _ = undefined #endif -- VVV Prop "shader" -- Type: TInterface (Name {namespace = "GstPbutils", name = "AudioVisualizerShader"}) -- Flags: [PropertyReadable,PropertyWritable] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@shader@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' audioVisualizer #shader @ -} getAudioVisualizerShader :: (MonadIO m, IsAudioVisualizer o) => o -> m GstPbutils.Enums.AudioVisualizerShader getAudioVisualizerShader obj = liftIO $ B.Properties.getObjectPropertyEnum obj "shader" {- | Set the value of the “@shader@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' audioVisualizer [ #shader 'Data.GI.Base.Attributes.:=' value ] @ -} setAudioVisualizerShader :: (MonadIO m, IsAudioVisualizer o) => o -> GstPbutils.Enums.AudioVisualizerShader -> m () setAudioVisualizerShader obj val = liftIO $ B.Properties.setObjectPropertyEnum obj "shader" val {- | Construct a `GValueConstruct` with valid value for the “@shader@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructAudioVisualizerShader :: (IsAudioVisualizer o) => GstPbutils.Enums.AudioVisualizerShader -> IO (GValueConstruct o) constructAudioVisualizerShader val = B.Properties.constructObjectPropertyEnum "shader" val #if ENABLE_OVERLOADING data AudioVisualizerShaderPropertyInfo instance AttrInfo AudioVisualizerShaderPropertyInfo where type AttrAllowedOps AudioVisualizerShaderPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint AudioVisualizerShaderPropertyInfo = (~) GstPbutils.Enums.AudioVisualizerShader type AttrBaseTypeConstraint AudioVisualizerShaderPropertyInfo = IsAudioVisualizer type AttrGetType AudioVisualizerShaderPropertyInfo = GstPbutils.Enums.AudioVisualizerShader type AttrLabel AudioVisualizerShaderPropertyInfo = "shader" type AttrOrigin AudioVisualizerShaderPropertyInfo = AudioVisualizer attrGet _ = getAudioVisualizerShader attrSet _ = setAudioVisualizerShader attrConstruct _ = constructAudioVisualizerShader attrClear _ = undefined #endif #if ENABLE_OVERLOADING instance O.HasAttributeList AudioVisualizer type instance O.AttributeList AudioVisualizer = AudioVisualizerAttributeList type AudioVisualizerAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("shadeAmount", AudioVisualizerShadeAmountPropertyInfo), '("shader", AudioVisualizerShaderPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING audioVisualizerShadeAmount :: AttrLabelProxy "shadeAmount" audioVisualizerShadeAmount = AttrLabelProxy audioVisualizerShader :: AttrLabelProxy "shader" audioVisualizerShader = AttrLabelProxy #endif #if ENABLE_OVERLOADING type instance O.SignalList AudioVisualizer = AudioVisualizerSignalList type AudioVisualizerSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)]) #endif