gi-gstbase-1.0.7: GStreamerBase bindings

CopyrightWill Thompson, Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria (garetxe@gmail.com)
Safe HaskellNone
LanguageHaskell2010

GI.GstBase.Structs.FlowCombiner

Contents

Description

Utility struct to help handling #GstFlowReturn combination. Useful for #GstElement--s that have multiple source pads and need to combine the different #GstFlowReturn for those pads.

GstFlowReturn for all #GstPad it has in its list and computes the combined return value and provides it to the caller.

To add a new pad to the #GstFlowCombiner use gst_flow_combiner_add_pad(). The new #GstPad is stored with a default value of %GST_FLOW_OK.

In case you want a #GstPad to be removed, use gst_flow_combiner_remove_pad().

Please be aware that this struct isn't thread safe as its designed to be used by demuxers, those usually will have a single thread operating it.

These functions will take refs on the passed #GstPad--s.

Aside from reducing the user's code size, the main advantage of using this helper struct is to follow the standard rules for #GstFlowReturn combination. These rules are:

  • %GST_FLOW_EOS: only if all returns are EOS too
  • %GST_FLOW_NOT_LINKED: only if all returns are NOT_LINKED too
  • %GST_FLOW_ERROR or below: if at least one returns an error return
  • %GST_FLOW_NOT_NEGOTIATED: if at least one returns a not-negotiated return
  • %GST_FLOW_FLUSHING: if at least one returns flushing
  • %GST_FLOW_OK: otherwise

%GST_FLOW_ERROR or below, GST_FLOW_NOT_NEGOTIATED and GST_FLOW_FLUSHING are returned immediatelly from the gst_flow_combiner_update_flow() function.

Synopsis

Exported types

newtype FlowCombiner Source #

Constructors

FlowCombiner (ManagedPtr FlowCombiner) 

Instances

BoxedObject FlowCombiner Source # 

Methods

boxedType :: FlowCombiner -> IO GType

((~) * info (ResolveFlowCombinerMethod t FlowCombiner), MethodInfo * info FlowCombiner p) => IsLabel t (FlowCombiner -> p) Source # 

Methods

fromLabel :: Proxy# Symbol t -> FlowCombiner -> p #

((~) * info (ResolveFlowCombinerMethod t FlowCombiner), MethodInfo * info FlowCombiner p) => IsLabelProxy t (FlowCombiner -> p) Source # 
HasAttributeList * FlowCombiner Source # 
((~) * signature (a -> FlowReturn -> m FlowReturn), MonadIO m, IsPad a) => MethodInfo * FlowCombinerUpdatePadFlowMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerUpdatePadFlowMethodInfo FlowCombiner -> signature -> s

((~) * signature (FlowReturn -> m FlowReturn), MonadIO m) => MethodInfo * FlowCombinerUpdateFlowMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerUpdateFlowMethodInfo FlowCombiner -> signature -> s

((~) * signature (m ()), MonadIO m) => MethodInfo * FlowCombinerResetMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerResetMethodInfo FlowCombiner -> signature -> s

((~) * signature (a -> m ()), MonadIO m, IsPad a) => MethodInfo * FlowCombinerRemovePadMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerRemovePadMethodInfo FlowCombiner -> signature -> s

((~) * signature (m ()), MonadIO m) => MethodInfo * FlowCombinerFreeMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerFreeMethodInfo FlowCombiner -> signature -> s

((~) * signature (m ()), MonadIO m) => MethodInfo * FlowCombinerClearMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerClearMethodInfo FlowCombiner -> signature -> s

((~) * signature (a -> m ()), MonadIO m, IsPad a) => MethodInfo * FlowCombinerAddPadMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerAddPadMethodInfo FlowCombiner -> signature -> s

type AttributeList FlowCombiner Source # 
type AttributeList FlowCombiner

Methods

addPad

data FlowCombinerAddPadMethodInfo Source #

Instances

((~) * signature (a -> m ()), MonadIO m, IsPad a) => MethodInfo * FlowCombinerAddPadMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerAddPadMethodInfo FlowCombiner -> signature -> s

flowCombinerAddPad :: (MonadIO m, IsPad a) => FlowCombiner -> a -> m () Source #

clear

data FlowCombinerClearMethodInfo Source #

Instances

((~) * signature (m ()), MonadIO m) => MethodInfo * FlowCombinerClearMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerClearMethodInfo FlowCombiner -> signature -> s

free

data FlowCombinerFreeMethodInfo Source #

Instances

((~) * signature (m ()), MonadIO m) => MethodInfo * FlowCombinerFreeMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerFreeMethodInfo FlowCombiner -> signature -> s

new

removePad

data FlowCombinerRemovePadMethodInfo Source #

Instances

((~) * signature (a -> m ()), MonadIO m, IsPad a) => MethodInfo * FlowCombinerRemovePadMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerRemovePadMethodInfo FlowCombiner -> signature -> s

flowCombinerRemovePad :: (MonadIO m, IsPad a) => FlowCombiner -> a -> m () Source #

reset

data FlowCombinerResetMethodInfo Source #

Instances

((~) * signature (m ()), MonadIO m) => MethodInfo * FlowCombinerResetMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerResetMethodInfo FlowCombiner -> signature -> s

updateFlow

data FlowCombinerUpdateFlowMethodInfo Source #

Instances

((~) * signature (FlowReturn -> m FlowReturn), MonadIO m) => MethodInfo * FlowCombinerUpdateFlowMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerUpdateFlowMethodInfo FlowCombiner -> signature -> s

flowCombinerUpdateFlow :: MonadIO m => FlowCombiner -> FlowReturn -> m FlowReturn Source #

updatePadFlow

data FlowCombinerUpdatePadFlowMethodInfo Source #

Instances

((~) * signature (a -> FlowReturn -> m FlowReturn), MonadIO m, IsPad a) => MethodInfo * FlowCombinerUpdatePadFlowMethodInfo FlowCombiner signature Source # 

Methods

overloadedMethod :: MethodProxy FlowCombinerUpdatePadFlowMethodInfo FlowCombiner -> signature -> s

flowCombinerUpdatePadFlow :: (MonadIO m, IsPad a) => FlowCombiner -> a -> FlowReturn -> m FlowReturn Source #