{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Caps (capabilities) are lightweight refcounted objects describing media types. They are composed of an array of 'GI.Gst.Structs.Structure.Structure'. Caps are exposed on 'GI.Gst.Objects.PadTemplate.PadTemplate' to describe all possible types a given pad can handle. They are also stored in the 'GI.Gst.Objects.Registry.Registry' along with a description of the 'GI.Gst.Objects.Element.Element'. Caps are exposed on the element pads using the 'GI.Gst.Objects.Pad.padQueryCaps' pad function. This function describes the possible types that the pad can handle or produce at runtime. A 'GI.Gst.Structs.Caps.Caps' can be constructed with the following code fragment: === /C code/ > > GstCaps *caps = gst_caps_new_simple ("video/x-raw", > "format", G_TYPE_STRING, "I420", > "framerate", GST_TYPE_FRACTION, 25, 1, > "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, > "width", G_TYPE_INT, 320, > "height", G_TYPE_INT, 240, > NULL); A 'GI.Gst.Structs.Caps.Caps' is fixed when it has no properties with ranges or lists. Use 'GI.Gst.Structs.Caps.capsIsFixed' to test for fixed caps. Fixed caps can be used in a caps event to notify downstream elements of the current media type. Various methods exist to work with the media types such as subtracting or intersecting. Be aware that the current 'GI.Gst.Structs.Caps.Caps' \/ 'GI.Gst.Structs.Structure.Structure' serialization into string has limited support for nested 'GI.Gst.Structs.Caps.Caps' \/ 'GI.Gst.Structs.Structure.Structure' fields. It can only support one level of nesting. Using more levels will lead to unexpected behavior when using serialization features, such as 'GI.Gst.Structs.Caps.capsToString' or 'GI.Gst.Functions.valueSerialize' and their counterparts. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gst.Structs.Caps ( -- * Exported types Caps(..) , newZeroCaps , noCaps , -- * Methods -- ** append #method:append# #if ENABLE_OVERLOADING CapsAppendMethodInfo , #endif capsAppend , -- ** appendStructure #method:appendStructure# #if ENABLE_OVERLOADING CapsAppendStructureMethodInfo , #endif capsAppendStructure , -- ** appendStructureFull #method:appendStructureFull# #if ENABLE_OVERLOADING CapsAppendStructureFullMethodInfo , #endif capsAppendStructureFull , -- ** canIntersect #method:canIntersect# #if ENABLE_OVERLOADING CapsCanIntersectMethodInfo , #endif capsCanIntersect , -- ** copy #method:copy# #if ENABLE_OVERLOADING CapsCopyMethodInfo , #endif capsCopy , -- ** copyNth #method:copyNth# #if ENABLE_OVERLOADING CapsCopyNthMethodInfo , #endif capsCopyNth , -- ** filterAndMapInPlace #method:filterAndMapInPlace# #if ENABLE_OVERLOADING CapsFilterAndMapInPlaceMethodInfo , #endif capsFilterAndMapInPlace , -- ** fixate #method:fixate# #if ENABLE_OVERLOADING CapsFixateMethodInfo , #endif capsFixate , -- ** foreach #method:foreach# #if ENABLE_OVERLOADING CapsForeachMethodInfo , #endif capsForeach , -- ** fromString #method:fromString# capsFromString , -- ** getFeatures #method:getFeatures# #if ENABLE_OVERLOADING CapsGetFeaturesMethodInfo , #endif capsGetFeatures , -- ** getSize #method:getSize# #if ENABLE_OVERLOADING CapsGetSizeMethodInfo , #endif capsGetSize , -- ** getStructure #method:getStructure# #if ENABLE_OVERLOADING CapsGetStructureMethodInfo , #endif capsGetStructure , -- ** intersect #method:intersect# #if ENABLE_OVERLOADING CapsIntersectMethodInfo , #endif capsIntersect , -- ** intersectFull #method:intersectFull# #if ENABLE_OVERLOADING CapsIntersectFullMethodInfo , #endif capsIntersectFull , -- ** isAlwaysCompatible #method:isAlwaysCompatible# #if ENABLE_OVERLOADING CapsIsAlwaysCompatibleMethodInfo , #endif capsIsAlwaysCompatible , -- ** isAny #method:isAny# #if ENABLE_OVERLOADING CapsIsAnyMethodInfo , #endif capsIsAny , -- ** isEmpty #method:isEmpty# #if ENABLE_OVERLOADING CapsIsEmptyMethodInfo , #endif capsIsEmpty , -- ** isEqual #method:isEqual# #if ENABLE_OVERLOADING CapsIsEqualMethodInfo , #endif capsIsEqual , -- ** isEqualFixed #method:isEqualFixed# #if ENABLE_OVERLOADING CapsIsEqualFixedMethodInfo , #endif capsIsEqualFixed , -- ** isFixed #method:isFixed# #if ENABLE_OVERLOADING CapsIsFixedMethodInfo , #endif capsIsFixed , -- ** isStrictlyEqual #method:isStrictlyEqual# #if ENABLE_OVERLOADING CapsIsStrictlyEqualMethodInfo , #endif capsIsStrictlyEqual , -- ** isSubset #method:isSubset# #if ENABLE_OVERLOADING CapsIsSubsetMethodInfo , #endif capsIsSubset , -- ** isSubsetStructure #method:isSubsetStructure# #if ENABLE_OVERLOADING CapsIsSubsetStructureMethodInfo , #endif capsIsSubsetStructure , -- ** isSubsetStructureFull #method:isSubsetStructureFull# #if ENABLE_OVERLOADING CapsIsSubsetStructureFullMethodInfo , #endif capsIsSubsetStructureFull , -- ** mapInPlace #method:mapInPlace# #if ENABLE_OVERLOADING CapsMapInPlaceMethodInfo , #endif capsMapInPlace , -- ** merge #method:merge# #if ENABLE_OVERLOADING CapsMergeMethodInfo , #endif capsMerge , -- ** mergeStructure #method:mergeStructure# #if ENABLE_OVERLOADING CapsMergeStructureMethodInfo , #endif capsMergeStructure , -- ** mergeStructureFull #method:mergeStructureFull# #if ENABLE_OVERLOADING CapsMergeStructureFullMethodInfo , #endif capsMergeStructureFull , -- ** newAny #method:newAny# capsNewAny , -- ** newEmpty #method:newEmpty# capsNewEmpty , -- ** newEmptySimple #method:newEmptySimple# capsNewEmptySimple , -- ** normalize #method:normalize# #if ENABLE_OVERLOADING CapsNormalizeMethodInfo , #endif capsNormalize , -- ** removeStructure #method:removeStructure# #if ENABLE_OVERLOADING CapsRemoveStructureMethodInfo , #endif capsRemoveStructure , -- ** setFeatures #method:setFeatures# #if ENABLE_OVERLOADING CapsSetFeaturesMethodInfo , #endif capsSetFeatures , -- ** setFeaturesSimple #method:setFeaturesSimple# #if ENABLE_OVERLOADING CapsSetFeaturesSimpleMethodInfo , #endif capsSetFeaturesSimple , -- ** setValue #method:setValue# #if ENABLE_OVERLOADING CapsSetValueMethodInfo , #endif capsSetValue , -- ** simplify #method:simplify# #if ENABLE_OVERLOADING CapsSimplifyMethodInfo , #endif capsSimplify , -- ** stealStructure #method:stealStructure# #if ENABLE_OVERLOADING CapsStealStructureMethodInfo , #endif capsStealStructure , -- ** subtract #method:subtract# #if ENABLE_OVERLOADING CapsSubtractMethodInfo , #endif capsSubtract , -- ** toString #method:toString# #if ENABLE_OVERLOADING CapsToStringMethodInfo , #endif capsToString , -- ** truncate #method:truncate# #if ENABLE_OVERLOADING CapsTruncateMethodInfo , #endif capsTruncate , -- * Properties -- ** miniObject #attr:miniObject# {- | the parent type -} #if ENABLE_OVERLOADING caps_miniObject , #endif getCapsMiniObject , ) 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.Gst.Callbacks as Gst.Callbacks import {-# SOURCE #-} qualified GI.Gst.Enums as Gst.Enums import {-# SOURCE #-} qualified GI.Gst.Structs.CapsFeatures as Gst.CapsFeatures import {-# SOURCE #-} qualified GI.Gst.Structs.MiniObject as Gst.MiniObject import {-# SOURCE #-} qualified GI.Gst.Structs.Structure as Gst.Structure -- | Memory-managed wrapper type. newtype Caps = Caps (ManagedPtr Caps) foreign import ccall "gst_caps_get_type" c_gst_caps_get_type :: IO GType instance BoxedObject Caps where boxedType _ = c_gst_caps_get_type -- | Construct a `Caps` struct initialized to zero. newZeroCaps :: MonadIO m => m Caps newZeroCaps = liftIO $ callocBoxedBytes 64 >>= wrapBoxed Caps instance tag ~ 'AttrSet => Constructible Caps tag where new _ attrs = do o <- newZeroCaps GI.Attributes.set o attrs return o -- | A convenience alias for `Nothing` :: `Maybe` `Caps`. noCaps :: Maybe Caps noCaps = Nothing {- | Get the value of the “@mini_object@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' caps #miniObject @ -} getCapsMiniObject :: MonadIO m => Caps -> m Gst.MiniObject.MiniObject getCapsMiniObject s = liftIO $ withManagedPtr s $ \ptr -> do let val = ptr `plusPtr` 0 :: (Ptr Gst.MiniObject.MiniObject) val' <- (newPtr Gst.MiniObject.MiniObject) val return val' #if ENABLE_OVERLOADING data CapsMiniObjectFieldInfo instance AttrInfo CapsMiniObjectFieldInfo where type AttrAllowedOps CapsMiniObjectFieldInfo = '[ 'AttrGet] type AttrSetTypeConstraint CapsMiniObjectFieldInfo = (~) (Ptr Gst.MiniObject.MiniObject) type AttrBaseTypeConstraint CapsMiniObjectFieldInfo = (~) Caps type AttrGetType CapsMiniObjectFieldInfo = Gst.MiniObject.MiniObject type AttrLabel CapsMiniObjectFieldInfo = "mini_object" type AttrOrigin CapsMiniObjectFieldInfo = Caps attrGet _ = getCapsMiniObject attrSet _ = undefined attrConstruct = undefined attrClear _ = undefined caps_miniObject :: AttrLabelProxy "miniObject" caps_miniObject = AttrLabelProxy #endif #if ENABLE_OVERLOADING instance O.HasAttributeList Caps type instance O.AttributeList Caps = CapsAttributeList type CapsAttributeList = ('[ '("miniObject", CapsMiniObjectFieldInfo)] :: [(Symbol, *)]) #endif -- method Caps::new_any -- method type : Constructor -- Args : [] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_new_any" gst_caps_new_any :: IO (Ptr Caps) {- | Creates a new 'GI.Gst.Structs.Caps.Caps' that indicates that it is compatible with any media format. -} capsNewAny :: (B.CallStack.HasCallStack, MonadIO m) => m Caps {- ^ __Returns:__ the new 'GI.Gst.Structs.Caps.Caps' -} capsNewAny = liftIO $ do result <- gst_caps_new_any checkUnexpectedReturnNULL "capsNewAny" result result' <- (wrapBoxed Caps) result return result' #if ENABLE_OVERLOADING #endif -- method Caps::new_empty -- method type : Constructor -- Args : [] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_new_empty" gst_caps_new_empty :: IO (Ptr Caps) {- | Creates a new 'GI.Gst.Structs.Caps.Caps' that is empty. That is, the returned 'GI.Gst.Structs.Caps.Caps' contains no media formats. The 'GI.Gst.Structs.Caps.Caps' is guaranteed to be writable. Caller is responsible for unreffing the returned caps. -} capsNewEmpty :: (B.CallStack.HasCallStack, MonadIO m) => m Caps {- ^ __Returns:__ the new 'GI.Gst.Structs.Caps.Caps' -} capsNewEmpty = liftIO $ do result <- gst_caps_new_empty checkUnexpectedReturnNULL "capsNewEmpty" result result' <- (wrapBoxed Caps) result return result' #if ENABLE_OVERLOADING #endif -- method Caps::new_empty_simple -- method type : Constructor -- Args : [Arg {argCName = "media_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the media type of the structure", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_new_empty_simple" gst_caps_new_empty_simple :: CString -> -- media_type : TBasicType TUTF8 IO (Ptr Caps) {- | Creates a new 'GI.Gst.Structs.Caps.Caps' that contains one 'GI.Gst.Structs.Structure.Structure' with name /@mediaType@/. Caller is responsible for unreffing the returned caps. -} capsNewEmptySimple :: (B.CallStack.HasCallStack, MonadIO m) => T.Text {- ^ /@mediaType@/: the media type of the structure -} -> m Caps {- ^ __Returns:__ the new 'GI.Gst.Structs.Caps.Caps' -} capsNewEmptySimple mediaType = liftIO $ do mediaType' <- textToCString mediaType result <- gst_caps_new_empty_simple mediaType' checkUnexpectedReturnNULL "capsNewEmptySimple" result result' <- (wrapBoxed Caps) result freeMem mediaType' return result' #if ENABLE_OVERLOADING #endif -- method Caps::append -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps1", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps that will be appended to", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps2", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to append", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_caps_append" gst_caps_append :: Ptr Caps -> -- caps1 : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- caps2 : TInterface (Name {namespace = "Gst", name = "Caps"}) IO () {- | Appends the structures contained in /@caps2@/ to /@caps1@/. The structures in /@caps2@/ are not copied -- they are transferred to /@caps1@/, and then /@caps2@/ is freed. If either caps is ANY, the resulting caps will be ANY. -} capsAppend :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps1@/: the 'GI.Gst.Structs.Caps.Caps' that will be appended to -} -> Caps {- ^ /@caps2@/: the 'GI.Gst.Structs.Caps.Caps' to append -} -> m () capsAppend caps1 caps2 = liftIO $ do caps1' <- unsafeManagedPtrGetPtr caps1 caps2' <- B.ManagedPtr.disownBoxed caps2 gst_caps_append caps1' caps2' touchManagedPtr caps1 touchManagedPtr caps2 return () #if ENABLE_OVERLOADING data CapsAppendMethodInfo instance (signature ~ (Caps -> m ()), MonadIO m) => O.MethodInfo CapsAppendMethodInfo Caps signature where overloadedMethod _ = capsAppend #endif -- method Caps::append_structure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps that will be appended to", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "structure", argType = TInterface (Name {namespace = "Gst", name = "Structure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstStructure to append", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_caps_append_structure" gst_caps_append_structure :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Gst.Structure.Structure -> -- structure : TInterface (Name {namespace = "Gst", name = "Structure"}) IO () {- | Appends /@structure@/ to /@caps@/. The structure is not copied; /@caps@/ becomes the owner of /@structure@/. -} capsAppendStructure :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' that will be appended to -} -> Gst.Structure.Structure {- ^ /@structure@/: the 'GI.Gst.Structs.Structure.Structure' to append -} -> m () capsAppendStructure caps structure = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps structure' <- B.ManagedPtr.disownBoxed structure gst_caps_append_structure caps' structure' touchManagedPtr caps touchManagedPtr structure return () #if ENABLE_OVERLOADING data CapsAppendStructureMethodInfo instance (signature ~ (Gst.Structure.Structure -> m ()), MonadIO m) => O.MethodInfo CapsAppendStructureMethodInfo Caps signature where overloadedMethod _ = capsAppendStructure #endif -- method Caps::append_structure_full -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps that will be appended to", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "structure", argType = TInterface (Name {namespace = "Gst", name = "Structure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstStructure to append", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "features", argType = TInterface (Name {namespace = "Gst", name = "CapsFeatures"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstCapsFeatures to append", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_caps_append_structure_full" gst_caps_append_structure_full :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Gst.Structure.Structure -> -- structure : TInterface (Name {namespace = "Gst", name = "Structure"}) Ptr Gst.CapsFeatures.CapsFeatures -> -- features : TInterface (Name {namespace = "Gst", name = "CapsFeatures"}) IO () {- | Appends /@structure@/ with /@features@/ to /@caps@/. The structure is not copied; /@caps@/ becomes the owner of /@structure@/. /Since: 1.2/ -} capsAppendStructureFull :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' that will be appended to -} -> Gst.Structure.Structure {- ^ /@structure@/: the 'GI.Gst.Structs.Structure.Structure' to append -} -> Maybe (Gst.CapsFeatures.CapsFeatures) {- ^ /@features@/: the 'GI.Gst.Structs.CapsFeatures.CapsFeatures' to append -} -> m () capsAppendStructureFull caps structure features = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps structure' <- B.ManagedPtr.disownBoxed structure maybeFeatures <- case features of Nothing -> return nullPtr Just jFeatures -> do jFeatures' <- B.ManagedPtr.disownBoxed jFeatures return jFeatures' gst_caps_append_structure_full caps' structure' maybeFeatures touchManagedPtr caps touchManagedPtr structure whenJust features touchManagedPtr return () #if ENABLE_OVERLOADING data CapsAppendStructureFullMethodInfo instance (signature ~ (Gst.Structure.Structure -> Maybe (Gst.CapsFeatures.CapsFeatures) -> m ()), MonadIO m) => O.MethodInfo CapsAppendStructureFullMethodInfo Caps signature where overloadedMethod _ = capsAppendStructureFull #endif -- method Caps::can_intersect -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps1", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps to intersect", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps2", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps to intersect", 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_caps_can_intersect" gst_caps_can_intersect :: Ptr Caps -> -- caps1 : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- caps2 : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Tries intersecting /@caps1@/ and /@caps2@/ and reports whether the result would not be empty -} capsCanIntersect :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps1@/: a 'GI.Gst.Structs.Caps.Caps' to intersect -} -> Caps {- ^ /@caps2@/: a 'GI.Gst.Structs.Caps.Caps' to intersect -} -> m Bool {- ^ __Returns:__ 'True' if intersection would be not empty -} capsCanIntersect caps1 caps2 = liftIO $ do caps1' <- unsafeManagedPtrGetPtr caps1 caps2' <- unsafeManagedPtrGetPtr caps2 result <- gst_caps_can_intersect caps1' caps2' let result' = (/= 0) result touchManagedPtr caps1 touchManagedPtr caps2 return result' #if ENABLE_OVERLOADING data CapsCanIntersectMethodInfo instance (signature ~ (Caps -> m Bool), MonadIO m) => O.MethodInfo CapsCanIntersectMethodInfo Caps signature where overloadedMethod _ = capsCanIntersect #endif -- method Caps::copy -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_copy" gst_caps_copy :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Caps) {- | Creates a new 'GI.Gst.Structs.Caps.Caps' as a copy of the old /@caps@/. The new caps will have a refcount of 1, owned by the caller. The structures are copied as well. Note that this function is the semantic equivalent of a @/gst_caps_ref()/@ followed by a @/gst_caps_make_writable()/@. If you only want to hold on to a reference to the data, you should use @/gst_caps_ref()/@. When you are finished with the caps, call @/gst_caps_unref()/@ on it. -} capsCopy :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps'. -} -> m Caps {- ^ __Returns:__ the new 'GI.Gst.Structs.Caps.Caps' -} capsCopy caps = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_copy caps' checkUnexpectedReturnNULL "capsCopy" result result' <- (wrapBoxed Caps) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsCopyMethodInfo instance (signature ~ (m Caps), MonadIO m) => O.MethodInfo CapsCopyMethodInfo Caps signature where overloadedMethod _ = capsCopy #endif -- method Caps::copy_nth -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to copy", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "nth", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the nth structure to copy", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_copy_nth" gst_caps_copy_nth :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Word32 -> -- nth : TBasicType TUInt IO (Ptr Caps) {- | Creates a new 'GI.Gst.Structs.Caps.Caps' and appends a copy of the nth structure contained in /@caps@/. -} capsCopyNth :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to copy -} -> Word32 {- ^ /@nth@/: the nth structure to copy -} -> m Caps {- ^ __Returns:__ the new 'GI.Gst.Structs.Caps.Caps' -} capsCopyNth caps nth = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_copy_nth caps' nth checkUnexpectedReturnNULL "capsCopyNth" result result' <- (wrapBoxed Caps) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsCopyNthMethodInfo instance (signature ~ (Word32 -> m Caps), MonadIO m) => O.MethodInfo CapsCopyNthMethodInfo Caps signature where overloadedMethod _ = capsCopyNth #endif -- method Caps::filter_and_map_in_place -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface (Name {namespace = "Gst", name = "CapsFilterMapFunc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a function to call for each field", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "private data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_caps_filter_and_map_in_place" gst_caps_filter_and_map_in_place :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) FunPtr Gst.Callbacks.C_CapsFilterMapFunc -> -- func : TInterface (Name {namespace = "Gst", name = "CapsFilterMapFunc"}) Ptr () -> -- user_data : TBasicType TPtr IO () {- | Calls the provided function once for each structure and caps feature in the 'GI.Gst.Structs.Caps.Caps'. In contrast to 'GI.Gst.Structs.Caps.capsForeach', the function may modify the structure and features. In contrast to 'GI.Gst.Structs.Caps.capsFilterAndMapInPlace', the structure and features are removed from the caps if 'False' is returned from the function. The caps must be mutable. /Since: 1.6/ -} capsFilterAndMapInPlace :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Gst.Callbacks.CapsFilterMapFunc {- ^ /@func@/: a function to call for each field -} -> m () capsFilterAndMapInPlace caps func = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps func' <- Gst.Callbacks.mk_CapsFilterMapFunc (Gst.Callbacks.wrap_CapsFilterMapFunc Nothing (Gst.Callbacks.drop_closures_CapsFilterMapFunc func)) let userData = nullPtr gst_caps_filter_and_map_in_place caps' func' userData safeFreeFunPtr $ castFunPtrToPtr func' touchManagedPtr caps return () #if ENABLE_OVERLOADING data CapsFilterAndMapInPlaceMethodInfo instance (signature ~ (Gst.Callbacks.CapsFilterMapFunc -> m ()), MonadIO m) => O.MethodInfo CapsFilterAndMapInPlaceMethodInfo Caps signature where overloadedMethod _ = capsFilterAndMapInPlace #endif -- method Caps::fixate -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps to fixate", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_fixate" gst_caps_fixate :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Caps) {- | Modifies the given /@caps@/ into a representation with only fixed values. First the caps will be truncated and then the first structure will be fixated with 'GI.Gst.Structs.Structure.structureFixate'. This function takes ownership of /@caps@/ and will call @/gst_caps_make_writable()/@ on it so you must not use /@caps@/ afterwards unless you keep an additional reference to it with @/gst_caps_ref()/@. -} capsFixate :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' to fixate -} -> m Caps {- ^ __Returns:__ the fixated caps -} capsFixate caps = liftIO $ do caps' <- B.ManagedPtr.disownBoxed caps result <- gst_caps_fixate caps' checkUnexpectedReturnNULL "capsFixate" result result' <- (wrapBoxed Caps) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsFixateMethodInfo instance (signature ~ (m Caps), MonadIO m) => O.MethodInfo CapsFixateMethodInfo Caps signature where overloadedMethod _ = capsFixate #endif -- method Caps::foreach -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface (Name {namespace = "Gst", name = "CapsForeachFunc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a function to call for each field", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "private data", 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_caps_foreach" gst_caps_foreach :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) FunPtr Gst.Callbacks.C_CapsForeachFunc -> -- func : TInterface (Name {namespace = "Gst", name = "CapsForeachFunc"}) Ptr () -> -- user_data : TBasicType TPtr IO CInt {- | Calls the provided function once for each structure and caps feature in the 'GI.Gst.Structs.Caps.Caps'. The function must not modify the fields. Also see 'GI.Gst.Structs.Caps.capsMapInPlace' and 'GI.Gst.Structs.Caps.capsFilterAndMapInPlace'. /Since: 1.6/ -} capsForeach :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Gst.Callbacks.CapsForeachFunc {- ^ /@func@/: a function to call for each field -} -> m Bool {- ^ __Returns:__ 'True' if the supplied function returns 'True' for each call, 'False' otherwise. -} capsForeach caps func = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps func' <- Gst.Callbacks.mk_CapsForeachFunc (Gst.Callbacks.wrap_CapsForeachFunc Nothing (Gst.Callbacks.drop_closures_CapsForeachFunc func)) let userData = nullPtr result <- gst_caps_foreach caps' func' userData let result' = (/= 0) result safeFreeFunPtr $ castFunPtrToPtr func' touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsForeachMethodInfo instance (signature ~ (Gst.Callbacks.CapsForeachFunc -> m Bool), MonadIO m) => O.MethodInfo CapsForeachMethodInfo Caps signature where overloadedMethod _ = capsForeach #endif -- method Caps::get_features -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the index of the structure", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "CapsFeatures"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_get_features" gst_caps_get_features :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Word32 -> -- index : TBasicType TUInt IO (Ptr Gst.CapsFeatures.CapsFeatures) {- | Finds the features in /@caps@/ that has the index /@index@/, and returns it. WARNING: This function takes a const GstCaps *, but returns a non-const GstCapsFeatures *. This is for programming convenience -- the caller should be aware that structures inside a constant 'GI.Gst.Structs.Caps.Caps' should not be modified. However, if you know the caps are writable, either because you have just copied them or made them writable with @/gst_caps_make_writable()/@, you may modify the features returned in the usual way, e.g. with functions like 'GI.Gst.Structs.CapsFeatures.capsFeaturesAdd'. You do not need to free or unref the structure returned, it belongs to the 'GI.Gst.Structs.Caps.Caps'. /Since: 1.2/ -} capsGetFeatures :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Word32 {- ^ /@index@/: the index of the structure -} -> m (Maybe Gst.CapsFeatures.CapsFeatures) {- ^ __Returns:__ a pointer to the 'GI.Gst.Structs.CapsFeatures.CapsFeatures' corresponding to /@index@/ -} capsGetFeatures caps index = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_get_features caps' index maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newBoxed Gst.CapsFeatures.CapsFeatures) result' return result'' touchManagedPtr caps return maybeResult #if ENABLE_OVERLOADING data CapsGetFeaturesMethodInfo instance (signature ~ (Word32 -> m (Maybe Gst.CapsFeatures.CapsFeatures)), MonadIO m) => O.MethodInfo CapsGetFeaturesMethodInfo Caps signature where overloadedMethod _ = capsGetFeatures #endif -- method Caps::get_size -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUInt) -- throws : False -- Skip return : False foreign import ccall "gst_caps_get_size" gst_caps_get_size :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO Word32 {- | Gets the number of structures contained in /@caps@/. -} capsGetSize :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> m Word32 {- ^ __Returns:__ the number of structures that /@caps@/ contains -} capsGetSize caps = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_get_size caps' touchManagedPtr caps return result #if ENABLE_OVERLOADING data CapsGetSizeMethodInfo instance (signature ~ (m Word32), MonadIO m) => O.MethodInfo CapsGetSizeMethodInfo Caps signature where overloadedMethod _ = capsGetSize #endif -- method Caps::get_structure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the index of the structure", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Structure"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_get_structure" gst_caps_get_structure :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Word32 -> -- index : TBasicType TUInt IO (Ptr Gst.Structure.Structure) {- | Finds the structure in /@caps@/ that has the index /@index@/, and returns it. WARNING: This function takes a const GstCaps *, but returns a non-const GstStructure *. This is for programming convenience -- the caller should be aware that structures inside a constant 'GI.Gst.Structs.Caps.Caps' should not be modified. However, if you know the caps are writable, either because you have just copied them or made them writable with @/gst_caps_make_writable()/@, you may modify the structure returned in the usual way, e.g. with functions like @/gst_structure_set()/@. You do not need to free or unref the structure returned, it belongs to the 'GI.Gst.Structs.Caps.Caps'. -} capsGetStructure :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Word32 {- ^ /@index@/: the index of the structure -} -> m Gst.Structure.Structure {- ^ __Returns:__ a pointer to the 'GI.Gst.Structs.Structure.Structure' corresponding to /@index@/ -} capsGetStructure caps index = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_get_structure caps' index checkUnexpectedReturnNULL "capsGetStructure" result result' <- (newBoxed Gst.Structure.Structure) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsGetStructureMethodInfo instance (signature ~ (Word32 -> m Gst.Structure.Structure), MonadIO m) => O.MethodInfo CapsGetStructureMethodInfo Caps signature where overloadedMethod _ = capsGetStructure #endif -- method Caps::intersect -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps1", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps to intersect", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps2", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps to intersect", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_intersect" gst_caps_intersect :: Ptr Caps -> -- caps1 : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- caps2 : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Caps) {- | Creates a new 'GI.Gst.Structs.Caps.Caps' that contains all the formats that are common to both /@caps1@/ and /@caps2@/. Defaults to 'GI.Gst.Enums.CapsIntersectModeZigZag' mode. -} capsIntersect :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps1@/: a 'GI.Gst.Structs.Caps.Caps' to intersect -} -> Caps {- ^ /@caps2@/: a 'GI.Gst.Structs.Caps.Caps' to intersect -} -> m Caps {- ^ __Returns:__ the new 'GI.Gst.Structs.Caps.Caps' -} capsIntersect caps1 caps2 = liftIO $ do caps1' <- unsafeManagedPtrGetPtr caps1 caps2' <- unsafeManagedPtrGetPtr caps2 result <- gst_caps_intersect caps1' caps2' checkUnexpectedReturnNULL "capsIntersect" result result' <- (wrapBoxed Caps) result touchManagedPtr caps1 touchManagedPtr caps2 return result' #if ENABLE_OVERLOADING data CapsIntersectMethodInfo instance (signature ~ (Caps -> m Caps), MonadIO m) => O.MethodInfo CapsIntersectMethodInfo Caps signature where overloadedMethod _ = capsIntersect #endif -- method Caps::intersect_full -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps1", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps to intersect", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps2", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps to intersect", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mode", argType = TInterface (Name {namespace = "Gst", name = "CapsIntersectMode"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The intersection algorithm/mode to use", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_intersect_full" gst_caps_intersect_full :: Ptr Caps -> -- caps1 : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- caps2 : TInterface (Name {namespace = "Gst", name = "Caps"}) CUInt -> -- mode : TInterface (Name {namespace = "Gst", name = "CapsIntersectMode"}) IO (Ptr Caps) {- | Creates a new 'GI.Gst.Structs.Caps.Caps' that contains all the formats that are common to both /@caps1@/ and /@caps2@/, the order is defined by the 'GI.Gst.Enums.CapsIntersectMode' used. -} capsIntersectFull :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps1@/: a 'GI.Gst.Structs.Caps.Caps' to intersect -} -> Caps {- ^ /@caps2@/: a 'GI.Gst.Structs.Caps.Caps' to intersect -} -> Gst.Enums.CapsIntersectMode {- ^ /@mode@/: The intersection algorithm\/mode to use -} -> m Caps {- ^ __Returns:__ the new 'GI.Gst.Structs.Caps.Caps' -} capsIntersectFull caps1 caps2 mode = liftIO $ do caps1' <- unsafeManagedPtrGetPtr caps1 caps2' <- unsafeManagedPtrGetPtr caps2 let mode' = (fromIntegral . fromEnum) mode result <- gst_caps_intersect_full caps1' caps2' mode' checkUnexpectedReturnNULL "capsIntersectFull" result result' <- (wrapBoxed Caps) result touchManagedPtr caps1 touchManagedPtr caps2 return result' #if ENABLE_OVERLOADING data CapsIntersectFullMethodInfo instance (signature ~ (Caps -> Gst.Enums.CapsIntersectMode -> m Caps), MonadIO m) => O.MethodInfo CapsIntersectFullMethodInfo Caps signature where overloadedMethod _ = capsIntersectFull #endif -- method Caps::is_always_compatible -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps1", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to test", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps2", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to test", 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_caps_is_always_compatible" gst_caps_is_always_compatible :: Ptr Caps -> -- caps1 : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- caps2 : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | A given 'GI.Gst.Structs.Caps.Caps' structure is always compatible with another if every media format that is in the first is also contained in the second. That is, /@caps1@/ is a subset of /@caps2@/. -} capsIsAlwaysCompatible :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps1@/: the 'GI.Gst.Structs.Caps.Caps' to test -} -> Caps {- ^ /@caps2@/: the 'GI.Gst.Structs.Caps.Caps' to test -} -> m Bool {- ^ __Returns:__ 'True' if /@caps1@/ is a subset of /@caps2@/. -} capsIsAlwaysCompatible caps1 caps2 = liftIO $ do caps1' <- unsafeManagedPtrGetPtr caps1 caps2' <- unsafeManagedPtrGetPtr caps2 result <- gst_caps_is_always_compatible caps1' caps2' let result' = (/= 0) result touchManagedPtr caps1 touchManagedPtr caps2 return result' #if ENABLE_OVERLOADING data CapsIsAlwaysCompatibleMethodInfo instance (signature ~ (Caps -> m Bool), MonadIO m) => O.MethodInfo CapsIsAlwaysCompatibleMethodInfo Caps signature where overloadedMethod _ = capsIsAlwaysCompatible #endif -- method Caps::is_any -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to test", 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_caps_is_any" gst_caps_is_any :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Determines if /@caps@/ represents any media format. -} capsIsAny :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to test -} -> m Bool {- ^ __Returns:__ 'True' if /@caps@/ represents any format. -} capsIsAny caps = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_is_any caps' let result' = (/= 0) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsIsAnyMethodInfo instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo CapsIsAnyMethodInfo Caps signature where overloadedMethod _ = capsIsAny #endif -- method Caps::is_empty -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to test", 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_caps_is_empty" gst_caps_is_empty :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Determines if /@caps@/ represents no media formats. -} capsIsEmpty :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to test -} -> m Bool {- ^ __Returns:__ 'True' if /@caps@/ represents no formats. -} capsIsEmpty caps = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_is_empty caps' let result' = (/= 0) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsIsEmptyMethodInfo instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo CapsIsEmptyMethodInfo Caps signature where overloadedMethod _ = capsIsEmpty #endif -- method Caps::is_equal -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps1", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps2", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "another #GstCaps", 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_caps_is_equal" gst_caps_is_equal :: Ptr Caps -> -- caps1 : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- caps2 : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Checks if the given caps represent the same set of caps. -} capsIsEqual :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps1@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Caps {- ^ /@caps2@/: another 'GI.Gst.Structs.Caps.Caps' -} -> m Bool {- ^ __Returns:__ 'True' if both caps are equal. -} capsIsEqual caps1 caps2 = liftIO $ do caps1' <- unsafeManagedPtrGetPtr caps1 caps2' <- unsafeManagedPtrGetPtr caps2 result <- gst_caps_is_equal caps1' caps2' let result' = (/= 0) result touchManagedPtr caps1 touchManagedPtr caps2 return result' #if ENABLE_OVERLOADING data CapsIsEqualMethodInfo instance (signature ~ (Caps -> m Bool), MonadIO m) => O.MethodInfo CapsIsEqualMethodInfo Caps signature where overloadedMethod _ = capsIsEqual #endif -- method Caps::is_equal_fixed -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps1", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to test", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps2", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to test", 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_caps_is_equal_fixed" gst_caps_is_equal_fixed :: Ptr Caps -> -- caps1 : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- caps2 : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Tests if two 'GI.Gst.Structs.Caps.Caps' are equal. This function only works on fixed 'GI.Gst.Structs.Caps.Caps'. -} capsIsEqualFixed :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps1@/: the 'GI.Gst.Structs.Caps.Caps' to test -} -> Caps {- ^ /@caps2@/: the 'GI.Gst.Structs.Caps.Caps' to test -} -> m Bool {- ^ __Returns:__ 'True' if the arguments represent the same format -} capsIsEqualFixed caps1 caps2 = liftIO $ do caps1' <- unsafeManagedPtrGetPtr caps1 caps2' <- unsafeManagedPtrGetPtr caps2 result <- gst_caps_is_equal_fixed caps1' caps2' let result' = (/= 0) result touchManagedPtr caps1 touchManagedPtr caps2 return result' #if ENABLE_OVERLOADING data CapsIsEqualFixedMethodInfo instance (signature ~ (Caps -> m Bool), MonadIO m) => O.MethodInfo CapsIsEqualFixedMethodInfo Caps signature where overloadedMethod _ = capsIsEqualFixed #endif -- method Caps::is_fixed -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to test", 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_caps_is_fixed" gst_caps_is_fixed :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Fixed 'GI.Gst.Structs.Caps.Caps' describe exactly one format, that is, they have exactly one structure, and each field in the structure describes a fixed type. Examples of non-fixed types are GST_TYPE_INT_RANGE and GST_TYPE_LIST. -} capsIsFixed :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to test -} -> m Bool {- ^ __Returns:__ 'True' if /@caps@/ is fixed -} capsIsFixed caps = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_is_fixed caps' let result' = (/= 0) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsIsFixedMethodInfo instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo CapsIsFixedMethodInfo Caps signature where overloadedMethod _ = capsIsFixed #endif -- method Caps::is_strictly_equal -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps1", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps2", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "another #GstCaps", 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_caps_is_strictly_equal" gst_caps_is_strictly_equal :: Ptr Caps -> -- caps1 : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- caps2 : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Checks if the given caps are exactly the same set of caps. -} capsIsStrictlyEqual :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps1@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Caps {- ^ /@caps2@/: another 'GI.Gst.Structs.Caps.Caps' -} -> m Bool {- ^ __Returns:__ 'True' if both caps are strictly equal. -} capsIsStrictlyEqual caps1 caps2 = liftIO $ do caps1' <- unsafeManagedPtrGetPtr caps1 caps2' <- unsafeManagedPtrGetPtr caps2 result <- gst_caps_is_strictly_equal caps1' caps2' let result' = (/= 0) result touchManagedPtr caps1 touchManagedPtr caps2 return result' #if ENABLE_OVERLOADING data CapsIsStrictlyEqualMethodInfo instance (signature ~ (Caps -> m Bool), MonadIO m) => O.MethodInfo CapsIsStrictlyEqualMethodInfo Caps signature where overloadedMethod _ = capsIsStrictlyEqual #endif -- method Caps::is_subset -- method type : OrdinaryMethod -- Args : [Arg {argCName = "subset", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "superset", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a potentially greater #GstCaps", 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_caps_is_subset" gst_caps_is_subset :: Ptr Caps -> -- subset : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- superset : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Checks if all caps represented by /@subset@/ are also represented by /@superset@/. -} capsIsSubset :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@subset@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Caps {- ^ /@superset@/: a potentially greater 'GI.Gst.Structs.Caps.Caps' -} -> m Bool {- ^ __Returns:__ 'True' if /@subset@/ is a subset of /@superset@/ -} capsIsSubset subset superset = liftIO $ do subset' <- unsafeManagedPtrGetPtr subset superset' <- unsafeManagedPtrGetPtr superset result <- gst_caps_is_subset subset' superset' let result' = (/= 0) result touchManagedPtr subset touchManagedPtr superset return result' #if ENABLE_OVERLOADING data CapsIsSubsetMethodInfo instance (signature ~ (Caps -> m Bool), MonadIO m) => O.MethodInfo CapsIsSubsetMethodInfo Caps signature where overloadedMethod _ = capsIsSubset #endif -- method Caps::is_subset_structure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "structure", argType = TInterface (Name {namespace = "Gst", name = "Structure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a potential #GstStructure subset of @caps", 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_caps_is_subset_structure" gst_caps_is_subset_structure :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Gst.Structure.Structure -> -- structure : TInterface (Name {namespace = "Gst", name = "Structure"}) IO CInt {- | Checks if /@structure@/ is a subset of /@caps@/. See 'GI.Gst.Structs.Caps.capsIsSubset' for more information. -} capsIsSubsetStructure :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Gst.Structure.Structure {- ^ /@structure@/: a potential 'GI.Gst.Structs.Structure.Structure' subset of /@caps@/ -} -> m Bool {- ^ __Returns:__ 'True' if /@structure@/ is a subset of /@caps@/ -} capsIsSubsetStructure caps structure = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps structure' <- unsafeManagedPtrGetPtr structure result <- gst_caps_is_subset_structure caps' structure' let result' = (/= 0) result touchManagedPtr caps touchManagedPtr structure return result' #if ENABLE_OVERLOADING data CapsIsSubsetStructureMethodInfo instance (signature ~ (Gst.Structure.Structure -> m Bool), MonadIO m) => O.MethodInfo CapsIsSubsetStructureMethodInfo Caps signature where overloadedMethod _ = capsIsSubsetStructure #endif -- method Caps::is_subset_structure_full -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "structure", argType = TInterface (Name {namespace = "Gst", name = "Structure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a potential #GstStructure subset of @caps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "features", argType = TInterface (Name {namespace = "Gst", name = "CapsFeatures"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GstCapsFeatures for @structure", 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_caps_is_subset_structure_full" gst_caps_is_subset_structure_full :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Gst.Structure.Structure -> -- structure : TInterface (Name {namespace = "Gst", name = "Structure"}) Ptr Gst.CapsFeatures.CapsFeatures -> -- features : TInterface (Name {namespace = "Gst", name = "CapsFeatures"}) IO CInt {- | Checks if /@structure@/ is a subset of /@caps@/. See 'GI.Gst.Structs.Caps.capsIsSubset' for more information. /Since: 1.2/ -} capsIsSubsetStructureFull :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Gst.Structure.Structure {- ^ /@structure@/: a potential 'GI.Gst.Structs.Structure.Structure' subset of /@caps@/ -} -> Maybe (Gst.CapsFeatures.CapsFeatures) {- ^ /@features@/: a 'GI.Gst.Structs.CapsFeatures.CapsFeatures' for /@structure@/ -} -> m Bool {- ^ __Returns:__ 'True' if /@structure@/ is a subset of /@caps@/ -} capsIsSubsetStructureFull caps structure features = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps structure' <- unsafeManagedPtrGetPtr structure maybeFeatures <- case features of Nothing -> return nullPtr Just jFeatures -> do jFeatures' <- unsafeManagedPtrGetPtr jFeatures return jFeatures' result <- gst_caps_is_subset_structure_full caps' structure' maybeFeatures let result' = (/= 0) result touchManagedPtr caps touchManagedPtr structure whenJust features touchManagedPtr return result' #if ENABLE_OVERLOADING data CapsIsSubsetStructureFullMethodInfo instance (signature ~ (Gst.Structure.Structure -> Maybe (Gst.CapsFeatures.CapsFeatures) -> m Bool), MonadIO m) => O.MethodInfo CapsIsSubsetStructureFullMethodInfo Caps signature where overloadedMethod _ = capsIsSubsetStructureFull #endif -- method Caps::map_in_place -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface (Name {namespace = "Gst", name = "CapsMapFunc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a function to call for each field", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "private data", 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_caps_map_in_place" gst_caps_map_in_place :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) FunPtr Gst.Callbacks.C_CapsMapFunc -> -- func : TInterface (Name {namespace = "Gst", name = "CapsMapFunc"}) Ptr () -> -- user_data : TBasicType TPtr IO CInt {- | Calls the provided function once for each structure and caps feature in the 'GI.Gst.Structs.Caps.Caps'. In contrast to 'GI.Gst.Structs.Caps.capsForeach', the function may modify but not delete the structures and features. The caps must be mutable. /Since: 1.6/ -} capsMapInPlace :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Gst.Callbacks.CapsMapFunc {- ^ /@func@/: a function to call for each field -} -> m Bool {- ^ __Returns:__ 'True' if the supplied function returns 'True' for each call, 'False' otherwise. -} capsMapInPlace caps func = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps func' <- Gst.Callbacks.mk_CapsMapFunc (Gst.Callbacks.wrap_CapsMapFunc Nothing (Gst.Callbacks.drop_closures_CapsMapFunc func)) let userData = nullPtr result <- gst_caps_map_in_place caps' func' userData let result' = (/= 0) result safeFreeFunPtr $ castFunPtrToPtr func' touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsMapInPlaceMethodInfo instance (signature ~ (Gst.Callbacks.CapsMapFunc -> m Bool), MonadIO m) => O.MethodInfo CapsMapInPlaceMethodInfo Caps signature where overloadedMethod _ = capsMapInPlace #endif -- method Caps::merge -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps1", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps that will take the new entries", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "caps2", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to merge in", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_merge" gst_caps_merge :: Ptr Caps -> -- caps1 : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- caps2 : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Caps) {- | Appends the structures contained in /@caps2@/ to /@caps1@/ if they are not yet expressed by /@caps1@/. The structures in /@caps2@/ are not copied -- they are transferred to a writable copy of /@caps1@/, and then /@caps2@/ is freed. If either caps is ANY, the resulting caps will be ANY. -} capsMerge :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps1@/: the 'GI.Gst.Structs.Caps.Caps' that will take the new entries -} -> Caps {- ^ /@caps2@/: the 'GI.Gst.Structs.Caps.Caps' to merge in -} -> m Caps {- ^ __Returns:__ the merged caps. -} capsMerge caps1 caps2 = liftIO $ do caps1' <- B.ManagedPtr.disownBoxed caps1 caps2' <- B.ManagedPtr.disownBoxed caps2 result <- gst_caps_merge caps1' caps2' checkUnexpectedReturnNULL "capsMerge" result result' <- (wrapBoxed Caps) result touchManagedPtr caps1 touchManagedPtr caps2 return result' #if ENABLE_OVERLOADING data CapsMergeMethodInfo instance (signature ~ (Caps -> m Caps), MonadIO m) => O.MethodInfo CapsMergeMethodInfo Caps signature where overloadedMethod _ = capsMerge #endif -- method Caps::merge_structure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to merge into", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "structure", argType = TInterface (Name {namespace = "Gst", name = "Structure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstStructure to merge", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_merge_structure" gst_caps_merge_structure :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Gst.Structure.Structure -> -- structure : TInterface (Name {namespace = "Gst", name = "Structure"}) IO (Ptr Caps) {- | Appends /@structure@/ to /@caps@/ if its not already expressed by /@caps@/. -} capsMergeStructure :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to merge into -} -> Gst.Structure.Structure {- ^ /@structure@/: the 'GI.Gst.Structs.Structure.Structure' to merge -} -> m Caps {- ^ __Returns:__ the merged caps. -} capsMergeStructure caps structure = liftIO $ do caps' <- B.ManagedPtr.disownBoxed caps structure' <- B.ManagedPtr.disownBoxed structure result <- gst_caps_merge_structure caps' structure' checkUnexpectedReturnNULL "capsMergeStructure" result result' <- (wrapBoxed Caps) result touchManagedPtr caps touchManagedPtr structure return result' #if ENABLE_OVERLOADING data CapsMergeStructureMethodInfo instance (signature ~ (Gst.Structure.Structure -> m Caps), MonadIO m) => O.MethodInfo CapsMergeStructureMethodInfo Caps signature where overloadedMethod _ = capsMergeStructure #endif -- method Caps::merge_structure_full -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to merge into", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "structure", argType = TInterface (Name {namespace = "Gst", name = "Structure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstStructure to merge", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "features", argType = TInterface (Name {namespace = "Gst", name = "CapsFeatures"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstCapsFeatures to merge", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_merge_structure_full" gst_caps_merge_structure_full :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Gst.Structure.Structure -> -- structure : TInterface (Name {namespace = "Gst", name = "Structure"}) Ptr Gst.CapsFeatures.CapsFeatures -> -- features : TInterface (Name {namespace = "Gst", name = "CapsFeatures"}) IO (Ptr Caps) {- | Appends /@structure@/ with /@features@/ to /@caps@/ if its not already expressed by /@caps@/. /Since: 1.2/ -} capsMergeStructureFull :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to merge into -} -> Gst.Structure.Structure {- ^ /@structure@/: the 'GI.Gst.Structs.Structure.Structure' to merge -} -> Maybe (Gst.CapsFeatures.CapsFeatures) {- ^ /@features@/: the 'GI.Gst.Structs.CapsFeatures.CapsFeatures' to merge -} -> m Caps {- ^ __Returns:__ the merged caps. -} capsMergeStructureFull caps structure features = liftIO $ do caps' <- B.ManagedPtr.disownBoxed caps structure' <- B.ManagedPtr.disownBoxed structure maybeFeatures <- case features of Nothing -> return nullPtr Just jFeatures -> do jFeatures' <- B.ManagedPtr.disownBoxed jFeatures return jFeatures' result <- gst_caps_merge_structure_full caps' structure' maybeFeatures checkUnexpectedReturnNULL "capsMergeStructureFull" result result' <- (wrapBoxed Caps) result touchManagedPtr caps touchManagedPtr structure whenJust features touchManagedPtr return result' #if ENABLE_OVERLOADING data CapsMergeStructureFullMethodInfo instance (signature ~ (Gst.Structure.Structure -> Maybe (Gst.CapsFeatures.CapsFeatures) -> m Caps), MonadIO m) => O.MethodInfo CapsMergeStructureFullMethodInfo Caps signature where overloadedMethod _ = capsMergeStructureFull #endif -- method Caps::normalize -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps to normalize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_normalize" gst_caps_normalize :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Caps) {- | Returns a 'GI.Gst.Structs.Caps.Caps' that represents the same set of formats as /@caps@/, but contains no lists. Each list is expanded into separate /@gstStructures@/. This function takes ownership of /@caps@/ and will call @/gst_caps_make_writable()/@ on it so you must not use /@caps@/ afterwards unless you keep an additional reference to it with @/gst_caps_ref()/@. -} capsNormalize :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' to normalize -} -> m Caps {- ^ __Returns:__ the normalized 'GI.Gst.Structs.Caps.Caps' -} capsNormalize caps = liftIO $ do caps' <- B.ManagedPtr.disownBoxed caps result <- gst_caps_normalize caps' checkUnexpectedReturnNULL "capsNormalize" result result' <- (wrapBoxed Caps) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsNormalizeMethodInfo instance (signature ~ (m Caps), MonadIO m) => O.MethodInfo CapsNormalizeMethodInfo Caps signature where overloadedMethod _ = capsNormalize #endif -- method Caps::remove_structure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to remove from", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Index of the structure to remove", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_caps_remove_structure" gst_caps_remove_structure :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Word32 -> -- idx : TBasicType TUInt IO () {- | removes the structure with the given index from the list of structures contained in /@caps@/. -} capsRemoveStructure :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to remove from -} -> Word32 {- ^ /@idx@/: Index of the structure to remove -} -> m () capsRemoveStructure caps idx = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps gst_caps_remove_structure caps' idx touchManagedPtr caps return () #if ENABLE_OVERLOADING data CapsRemoveStructureMethodInfo instance (signature ~ (Word32 -> m ()), MonadIO m) => O.MethodInfo CapsRemoveStructureMethodInfo Caps signature where overloadedMethod _ = capsRemoveStructure #endif -- method Caps::set_features -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the index of the structure", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "features", argType = TInterface (Name {namespace = "Gst", name = "CapsFeatures"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstCapsFeatures to set", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_caps_set_features" gst_caps_set_features :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Word32 -> -- index : TBasicType TUInt Ptr Gst.CapsFeatures.CapsFeatures -> -- features : TInterface (Name {namespace = "Gst", name = "CapsFeatures"}) IO () {- | Sets the 'GI.Gst.Structs.CapsFeatures.CapsFeatures' /@features@/ for the structure at /@index@/. /Since: 1.2/ -} capsSetFeatures :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Word32 {- ^ /@index@/: the index of the structure -} -> Maybe (Gst.CapsFeatures.CapsFeatures) {- ^ /@features@/: the 'GI.Gst.Structs.CapsFeatures.CapsFeatures' to set -} -> m () capsSetFeatures caps index features = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps maybeFeatures <- case features of Nothing -> return nullPtr Just jFeatures -> do jFeatures' <- B.ManagedPtr.disownBoxed jFeatures return jFeatures' gst_caps_set_features caps' index maybeFeatures touchManagedPtr caps whenJust features touchManagedPtr return () #if ENABLE_OVERLOADING data CapsSetFeaturesMethodInfo instance (signature ~ (Word32 -> Maybe (Gst.CapsFeatures.CapsFeatures) -> m ()), MonadIO m) => O.MethodInfo CapsSetFeaturesMethodInfo Caps signature where overloadedMethod _ = capsSetFeatures #endif -- method Caps::set_features_simple -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "features", argType = TInterface (Name {namespace = "Gst", name = "CapsFeatures"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstCapsFeatures to set", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_caps_set_features_simple" gst_caps_set_features_simple :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Gst.CapsFeatures.CapsFeatures -> -- features : TInterface (Name {namespace = "Gst", name = "CapsFeatures"}) IO () {- | Sets the 'GI.Gst.Structs.CapsFeatures.CapsFeatures' /@features@/ for all the structures of /@caps@/. /Since: 1.16/ -} capsSetFeaturesSimple :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> Maybe (Gst.CapsFeatures.CapsFeatures) {- ^ /@features@/: the 'GI.Gst.Structs.CapsFeatures.CapsFeatures' to set -} -> m () capsSetFeaturesSimple caps features = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps maybeFeatures <- case features of Nothing -> return nullPtr Just jFeatures -> do jFeatures' <- B.ManagedPtr.disownBoxed jFeatures return jFeatures' gst_caps_set_features_simple caps' maybeFeatures touchManagedPtr caps whenJust features touchManagedPtr return () #if ENABLE_OVERLOADING data CapsSetFeaturesSimpleMethodInfo instance (signature ~ (Maybe (Gst.CapsFeatures.CapsFeatures) -> m ()), MonadIO m) => O.MethodInfo CapsSetFeaturesSimpleMethodInfo Caps signature where overloadedMethod _ = capsSetFeaturesSimple #endif -- method Caps::set_value -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a writable caps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "field", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "name of the field to set", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface (Name {namespace = "GObject", name = "Value"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "value to set the field to", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_caps_set_value" gst_caps_set_value :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) CString -> -- field : TBasicType TUTF8 Ptr GValue -> -- value : TInterface (Name {namespace = "GObject", name = "Value"}) IO () {- | Sets the given /@field@/ on all structures of /@caps@/ to the given /@value@/. This is a convenience function for calling 'GI.Gst.Structs.Structure.structureSetValue' on all structures of /@caps@/. -} capsSetValue :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a writable caps -} -> T.Text {- ^ /@field@/: name of the field to set -} -> GValue {- ^ /@value@/: value to set the field to -} -> m () capsSetValue caps field value = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps field' <- textToCString field value' <- unsafeManagedPtrGetPtr value gst_caps_set_value caps' field' value' touchManagedPtr caps touchManagedPtr value freeMem field' return () #if ENABLE_OVERLOADING data CapsSetValueMethodInfo instance (signature ~ (T.Text -> GValue -> m ()), MonadIO m) => O.MethodInfo CapsSetValueMethodInfo Caps signature where overloadedMethod _ = capsSetValue #endif -- method Caps::simplify -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps to simplify", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_simplify" gst_caps_simplify :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Caps) {- | Converts the given /@caps@/ into a representation that represents the same set of formats, but in a simpler form. Component structures that are identical are merged. Component structures that have values that can be merged are also merged. This function takes ownership of /@caps@/ and will call @/gst_caps_make_writable()/@ on it if necessary, so you must not use /@caps@/ afterwards unless you keep an additional reference to it with @/gst_caps_ref()/@. This method does not preserve the original order of /@caps@/. -} capsSimplify :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' to simplify -} -> m Caps {- ^ __Returns:__ The simplified caps. -} capsSimplify caps = liftIO $ do caps' <- B.ManagedPtr.disownBoxed caps result <- gst_caps_simplify caps' checkUnexpectedReturnNULL "capsSimplify" result result' <- (wrapBoxed Caps) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsSimplifyMethodInfo instance (signature ~ (m Caps), MonadIO m) => O.MethodInfo CapsSimplifyMethodInfo Caps signature where overloadedMethod _ = capsSimplify #endif -- method Caps::steal_structure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to retrieve from", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Index of the structure to retrieve", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Structure"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_steal_structure" gst_caps_steal_structure :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) Word32 -> -- index : TBasicType TUInt IO (Ptr Gst.Structure.Structure) {- | Retrieves the structure with the given index from the list of structures contained in /@caps@/. The caller becomes the owner of the returned structure. -} capsStealStructure :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to retrieve from -} -> Word32 {- ^ /@index@/: Index of the structure to retrieve -} -> m (Maybe Gst.Structure.Structure) {- ^ __Returns:__ a pointer to the 'GI.Gst.Structs.Structure.Structure' corresponding to /@index@/. -} capsStealStructure caps index = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_steal_structure caps' index maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Gst.Structure.Structure) result' return result'' touchManagedPtr caps return maybeResult #if ENABLE_OVERLOADING data CapsStealStructureMethodInfo instance (signature ~ (Word32 -> m (Maybe Gst.Structure.Structure)), MonadIO m) => O.MethodInfo CapsStealStructureMethodInfo Caps signature where overloadedMethod _ = capsStealStructure #endif -- method Caps::subtract -- method type : OrdinaryMethod -- Args : [Arg {argCName = "minuend", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#GstCaps to subtract from", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "subtrahend", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#GstCaps to subtract", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_subtract" gst_caps_subtract :: Ptr Caps -> -- minuend : TInterface (Name {namespace = "Gst", name = "Caps"}) Ptr Caps -> -- subtrahend : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Caps) {- | Subtracts the /@subtrahend@/ from the /@minuend@/. > This function does not work reliably if optional properties for caps > are included on one caps and omitted on the other. -} capsSubtract :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@minuend@/: 'GI.Gst.Structs.Caps.Caps' to subtract from -} -> Caps {- ^ /@subtrahend@/: 'GI.Gst.Structs.Caps.Caps' to subtract -} -> m Caps {- ^ __Returns:__ the resulting caps -} capsSubtract minuend subtrahend = liftIO $ do minuend' <- unsafeManagedPtrGetPtr minuend subtrahend' <- unsafeManagedPtrGetPtr subtrahend result <- gst_caps_subtract minuend' subtrahend' checkUnexpectedReturnNULL "capsSubtract" result result' <- (wrapBoxed Caps) result touchManagedPtr minuend touchManagedPtr subtrahend return result' #if ENABLE_OVERLOADING data CapsSubtractMethodInfo instance (signature ~ (Caps -> m Caps), MonadIO m) => O.MethodInfo CapsSubtractMethodInfo Caps signature where overloadedMethod _ = capsSubtract #endif -- method Caps::to_string -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "gst_caps_to_string" gst_caps_to_string :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CString {- | Converts /@caps@/ to a string representation. This string representation can be converted back to a 'GI.Gst.Structs.Caps.Caps' by 'GI.Gst.Functions.capsFromString'. For debugging purposes its easier to do something like this: === /C code/ > >GST_LOG ("caps are %" GST_PTR_FORMAT, caps); This prints the caps in human readable form. The current implementation of serialization will lead to unexpected results when there are nested 'GI.Gst.Structs.Caps.Caps' \/ 'GI.Gst.Structs.Structure.Structure' deeper than one level. -} capsToString :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -} -> m T.Text {- ^ __Returns:__ a newly allocated string representing /@caps@/. -} capsToString caps = liftIO $ do caps' <- unsafeManagedPtrGetPtr caps result <- gst_caps_to_string caps' checkUnexpectedReturnNULL "capsToString" result result' <- cstringToText result freeMem result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsToStringMethodInfo instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo CapsToStringMethodInfo Caps signature where overloadedMethod _ = capsToString #endif -- method Caps::truncate -- method type : OrdinaryMethod -- Args : [Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstCaps to truncate", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_truncate" gst_caps_truncate :: Ptr Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Caps) {- | Discard all but the first structure from /@caps@/. Useful when fixating. This function takes ownership of /@caps@/ and will call @/gst_caps_make_writable()/@ on it if necessary, so you must not use /@caps@/ afterwards unless you keep an additional reference to it with @/gst_caps_ref()/@. -} capsTruncate :: (B.CallStack.HasCallStack, MonadIO m) => Caps {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to truncate -} -> m Caps {- ^ __Returns:__ truncated caps -} capsTruncate caps = liftIO $ do caps' <- B.ManagedPtr.disownBoxed caps result <- gst_caps_truncate caps' checkUnexpectedReturnNULL "capsTruncate" result result' <- (wrapBoxed Caps) result touchManagedPtr caps return result' #if ENABLE_OVERLOADING data CapsTruncateMethodInfo instance (signature ~ (m Caps), MonadIO m) => O.MethodInfo CapsTruncateMethodInfo Caps signature where overloadedMethod _ = capsTruncate #endif -- method Caps::from_string -- method type : MemberFunction -- Args : [Arg {argCName = "string", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a string to convert to #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"})) -- throws : False -- Skip return : False foreign import ccall "gst_caps_from_string" gst_caps_from_string :: CString -> -- string : TBasicType TUTF8 IO (Ptr Caps) {- | Converts /@caps@/ from a string representation. The current implementation of serialization will lead to unexpected results when there are nested 'GI.Gst.Structs.Caps.Caps' \/ 'GI.Gst.Structs.Structure.Structure' deeper than one level. -} capsFromString :: (B.CallStack.HasCallStack, MonadIO m) => T.Text {- ^ /@string@/: a string to convert to 'GI.Gst.Structs.Caps.Caps' -} -> m (Maybe Caps) {- ^ __Returns:__ a newly allocated 'GI.Gst.Structs.Caps.Caps' -} capsFromString string = liftIO $ do string' <- textToCString string result <- gst_caps_from_string string' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Caps) result' return result'' freeMem string' return maybeResult #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING type family ResolveCapsMethod (t :: Symbol) (o :: *) :: * where ResolveCapsMethod "append" o = CapsAppendMethodInfo ResolveCapsMethod "appendStructure" o = CapsAppendStructureMethodInfo ResolveCapsMethod "appendStructureFull" o = CapsAppendStructureFullMethodInfo ResolveCapsMethod "canIntersect" o = CapsCanIntersectMethodInfo ResolveCapsMethod "copy" o = CapsCopyMethodInfo ResolveCapsMethod "copyNth" o = CapsCopyNthMethodInfo ResolveCapsMethod "filterAndMapInPlace" o = CapsFilterAndMapInPlaceMethodInfo ResolveCapsMethod "fixate" o = CapsFixateMethodInfo ResolveCapsMethod "foreach" o = CapsForeachMethodInfo ResolveCapsMethod "intersect" o = CapsIntersectMethodInfo ResolveCapsMethod "intersectFull" o = CapsIntersectFullMethodInfo ResolveCapsMethod "isAlwaysCompatible" o = CapsIsAlwaysCompatibleMethodInfo ResolveCapsMethod "isAny" o = CapsIsAnyMethodInfo ResolveCapsMethod "isEmpty" o = CapsIsEmptyMethodInfo ResolveCapsMethod "isEqual" o = CapsIsEqualMethodInfo ResolveCapsMethod "isEqualFixed" o = CapsIsEqualFixedMethodInfo ResolveCapsMethod "isFixed" o = CapsIsFixedMethodInfo ResolveCapsMethod "isStrictlyEqual" o = CapsIsStrictlyEqualMethodInfo ResolveCapsMethod "isSubset" o = CapsIsSubsetMethodInfo ResolveCapsMethod "isSubsetStructure" o = CapsIsSubsetStructureMethodInfo ResolveCapsMethod "isSubsetStructureFull" o = CapsIsSubsetStructureFullMethodInfo ResolveCapsMethod "mapInPlace" o = CapsMapInPlaceMethodInfo ResolveCapsMethod "merge" o = CapsMergeMethodInfo ResolveCapsMethod "mergeStructure" o = CapsMergeStructureMethodInfo ResolveCapsMethod "mergeStructureFull" o = CapsMergeStructureFullMethodInfo ResolveCapsMethod "normalize" o = CapsNormalizeMethodInfo ResolveCapsMethod "removeStructure" o = CapsRemoveStructureMethodInfo ResolveCapsMethod "simplify" o = CapsSimplifyMethodInfo ResolveCapsMethod "stealStructure" o = CapsStealStructureMethodInfo ResolveCapsMethod "subtract" o = CapsSubtractMethodInfo ResolveCapsMethod "toString" o = CapsToStringMethodInfo ResolveCapsMethod "truncate" o = CapsTruncateMethodInfo ResolveCapsMethod "getFeatures" o = CapsGetFeaturesMethodInfo ResolveCapsMethod "getSize" o = CapsGetSizeMethodInfo ResolveCapsMethod "getStructure" o = CapsGetStructureMethodInfo ResolveCapsMethod "setFeatures" o = CapsSetFeaturesMethodInfo ResolveCapsMethod "setFeaturesSimple" o = CapsSetFeaturesSimpleMethodInfo ResolveCapsMethod "setValue" o = CapsSetValueMethodInfo ResolveCapsMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveCapsMethod t Caps, O.MethodInfo info Caps p) => OL.IsLabel t (Caps -> 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