{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) A parser for detecting and extracting /@gstVideoAncillary@/ data from Vertical Blanking Interval lines of component signals. /Since: 1.16/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.GstVideo.Structs.VideoVBIParser ( -- * Exported types VideoVBIParser(..) , noVideoVBIParser , -- * Methods -- ** addLine #method:addLine# #if ENABLE_OVERLOADING VideoVBIParserAddLineMethodInfo , #endif videoVBIParserAddLine , -- ** copy #method:copy# #if ENABLE_OVERLOADING VideoVBIParserCopyMethodInfo , #endif videoVBIParserCopy , -- ** free #method:free# #if ENABLE_OVERLOADING VideoVBIParserFreeMethodInfo , #endif videoVBIParserFree , -- ** getAncillary #method:getAncillary# #if ENABLE_OVERLOADING VideoVBIParserGetAncillaryMethodInfo , #endif videoVBIParserGetAncillary , -- ** new #method:new# videoVBIParserNew , ) 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 {-# SOURCE #-} qualified GI.GstVideo.Enums as GstVideo.Enums import {-# SOURCE #-} qualified GI.GstVideo.Structs.VideoAncillary as GstVideo.VideoAncillary -- | Memory-managed wrapper type. newtype VideoVBIParser = VideoVBIParser (ManagedPtr VideoVBIParser) foreign import ccall "gst_video_vbi_parser_get_type" c_gst_video_vbi_parser_get_type :: IO GType instance BoxedObject VideoVBIParser where boxedType _ = c_gst_video_vbi_parser_get_type -- | A convenience alias for `Nothing` :: `Maybe` `VideoVBIParser`. noVideoVBIParser :: Maybe VideoVBIParser noVideoVBIParser = Nothing #if ENABLE_OVERLOADING instance O.HasAttributeList VideoVBIParser type instance O.AttributeList VideoVBIParser = VideoVBIParserAttributeList type VideoVBIParserAttributeList = ('[ ] :: [(Symbol, *)]) #endif -- method VideoVBIParser::new -- method type : Constructor -- Args : [Arg {argCName = "format", argType = TInterface (Name {namespace = "GstVideo", name = "VideoFormat"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoFormat", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixel_width", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The width in pixel to use", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"})) -- throws : False -- Skip return : False foreign import ccall "gst_video_vbi_parser_new" gst_video_vbi_parser_new :: CUInt -> -- format : TInterface (Name {namespace = "GstVideo", name = "VideoFormat"}) Word32 -> -- pixel_width : TBasicType TUInt32 IO (Ptr VideoVBIParser) {- | Create a new 'GI.GstVideo.Structs.VideoVBIParser.VideoVBIParser' for the specified /@format@/ and /@pixelWidth@/. /Since: 1.16/ -} videoVBIParserNew :: (B.CallStack.HasCallStack, MonadIO m) => GstVideo.Enums.VideoFormat {- ^ /@format@/: a 'GI.GstVideo.Enums.VideoFormat' -} -> Word32 {- ^ /@pixelWidth@/: The width in pixel to use -} -> m VideoVBIParser {- ^ __Returns:__ The new 'GI.GstVideo.Structs.VideoVBIParser.VideoVBIParser' or 'Nothing' if the /@format@/ and\/or /@pixelWidth@/ is not supported. -} videoVBIParserNew format pixelWidth = liftIO $ do let format' = (fromIntegral . fromEnum) format result <- gst_video_vbi_parser_new format' pixelWidth checkUnexpectedReturnNULL "videoVBIParserNew" result result' <- (wrapBoxed VideoVBIParser) result return result' #if ENABLE_OVERLOADING #endif -- method VideoVBIParser::add_line -- method type : OrdinaryMethod -- Args : [Arg {argCName = "parser", argType = TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoVBIParser", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TCArray False (-1) (-1) (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The line of data to parse", 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_vbi_parser_add_line" gst_video_vbi_parser_add_line :: Ptr VideoVBIParser -> -- parser : TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"}) Ptr Word8 -> -- data : TCArray False (-1) (-1) (TBasicType TUInt8) IO () {- | Provide a new line of data to the /@parser@/. Call 'GI.GstVideo.Structs.VideoVBIParser.videoVBIParserGetAncillary' to get the Ancillary data that might be present on that line. /Since: 1.16/ -} videoVBIParserAddLine :: (B.CallStack.HasCallStack, MonadIO m) => VideoVBIParser {- ^ /@parser@/: a 'GI.GstVideo.Structs.VideoVBIParser.VideoVBIParser' -} -> Ptr Word8 {- ^ /@data@/: The line of data to parse -} -> m () videoVBIParserAddLine parser data_ = liftIO $ do parser' <- unsafeManagedPtrGetPtr parser gst_video_vbi_parser_add_line parser' data_ touchManagedPtr parser return () #if ENABLE_OVERLOADING data VideoVBIParserAddLineMethodInfo instance (signature ~ (Ptr Word8 -> m ()), MonadIO m) => O.MethodInfo VideoVBIParserAddLineMethodInfo VideoVBIParser signature where overloadedMethod _ = videoVBIParserAddLine #endif -- method VideoVBIParser::copy -- method type : OrdinaryMethod -- Args : [Arg {argCName = "parser", argType = TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"})) -- throws : False -- Skip return : False foreign import ccall "gst_video_vbi_parser_copy" gst_video_vbi_parser_copy :: Ptr VideoVBIParser -> -- parser : TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"}) IO (Ptr VideoVBIParser) {- | /No description available in the introspection data./ -} videoVBIParserCopy :: (B.CallStack.HasCallStack, MonadIO m) => VideoVBIParser -> m VideoVBIParser videoVBIParserCopy parser = liftIO $ do parser' <- unsafeManagedPtrGetPtr parser result <- gst_video_vbi_parser_copy parser' checkUnexpectedReturnNULL "videoVBIParserCopy" result result' <- (wrapBoxed VideoVBIParser) result touchManagedPtr parser return result' #if ENABLE_OVERLOADING data VideoVBIParserCopyMethodInfo instance (signature ~ (m VideoVBIParser), MonadIO m) => O.MethodInfo VideoVBIParserCopyMethodInfo VideoVBIParser signature where overloadedMethod _ = videoVBIParserCopy #endif -- method VideoVBIParser::free -- method type : OrdinaryMethod -- Args : [Arg {argCName = "parser", argType = TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoVBIParser", 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_vbi_parser_free" gst_video_vbi_parser_free :: Ptr VideoVBIParser -> -- parser : TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"}) IO () {- | Frees the /@parser@/. /Since: 1.16/ -} videoVBIParserFree :: (B.CallStack.HasCallStack, MonadIO m) => VideoVBIParser {- ^ /@parser@/: a 'GI.GstVideo.Structs.VideoVBIParser.VideoVBIParser' -} -> m () videoVBIParserFree parser = liftIO $ do parser' <- unsafeManagedPtrGetPtr parser gst_video_vbi_parser_free parser' touchManagedPtr parser return () #if ENABLE_OVERLOADING data VideoVBIParserFreeMethodInfo instance (signature ~ (m ()), MonadIO m) => O.MethodInfo VideoVBIParserFreeMethodInfo VideoVBIParser signature where overloadedMethod _ = videoVBIParserFree #endif -- method VideoVBIParser::get_ancillary -- method type : OrdinaryMethod -- Args : [Arg {argCName = "parser", argType = TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoVBIParser", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "anc", argType = TInterface (Name {namespace = "GstVideo", name = "VideoAncillary"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoAncillary to start the eventual ancillary data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "GstVideo", name = "VideoVBIParserResult"})) -- throws : False -- Skip return : False foreign import ccall "gst_video_vbi_parser_get_ancillary" gst_video_vbi_parser_get_ancillary :: Ptr VideoVBIParser -> -- parser : TInterface (Name {namespace = "GstVideo", name = "VideoVBIParser"}) Ptr GstVideo.VideoAncillary.VideoAncillary -> -- anc : TInterface (Name {namespace = "GstVideo", name = "VideoAncillary"}) IO CUInt {- | Parse the line provided previously by 'GI.GstVideo.Structs.VideoVBIParser.videoVBIParserAddLine'. /Since: 1.16/ -} videoVBIParserGetAncillary :: (B.CallStack.HasCallStack, MonadIO m) => VideoVBIParser {- ^ /@parser@/: a 'GI.GstVideo.Structs.VideoVBIParser.VideoVBIParser' -} -> m ((GstVideo.Enums.VideoVBIParserResult, GstVideo.VideoAncillary.VideoAncillary)) {- ^ __Returns:__ 'GI.GstVideo.Enums.VideoVBIParserResultOk' if ancillary data was found and /@anc@/ was filled. 'GI.GstVideo.Enums.VideoVBIParserResultDone' if there wasn\'t any data. -} videoVBIParserGetAncillary parser = liftIO $ do parser' <- unsafeManagedPtrGetPtr parser anc <- callocBytes 48 :: IO (Ptr GstVideo.VideoAncillary.VideoAncillary) result <- gst_video_vbi_parser_get_ancillary parser' anc let result' = (toEnum . fromIntegral) result anc' <- (wrapPtr GstVideo.VideoAncillary.VideoAncillary) anc touchManagedPtr parser return (result', anc') #if ENABLE_OVERLOADING data VideoVBIParserGetAncillaryMethodInfo instance (signature ~ (m ((GstVideo.Enums.VideoVBIParserResult, GstVideo.VideoAncillary.VideoAncillary))), MonadIO m) => O.MethodInfo VideoVBIParserGetAncillaryMethodInfo VideoVBIParser signature where overloadedMethod _ = videoVBIParserGetAncillary #endif #if ENABLE_OVERLOADING type family ResolveVideoVBIParserMethod (t :: Symbol) (o :: *) :: * where ResolveVideoVBIParserMethod "addLine" o = VideoVBIParserAddLineMethodInfo ResolveVideoVBIParserMethod "copy" o = VideoVBIParserCopyMethodInfo ResolveVideoVBIParserMethod "free" o = VideoVBIParserFreeMethodInfo ResolveVideoVBIParserMethod "getAncillary" o = VideoVBIParserGetAncillaryMethodInfo ResolveVideoVBIParserMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveVideoVBIParserMethod t VideoVBIParser, O.MethodInfo info VideoVBIParser p) => OL.IsLabel t (VideoVBIParser -> 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