{- | 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 alignment paramters for the memory of video buffers. This structure is usually used to configure the bufferpool if it supports the #GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT. -} module GI.GstVideo.Structs.VideoAlignment ( -- * Exported types VideoAlignment(..) , newZeroVideoAlignment , noVideoAlignment , -- * Methods -- ** videoAlignmentReset VideoAlignmentResetMethodInfo , videoAlignmentReset , -- * Properties -- ** PaddingBottom videoAlignmentReadPaddingBottom , -- ** PaddingLeft videoAlignmentReadPaddingLeft , -- ** PaddingRight videoAlignmentReadPaddingRight , -- ** PaddingTop videoAlignmentReadPaddingTop , ) 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 newtype VideoAlignment = VideoAlignment (ForeignPtr VideoAlignment) -- | Construct a `VideoAlignment` struct initialized to zero. newZeroVideoAlignment :: MonadIO m => m VideoAlignment newZeroVideoAlignment = liftIO $ callocBytes 32 >>= wrapPtr VideoAlignment noVideoAlignment :: Maybe VideoAlignment noVideoAlignment = Nothing videoAlignmentReadPaddingTop :: VideoAlignment -> IO Word32 videoAlignmentReadPaddingTop s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word32 return val videoAlignmentReadPaddingBottom :: VideoAlignment -> IO Word32 videoAlignmentReadPaddingBottom s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 4) :: IO Word32 return val videoAlignmentReadPaddingLeft :: VideoAlignment -> IO Word32 videoAlignmentReadPaddingLeft s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO Word32 return val videoAlignmentReadPaddingRight :: VideoAlignment -> IO Word32 videoAlignmentReadPaddingRight s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 12) :: IO Word32 return val -- XXX Skipped getter for "VideoAlignment:stride_align" :: Not implemented: "Don't know how to unpack C array of type TCArray False 4 (-1) (TBasicType TUInt32)" -- method VideoAlignment::reset -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "GstVideo" "VideoAlignment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "gst_video_alignment_reset" gst_video_alignment_reset :: Ptr VideoAlignment -> -- _obj : TInterface "GstVideo" "VideoAlignment" IO () videoAlignmentReset :: (MonadIO m) => VideoAlignment -- _obj -> m () -- result videoAlignmentReset _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj gst_video_alignment_reset _obj' touchManagedPtr _obj return () data VideoAlignmentResetMethodInfo instance (signature ~ (m ()), MonadIO m) => MethodInfo VideoAlignmentResetMethodInfo VideoAlignment signature where overloadedMethod _ = videoAlignmentReset type family ResolveVideoAlignmentMethod (t :: Symbol) (o :: *) :: * where ResolveVideoAlignmentMethod "reset" o = VideoAlignmentResetMethodInfo ResolveVideoAlignmentMethod l o = MethodResolutionFailed l o instance (info ~ ResolveVideoAlignmentMethod t VideoAlignment, MethodInfo info VideoAlignment p) => IsLabelProxy t (VideoAlignment -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveVideoAlignmentMethod t VideoAlignment, MethodInfo info VideoAlignment p) => IsLabel t (VideoAlignment -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif