summaryrefslogtreecommitdiffstats
path: root/ext/ladspa/gstsignalprocessor.h
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2006-08-04 11:38:54 +0000
committerAndy Wingo <wingo@pobox.com>2006-08-04 11:38:54 +0000
commit7fbf85ea547a9242837f24f3156c1cd8a5ec7004 (patch)
tree37214e3b2dc97f013b0fdff4461ff6e17daa56c0 /ext/ladspa/gstsignalprocessor.h
parent8d6b0e29631e5bc3ee5b2b784061549ea6a30270 (diff)
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.h30
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);