gi-gstvideo-1.0.18: GI/GstVideo/Structs/VideoConverter.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
/No description available in the introspection data./
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.GstVideo.Structs.VideoConverter
(
-- * Exported types
VideoConverter(..) ,
noVideoConverter ,
-- * Methods
-- ** frame #method:frame#
#if ENABLE_OVERLOADING
VideoConverterFrameMethodInfo ,
#endif
videoConverterFrame ,
-- ** free #method:free#
#if ENABLE_OVERLOADING
VideoConverterFreeMethodInfo ,
#endif
videoConverterFree ,
-- ** getConfig #method:getConfig#
#if ENABLE_OVERLOADING
VideoConverterGetConfigMethodInfo ,
#endif
videoConverterGetConfig ,
-- ** setConfig #method:setConfig#
#if ENABLE_OVERLOADING
VideoConverterSetConfigMethodInfo ,
#endif
videoConverterSetConfig ,
) 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.Structs.Structure as Gst.Structure
import {-# SOURCE #-} qualified GI.GstVideo.Structs.VideoFrame as GstVideo.VideoFrame
-- | Memory-managed wrapper type.
newtype VideoConverter = VideoConverter (ManagedPtr VideoConverter)
-- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
instance WrappedPtr VideoConverter where
wrappedPtrCalloc = return nullPtr
wrappedPtrCopy = return
wrappedPtrFree = Nothing
-- | A convenience alias for `Nothing` :: `Maybe` `VideoConverter`.
noVideoConverter :: Maybe VideoConverter
noVideoConverter = Nothing
#if ENABLE_OVERLOADING
instance O.HasAttributeList VideoConverter
type instance O.AttributeList VideoConverter = VideoConverterAttributeList
type VideoConverterAttributeList = ('[ ] :: [(Symbol, *)])
#endif
-- method VideoConverter::frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "convert", argType = TInterface (Name {namespace = "GstVideo", name = "VideoConverter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoConverter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src", argType = TInterface (Name {namespace = "GstVideo", name = "VideoFrame"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoFrame", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface (Name {namespace = "GstVideo", name = "VideoFrame"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoFrame", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_converter_frame" gst_video_converter_frame ::
Ptr VideoConverter -> -- convert : TInterface (Name {namespace = "GstVideo", name = "VideoConverter"})
Ptr GstVideo.VideoFrame.VideoFrame -> -- src : TInterface (Name {namespace = "GstVideo", name = "VideoFrame"})
Ptr GstVideo.VideoFrame.VideoFrame -> -- dest : TInterface (Name {namespace = "GstVideo", name = "VideoFrame"})
IO ()
{- |
Convert the pixels of /@src@/ into /@dest@/ using /@convert@/.
/Since: 1.6/
-}
videoConverterFrame ::
(B.CallStack.HasCallStack, MonadIO m) =>
VideoConverter
{- ^ /@convert@/: a 'GI.GstVideo.Structs.VideoConverter.VideoConverter' -}
-> GstVideo.VideoFrame.VideoFrame
{- ^ /@src@/: a 'GI.GstVideo.Structs.VideoFrame.VideoFrame' -}
-> GstVideo.VideoFrame.VideoFrame
{- ^ /@dest@/: a 'GI.GstVideo.Structs.VideoFrame.VideoFrame' -}
-> m ()
videoConverterFrame convert src dest = liftIO $ do
convert' <- unsafeManagedPtrGetPtr convert
src' <- unsafeManagedPtrGetPtr src
dest' <- unsafeManagedPtrGetPtr dest
gst_video_converter_frame convert' src' dest'
touchManagedPtr convert
touchManagedPtr src
touchManagedPtr dest
return ()
#if ENABLE_OVERLOADING
data VideoConverterFrameMethodInfo
instance (signature ~ (GstVideo.VideoFrame.VideoFrame -> GstVideo.VideoFrame.VideoFrame -> m ()), MonadIO m) => O.MethodInfo VideoConverterFrameMethodInfo VideoConverter signature where
overloadedMethod _ = videoConverterFrame
#endif
-- method VideoConverter::free
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "convert", argType = TInterface (Name {namespace = "GstVideo", name = "VideoConverter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoConverter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_converter_free" gst_video_converter_free ::
Ptr VideoConverter -> -- convert : TInterface (Name {namespace = "GstVideo", name = "VideoConverter"})
IO ()
{- |
Free /@convert@/
/Since: 1.6/
-}
videoConverterFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
VideoConverter
{- ^ /@convert@/: a 'GI.GstVideo.Structs.VideoConverter.VideoConverter' -}
-> m ()
videoConverterFree convert = liftIO $ do
convert' <- unsafeManagedPtrGetPtr convert
gst_video_converter_free convert'
touchManagedPtr convert
return ()
#if ENABLE_OVERLOADING
data VideoConverterFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo VideoConverterFreeMethodInfo VideoConverter signature where
overloadedMethod _ = videoConverterFree
#endif
-- method VideoConverter::get_config
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "convert", argType = TInterface (Name {namespace = "GstVideo", name = "VideoConverter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoConverter", 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_video_converter_get_config" gst_video_converter_get_config ::
Ptr VideoConverter -> -- convert : TInterface (Name {namespace = "GstVideo", name = "VideoConverter"})
IO (Ptr Gst.Structure.Structure)
{- |
Get the current configuration of /@convert@/.
-}
videoConverterGetConfig ::
(B.CallStack.HasCallStack, MonadIO m) =>
VideoConverter
{- ^ /@convert@/: a 'GI.GstVideo.Structs.VideoConverter.VideoConverter' -}
-> m Gst.Structure.Structure
{- ^ __Returns:__ a 'GI.Gst.Structs.Structure.Structure' that remains valid for as long as /@convert@/ is valid
or until 'GI.GstVideo.Structs.VideoConverter.videoConverterSetConfig' is called. -}
videoConverterGetConfig convert = liftIO $ do
convert' <- unsafeManagedPtrGetPtr convert
result <- gst_video_converter_get_config convert'
checkUnexpectedReturnNULL "videoConverterGetConfig" result
result' <- (newBoxed Gst.Structure.Structure) result
touchManagedPtr convert
return result'
#if ENABLE_OVERLOADING
data VideoConverterGetConfigMethodInfo
instance (signature ~ (m Gst.Structure.Structure), MonadIO m) => O.MethodInfo VideoConverterGetConfigMethodInfo VideoConverter signature where
overloadedMethod _ = videoConverterGetConfig
#endif
-- method VideoConverter::set_config
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "convert", argType = TInterface (Name {namespace = "GstVideo", name = "VideoConverter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoConverter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "config", argType = TInterface (Name {namespace = "Gst", name = "Structure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstStructure", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_converter_set_config" gst_video_converter_set_config ::
Ptr VideoConverter -> -- convert : TInterface (Name {namespace = "GstVideo", name = "VideoConverter"})
Ptr Gst.Structure.Structure -> -- config : TInterface (Name {namespace = "Gst", name = "Structure"})
IO CInt
{- |
Set /@config@/ as extra configuraion for /@convert@/.
If the parameters in /@config@/ can not be set exactly, this function returns
'False' and will try to update as much state as possible. The new state can
then be retrieved and refined with 'GI.GstVideo.Structs.VideoConverter.videoConverterGetConfig'.
Look at the @/GST_VIDEO_CONVERTER_OPT_/@* fields to check valid configuration
option and values.
/Since: 1.6/
-}
videoConverterSetConfig ::
(B.CallStack.HasCallStack, MonadIO m) =>
VideoConverter
{- ^ /@convert@/: a 'GI.GstVideo.Structs.VideoConverter.VideoConverter' -}
-> Gst.Structure.Structure
{- ^ /@config@/: a 'GI.Gst.Structs.Structure.Structure' -}
-> m Bool
{- ^ __Returns:__ 'True' when /@config@/ could be set. -}
videoConverterSetConfig convert config = liftIO $ do
convert' <- unsafeManagedPtrGetPtr convert
config' <- B.ManagedPtr.disownBoxed config
result <- gst_video_converter_set_config convert' config'
let result' = (/= 0) result
touchManagedPtr convert
touchManagedPtr config
return result'
#if ENABLE_OVERLOADING
data VideoConverterSetConfigMethodInfo
instance (signature ~ (Gst.Structure.Structure -> m Bool), MonadIO m) => O.MethodInfo VideoConverterSetConfigMethodInfo VideoConverter signature where
overloadedMethod _ = videoConverterSetConfig
#endif
#if ENABLE_OVERLOADING
type family ResolveVideoConverterMethod (t :: Symbol) (o :: *) :: * where
ResolveVideoConverterMethod "frame" o = VideoConverterFrameMethodInfo
ResolveVideoConverterMethod "free" o = VideoConverterFreeMethodInfo
ResolveVideoConverterMethod "getConfig" o = VideoConverterGetConfigMethodInfo
ResolveVideoConverterMethod "setConfig" o = VideoConverterSetConfigMethodInfo
ResolveVideoConverterMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveVideoConverterMethod t VideoConverter, O.MethodInfo info VideoConverter p) => OL.IsLabel t (VideoConverter -> 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