gi-gstvideo-0.1.6.13: GI/GstVideo/Structs/VideoGLTextureUploadMeta.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
Extra buffer metadata for uploading a buffer to an OpenGL texture
ID. The caller of gst_video_gl_texture_upload_meta_upload() must
have OpenGL set up and call this from a thread where it is valid
to upload something to an OpenGL texture.
-}
module GI.GstVideo.Structs.VideoGLTextureUploadMeta
(
-- * Exported types
VideoGLTextureUploadMeta(..) ,
newZeroVideoGLTextureUploadMeta ,
noVideoGLTextureUploadMeta ,
-- * Methods
-- ** videoGLTextureUploadMetaGetInfo
videoGLTextureUploadMetaGetInfo ,
-- ** videoGLTextureUploadMetaUpload
VideoGLTextureUploadMetaUploadMethodInfo,
videoGLTextureUploadMetaUpload ,
-- * Properties
-- ** Meta
videoGLTextureUploadMetaReadMeta ,
-- ** NTextures
videoGLTextureUploadMetaReadNTextures ,
-- ** TextureOrientation
videoGLTextureUploadMetaReadTextureOrientation,
) where
import Prelude ()
import Data.GI.Base.ShortPrelude
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import GI.GstVideo.Types
import GI.GstVideo.Callbacks
import qualified GI.Gst as Gst
newtype VideoGLTextureUploadMeta = VideoGLTextureUploadMeta (ForeignPtr VideoGLTextureUploadMeta)
-- | Construct a `VideoGLTextureUploadMeta` struct initialized to zero.
newZeroVideoGLTextureUploadMeta :: MonadIO m => m VideoGLTextureUploadMeta
newZeroVideoGLTextureUploadMeta = liftIO $ callocBytes 80 >>= wrapPtr VideoGLTextureUploadMeta
noVideoGLTextureUploadMeta :: Maybe VideoGLTextureUploadMeta
noVideoGLTextureUploadMeta = Nothing
videoGLTextureUploadMetaReadMeta :: VideoGLTextureUploadMeta -> IO Gst.Meta
videoGLTextureUploadMetaReadMeta s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO (Ptr Gst.Meta)
val' <- (newPtr 16 Gst.Meta) val
return val'
videoGLTextureUploadMetaReadTextureOrientation :: VideoGLTextureUploadMeta -> IO VideoGLTextureOrientation
videoGLTextureUploadMetaReadTextureOrientation s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 16) :: IO CUInt
let val' = (toEnum . fromIntegral) val
return val'
videoGLTextureUploadMetaReadNTextures :: VideoGLTextureUploadMeta -> IO Word32
videoGLTextureUploadMetaReadNTextures s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 20) :: IO Word32
return val
-- XXX Skipped getter for "VideoGLTextureUploadMeta:texture_type" :: Not implemented: "Don't know how to unpack C array of type TCArray False 4 (-1) (TInterface \"GstVideo\" \"VideoGLTextureType\")"
-- method VideoGLTextureUploadMeta::upload
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GstVideo" "VideoGLTextureUploadMeta", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "texture_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_gl_texture_upload_meta_upload" gst_video_gl_texture_upload_meta_upload ::
Ptr VideoGLTextureUploadMeta -> -- _obj : TInterface "GstVideo" "VideoGLTextureUploadMeta"
Word32 -> -- texture_id : TBasicType TUInt32
IO CInt
videoGLTextureUploadMetaUpload ::
(MonadIO m) =>
VideoGLTextureUploadMeta -- _obj
-> Word32 -- textureId
-> m Bool -- result
videoGLTextureUploadMetaUpload _obj textureId = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
result <- gst_video_gl_texture_upload_meta_upload _obj' textureId
let result' = (/= 0) result
touchManagedPtr _obj
return result'
data VideoGLTextureUploadMetaUploadMethodInfo
instance (signature ~ (Word32 -> m Bool), MonadIO m) => MethodInfo VideoGLTextureUploadMetaUploadMethodInfo VideoGLTextureUploadMeta signature where
overloadedMethod _ = videoGLTextureUploadMetaUpload
-- method VideoGLTextureUploadMeta::get_info
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- returnType : TInterface "Gst" "MetaInfo"
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_gl_texture_upload_meta_get_info" gst_video_gl_texture_upload_meta_get_info ::
IO (Ptr Gst.MetaInfo)
videoGLTextureUploadMetaGetInfo ::
(MonadIO m) =>
m Gst.MetaInfo -- result
videoGLTextureUploadMetaGetInfo = liftIO $ do
result <- gst_video_gl_texture_upload_meta_get_info
checkUnexpectedReturnNULL "gst_video_gl_texture_upload_meta_get_info" result
result' <- (newPtr 80 Gst.MetaInfo) result
return result'
type family ResolveVideoGLTextureUploadMetaMethod (t :: Symbol) (o :: *) :: * where
ResolveVideoGLTextureUploadMetaMethod "upload" o = VideoGLTextureUploadMetaUploadMethodInfo
ResolveVideoGLTextureUploadMetaMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveVideoGLTextureUploadMetaMethod t VideoGLTextureUploadMeta, MethodInfo info VideoGLTextureUploadMeta p) => IsLabelProxy t (VideoGLTextureUploadMeta -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveVideoGLTextureUploadMetaMethod t VideoGLTextureUploadMeta, MethodInfo info VideoGLTextureUploadMeta p) => IsLabel t (VideoGLTextureUploadMeta -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif