diff options
author | Andy Wingo <wingo@pobox.com> | 2006-08-04 11:38:54 +0000 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2006-08-04 11:38:54 +0000 |
commit | 9bf2b5e3dbfa3eadd0f350dafb008cd18479d549 (patch) | |
tree | f05e1b0f6ad2a179e81bf049b6da088a1479d63d /ext/ladspa/gstsignalprocessor.h | |
parent | 71cad18c5e857eb074305cca3892a076a962cf14 (diff) | |
download | gst-plugins-bad-9bf2b5e3dbfa3eadd0f350dafb008cd18479d549.tar.gz gst-plugins-bad-9bf2b5e3dbfa3eadd0f350dafb008cd18479d549.tar.bz2 gst-plugins-bad-9bf2b5e3dbfa3eadd0f350dafb008cd18479d549.zip |
ext/ladspa/gstsignalprocessor.h: Add infrastructure for storing whether a processor can work in place or not, and for...
Original commit message from CVS:
2006-08-04 Andy Wingo <wingo@pobox.com>
* ext/ladspa/gstsignalprocessor.h: Add infrastructure for storing
whether a processor can work in place or not, and for keeping
track of its state. Change the FlowReturn instance variable from
"state" to "flow_state", all callers changed.
* ext/ladspa/gstsignalprocessor.c (gst_signal_processor_setup)
(gst_signal_processor_start, gst_signal_processor_stop)
(gst_signal_processor_cleanup): New functions to manage the
processor's state.
(gst_signal_processor_setcaps): start() as well as setup() here.
(gst_signal_processor_prepare): Respect CAN_PROCESS_IN_PLACE.
(gst_signal_processor_change_state): Stop and cleanup the
processor as we go to NULL.
* ext/ladspa/gstladspa.c (gst_ladspa_base_init): Reuse buffers if
INPLACE_BROKEN is not set.
* ext/ladspa/gstsignalprocessor.c (gst_signal_processor_prepare):
Do the alloc_buffer in bytes, not frames.
Diffstat (limited to 'ext/ladspa/gstsignalprocessor.h')
-rw-r--r-- | ext/ladspa/gstsignalprocessor.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/ext/ladspa/gstsignalprocessor.h b/ext/ladspa/gstsignalprocessor.h index 919280e4..eb9cd40e 100644 --- a/ext/ladspa/gstsignalprocessor.h +++ b/ext/ladspa/gstsignalprocessor.h @@ -29,6 +29,26 @@ G_BEGIN_DECLS +typedef enum +{ + GST_SIGNAL_PROCESSOR_CLASS_FLAG_CAN_PROCESS_IN_PLACE = 1<<0 +} GstSignalProcessorClassFlags; + +#define GST_SIGNAL_PROCESSOR_CLASS_CAN_PROCESS_IN_PLACE(klass) \ + (GST_SIGNAL_PROCESSOR_CLASS (klass)->flags & \ + GST_SIGNAL_PROCESSOR_CLASS_FLAG_CAN_PROCESS_IN_PLACE) +#define GST_SIGNAL_PROCESSOR_CLASS_SET_CAN_PROCESS_IN_PLACE(klass) \ + GST_SIGNAL_PROCESSOR_CLASS (klass)->flags |= \ + GST_SIGNAL_PROCESSOR_CLASS_FLAG_CAN_PROCESS_IN_PLACE + +typedef enum +{ + GST_SIGNAL_PROCESSOR_STATE_NULL, + GST_SIGNAL_PROCESSOR_STATE_INITIALIZED, + GST_SIGNAL_PROCESSOR_STATE_RUNNING +} GstSignalProcessorState; + + #define GST_TYPE_SIGNAL_PROCESSOR (gst_signal_processor_get_type()) #define GST_SIGNAL_PROCESSOR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SIGNAL_PROCESSOR,GstSignalProcessor)) #define GST_SIGNAL_PROCESSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SIGNAL_PROCESSOR,GstSignalProcessorClass)) @@ -37,6 +57,10 @@ G_BEGIN_DECLS #define GST_IS_SIGNAL_PROCESSOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SIGNAL_PROCESSOR)) #define GST_IS_SIGNAL_PROCESSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SIGNAL_PROCESSOR)) +#define GST_SIGNAL_PROCESSOR_IS_INITIALIZED(obj) \ + (GST_SIGNAL_PROCESSOR (obj)->state >= GST_SIGNAL_PROCESSOR_STATE_INITIALIZED) +#define GST_SIGNAL_PROCESSOR_IS_RUNNING(obj) \ + (GST_SIGNAL_PROCESSOR (obj)->state == GST_SIGNAL_PROCESSOR_STATE_RUNNING) typedef struct _GstSignalProcessor GstSignalProcessor; typedef struct _GstSignalProcessorClass GstSignalProcessorClass; @@ -49,7 +73,9 @@ struct _GstSignalProcessor { guint sample_rate; - GstFlowReturn state; + GstSignalProcessorState state; + + GstFlowReturn flow_state; GstActivateMode mode; @@ -71,6 +97,8 @@ struct _GstSignalProcessorClass { guint num_control_out; guint num_audio_out; + guint flags; + /* virtual methods for subclasses */ gboolean (*setup) (GstSignalProcessor *self, guint sample_rate); |