{- | 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 adding tags at the beginning or end of a stream. == Deriving from GstTagMux Subclasses have to do the following things: * In their base init function, they must add pad templates for the sink pad and the source pad to the element class, describing the media type they accept and output in the caps of the pad template. * In their class init function, they must override the GST_TAG_MUX_CLASS(mux_klass)->render_start_tag and\/or GST_TAG_MUX_CLASS(mux_klass)->render_end_tag vfuncs and set up a render function. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.GstTag.Objects.TagMux ( -- * Exported types TagMux(..) , IsTagMux , toTagMux , noTagMux , ) 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.TagSetter as Gst.TagSetter import qualified GI.Gst.Objects.Element as Gst.Element import qualified GI.Gst.Objects.Object as Gst.Object -- | Memory-managed wrapper type. newtype TagMux = TagMux (ManagedPtr TagMux) foreign import ccall "gst_tag_mux_get_type" c_gst_tag_mux_get_type :: IO GType instance GObject TagMux where gobjectType = c_gst_tag_mux_get_type -- | Type class for types which can be safely cast to `TagMux`, for instance with `toTagMux`. class (GObject o, O.IsDescendantOf TagMux o) => IsTagMux o instance (GObject o, O.IsDescendantOf TagMux o) => IsTagMux o instance O.HasParentTypes TagMux type instance O.ParentTypes TagMux = '[Gst.Element.Element, Gst.Object.Object, GObject.Object.Object, Gst.TagSetter.TagSetter] -- | Cast to `TagMux`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toTagMux :: (MonadIO m, IsTagMux o) => o -> m TagMux toTagMux = liftIO . unsafeCastTo TagMux -- | A convenience alias for `Nothing` :: `Maybe` `TagMux`. noTagMux :: Maybe TagMux noTagMux = Nothing #if ENABLE_OVERLOADING type family ResolveTagMuxMethod (t :: Symbol) (o :: *) :: * where ResolveTagMuxMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo ResolveTagMuxMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo ResolveTagMuxMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo ResolveTagMuxMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo ResolveTagMuxMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo ResolveTagMuxMethod "addTagValue" o = Gst.TagSetter.TagSetterAddTagValueMethodInfo ResolveTagMuxMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveTagMuxMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveTagMuxMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo ResolveTagMuxMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo ResolveTagMuxMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo ResolveTagMuxMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo ResolveTagMuxMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo ResolveTagMuxMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveTagMuxMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo ResolveTagMuxMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo ResolveTagMuxMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo ResolveTagMuxMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveTagMuxMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveTagMuxMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo ResolveTagMuxMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo ResolveTagMuxMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo ResolveTagMuxMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo ResolveTagMuxMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveTagMuxMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo ResolveTagMuxMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo ResolveTagMuxMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo ResolveTagMuxMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo ResolveTagMuxMethod "link" o = Gst.Element.ElementLinkMethodInfo ResolveTagMuxMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo ResolveTagMuxMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo ResolveTagMuxMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo ResolveTagMuxMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo ResolveTagMuxMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo ResolveTagMuxMethod "mergeTags" o = Gst.TagSetter.TagSetterMergeTagsMethodInfo ResolveTagMuxMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo ResolveTagMuxMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo ResolveTagMuxMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo ResolveTagMuxMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveTagMuxMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveTagMuxMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo ResolveTagMuxMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo ResolveTagMuxMethod "query" o = Gst.Element.ElementQueryMethodInfo ResolveTagMuxMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo ResolveTagMuxMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo ResolveTagMuxMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo ResolveTagMuxMethod "ref" o = Gst.Object.ObjectRefMethodInfo ResolveTagMuxMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveTagMuxMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo ResolveTagMuxMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo ResolveTagMuxMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo ResolveTagMuxMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo ResolveTagMuxMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo ResolveTagMuxMethod "resetTags" o = Gst.TagSetter.TagSetterResetTagsMethodInfo ResolveTagMuxMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveTagMuxMethod "seek" o = Gst.Element.ElementSeekMethodInfo ResolveTagMuxMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo ResolveTagMuxMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo ResolveTagMuxMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveTagMuxMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveTagMuxMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo ResolveTagMuxMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo ResolveTagMuxMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo ResolveTagMuxMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveTagMuxMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo ResolveTagMuxMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo ResolveTagMuxMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo ResolveTagMuxMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo ResolveTagMuxMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveTagMuxMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo ResolveTagMuxMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo ResolveTagMuxMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo ResolveTagMuxMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo ResolveTagMuxMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo ResolveTagMuxMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo ResolveTagMuxMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo ResolveTagMuxMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo ResolveTagMuxMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo ResolveTagMuxMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo ResolveTagMuxMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveTagMuxMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo ResolveTagMuxMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo ResolveTagMuxMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo ResolveTagMuxMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo ResolveTagMuxMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo ResolveTagMuxMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo ResolveTagMuxMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo ResolveTagMuxMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo ResolveTagMuxMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveTagMuxMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveTagMuxMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo ResolveTagMuxMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo ResolveTagMuxMethod "getState" o = Gst.Element.ElementGetStateMethodInfo ResolveTagMuxMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo ResolveTagMuxMethod "getTagList" o = Gst.TagSetter.TagSetterGetTagListMethodInfo ResolveTagMuxMethod "getTagMergeMode" o = Gst.TagSetter.TagSetterGetTagMergeModeMethodInfo ResolveTagMuxMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo ResolveTagMuxMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo ResolveTagMuxMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo ResolveTagMuxMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo ResolveTagMuxMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo ResolveTagMuxMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo ResolveTagMuxMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo ResolveTagMuxMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo ResolveTagMuxMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveTagMuxMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo ResolveTagMuxMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo ResolveTagMuxMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo ResolveTagMuxMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveTagMuxMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo ResolveTagMuxMethod "setState" o = Gst.Element.ElementSetStateMethodInfo ResolveTagMuxMethod "setTagMergeMode" o = Gst.TagSetter.TagSetterSetTagMergeModeMethodInfo ResolveTagMuxMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveTagMuxMethod t TagMux, O.MethodInfo info TagMux p) => OL.IsLabel t (TagMux -> 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 #if ENABLE_OVERLOADING instance O.HasAttributeList TagMux type instance O.AttributeList TagMux = TagMuxAttributeList type TagMuxAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING type instance O.SignalList TagMux = TagMuxSignalList type TagMuxSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)]) #endif