summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2004-03-14 22:34:33 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2004-03-14 22:34:33 +0000
commit5d25c00e4b613b9cdf2c04fa3a68dffa03834a68 (patch)
tree74a5b1eaf3a324b520e64e87404fd0b3018a7829 /gst
parent1e83b097f7b732ae49e294a5a398bdc3e88854a8 (diff)
gst-indent
Original commit message from CVS: gst-indent
Diffstat (limited to 'gst')
-rw-r--r--gst/audiofx/audiowsincband.c185
-rw-r--r--gst/audiofx/audiowsinclimit.c138
-rw-r--r--gst/auparse/gstauparse.c170
-rw-r--r--gst/auparse/gstauparse.h43
-rw-r--r--gst/avi/avi-ids.h25
-rw-r--r--gst/avi/gstavi.c26
-rw-r--r--gst/avi/gstavidecoder.c273
-rw-r--r--gst/avi/gstavidemux.c774
-rw-r--r--gst/avi/gstavidemux.h88
-rw-r--r--gst/avi/gstavimux.c1241
-rw-r--r--gst/avi/gstavimux.h121
-rw-r--r--gst/cutter/gstcutter.c322
-rw-r--r--gst/cutter/gstcutter.h59
-rw-r--r--gst/debug/efence.c308
-rw-r--r--gst/debug/efence.h35
-rw-r--r--gst/debug/gstnavigationtest.c179
-rw-r--r--gst/debug/gstnavigationtest.h12
-rw-r--r--gst/effectv/gstaging.c155
-rw-r--r--gst/effectv/gstdice.c222
-rw-r--r--gst/effectv/gstedge.c72
-rw-r--r--gst/effectv/gsteffectv.c62
-rw-r--r--gst/effectv/gstquark.c153
-rw-r--r--gst/effectv/gstrev.c83
-rw-r--r--gst/effectv/gstshagadelic.c114
-rw-r--r--gst/effectv/gstvertigo.c147
-rw-r--r--gst/effectv/gstwarp.c199
-rw-r--r--gst/flx/flx_color.c58
-rw-r--r--gst/flx/flx_color.h28
-rw-r--r--gst/flx/flx_fmt.h197
-rw-r--r--gst/flx/gstflxdec.c565
-rw-r--r--gst/flx/gstflxdec.h60
-rw-r--r--gst/goom/filters.c764
-rw-r--r--gst/goom/filters.h31
-rw-r--r--gst/goom/goom_core.c715
-rw-r--r--gst/goom/goom_core.h2
-rw-r--r--gst/goom/goom_tools.h6
-rw-r--r--gst/goom/graphic.c26
-rw-r--r--gst/goom/graphic.h8
-rw-r--r--gst/goom/gstgoom.c168
-rw-r--r--gst/goom/lines.c143
-rw-r--r--gst/goom/lines.h6
-rw-r--r--gst/law/alaw-decode.c172
-rw-r--r--gst/law/alaw-decode.h33
-rw-r--r--gst/law/alaw-encode.c213
-rw-r--r--gst/law/alaw-encode.h33
-rw-r--r--gst/law/alaw.c56
-rw-r--r--gst/law/mulaw-conversion.c104
-rw-r--r--gst/law/mulaw-conversion.h6
-rw-r--r--gst/law/mulaw-decode.c136
-rw-r--r--gst/law/mulaw-decode.h33
-rw-r--r--gst/law/mulaw-encode.c135
-rw-r--r--gst/law/mulaw-encode.h33
-rw-r--r--gst/law/mulaw.c60
-rw-r--r--gst/level/demo.c21
-rw-r--r--gst/level/gstlevel.c323
-rw-r--r--gst/level/gstlevel.h83
-rw-r--r--gst/level/plot.c43
-rw-r--r--gst/matroska/ebml-ids.h8
-rw-r--r--gst/matroska/ebml-read.c253
-rw-r--r--gst/matroska/ebml-read.h68
-rw-r--r--gst/matroska/ebml-write.c126
-rw-r--r--gst/matroska/ebml-write.h72
-rw-r--r--gst/matroska/matroska-demux.c2670
-rw-r--r--gst/matroska/matroska-demux.h61
-rw-r--r--gst/matroska/matroska-ids.h92
-rw-r--r--gst/matroska/matroska-mux.c443
-rw-r--r--gst/matroska/matroska-mux.h51
-rw-r--r--gst/matroska/matroska.c20
-rw-r--r--gst/median/gstmedian.c280
-rw-r--r--gst/median/gstmedian.h41
-rw-r--r--gst/monoscope/convolve.c438
-rw-r--r--gst/monoscope/convolve.h14
-rw-r--r--gst/monoscope/gstmonoscope.c124
-rw-r--r--gst/monoscope/monoscope.c184
-rw-r--r--gst/monoscope/monoscope.h21
-rw-r--r--gst/qtdemux/qtdemux.c2016
-rw-r--r--gst/qtdemux/qtdemux.h57
-rw-r--r--gst/rtp/gstrtp-common.h2
-rw-r--r--gst/rtp/gstrtp.c18
-rw-r--r--gst/rtp/gstrtpL16depay.c128
-rw-r--r--gst/rtp/gstrtpL16depay.h32
-rw-r--r--gst/rtp/gstrtpL16enc.c107
-rw-r--r--gst/rtp/gstrtpL16enc.h44
-rw-r--r--gst/rtp/gstrtpL16parse.c128
-rw-r--r--gst/rtp/gstrtpL16parse.h32
-rw-r--r--gst/rtp/gstrtpL16pay.c107
-rw-r--r--gst/rtp/gstrtpL16pay.h44
-rw-r--r--gst/rtp/gstrtpgsmdepay.c95
-rw-r--r--gst/rtp/gstrtpgsmdepay.h28
-rw-r--r--gst/rtp/gstrtpgsmenc.c88
-rw-r--r--gst/rtp/gstrtpgsmenc.h42
-rw-r--r--gst/rtp/gstrtpgsmparse.c95
-rw-r--r--gst/rtp/gstrtpgsmparse.h28
-rw-r--r--gst/rtp/gstrtpgsmpay.c88
-rw-r--r--gst/rtp/gstrtpgsmpay.h42
-rw-r--r--gst/rtp/rtp-packet.c189
-rw-r--r--gst/rtp/rtp-packet.h107
-rw-r--r--gst/smoothwave/demo-osssrc.c57
-rw-r--r--gst/smoothwave/gstsmoothwave.c202
-rw-r--r--gst/smoothwave/gstsmoothwave.h39
-rw-r--r--gst/smpte/barboxwipes.c1186
-rw-r--r--gst/smpte/gstmask.c20
-rw-r--r--gst/smpte/gstmask.h50
-rw-r--r--gst/smpte/gstsmpte.c292
-rw-r--r--gst/smpte/gstsmpte.h32
-rw-r--r--gst/smpte/paint.c162
-rw-r--r--gst/smpte/paint.h31
-rw-r--r--gst/spectrum/gstspectrum.c157
-rw-r--r--gst/spectrum/gstspectrum.h33
-rw-r--r--gst/udp/gstudp.c23
-rw-r--r--gst/udp/gstudp.h5
-rw-r--r--gst/udp/gstudpsink.c325
-rw-r--r--gst/udp/gstudpsink.h62
-rw-r--r--gst/udp/gstudpsrc.c341
-rw-r--r--gst/udp/gstudpsrc.h60
-rw-r--r--gst/videocrop/gstvideocrop.c218
-rw-r--r--gst/videofilter/gstgamma.c242
-rw-r--r--gst/videofilter/gstvideobalance.c313
-rw-r--r--gst/videofilter/gstvideobalance.h15
-rw-r--r--gst/videofilter/gstvideofilter.c346
-rw-r--r--gst/videofilter/gstvideofilter.h43
-rw-r--r--gst/videofilter/gstvideoflip.c272
-rw-r--r--gst/videofilter/gstvideoflip.h15
-rw-r--r--gst/videofilter/gstvideotemplate.c132
-rw-r--r--gst/videoflip/gstvideoflip.c264
-rw-r--r--gst/videoflip/gstvideoflip.h20
-rw-r--r--gst/videoflip/videoflip.c138
-rw-r--r--gst/videoflip/videoflip.h24
-rw-r--r--gst/wavenc/gstwavenc.c737
-rw-r--r--gst/wavenc/gstwavenc.h13
-rw-r--r--gst/wavenc/riff.h171
-rw-r--r--gst/wavparse/gstwavparse.c1090
-rw-r--r--gst/wavparse/gstwavparse.h114
-rw-r--r--gst/wavparse/riff.h171
134 files changed, 12801 insertions, 12564 deletions
diff --git a/gst/audiofx/audiowsincband.c b/gst/audiofx/audiowsincband.c
index 77529053..a848cc26 100644
--- a/gst/audiofx/audiowsincband.c
+++ b/gst/audiofx/audiowsincband.c
@@ -39,20 +39,19 @@
#include <string.h> /* memmove */
/* elementfactory information */
-static GstElementDetails gst_bpwsinc_details = GST_ELEMENT_DETAILS (
- "BPWSinc",
- "Filter/Effect/Audio",
- "Band-Pass Windowed sinc filter",
- "Thomas <thomas@apestaart.org>, "
- "Steven W. Smith"
-);
-
-enum {
+static GstElementDetails gst_bpwsinc_details = GST_ELEMENT_DETAILS ("BPWSinc",
+ "Filter/Effect/Audio",
+ "Band-Pass Windowed sinc filter",
+ "Thomas <thomas@apestaart.org>, " "Steven W. Smith");
+
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_LENGTH,
ARG_LOWER_FREQUENCY,
@@ -81,51 +80,52 @@ struct _GstBPWSinc
double frequency;
double lower_frequency, upper_frequency;
- int wing_size; /* length of a "wing" of the filter;
- actual length is 2 * wing_size + 1 */
+ int wing_size; /* length of a "wing" of the filter;
+ actual length is 2 * wing_size + 1 */
- gfloat *residue; /* buffer for left-over samples from previous buffer */
+ gfloat *residue; /* buffer for left-over samples from previous buffer */
double *kernel;
};
struct _GstBPWSincClass
{
- GstElementClass parent_class;
+ GstElementClass parent_class;
};
-static void gst_bpwsinc_base_init (gpointer g_class);
-static void gst_bpwsinc_class_init (GstBPWSincClass * klass);
-static void gst_bpwsinc_init (GstBPWSinc * filter);
+static void gst_bpwsinc_base_init (gpointer g_class);
+static void gst_bpwsinc_class_init (GstBPWSincClass * klass);
+static void gst_bpwsinc_init (GstBPWSinc * filter);
-static void gst_bpwsinc_set_property (GObject * object, guint prop_id,
- const GValue * value,
- GParamSpec * pspec);
-static void gst_bpwsinc_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
+static void gst_bpwsinc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_bpwsinc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_bpwsinc_chain (GstPad * pad, GstData *_data);
+static void gst_bpwsinc_chain (GstPad * pad, GstData * _data);
static GstPadLinkReturn
- gst_bpwsinc_sink_connect (GstPad * pad, const GstCaps * caps);
+gst_bpwsinc_sink_connect (GstPad * pad, const GstCaps * caps);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_bpwsinc_signals[LAST_SIGNAL] = { 0 }; */
-GType gst_bpwsinc_get_type (void)
+GType
+gst_bpwsinc_get_type (void)
{
static GType bpwsinc_type = 0;
if (!bpwsinc_type) {
static const GTypeInfo bpwsinc_info = {
- sizeof (GstBPWSincClass),
- gst_bpwsinc_base_init,
+ sizeof (GstBPWSincClass),
+ gst_bpwsinc_base_init,
NULL,
(GClassInitFunc) gst_bpwsinc_class_init, NULL, NULL,
sizeof (GstBPWSinc), 0,
(GInstanceInitFunc) gst_bpwsinc_init,
};
- bpwsinc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstBPWSinc",
- &bpwsinc_info, 0);
+ bpwsinc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstBPWSinc",
+ &bpwsinc_info, 0);
}
return bpwsinc_type;
}
@@ -139,9 +139,9 @@ gst_bpwsinc_base_init (gpointer g_class)
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&gst_filter_src_template));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_filter_sink_template));
+ gst_static_pad_template_get (&gst_filter_sink_template));
- gst_element_class_set_details (element_class, &gst_bpwsinc_details);
+ gst_element_class_set_details (element_class, &gst_bpwsinc_details);
}
static void
@@ -156,20 +156,17 @@ gst_bpwsinc_class_init (GstBPWSincClass * klass)
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LOWER_FREQUENCY,
- g_param_spec_double ("lower-frequency", "Lower Frequency",
- "Cut-off lower frequency (relative to sample rate)",
- 0.0, 0.5,
- 0, G_PARAM_READWRITE));
+ g_param_spec_double ("lower-frequency", "Lower Frequency",
+ "Cut-off lower frequency (relative to sample rate)",
+ 0.0, 0.5, 0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_UPPER_FREQUENCY,
- g_param_spec_double ("upper-frequency", "Upper Frequency",
- "Cut-off upper frequency (relative to sample rate)",
- 0.0, 0.5,
- 0, G_PARAM_READWRITE));
+ g_param_spec_double ("upper-frequency", "Upper Frequency",
+ "Cut-off upper frequency (relative to sample rate)",
+ 0.0, 0.5, 0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LENGTH,
- g_param_spec_int ("length", "Length",
- "N such that the filter length = 2N + 1",
- 1, G_MAXINT,
- 1, G_PARAM_READWRITE));
+ g_param_spec_int ("length", "Length",
+ "N such that the filter length = 2N + 1",
+ 1, G_MAXINT, 1, G_PARAM_READWRITE));
gobject_class->set_property = gst_bpwsinc_set_property;
gobject_class->get_property = gst_bpwsinc_get_property;
@@ -178,14 +175,16 @@ gst_bpwsinc_class_init (GstBPWSincClass * klass)
static void
gst_bpwsinc_init (GstBPWSinc * filter)
{
- filter->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_filter_sink_template), "sink");
+ filter->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_filter_sink_template), "sink");
gst_pad_set_chain_function (filter->sinkpad, gst_bpwsinc_chain);
gst_pad_set_link_function (filter->sinkpad, gst_bpwsinc_sink_connect);
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
- filter->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_filter_src_template), "src");
+ filter->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_filter_src_template), "src");
gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
filter->wing_size = 50;
@@ -202,65 +201,65 @@ gst_bpwsinc_sink_connect (GstPad * pad, const GstCaps * caps)
int len = 0;
double *kernel_lp, *kernel_hp;
GstPadLinkReturn set_retval;
-
+
GstBPWSinc *filter = GST_BPWSINC (gst_pad_get_parent (pad));
g_assert (GST_IS_PAD (pad));
g_assert (caps != NULL);
set_retval = gst_pad_try_set_caps (filter->srcpad, caps);
-
- if (set_retval > 0)
- {
+
+ if (set_retval > 0) {
len = filter->wing_size;
/* fill the lp kernel */
- GST_DEBUG (
- "bpwsinc: initializing LP kernel of length %d with cut-off %f",
- len * 2 + 1, filter->lower_frequency);
+ GST_DEBUG ("bpwsinc: initializing LP kernel of length %d with cut-off %f",
+ len * 2 + 1, filter->lower_frequency);
kernel_lp = (double *) g_malloc (sizeof (double) * (2 * len + 1));
- for (i = 0; i <= len * 2; ++i)
- {
+ for (i = 0; i <= len * 2; ++i) {
if (i == len)
kernel_lp[i] = 2 * M_PI * filter->lower_frequency;
else
- kernel_lp[i] = sin (2 * M_PI * filter->lower_frequency * (i - len))
- / (i - len);
+ kernel_lp[i] = sin (2 * M_PI * filter->lower_frequency * (i - len))
+ / (i - len);
/* Blackman windowing */
- kernel_lp[i] *= (0.42 - 0.5 * cos (M_PI * i / len)
- + 0.08 * cos (2 * M_PI * i / len));
+ kernel_lp[i] *= (0.42 - 0.5 * cos (M_PI * i / len)
+ + 0.08 * cos (2 * M_PI * i / len));
}
/* normalize for unity gain at DC
* FIXME: sure this is not supposed to be quadratic ? */
sum = 0.0;
- for (i = 0; i <= len * 2; ++i) sum += kernel_lp[i];
- for (i = 0; i <= len * 2; ++i) kernel_lp[i] /= sum;
+ for (i = 0; i <= len * 2; ++i)
+ sum += kernel_lp[i];
+ for (i = 0; i <= len * 2; ++i)
+ kernel_lp[i] /= sum;
/* fill the hp kernel */
- GST_DEBUG (
- "bpwsinc: initializing HP kernel of length %d with cut-off %f",
- len * 2 + 1, filter->upper_frequency);
+ GST_DEBUG ("bpwsinc: initializing HP kernel of length %d with cut-off %f",
+ len * 2 + 1, filter->upper_frequency);
kernel_hp = (double *) g_malloc (sizeof (double) * (2 * len + 1));
- for (i = 0; i <= len * 2; ++i)
- {
+ for (i = 0; i <= len * 2; ++i) {
if (i == len)
kernel_hp[i] = 2 * M_PI * filter->upper_frequency;
else
- kernel_hp[i] = sin (2 * M_PI * filter->upper_frequency * (i - len))
- / (i - len);
+ kernel_hp[i] = sin (2 * M_PI * filter->upper_frequency * (i - len))
+ / (i - len);
/* Blackman windowing */
- kernel_hp[i] *= (0.42 - 0.5 * cos (M_PI * i / len)
- + 0.08 * cos (2 * M_PI * i / len));
+ kernel_hp[i] *= (0.42 - 0.5 * cos (M_PI * i / len)
+ + 0.08 * cos (2 * M_PI * i / len));
}
/* normalize for unity gain at DC
* FIXME: sure this is not supposed to be quadratic ? */
sum = 0.0;
- for (i = 0; i <= len * 2; ++i) sum += kernel_hp[i];
- for (i = 0; i <= len * 2; ++i) kernel_hp[i] /= sum;
+ for (i = 0; i <= len * 2; ++i)
+ sum += kernel_hp[i];
+ for (i = 0; i <= len * 2; ++i)
+ kernel_hp[i] /= sum;
/* do spectral inversion to get a HP filter */
- for (i = 0; i <= len * 2; ++i) kernel_hp[i] = -kernel_hp[i];
+ for (i = 0; i <= len * 2; ++i)
+ kernel_hp[i] = -kernel_hp[i];
kernel_hp[len] += 1;
/* combine the two filters */
@@ -271,7 +270,8 @@ gst_bpwsinc_sink_connect (GstPad * pad, const GstCaps * caps)
filter->kernel[i] = kernel_lp[i] + kernel_hp[i];
/* do spectral inversion to go from band reject to bandpass */
- for (i = 0; i <= len * 2; ++i) filter->kernel[i] = -filter->kernel[i];
+ for (i = 0; i <= len * 2; ++i)
+ filter->kernel[i] = -filter->kernel[i];
filter->kernel[len] += 1;
/* free the helper kernels */
@@ -280,14 +280,15 @@ gst_bpwsinc_sink_connect (GstPad * pad, const GstCaps * caps)
/* set up the residue memory space */
filter->residue = (gfloat *) g_malloc (sizeof (gfloat) * (len * 2 + 1));
- for (i = 0; i <= len * 2; ++i) filter->residue[i] = 0.0;
+ for (i = 0; i <= len * 2; ++i)
+ filter->residue[i] = 0.0;
}
return set_retval;
}
static void
-gst_bpwsinc_chain (GstPad *pad, GstData *_data)
+gst_bpwsinc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstBPWSinc *filter;
@@ -323,24 +324,24 @@ gst_bpwsinc_chain (GstPad *pad, GstData *_data)
memcpy (&input[residue_samples], src, sizeof (gfloat) * input_samples);
/* copy the tail of the current input buffer to the residue */
memcpy (filter->residue, &src[input_samples - residue_samples],
- sizeof (gfloat) * residue_samples);
+ sizeof (gfloat) * residue_samples);
/* convolution */
/* since we copied the previous set of samples we needed before the actual
* input data, we need to add the filter length to our indices for input */
- for (i = 0; i < input_samples; ++i)
- {
+ for (i = 0; i < input_samples; ++i) {
src[i] = 0.0;
for (j = 0; j < residue_samples; ++j)
src[i] += input[i - j + residue_samples] * filter->kernel[j];
}
-
+
g_free (input);
gst_pad_push (filter->srcpad, GST_DATA (buf));
}
static void
-gst_bpwsinc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_bpwsinc_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstBPWSinc *filter;
@@ -351,27 +352,28 @@ gst_bpwsinc_set_property (GObject * object, guint prop_id, const GValue * value,
switch (prop_id) {
case ARG_LENGTH:
- filter->wing_size = g_value_get_int (value);
- break;
+ filter->wing_size = g_value_get_int (value);
+ break;
case ARG_LOWER_FREQUENCY:
- filter->lower_frequency = g_value_get_double (value);
- break;
+ filter->lower_frequency = g_value_get_double (value);
+ break;
case ARG_UPPER_FREQUENCY:
- filter->upper_frequency = g_value_get_double (value);
- break;
+ filter->upper_frequency = g_value_get_double (value);
+ break;
default:
break;
}
}
static void
-gst_bpwsinc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_bpwsinc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstBPWSinc *filter;
/* it's not null if we got it, but it might not be ours */
g_return_if_fail (GST_IS_BPWSINC (object));
-
+
filter = GST_BPWSINC (object);
switch (prop_id) {
@@ -388,5 +390,4 @@ gst_bpwsinc_get_property (GObject * object, guint prop_id, GValue * value, GPara
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
-}
-
+}
diff --git a/gst/audiofx/audiowsinclimit.c b/gst/audiofx/audiowsinclimit.c
index 603d8775..0ce33b32 100644
--- a/gst/audiofx/audiowsinclimit.c
+++ b/gst/audiofx/audiowsinclimit.c
@@ -38,20 +38,19 @@
#include <math.h> /* M_PI */
#include <string.h> /* memmove */
-static GstElementDetails gst_lpwsinc_details = GST_ELEMENT_DETAILS (
- "LPWSinc",
- "Filter/Effect/Audio",
- "Low-pass Windowed sinc filter",
- "Thomas <thomas@apestaart.org>, "
- "Steven W. Smith"
-);
-
-enum {
+static GstElementDetails gst_lpwsinc_details = GST_ELEMENT_DETAILS ("LPWSinc",
+ "Filter/Effect/Audio",
+ "Low-pass Windowed sinc filter",
+ "Thomas <thomas@apestaart.org>, " "Steven W. Smith");
+
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_LENGTH,
ARG_FREQUENCY,
@@ -78,42 +77,43 @@ struct _GstLPWSinc
GstPad *sinkpad, *srcpad;
double frequency;
- int wing_size; /* length of a "wing" of the filter;
- actual length is 2 * wing_size + 1 */
+ int wing_size; /* length of a "wing" of the filter;
+ actual length is 2 * wing_size + 1 */
- gfloat *residue; /* buffer for left-over samples from previous buffer */
+ gfloat *residue; /* buffer for left-over samples from previous buffer */
double *kernel;
};
struct _GstLPWSincClass
{
- GstElementClass parent_class;
+ GstElementClass parent_class;
};
-static void gst_lpwsinc_base_init (gpointer g_class);
-static void gst_lpwsinc_class_init (GstLPWSincClass * klass);
-static void gst_lpwsinc_init (GstLPWSinc * filter);
+static void gst_lpwsinc_base_init (gpointer g_class);
+static void gst_lpwsinc_class_init (GstLPWSincClass * klass);
+static void gst_lpwsinc_init (GstLPWSinc * filter);
-static void gst_lpwsinc_set_property (GObject * object, guint prop_id,
- const GValue * value,
- GParamSpec * pspec);
-static void gst_lpwsinc_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
+static void gst_lpwsinc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_lpwsinc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_lpwsinc_chain (GstPad * pad, GstData *_data);
+static void gst_lpwsinc_chain (GstPad * pad, GstData * _data);
static GstPadLinkReturn
- gst_lpwsinc_sink_connect (GstPad * pad, const GstCaps * caps);
+gst_lpwsinc_sink_connect (GstPad * pad, const GstCaps * caps);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_lpwsinc_signals[LAST_SIGNAL] = { 0 }; */
-GType gst_lpwsinc_get_type (void)
+GType
+gst_lpwsinc_get_type (void)
{
static GType lpwsinc_type = 0;
if (!lpwsinc_type) {
static const GTypeInfo lpwsinc_info = {
- sizeof (GstLPWSincClass),
+ sizeof (GstLPWSincClass),
gst_lpwsinc_base_init,
NULL,
(GClassInitFunc) gst_lpwsinc_class_init, NULL, NULL,
@@ -121,8 +121,8 @@ GType gst_lpwsinc_get_type (void)
(GInstanceInitFunc) gst_lpwsinc_init,
};
- lpwsinc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstLPWSinc",
- &lpwsinc_info, 0);
+ lpwsinc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstLPWSinc",
+ &lpwsinc_info, 0);
}
return lpwsinc_type;
}
@@ -136,9 +136,9 @@ gst_lpwsinc_base_init (gpointer g_class)
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&gst_filter_src_template));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_filter_sink_template));
+ gst_static_pad_template_get (&gst_filter_sink_template));
- gst_element_class_set_details (element_class, &gst_lpwsinc_details);
+ gst_element_class_set_details (element_class, &gst_lpwsinc_details);
}
static void
@@ -153,15 +153,13 @@ gst_lpwsinc_class_init (GstLPWSincClass * klass)
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY,
- g_param_spec_double ("frequency", "Frequency",
- "Cut-off Frequency relative to sample rate)",
- 0.0, 0.5,
- 0, G_PARAM_READWRITE));
+ g_param_spec_double ("frequency", "Frequency",
+ "Cut-off Frequency relative to sample rate)",
+ 0.0, 0.5, 0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LENGTH,
- g_param_spec_int ("length", "Length",
- "N such that the filter length = 2N + 1",
- 1, G_MAXINT,
- 1, G_PARAM_READWRITE));
+ g_param_spec_int ("length", "Length",
+ "N such that the filter length = 2N + 1",
+ 1, G_MAXINT, 1, G_PARAM_READWRITE));
gobject_class->set_property = gst_lpwsinc_set_property;
gobject_class->get_property = gst_lpwsinc_get_property;
@@ -170,14 +168,16 @@ gst_lpwsinc_class_init (GstLPWSincClass * klass)
static void
gst_lpwsinc_init (GstLPWSinc * filter)
{
- filter->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_filter_sink_template), "sink");
+ filter->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_filter_sink_template), "sink");
gst_pad_set_chain_function (filter->sinkpad, gst_lpwsinc_chain);
gst_pad_set_link_function (filter->sinkpad, gst_lpwsinc_sink_connect);
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
- filter->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_filter_src_template), "src");
+ filter->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_filter_src_template), "src");
gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
filter->wing_size = 50;
@@ -197,45 +197,45 @@ gst_lpwsinc_sink_connect (GstPad * pad, const GstCaps * caps)
g_assert (GST_IS_PAD (pad));
g_assert (caps != NULL);
- set_retval = gst_pad_try_set_caps(filter->srcpad, caps);
-
- if (set_retval > 0)
- {
+ set_retval = gst_pad_try_set_caps (filter->srcpad, caps);
+
+ if (set_retval > 0) {
/* connection works, so init the filter */
/* FIXME: remember to free it */
/* fill the kernel */
g_print ("DEBUG: initing filter kernel\n");
len = filter->wing_size;
- GST_DEBUG (
- "lpwsinc: initializing filter kernel of length %d", len * 2 + 1);
+ GST_DEBUG ("lpwsinc: initializing filter kernel of length %d", len * 2 + 1);
filter->kernel = (double *) g_malloc (sizeof (double) * (2 * len + 1));
- for (i = 0; i <= len * 2; ++i)
- {
+ for (i = 0; i <= len * 2; ++i) {
if (i == len)
filter->kernel[i] = 2 * M_PI * filter->frequency;
else
- filter->kernel[i] = sin (2 * M_PI * filter->frequency * (i - len))
- / (i - len);
+ filter->kernel[i] = sin (2 * M_PI * filter->frequency * (i - len))
+ / (i - len);
/* windowing */
filter->kernel[i] *= (0.54 - 0.46 * cos (M_PI * i / len));
}
/* normalize for unity gain at DC
* FIXME: sure this is not supposed to be quadratic ? */
- for (i = 0; i <= len * 2; ++i) sum += filter->kernel[i];
- for (i = 0; i <= len * 2; ++i) filter->kernel[i] /= sum;
+ for (i = 0; i <= len * 2; ++i)
+ sum += filter->kernel[i];
+ for (i = 0; i <= len * 2; ++i)
+ filter->kernel[i] /= sum;
/* set up the residue memory space */
filter->residue = (gfloat *) g_malloc (sizeof (gfloat) * (len * 2 + 1));
- for (i = 0; i <= len * 2; ++i) filter->residue[i] = 0.0;
+ for (i = 0; i <= len * 2; ++i)
+ filter->residue[i] = 0.0;
}
return set_retval;
}
static void
-gst_lpwsinc_chain (GstPad * pad, GstData *_data)
+gst_lpwsinc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstLPWSinc *filter;
@@ -271,24 +271,24 @@ gst_lpwsinc_chain (GstPad * pad, GstData *_data)
memcpy (&input[residue_samples], src, sizeof (gfloat) * input_samples);
/* copy the tail of the current input buffer to the residue */
memcpy (filter->residue, &src[input_samples - residue_samples],
- sizeof (gfloat) * residue_samples);
+ sizeof (gfloat) * residue_samples);
/* convolution */
/* since we copied the previous set of samples we needed before the actual
* input data, we need to add the filter length to our indices for input */
- for (i = 0; i < input_samples; ++i)
- {
+ for (i = 0; i < input_samples; ++i) {
src[i] = 0.0;
for (j = 0; j < residue_samples; ++j)
src[i] += input[i - j + residue_samples] * filter->kernel[j];
}
-
+
g_free (input);
gst_pad_push (filter->srcpad, GST_DATA (buf));
}
static void
-gst_lpwsinc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_lpwsinc_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstLPWSinc *filter;
@@ -299,24 +299,25 @@ gst_lpwsinc_set_property (GObject * object, guint prop_id, const GValue * value,
switch (prop_id) {
case ARG_LENGTH:
- filter->wing_size = g_value_get_int (value);
- break;
+ filter->wing_size = g_value_get_int (value);
+ break;
case ARG_FREQUENCY:
- filter->frequency = g_value_get_double (value);
- break;
+ filter->frequency = g_value_get_double (value);
+ break;
default:
break;
}
}
static void
-gst_lpwsinc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_lpwsinc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstLPWSinc *filter;
/* it's not null if we got it, but it might not be ours */
g_return_if_fail (GST_IS_LPWSINC (object));
-
+
filter = GST_LPWSINC (object);
switch (prop_id) {
@@ -330,5 +331,4 @@ gst_lpwsinc_get_property (GObject * object, guint prop_id, GValue * value, GPara
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
-}
-
+}
diff --git a/gst/auparse/gstauparse.c b/gst/auparse/gstauparse.c
index 19850f61..d7ffe68f 100644
--- a/gst/auparse/gstauparse.c
+++ b/gst/auparse/gstauparse.c
@@ -32,72 +32,71 @@
#include <gst/audio/audio.h>
/* elementfactory information */
-static GstElementDetails gst_auparse_details = GST_ELEMENT_DETAILS (
- ".au parser",
- "Codec/Parser/Audio",
- "Parse an .au file into raw audio",
- "Erik Walthinsen <omega@cse.ogi.edu>"
-);
+static GstElementDetails gst_auparse_details =
+GST_ELEMENT_DETAILS (".au parser",
+ "Codec/Parser/Audio",
+ "Parse an .au file into raw audio",
+ "Erik Walthinsen <omega@cse.ogi.edu>");
static GstStaticPadTemplate gst_auparse_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "audio/x-au" )
-);
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-au")
+ );
static GstStaticPadTemplate gst_auparse_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- GST_AUDIO_INT_PAD_TEMPLATE_CAPS "; "
- "audio/x-alaw, "
- "rate = (int) [ 8000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
+ GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS "; "
+ "audio/x-alaw, "
+ "rate = (int) [ 8000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
/* AuParse signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static void gst_auparse_base_init (gpointer g_class);
-static void gst_auparse_class_init (GstAuParseClass *klass);
-static void gst_auparse_init (GstAuParse *auparse);
+static void gst_auparse_base_init (gpointer g_class);
+static void gst_auparse_class_init (GstAuParseClass * klass);
+static void gst_auparse_init (GstAuParse * auparse);
-static void gst_auparse_chain (GstPad *pad,GstData *_data);
+static void gst_auparse_chain (GstPad * pad, GstData * _data);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_auparse_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_auparse_get_type (void)
+gst_auparse_get_type (void)
{
static GType auparse_type = 0;
if (!auparse_type) {
static const GTypeInfo auparse_info = {
- sizeof(GstAuParseClass),
+ sizeof (GstAuParseClass),
gst_auparse_base_init,
NULL,
(GClassInitFunc) gst_auparse_class_init,
NULL,
NULL,
- sizeof(GstAuParse),
+ sizeof (GstAuParse),
0,
(GInstanceInitFunc) gst_auparse_init,
};
- auparse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstAuParse", &auparse_info, 0);
+ auparse_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstAuParse", &auparse_info,
+ 0);
}
return auparse_type;
}
@@ -116,25 +115,27 @@ gst_auparse_base_init (gpointer g_class)
}
static void
-gst_auparse_class_init (GstAuParseClass *klass)
+gst_auparse_class_init (GstAuParseClass * klass)
{
GstElementClass *gstelement_class;
- gstelement_class = (GstElementClass*) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
}
-static void
-gst_auparse_init (GstAuParse *auparse)
+static void
+gst_auparse_init (GstAuParse * auparse)
{
- auparse->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_auparse_sink_template), "sink");
+ auparse->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_auparse_sink_template), "sink");
gst_element_add_pad (GST_ELEMENT (auparse), auparse->sinkpad);
gst_pad_set_chain_function (auparse->sinkpad, gst_auparse_chain);
- auparse->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_auparse_src_template), "src");
+ auparse->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_auparse_src_template), "src");
gst_element_add_pad (GST_ELEMENT (auparse), auparse->srcpad);
gst_pad_use_explicit_caps (auparse->srcpad);
@@ -145,8 +146,8 @@ gst_auparse_init (GstAuParse *auparse)
auparse->channels = 0;
}
-static void
-gst_auparse_chain (GstPad *pad, GstData *_data)
+static void
+gst_auparse_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstAuParse *auparse;
@@ -161,9 +162,9 @@ gst_auparse_chain (GstPad *pad, GstData *_data)
g_return_if_fail (buf != NULL);
auparse = GST_AUPARSE (gst_pad_get_parent (pad));
-
+
GST_DEBUG ("gst_auparse_chain: got buffer in '%s'",
- gst_element_get_name (GST_ELEMENT (auparse)));
+ gst_element_get_name (GST_ELEMENT (auparse)));
data = GST_BUFFER_DATA (buf);
size = GST_BUFFER_SIZE (buf);
@@ -171,53 +172,55 @@ gst_auparse_chain (GstPad *pad, GstData *_data)
/* if we haven't seen any data yet... */
if (auparse->size == 0) {
GstBuffer *newbuf;
- guint32 *head = (guint32 *)data;
+ guint32 *head = (guint32 *) data;
/* normal format is big endian (au is a Sparc format) */
if (GUINT32_FROM_BE (*head) == 0x2e736e64) {
head++;
auparse->le = 0;
- auparse->offset = GUINT32_FROM_BE (*head);
+ auparse->offset = GUINT32_FROM_BE (*head);
head++;
- auparse->size = GUINT32_FROM_BE (*head);
+ auparse->size = GUINT32_FROM_BE (*head);
head++;
- auparse->encoding = GUINT32_FROM_BE (*head);
+ auparse->encoding = GUINT32_FROM_BE (*head);
head++;
- auparse->frequency = GUINT32_FROM_BE (*head);
+ auparse->frequency = GUINT32_FROM_BE (*head);
head++;
- auparse->channels = GUINT32_FROM_BE (*head);
+ auparse->channels = GUINT32_FROM_BE (*head);
head++;
- /* and of course, someone had to invent a little endian
- * version. Used by DEC systems. */
+ /* and of course, someone had to invent a little endian
+ * version. Used by DEC systems. */
} else if (GUINT32_FROM_LE (*head) == 0x0064732E) {
auparse->le = 1;
head++;
auparse->le = 0;
- auparse->offset = GUINT32_FROM_LE (*head);
+ auparse->offset = GUINT32_FROM_LE (*head);
head++;
- auparse->size = GUINT32_FROM_LE (*head);
+ auparse->size = GUINT32_FROM_LE (*head);
head++;
- auparse->encoding = GUINT32_FROM_LE (*head);
+ auparse->encoding = GUINT32_FROM_LE (*head);
head++;
- auparse->frequency = GUINT32_FROM_LE (*head);
+ auparse->frequency = GUINT32_FROM_LE (*head);
head++;
- auparse->channels = GUINT32_FROM_LE (*head);
+ auparse->channels = GUINT32_FROM_LE (*head);
head++;
} else {
g_warning ("help, dunno what I'm looking at!\n");
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
return;
}
- g_print ("offset %ld, size %ld, encoding %ld, frequency %ld, channels %ld\n",
- auparse->offset,auparse->size,auparse->encoding,
- auparse->frequency,auparse->channels);
- GST_DEBUG ("offset %ld, size %ld, encoding %ld, frequency %ld, channels %ld",
- auparse->offset,auparse->size,auparse->encoding,
- auparse->frequency,auparse->channels);
-
+ g_print
+ ("offset %ld, size %ld, encoding %ld, frequency %ld, channels %ld\n",
+ auparse->offset, auparse->size, auparse->encoding, auparse->frequency,
+ auparse->channels);
+ GST_DEBUG
+ ("offset %ld, size %ld, encoding %ld, frequency %ld, channels %ld",
+ auparse->offset, auparse->size, auparse->encoding, auparse->frequency,
+ auparse->channels);
+
switch (auparse->encoding) {
case 1:
law = 1;
@@ -246,11 +249,10 @@ gst_auparse_chain (GstPad *pad, GstData *_data)
} else {
tempcaps = gst_caps_new_simple ("audio/x-raw-int",
"endianness", G_TYPE_INT, G_BIG_ENDIAN,
- "rate", G_TYPE_INT, auparse->frequency,
- "channels", G_TYPE_INT, auparse->channels,
- "depth", G_TYPE_INT, depth,
- "width", G_TYPE_INT, depth,
- "signed", G_TYPE_BOOLEAN, sign, NULL);
+ "rate", G_TYPE_INT, auparse->frequency,
+ "channels", G_TYPE_INT, auparse->channels,
+ "depth", G_TYPE_INT, depth,
+ "width", G_TYPE_INT, depth, "signed", G_TYPE_BOOLEAN, sign, NULL);
}
if (!gst_pad_set_explicit_caps (auparse->srcpad, tempcaps)) {
@@ -259,9 +261,9 @@ gst_auparse_chain (GstPad *pad, GstData *_data)
}
newbuf = gst_buffer_new ();
- GST_BUFFER_DATA (newbuf) = (gpointer) malloc (size-(auparse->offset));
- memcpy (GST_BUFFER_DATA (newbuf), data+24, size-(auparse->offset));
- GST_BUFFER_SIZE (newbuf) = size-(auparse->offset);
+ GST_BUFFER_DATA (newbuf) = (gpointer) malloc (size - (auparse->offset));
+ memcpy (GST_BUFFER_DATA (newbuf), data + 24, size - (auparse->offset));
+ GST_BUFFER_SIZE (newbuf) = size - (auparse->offset);
gst_buffer_unref (buf);
@@ -274,25 +276,17 @@ gst_auparse_chain (GstPad *pad, GstData *_data)
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_element_register (plugin, "auparse", GST_RANK_SECONDARY,
- GST_TYPE_AUPARSE)) {
+ GST_TYPE_AUPARSE)) {
return FALSE;
}
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "auparse",
- "parses au streams",
- plugin_init,
- VERSION,
- "GPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
-
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "auparse",
+ "parses au streams", plugin_init, VERSION, "GPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/auparse/gstauparse.h b/gst/auparse/gstauparse.h
index d6e5a082..87508c5b 100644
--- a/gst/auparse/gstauparse.h
+++ b/gst/auparse/gstauparse.h
@@ -26,8 +26,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_AUPARSE \
@@ -41,33 +42,35 @@ extern "C" {
#define GST_IS_AUPARSE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUPARSE))
-typedef struct _GstAuParse GstAuParse;
-typedef struct _GstAuParseClass GstAuParseClass;
+ typedef struct _GstAuParse GstAuParse;
+ typedef struct _GstAuParseClass GstAuParseClass;
-struct _GstAuParse {
- GstElement element;
+ struct _GstAuParse
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- guchar le;
- glong offset;
- glong size;
- glong encoding;
- glong frequency;
- glong channels;
+ guchar le;
+ glong offset;
+ glong size;
+ glong encoding;
+ glong frequency;
+ glong channels;
-};
+ };
-struct _GstAuParseClass {
- GstElementClass parent_class;
-};
+ struct _GstAuParseClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_auparse_get_type (void);
+ GType gst_auparse_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_AUPARSE_H__ */
+#endif /* __GST_AUPARSE_H__ */
diff --git a/gst/avi/avi-ids.h b/gst/avi/avi-ids.h
index f9e2dd31..f7e773ec 100644
--- a/gst/avi/avi-ids.h
+++ b/gst/avi/avi-ids.h
@@ -22,21 +22,22 @@
#include <gst/gst.h>
-typedef struct _gst_riff_avih {
- guint32 us_frame; /* microsec per frame */
- guint32 max_bps; /* byte/s overall */
- guint32 pad_gran; /* pad_granularity */
+typedef struct _gst_riff_avih
+{
+ guint32 us_frame; /* microsec per frame */
+ guint32 max_bps; /* byte/s overall */
+ guint32 pad_gran; /* pad_granularity */
guint32 flags;
/* flags values */
-#define GST_RIFF_AVIH_HASINDEX 0x00000010 /* has idx1 chunk */
-#define GST_RIFF_AVIH_MUSTUSEINDEX 0x00000020 /* must use idx1 chunk to determine order */
-#define GST_RIFF_AVIH_ISINTERLEAVED 0x00000100 /* AVI file is interleaved */
-#define GST_RIFF_AVIH_WASCAPTUREFILE 0x00010000 /* specially allocated used for capturing real time video */
-#define GST_RIFF_AVIH_COPYRIGHTED 0x00020000 /* contains copyrighted data */
- guint32 tot_frames; /* # of frames (all) */
- guint32 init_frames; /* initial frames (???) */
+#define GST_RIFF_AVIH_HASINDEX 0x00000010 /* has idx1 chunk */
+#define GST_RIFF_AVIH_MUSTUSEINDEX 0x00000020 /* must use idx1 chunk to determine order */
+#define GST_RIFF_AVIH_ISINTERLEAVED 0x00000100 /* AVI file is interleaved */
+#define GST_RIFF_AVIH_WASCAPTUREFILE 0x00010000 /* specially allocated used for capturing real time video */
+#define GST_RIFF_AVIH_COPYRIGHTED 0x00020000 /* contains copyrighted data */
+ guint32 tot_frames; /* # of frames (all) */
+ guint32 init_frames; /* initial frames (???) */
guint32 streams;
- guint32 bufsize; /* suggested buffer size */
+ guint32 bufsize; /* suggested buffer size */
guint32 width;
guint32 height;
guint32 scale;
diff --git a/gst/avi/gstavi.c b/gst/avi/gstavi.c
index fa17fa47..dbdc7859 100644
--- a/gst/avi/gstavi.c
+++ b/gst/avi/gstavi.c
@@ -29,7 +29,7 @@
#include "gstavimux.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_library_load ("riff"))
return FALSE;
@@ -40,21 +40,13 @@ plugin_init (GstPlugin *plugin)
#endif /* ENABLE_NLS */
return (gst_element_register (plugin, "avidemux",
- GST_RANK_PRIMARY,
- GST_TYPE_AVI_DEMUX) &&
- gst_element_register (plugin, "avimux",
- GST_RANK_NONE,
- GST_TYPE_AVIMUX));
+ GST_RANK_PRIMARY,
+ GST_TYPE_AVI_DEMUX) &&
+ gst_element_register (plugin, "avimux", GST_RANK_NONE, GST_TYPE_AVIMUX));
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "avi",
- "AVI stream handling",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "avi",
+ "AVI stream handling",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/avi/gstavidecoder.c b/gst/avi/gstavidecoder.c
index 9f9a5968..d4cb493f 100644
--- a/gst/avi/gstavidecoder.c
+++ b/gst/avi/gstavidecoder.c
@@ -31,12 +31,11 @@ static GstElementDetails gst_avi_decoder_details = {
"Decoder/Video",
"Decodes a .avi file into audio and video",
VERSION,
- "Erik Walthinsen <omega@cse.ogi.edu>\n"
- "Wim Taymans <wim.taymans@tvd.be>",
+ "Erik Walthinsen <omega@cse.ogi.edu>\n" "Wim Taymans <wim.taymans@tvd.be>",
"(C) 1999",
};
-static GstCaps* avi_typefind (GstBuffer *buf, gpointer private);
+static GstCaps *avi_typefind (GstBuffer * buf, gpointer private);
/* typefactory for 'avi' */
static GstTypeDefinition avidefinition = {
@@ -47,12 +46,14 @@ static GstTypeDefinition avidefinition = {
};
/* AviDecoder signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_BITRATE,
ARG_MEDIA_TIME,
@@ -61,118 +62,104 @@ enum {
};
GST_PADTEMPLATE_FACTORY (sink_templ,
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_CAPS_NEW (
- "avidecoder_sink",
- "video/avi",
- "RIFF", GST_PROPS_STRING ("AVI")
- )
-)
-
-GST_PADTEMPLATE_FACTORY (src_video_templ,
- "video_src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_CAPS_NEW (
- "wincodec_src",
- "video/raw",
- "format", GST_PROPS_LIST (
- GST_PROPS_FOURCC (GST_MAKE_FOURCC ('Y','U','Y','2')),
- GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0')),
- GST_PROPS_FOURCC (GST_MAKE_FOURCC ('R','G','B',' '))
- ),
- "width", GST_PROPS_INT_RANGE (16, 4096),
- "height", GST_PROPS_INT_RANGE (16, 4096)
- )
-)
-
-GST_PADTEMPLATE_FACTORY (src_audio_templ,
- "audio_src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_CAPS_NEW (
- "src_audio",
- "audio/raw",
- "format", GST_PROPS_STRING ("int"),
- "law", GST_PROPS_INT (0),
- "endianness", GST_PROPS_INT (G_BYTE_ORDER),
- "signed", GST_PROPS_LIST (
- GST_PROPS_BOOLEAN (TRUE),
- GST_PROPS_BOOLEAN (FALSE)
- ),
- "width", GST_PROPS_LIST (
- GST_PROPS_INT (8),
- GST_PROPS_INT (16)
- ),
- "depth", GST_PROPS_LIST (
- GST_PROPS_INT (8),
- GST_PROPS_INT (16)
- ),
- "rate", GST_PROPS_INT_RANGE (11025, 48000),
- "channels", GST_PROPS_INT_RANGE (1, 2)
- )
-)
-
-static void gst_avi_decoder_class_init (GstAviDecoderClass *klass);
-static void gst_avi_decoder_init (GstAviDecoder *avi_decoder);
-
-static void gst_avi_decoder_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-
-
-static GstElementClass *parent_class = NULL;
+ "sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_CAPS_NEW ("avidecoder_sink",
+ "video/avi", "RIFF", GST_PROPS_STRING ("AVI")
+ )
+ )
+
+ GST_PADTEMPLATE_FACTORY (src_video_templ,
+ "video_src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_CAPS_NEW ("wincodec_src",
+ "video/raw",
+ "format", GST_PROPS_LIST (GST_PROPS_FOURCC (GST_MAKE_FOURCC ('Y', 'U', 'Y',
+ '2')), GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I', '4', '2', '0')),
+ GST_PROPS_FOURCC (GST_MAKE_FOURCC ('R', 'G', 'B', ' '))
+ ), "width", GST_PROPS_INT_RANGE (16, 4096), "height",
+ GST_PROPS_INT_RANGE (16, 4096)
+ )
+ )
+
+ GST_PADTEMPLATE_FACTORY (src_audio_templ,
+ "audio_src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_CAPS_NEW ("src_audio",
+ "audio/raw",
+ "format", GST_PROPS_STRING ("int"),
+ "law", GST_PROPS_INT (0),
+ "endianness", GST_PROPS_INT (G_BYTE_ORDER),
+ "signed", GST_PROPS_LIST (GST_PROPS_BOOLEAN (TRUE),
+ GST_PROPS_BOOLEAN (FALSE)
+ ), "width", GST_PROPS_LIST (GST_PROPS_INT (8), GST_PROPS_INT (16)
+ ), "depth", GST_PROPS_LIST (GST_PROPS_INT (8), GST_PROPS_INT (16)
+ ),
+ "rate", GST_PROPS_INT_RANGE (11025, 48000),
+ "channels", GST_PROPS_INT_RANGE (1, 2)
+ )
+ )
+
+ static void gst_avi_decoder_class_init (GstAviDecoderClass * klass);
+ static void gst_avi_decoder_init (GstAviDecoder * avi_decoder);
+
+ static void gst_avi_decoder_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+
+
+
+ static GstElementClass *parent_class = NULL;
+
/*static guint gst_avi_decoder_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_avi_decoder_get_type(void)
+gst_avi_decoder_get_type (void)
{
static GType avi_decoder_type = 0;
if (!avi_decoder_type) {
static const GTypeInfo avi_decoder_info = {
- sizeof(GstAviDecoderClass),
+ sizeof (GstAviDecoderClass),
NULL,
NULL,
- (GClassInitFunc)gst_avi_decoder_class_init,
+ (GClassInitFunc) gst_avi_decoder_class_init,
NULL,
NULL,
- sizeof(GstAviDecoder),
+ sizeof (GstAviDecoder),
0,
- (GInstanceInitFunc)gst_avi_decoder_init,
+ (GInstanceInitFunc) gst_avi_decoder_init,
};
- avi_decoder_type = g_type_register_static(GST_TYPE_BIN, "GstAviDecoder", &avi_decoder_info, 0);
+ avi_decoder_type =
+ g_type_register_static (GST_TYPE_BIN, "GstAviDecoder",
+ &avi_decoder_info, 0);
}
return avi_decoder_type;
}
static void
-gst_avi_decoder_class_init (GstAviDecoderClass *klass)
+gst_avi_decoder_class_init (GstAviDecoderClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- g_object_class_install_property (G_OBJECT_CLASS(klass), ARG_BITRATE,
- g_param_spec_long ("bitrate","bitrate","bitrate",
- G_MINLONG, G_MAXLONG, 0, G_PARAM_READABLE)); /* CHECKME */
- g_object_class_install_property (G_OBJECT_CLASS(klass), ARG_MEDIA_TIME,
- g_param_spec_long ("media_time","media_time","media_time",
- G_MINLONG, G_MAXLONG, 0, G_PARAM_READABLE)); /* CHECKME */
- g_object_class_install_property (G_OBJECT_CLASS(klass), ARG_CURRENT_TIME,
- g_param_spec_long ("current_time","current_time","current_time",
- G_MINLONG, G_MAXLONG, 0, G_PARAM_READABLE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BITRATE, g_param_spec_long ("bitrate", "bitrate", "bitrate", G_MINLONG, G_MAXLONG, 0, G_PARAM_READABLE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MEDIA_TIME, g_param_spec_long ("media_time", "media_time", "media_time", G_MINLONG, G_MAXLONG, 0, G_PARAM_READABLE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_CURRENT_TIME, g_param_spec_long ("current_time", "current_time", "current_time", G_MINLONG, G_MAXLONG, 0, G_PARAM_READABLE)); /* CHECKME */
parent_class = g_type_class_ref (GST_TYPE_BIN);
-
+
gobject_class->get_property = gst_avi_decoder_get_property;
}
-static void
-gst_avi_decoder_new_pad (GstElement *element, GstPad *pad, GstAviDecoder *avi_decoder)
+static void
+gst_avi_decoder_new_pad (GstElement * element, GstPad * pad,
+ GstAviDecoder * avi_decoder)
{
GstCaps *caps;
GstCaps *targetcaps = NULL;
@@ -182,38 +169,40 @@ gst_avi_decoder_new_pad (GstElement *element, GstPad *pad, GstAviDecoder *avi_de
GstElement *new_element = NULL;
gchar *padname = NULL;
gchar *gpadname = NULL;
+
#define AVI_TYPE_VIDEO 1
#define AVI_TYPE_AUDIO 2
gint media_type = 0;
-
- GST_DEBUG (0, "avidecoder: new pad for element \"%s\"", gst_element_get_name (element));
+
+ GST_DEBUG (0, "avidecoder: new pad for element \"%s\"",
+ gst_element_get_name (element));
caps = gst_pad_get_caps (pad);
format = gst_caps_get_string (caps, "format");
- if (!strcmp (format, "strf_vids")) {
- targetcaps = gst_padtemplate_get_caps (GST_PADTEMPLATE_GET (src_video_templ));
+ if (!strcmp (format, "strf_vids")) {
+ targetcaps =
+ gst_padtemplate_get_caps (GST_PADTEMPLATE_GET (src_video_templ));
media_type = AVI_TYPE_VIDEO;
gpadname = g_strdup_printf ("video_%02d", avi_decoder->video_count++);
- }
- else if (!strcmp (format, "strf_auds")) {
- targetcaps = gst_padtemplate_get_caps (GST_PADTEMPLATE_GET (src_audio_templ));
+ } else if (!strcmp (format, "strf_auds")) {
+ targetcaps =
+ gst_padtemplate_get_caps (GST_PADTEMPLATE_GET (src_audio_templ));
media_type = AVI_TYPE_AUDIO;
gpadname = g_strdup_printf ("audio_%02d", avi_decoder->audio_count++);
- }
- else if (!strcmp (format, "strf_iavs")) {
- targetcaps = gst_padtemplate_get_caps (GST_PADTEMPLATE_GET (src_video_templ));
+ } else if (!strcmp (format, "strf_iavs")) {
+ targetcaps =
+ gst_padtemplate_get_caps (GST_PADTEMPLATE_GET (src_video_templ));
media_type = AVI_TYPE_VIDEO;
gpadname = g_strdup_printf ("video_%02d", avi_decoder->video_count++);
- }
- else {
+ } else {
g_assert_not_reached ();
}
gst_element_set_state (GST_ELEMENT (avi_decoder), GST_STATE_PAUSED);
- type = gst_elementfactory_make ("avitypes",
- g_strdup_printf ("typeconvert%d", avi_decoder->count));
+ type = gst_elementfactory_make ("avitypes",
+ g_strdup_printf ("typeconvert%d", avi_decoder->count));
/* brin the element to the READY state so it can do our caps negotiation */
gst_element_set_state (type, GST_STATE_READY);
@@ -224,13 +213,13 @@ gst_avi_decoder_new_pad (GstElement *element, GstPad *pad, GstAviDecoder *avi_de
if (type_found) {
gst_bin_add (GST_BIN (avi_decoder), type);
-
+
pad = gst_element_get_pad (type, "src");
caps = gst_pad_get_caps (pad);
if (gst_caps_is_always_compatible (caps, targetcaps)) {
- gst_element_add_ghost_pad (GST_ELEMENT (avi_decoder),
- gst_element_get_pad (type, "src"), gpadname);
+ gst_element_add_ghost_pad (GST_ELEMENT (avi_decoder),
+ gst_element_get_pad (type, "src"), gpadname);
avi_decoder->count++;
goto done;
@@ -238,7 +227,8 @@ gst_avi_decoder_new_pad (GstElement *element, GstPad *pad, GstAviDecoder *avi_de
#ifndef GST_DISABLE_AUTOPLUG
else {
GstAutoplug *autoplug;
- autoplug = gst_autoplugfactory_make("static");
+
+ autoplug = gst_autoplugfactory_make ("static");
new_element = gst_autoplug_to_caps (autoplug, caps, targetcaps, NULL);
@@ -249,45 +239,43 @@ gst_avi_decoder_new_pad (GstElement *element, GstPad *pad, GstAviDecoder *avi_de
if (!new_element && (media_type == AVI_TYPE_VIDEO)) {
padname = "src";
- }
- else if (!new_element && (media_type == AVI_TYPE_AUDIO)) {
+ } else if (!new_element && (media_type == AVI_TYPE_AUDIO)) {
/*FIXME */
padname = "src";
}
if (new_element) {
gst_pad_connect (pad, gst_element_get_pad (new_element, "sink"));
- gst_element_set_name (new_element, g_strdup_printf ("element%d", avi_decoder->count));
+ gst_element_set_name (new_element, g_strdup_printf ("element%d",
+ avi_decoder->count));
gst_bin_add (GST_BIN (avi_decoder), new_element);
- gst_element_add_ghost_pad (GST_ELEMENT (avi_decoder),
- gst_element_get_pad (new_element, padname), gpadname);
+ gst_element_add_ghost_pad (GST_ELEMENT (avi_decoder),
+ gst_element_get_pad (new_element, padname), gpadname);
avi_decoder->count++;
- }
- else {
+ } else {
g_warning ("avidecoder: could not autoplug\n");
}
-done:
+done:
gst_element_set_state (GST_ELEMENT (avi_decoder), GST_STATE_PLAYING);
}
-static void
-gst_avi_decoder_init (GstAviDecoder *avi_decoder)
+static void
+gst_avi_decoder_init (GstAviDecoder * avi_decoder)
{
avi_decoder->demuxer = gst_elementfactory_make ("avidemux", "demux");
if (avi_decoder->demuxer) {
gst_bin_add (GST_BIN (avi_decoder), avi_decoder->demuxer);
- gst_element_add_ghost_pad (GST_ELEMENT (avi_decoder),
- gst_element_get_pad (avi_decoder->demuxer, "sink"), "sink");
+ gst_element_add_ghost_pad (GST_ELEMENT (avi_decoder),
+ gst_element_get_pad (avi_decoder->demuxer, "sink"), "sink");
- g_signal_connect (G_OBJECT (avi_decoder->demuxer),"new_pad", G_CALLBACK (gst_avi_decoder_new_pad),
- avi_decoder);
- }
- else {
+ g_signal_connect (G_OBJECT (avi_decoder->demuxer), "new_pad",
+ G_CALLBACK (gst_avi_decoder_new_pad), avi_decoder);
+ } else {
g_warning ("wow!, no avi demuxer found. help me\n");
}
@@ -296,26 +284,27 @@ gst_avi_decoder_init (GstAviDecoder *avi_decoder)
avi_decoder->video_count = 0;
}
-static GstCaps*
-avi_typefind (GstBuffer *buf,
- gpointer private)
+static GstCaps *
+avi_typefind (GstBuffer * buf, gpointer private)
{
gchar *data = GST_BUFFER_DATA (buf);
GstCaps *new;
- GST_DEBUG (0,"avi_decoder: typefind");
- if (strncmp (&data[0], "RIFF", 4)) return NULL;
- if (strncmp (&data[8], "AVI ", 4)) return NULL;
+ GST_DEBUG (0, "avi_decoder: typefind");
+ if (strncmp (&data[0], "RIFF", 4))
+ return NULL;
+ if (strncmp (&data[8], "AVI ", 4))
+ return NULL;
new = GST_CAPS_NEW ("avi_typefind",
- "video/avi",
- "RIFF", GST_PROPS_STRING ("AVI"));
+ "video/avi", "RIFF", GST_PROPS_STRING ("AVI"));
return new;
}
static void
-gst_avi_decoder_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_avi_decoder_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstAviDecoder *src;
@@ -323,14 +312,16 @@ gst_avi_decoder_get_property (GObject *object, guint prop_id, GValue *value, GPa
src = GST_AVI_DECODER (object);
- switch(prop_id) {
+ switch (prop_id) {
case ARG_BITRATE:
break;
case ARG_MEDIA_TIME:
- g_value_set_long (value, gst_util_get_long_arg (G_OBJECT (src->demuxer), "media_time"));
+ g_value_set_long (value, gst_util_get_long_arg (G_OBJECT (src->demuxer),
+ "media_time"));
break;
case ARG_CURRENT_TIME:
- g_value_set_long (value, gst_util_get_long_arg (G_OBJECT (src->demuxer), "current_time"));
+ g_value_set_long (value, gst_util_get_long_arg (G_OBJECT (src->demuxer),
+ "current_time"));
break;
default:
break;
@@ -339,19 +330,22 @@ gst_avi_decoder_get_property (GObject *object, guint prop_id, GValue *value, GPa
static gboolean
-plugin_init (GModule *module, GstPlugin *plugin)
+plugin_init (GModule * module, GstPlugin * plugin)
{
GstElementFactory *factory;
GstTypeFactory *type;
/* create an elementfactory for the avi_decoder element */
factory = gst_elementfactory_new ("avidecoder", GST_TYPE_AVI_DECODER,
- &gst_avi_decoder_details);
+ &gst_avi_decoder_details);
g_return_val_if_fail (factory != NULL, FALSE);
- gst_elementfactory_add_padtemplate (factory, GST_PADTEMPLATE_GET (src_audio_templ));
- gst_elementfactory_add_padtemplate (factory, GST_PADTEMPLATE_GET (src_video_templ));
- gst_elementfactory_add_padtemplate (factory, GST_PADTEMPLATE_GET (sink_templ));
+ gst_elementfactory_add_padtemplate (factory,
+ GST_PADTEMPLATE_GET (src_audio_templ));
+ gst_elementfactory_add_padtemplate (factory,
+ GST_PADTEMPLATE_GET (src_video_templ));
+ gst_elementfactory_add_padtemplate (factory,
+ GST_PADTEMPLATE_GET (sink_templ));
type = gst_typefactory_new (&avidefinition);
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (type));
@@ -367,4 +361,3 @@ GstPluginDesc plugin_desc = {
"avidecoder",
plugin_init
};
-
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 1b50b98e..03403488 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -32,72 +32,62 @@ GST_DEBUG_CATEGORY_STATIC (avidemux_debug);
#define GST_CAT_DEFAULT avidemux_debug
/* AviDemux signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_STREAMINFO,
/* FILL ME */
};
-static GstStaticPadTemplate sink_templ =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("video/x-msvideo")
-);
+static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("video/x-msvideo")
+ );
-static void gst_avi_demux_base_init (GstAviDemuxClass *klass);
-static void gst_avi_demux_class_init (GstAviDemuxClass *klass);
-static void gst_avi_demux_init (GstAviDemux *avi);
+static void gst_avi_demux_base_init (GstAviDemuxClass * klass);
+static void gst_avi_demux_class_init (GstAviDemuxClass * klass);
+static void gst_avi_demux_init (GstAviDemux * avi);
-static void gst_avi_demux_reset (GstAviDemux *avi);
-static void gst_avi_demux_loop (GstElement *element);
+static void gst_avi_demux_reset (GstAviDemux * avi);
+static void gst_avi_demux_loop (GstElement * element);
-static gboolean gst_avi_demux_send_event (GstElement *element,
- GstEvent *event);
+static gboolean gst_avi_demux_send_event (GstElement * element,
+ GstEvent * event);
-static const GstEventMask *
- gst_avi_demux_get_event_mask (GstPad *pad);
-static gboolean gst_avi_demux_handle_src_event (GstPad *pad,
- GstEvent *event);
-static const GstFormat *
- gst_avi_demux_get_src_formats (GstPad *pad);
-static const GstQueryType *
- gst_avi_demux_get_src_query_types (GstPad *pad);
-static gboolean gst_avi_demux_handle_src_query (GstPad *pad,
- GstQueryType type,
- GstFormat *format,
- gint64 *value);
-static gboolean gst_avi_demux_src_convert (GstPad *pad,
- GstFormat src_format,
- gint64 src_value,
- GstFormat *dest_format,
- gint64 *dest_value);
+static const GstEventMask *gst_avi_demux_get_event_mask (GstPad * pad);
+static gboolean gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event);
+static const GstFormat *gst_avi_demux_get_src_formats (GstPad * pad);
+static const GstQueryType *gst_avi_demux_get_src_query_types (GstPad * pad);
+static gboolean gst_avi_demux_handle_src_query (GstPad * pad,
+ GstQueryType type, GstFormat * format, gint64 * value);
+static gboolean gst_avi_demux_src_convert (GstPad * pad,
+ GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
-static GstElementStateReturn
- gst_avi_demux_change_state (GstElement *element);
+static GstElementStateReturn gst_avi_demux_change_state (GstElement * element);
-static void gst_avi_demux_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
+static void gst_avi_demux_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
static GstRiffReadClass *parent_class = NULL;
+
/*static guint gst_avi_demux_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_avi_demux_get_type(void)
+gst_avi_demux_get_type (void)
{
static GType avi_demux_type = 0;
if (!avi_demux_type) {
static const GTypeInfo avi_demux_info = {
- sizeof (GstAviDemuxClass),
+ sizeof (GstAviDemuxClass),
(GBaseInitFunc) gst_avi_demux_base_init,
NULL,
(GClassInitFunc) gst_avi_demux_class_init,
@@ -110,40 +100,34 @@ gst_avi_demux_get_type(void)
avi_demux_type =
g_type_register_static (GST_TYPE_RIFF_READ,
- "GstAviDemux",
- &avi_demux_info, 0);
+ "GstAviDemux", &avi_demux_info, 0);
}
return avi_demux_type;
}
static void
-gst_avi_demux_base_init (GstAviDemuxClass *klass)
+gst_avi_demux_base_init (GstAviDemuxClass * klass)
{
- static GstElementDetails gst_avi_demux_details = GST_ELEMENT_DETAILS (
- "Avi demuxer",
- "Codec/Demuxer",
- "Demultiplex an avi file into audio and video",
- "Erik Walthinsen <omega@cse.ogi.edu>\n"
- "Wim Taymans <wim.taymans@chello.be>\n"
- "Ronald Bultje <rbultje@ronald.bitfreak.net>"
- );
+ static GstElementDetails gst_avi_demux_details =
+ GST_ELEMENT_DETAILS ("Avi demuxer",
+ "Codec/Demuxer",
+ "Demultiplex an avi file into audio and video",
+ "Erik Walthinsen <omega@cse.ogi.edu>\n"
+ "Wim Taymans <wim.taymans@chello.be>\n"
+ "Ronald Bultje <rbultje@ronald.bitfreak.net>");
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
GstPadTemplate *videosrctempl, *audiosrctempl;
GstCaps *audcaps, *vidcaps;
audcaps = gst_riff_create_audio_template_caps ();
audiosrctempl = gst_pad_template_new ("audio_%02d",
- GST_PAD_SRC,
- GST_PAD_SOMETIMES,
- audcaps);
+ GST_PAD_SRC, GST_PAD_SOMETIMES, audcaps);
vidcaps = gst_riff_create_video_template_caps ();
gst_caps_append (vidcaps, gst_riff_create_iavs_template_caps ());
videosrctempl = gst_pad_template_new ("video_%02d",
- GST_PAD_SRC,
- GST_PAD_SOMETIMES,
- vidcaps);
+ GST_PAD_SRC, GST_PAD_SOMETIMES, vidcaps);
gst_element_class_add_pad_template (element_class, audiosrctempl);
gst_element_class_add_pad_template (element_class, videosrctempl);
@@ -153,36 +137,37 @@ gst_avi_demux_base_init (GstAviDemuxClass *klass)
}
static void
-gst_avi_demux_class_init (GstAviDemuxClass *klass)
+gst_avi_demux_class_init (GstAviDemuxClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
g_object_class_install_property (gobject_class, ARG_STREAMINFO,
- g_param_spec_boxed ("streaminfo", "Streaminfo", "Streaminfo",
- GST_TYPE_CAPS, G_PARAM_READABLE));
+ g_param_spec_boxed ("streaminfo", "Streaminfo", "Streaminfo",
+ GST_TYPE_CAPS, G_PARAM_READABLE));
GST_DEBUG_CATEGORY_INIT (avidemux_debug, "avidemux",
- 0, "Demuxer for AVI streams");
+ 0, "Demuxer for AVI streams");
parent_class = g_type_class_ref (GST_TYPE_RIFF_READ);
-
+
gobject_class->get_property = gst_avi_demux_get_property;
-
+
gstelement_class->change_state = gst_avi_demux_change_state;
gstelement_class->send_event = gst_avi_demux_send_event;
}
-static void
-gst_avi_demux_init (GstAviDemux *avi)
+static void
+gst_avi_demux_init (GstAviDemux * avi)
{
GST_FLAG_SET (avi, GST_ELEMENT_EVENT_AWARE);
- avi->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&sink_templ), "sink");
+ avi->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get (&sink_templ),
+ "sink");
gst_element_add_pad (GST_ELEMENT (avi), avi->sinkpad);
GST_RIFF_READ (avi)->sinkpad = avi->sinkpad;
@@ -195,7 +180,7 @@ gst_avi_demux_init (GstAviDemux *avi)
}
static void
-gst_avi_demux_reset (GstAviDemux *avi)
+gst_avi_demux_reset (GstAviDemux * avi)
{
gint i;
@@ -221,27 +206,25 @@ gst_avi_demux_reset (GstAviDemux *avi)
avi->num_frames = 0;
avi->us_per_frame = 0;
- avi->seek_offset = (guint64) -1;
+ avi->seek_offset = (guint64) - 1;
gst_caps_replace (&avi->streaminfo, NULL);
}
static void
-gst_avi_demux_streaminfo (GstAviDemux *avi)
+gst_avi_demux_streaminfo (GstAviDemux * avi)
{
/* compression formats are added later - a bit hacky */
gst_caps_replace (&avi->streaminfo,
gst_caps_new_simple ("application/x-gst-streaminfo", NULL));
- /*g_object_notify(G_OBJECT(avi), "streaminfo");*/
+ /*g_object_notify(G_OBJECT(avi), "streaminfo"); */
}
static gst_avi_index_entry *
-gst_avi_demux_index_next (GstAviDemux *avi,
- gint stream_nr,
- gint start,
- guint32 flags)
+gst_avi_demux_index_next (GstAviDemux * avi,
+ gint stream_nr, gint start, guint32 flags)
{
gint i;
gst_avi_index_entry *entry = NULL;
@@ -258,10 +241,8 @@ gst_avi_demux_index_next (GstAviDemux *avi,
}
static gst_avi_index_entry *
-gst_avi_demux_index_entry_for_time (GstAviDemux *avi,
- gint stream_nr,
- guint64 time,
- guint32 flags)
+gst_avi_demux_index_entry_for_time (GstAviDemux * avi,
+ gint stream_nr, guint64 time, guint32 flags)
{
gst_avi_index_entry *entry = NULL, *last_entry = NULL;
gint i;
@@ -283,10 +264,8 @@ gst_avi_demux_index_entry_for_time (GstAviDemux *avi,
}
static gst_avi_index_entry *
-gst_avi_demux_index_entry_for_byte (GstAviDemux *avi,
- gint stream_nr,
- guint64 byte,
- guint32 flags)
+gst_avi_demux_index_entry_for_byte (GstAviDemux * avi,
+ gint stream_nr, guint64 byte, guint32 flags)
{
gst_avi_index_entry *entry = NULL, *last_entry = NULL;
gint i;
@@ -308,10 +287,8 @@ gst_avi_demux_index_entry_for_byte (GstAviDemux *avi,
}
static gst_avi_index_entry *
-gst_avi_demux_index_entry_for_frame (GstAviDemux *avi,
- gint stream_nr,
- guint32 frame,
- guint32 flags)
+gst_avi_demux_index_entry_for_frame (GstAviDemux * avi,
+ gint stream_nr, guint32 frame, guint32 flags)
{
gst_avi_index_entry *entry = NULL, *last_entry = NULL;
gint i;
@@ -333,7 +310,7 @@ gst_avi_demux_index_entry_for_frame (GstAviDemux *avi,
}
static const GstFormat *
-gst_avi_demux_get_src_formats (GstPad *pad)
+gst_avi_demux_get_src_formats (GstPad * pad)
{
avi_stream_context *stream = gst_pad_get_element_private (pad);
@@ -350,36 +327,34 @@ gst_avi_demux_get_src_formats (GstPad *pad)
};
return (stream->strh->type == GST_RIFF_FCC_auds ?
- src_a_formats : src_v_formats);
+ src_a_formats : src_v_formats);
}
static gboolean
-gst_avi_demux_src_convert (GstPad *pad,
- GstFormat src_format,
- gint64 src_value,
- GstFormat *dest_format,
- gint64 *dest_value)
+gst_avi_demux_src_convert (GstPad * pad,
+ GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value)
{
gboolean res = TRUE;
- /*GstAviDemux *avi = GST_AVI_DEMUX (gst_pad_get_parent (pad));*/
+
+ /*GstAviDemux *avi = GST_AVI_DEMUX (gst_pad_get_parent (pad)); */
avi_stream_context *stream = gst_pad_get_element_private (pad);
- if (stream->strh->type != GST_RIFF_FCC_auds &&
- (src_format == GST_FORMAT_BYTES ||
- *dest_format == GST_FORMAT_BYTES))
+ if (stream->strh->type != GST_RIFF_FCC_auds &&
+ (src_format == GST_FORMAT_BYTES || *dest_format == GST_FORMAT_BYTES))
return FALSE;
switch (src_format) {
case GST_FORMAT_TIME:
switch (*dest_format) {
case GST_FORMAT_BYTES:
- *dest_value = src_value * stream->strh->rate /
- (stream->strh->scale * GST_SECOND);
- break;
- case GST_FORMAT_DEFAULT:
- *dest_value = src_value * stream->strh->rate /
- (stream->strh->scale * GST_SECOND);
- break;
+ *dest_value = src_value * stream->strh->rate /
+ (stream->strh->scale * GST_SECOND);
+ break;
+ case GST_FORMAT_DEFAULT:
+ *dest_value = src_value * stream->strh->rate /
+ (stream->strh->scale * GST_SECOND);
+ break;
default:
res = FALSE;
break;
@@ -388,7 +363,7 @@ gst_avi_demux_src_convert (GstPad *pad,
case GST_FORMAT_BYTES:
switch (*dest_format) {
case GST_FORMAT_TIME:
- *dest_value = ((gfloat) src_value) * GST_SECOND / stream->strh->rate;
+ *dest_value = ((gfloat) src_value) * GST_SECOND / stream->strh->rate;
break;
default:
res = FALSE;
@@ -398,8 +373,8 @@ gst_avi_demux_src_convert (GstPad *pad,
case GST_FORMAT_DEFAULT:
switch (*dest_format) {
case GST_FORMAT_TIME:
- *dest_value = ((((gfloat) src_value) * stream->strh->scale) /
- stream->strh->rate) * GST_SECOND;
+ *dest_value = ((((gfloat) src_value) * stream->strh->scale) /
+ stream->strh->rate) * GST_SECOND;
break;
default:
res = FALSE;
@@ -414,7 +389,7 @@ gst_avi_demux_src_convert (GstPad *pad,
}
static const GstQueryType *
-gst_avi_demux_get_src_query_types (GstPad *pad)
+gst_avi_demux_get_src_query_types (GstPad * pad)
{
static const GstQueryType src_types[] = {
GST_QUERY_TOTAL,
@@ -426,67 +401,64 @@ gst_avi_demux_get_src_query_types (GstPad *pad)
}
static gboolean
-gst_avi_demux_handle_src_query (GstPad *pad,
- GstQueryType type,
- GstFormat *format,
- gint64 *value)
+gst_avi_demux_handle_src_query (GstPad * pad,
+ GstQueryType type, GstFormat * format, gint64 * value)
{
gboolean res = TRUE;
- /*GstAviDemux *avi = GST_AVI_DEMUX (gst_pad_get_parent (pad));*/
+
+ /*GstAviDemux *avi = GST_AVI_DEMUX (gst_pad_get_parent (pad)); */
avi_stream_context *stream = gst_pad_get_element_private (pad);
switch (type) {
case GST_QUERY_TOTAL:
switch (*format) {
- case GST_FORMAT_TIME:
- *value = (((gfloat) stream->strh->scale) * stream->strh->length /
- stream->strh->rate) * GST_SECOND;
+ case GST_FORMAT_TIME:
+ *value = (((gfloat) stream->strh->scale) * stream->strh->length /
+ stream->strh->rate) * GST_SECOND;
break;
- case GST_FORMAT_BYTES:
- if (stream->strh->type == GST_RIFF_FCC_auds) {
- *value = stream->total_bytes;
- }
- else
+ case GST_FORMAT_BYTES:
+ if (stream->strh->type == GST_RIFF_FCC_auds) {
+ *value = stream->total_bytes;
+ } else
res = FALSE;
break;
- case GST_FORMAT_DEFAULT:
- if (stream->strh->type == GST_RIFF_FCC_auds)
- *value = stream->strh->length * stream->strh->samplesize;
+ case GST_FORMAT_DEFAULT:
+ if (stream->strh->type == GST_RIFF_FCC_auds)
+ *value = stream->strh->length * stream->strh->samplesize;
else if (stream->strh->type == GST_RIFF_FCC_vids)
- *value = stream->strh->length;
+ *value = stream->strh->length;
else
res = FALSE;
break;
default:
- res = FALSE;
+ res = FALSE;
break;
}
break;
case GST_QUERY_POSITION:
switch (*format) {
- case GST_FORMAT_TIME:
- if (stream->strh->samplesize &&
+ case GST_FORMAT_TIME:
+ if (stream->strh->samplesize &&
stream->strh->type == GST_RIFF_FCC_auds) {
- *value = ((gfloat) stream->current_byte) * GST_SECOND /
- stream->strh->rate;
- }
- else {
- *value = (((gfloat) stream->current_frame) * stream->strh->scale /
- stream->strh->rate) * GST_SECOND;
+ *value = ((gfloat) stream->current_byte) * GST_SECOND /
+ stream->strh->rate;
+ } else {
+ *value = (((gfloat) stream->current_frame) * stream->strh->scale /
+ stream->strh->rate) * GST_SECOND;
}
break;
- case GST_FORMAT_BYTES:
- *value = stream->current_byte;
+ case GST_FORMAT_BYTES:
+ *value = stream->current_byte;
break;
- case GST_FORMAT_DEFAULT:
- if (stream->strh->samplesize &&
- stream->strh->type == GST_RIFF_FCC_auds)
- *value = stream->current_byte * stream->strh->samplesize;
- else
- *value = stream->current_frame;
+ case GST_FORMAT_DEFAULT:
+ if (stream->strh->samplesize &&
+ stream->strh->type == GST_RIFF_FCC_auds)
+ *value = stream->current_byte * stream->strh->samplesize;
+ else
+ *value = stream->current_frame;
break;
default:
- res = FALSE;
+ res = FALSE;
break;
}
break;
@@ -499,7 +471,7 @@ gst_avi_demux_handle_src_query (GstPad *pad,
}
static GstCaps *
-gst_avi_demux_src_getcaps (GstPad *pad)
+gst_avi_demux_src_getcaps (GstPad * pad)
{
avi_stream_context *stream = gst_pad_get_element_private (pad);
@@ -507,8 +479,7 @@ gst_avi_demux_src_getcaps (GstPad *pad)
}
static gint32
-gst_avi_demux_sync_streams (GstAviDemux *avi,
- guint64 time)
+gst_avi_demux_sync_streams (GstAviDemux * avi, guint64 time)
{
gint i;
guint32 min_index = G_MAXUINT;
@@ -521,25 +492,25 @@ gst_avi_demux_sync_streams (GstAviDemux *avi,
GST_DEBUG ("finding %d for time %" G_GINT64_FORMAT, i, time);
entry = gst_avi_demux_index_entry_for_time (avi, stream->num, time,
- GST_RIFF_IF_KEYFRAME);
+ GST_RIFF_IF_KEYFRAME);
if (entry) {
min_index = MIN (entry->index_nr, min_index);
}
}
GST_DEBUG ("first index at %d", min_index);
-
+
/* now we know the entry we need to sync on. calculate number of frames to
* skip fro there on and the stream stats */
for (i = 0; i < avi->num_streams; i++) {
gst_avi_index_entry *next_entry;
+
stream = &avi->stream[i];
/* next entry */
- next_entry = gst_avi_demux_index_next (avi, stream->num,
- min_index, 0);
+ next_entry = gst_avi_demux_index_next (avi, stream->num, min_index, 0);
/* next entry with keyframe */
entry = gst_avi_demux_index_next (avi, stream->num, min_index,
- GST_RIFF_IF_KEYFRAME);
+ GST_RIFF_IF_KEYFRAME);
stream->current_byte = next_entry->bytes_before;
stream->current_frame = next_entry->frames_before;
@@ -554,14 +525,13 @@ gst_avi_demux_sync_streams (GstAviDemux *avi,
}
static gboolean
-gst_avi_demux_send_event (GstElement *element,
- GstEvent *event)
+gst_avi_demux_send_event (GstElement * element, GstEvent * event)
{
const GList *pads;
pads = gst_element_get_pad_list (element);
- while (pads) {
+ while (pads) {
GstPad *pad = GST_PAD (pads->data);
if (GST_PAD_DIRECTION (pad) == GST_PAD_SRC) {
@@ -574,93 +544,88 @@ gst_avi_demux_send_event (GstElement *element,
return TRUE;
}
}
-
+
pads = g_list_next (pads);
}
-
+
gst_event_unref (event);
return FALSE;
}
static const GstEventMask *
-gst_avi_demux_get_event_mask (GstPad *pad)
+gst_avi_demux_get_event_mask (GstPad * pad)
{
static const GstEventMask masks[] = {
- { GST_EVENT_SEEK, GST_SEEK_METHOD_SET | GST_SEEK_FLAG_KEY_UNIT },
- { 0, }
+ {GST_EVENT_SEEK, GST_SEEK_METHOD_SET | GST_SEEK_FLAG_KEY_UNIT},
+ {0,}
};
return masks;
}
-
+
static gboolean
-gst_avi_demux_handle_src_event (GstPad *pad,
- GstEvent *event)
+gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event)
{
gboolean res = TRUE;
GstAviDemux *avi = GST_AVI_DEMUX (gst_pad_get_parent (pad));
avi_stream_context *stream;
-
+
stream = gst_pad_get_element_private (pad);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEEK:
GST_DEBUG ("seek format %d, %08x", GST_EVENT_SEEK_FORMAT (event),
- stream->strh->type);
+ stream->strh->type);
switch (GST_EVENT_SEEK_FORMAT (event)) {
case GST_FORMAT_BYTES:
case GST_FORMAT_DEFAULT:
- case GST_FORMAT_TIME: {
+ case GST_FORMAT_TIME:{
gst_avi_index_entry *seek_entry, *entry = NULL;
gint64 desired_offset = GST_EVENT_SEEK_OFFSET (event);
guint32 flags;
- guint64 min_index;
+ guint64 min_index;
/* no seek on audio yet */
if (stream->strh->type == GST_RIFF_FCC_auds) {
res = FALSE;
goto done;
}
- GST_DEBUG ("seeking to %" G_GINT64_FORMAT, desired_offset);
+ GST_DEBUG ("seeking to %" G_GINT64_FORMAT, desired_offset);
- flags = GST_RIFF_IF_KEYFRAME;
- switch (GST_EVENT_SEEK_FORMAT (event)) {
+ flags = GST_RIFF_IF_KEYFRAME;
+ switch (GST_EVENT_SEEK_FORMAT (event)) {
case GST_FORMAT_BYTES:
- entry = gst_avi_demux_index_entry_for_byte (avi, stream->num,
- desired_offset,
- flags);
- break;
+ entry = gst_avi_demux_index_entry_for_byte (avi, stream->num,
+ desired_offset, flags);
+ break;
case GST_FORMAT_DEFAULT:
- entry = gst_avi_demux_index_entry_for_frame (avi, stream->num,
- desired_offset,
- flags);
- break;
+ entry = gst_avi_demux_index_entry_for_frame (avi, stream->num,
+ desired_offset, flags);
+ break;
case GST_FORMAT_TIME:
- entry = gst_avi_demux_index_entry_for_time (avi, stream->num,
- desired_offset,
- flags);
- break;
- }
+ entry = gst_avi_demux_index_entry_for_time (avi, stream->num,
+ desired_offset, flags);
+ break;
+ }
if (entry) {
min_index = gst_avi_demux_sync_streams (avi, entry->ts);
- seek_entry = &avi->index_entries[min_index];
+ seek_entry = &avi->index_entries[min_index];
avi->seek_offset = seek_entry->offset + avi->index_offset;
- avi->last_seek = entry->ts;
+ avi->last_seek = entry->ts;
} else {
- GST_DEBUG ("no index entry found for format=%d value=%"
- G_GINT64_FORMAT, GST_EVENT_SEEK_FORMAT (event),
- desired_offset);
+ GST_DEBUG ("no index entry found for format=%d value=%"
+ G_GINT64_FORMAT, GST_EVENT_SEEK_FORMAT (event), desired_offset);
res = FALSE;
}
break;
}
default:
res = FALSE;
- break;
+ break;
}
break;
default:
@@ -679,7 +644,7 @@ done:
*/
gboolean
-gst_avi_demux_stream_init (GstAviDemux *avi)
+gst_avi_demux_stream_init (GstAviDemux * avi)
{
GstRiffRead *riff = GST_RIFF_READ (avi);
guint32 doctype;
@@ -699,9 +664,8 @@ gst_avi_demux_stream_init (GstAviDemux *avi)
*/
gboolean
-gst_avi_demux_stream_avih (GstAviDemux *avi,
- guint32 *flags,
- guint32 *streams)
+gst_avi_demux_stream_avih (GstAviDemux * avi,
+ guint32 * flags, guint32 * streams)
{
GstRiffRead *riff = GST_RIFF_READ (avi);
guint32 tag;
@@ -718,43 +682,43 @@ gst_avi_demux_stream_avih (GstAviDemux *avi,
}
if (GST_BUFFER_SIZE (buf) < sizeof (gst_riff_avih)) {
g_warning ("Too small avih (%d available, %d needed)",
- GST_BUFFER_SIZE (buf), (int) sizeof (gst_riff_avih));
+ GST_BUFFER_SIZE (buf), (int) sizeof (gst_riff_avih));
gst_buffer_unref (buf);
return FALSE;
}
_avih = (gst_riff_avih *) GST_BUFFER_DATA (buf);
- avih.us_frame = GUINT32_FROM_LE (_avih->us_frame);
- avih.max_bps = GUINT32_FROM_LE (_avih->max_bps);
- avih.pad_gran = GUINT32_FROM_LE (_avih->pad_gran);
- avih.flags = GUINT32_FROM_LE (_avih->flags);
- avih.tot_frames = GUINT32_FROM_LE (_avih->tot_frames);
+ avih.us_frame = GUINT32_FROM_LE (_avih->us_frame);
+ avih.max_bps = GUINT32_FROM_LE (_avih->max_bps);
+ avih.pad_gran = GUINT32_FROM_LE (_avih->pad_gran);
+ avih.flags = GUINT32_FROM_LE (_avih->flags);
+ avih.tot_frames = GUINT32_FROM_LE (_avih->tot_frames);
avih.init_frames = GUINT32_FROM_LE (_avih->init_frames);
- avih.streams = GUINT32_FROM_LE (_avih->streams);
- avih.bufsize = GUINT32_FROM_LE (_avih->bufsize);
- avih.width = GUINT32_FROM_LE (_avih->width);
- avih.height = GUINT32_FROM_LE (_avih->height);
- avih.scale = GUINT32_FROM_LE (_avih->scale);
- avih.rate = GUINT32_FROM_LE (_avih->rate);
- avih.start = GUINT32_FROM_LE (_avih->start);
- avih.length = GUINT32_FROM_LE (_avih->length);
+ avih.streams = GUINT32_FROM_LE (_avih->streams);
+ avih.bufsize = GUINT32_FROM_LE (_avih->bufsize);
+ avih.width = GUINT32_FROM_LE (_avih->width);
+ avih.height = GUINT32_FROM_LE (_avih->height);
+ avih.scale = GUINT32_FROM_LE (_avih->scale);
+ avih.rate = GUINT32_FROM_LE (_avih->rate);
+ avih.start = GUINT32_FROM_LE (_avih->start);
+ avih.length = GUINT32_FROM_LE (_avih->length);
/* debug stuff */
GST_INFO ("avih tag found:");
- GST_INFO (" us_frame %u", avih.us_frame);
- GST_INFO (" max_bps %u", avih.max_bps);
- GST_INFO (" pad_gran %u", avih.pad_gran);
+ GST_INFO (" us_frame %u", avih.us_frame);
+ GST_INFO (" max_bps %u", avih.max_bps);
+ GST_INFO (" pad_gran %u", avih.pad_gran);
GST_INFO (" flags 0x%08x", avih.flags);
- GST_INFO (" tot_frames %u", avih.tot_frames);
- GST_INFO (" init_frames %u", avih.init_frames);
- GST_INFO (" streams %u", avih.streams);
- GST_INFO (" bufsize %u", avih.bufsize);
- GST_INFO (" width %u", avih.width);
- GST_INFO (" height %u", avih.height);
- GST_INFO (" scale %u", avih.scale);
- GST_INFO (" rate %u", avih.rate);
- GST_INFO (" start %u", avih.start);
- GST_INFO (" length %u", avih.length);
+ GST_INFO (" tot_frames %u", avih.tot_frames);
+ GST_INFO (" init_frames %u", avih.init_frames);
+ GST_INFO (" streams %u", avih.streams);
+ GST_INFO (" bufsize %u", avih.bufsize);
+ GST_INFO (" width %u", avih.width);
+ GST_INFO (" height %u", avih.height);
+ GST_INFO (" scale %u", avih.scale);
+ GST_INFO (" rate %u", avih.rate);
+ GST_INFO (" start %u", avih.start);
+ GST_INFO (" length %u", avih.length);
avi->num_frames = avih.tot_frames;
avi->us_per_frame = avih.us_frame;
@@ -771,7 +735,7 @@ gst_avi_demux_stream_avih (GstAviDemux *avi,
*/
static gboolean
-gst_avi_demux_add_stream (GstAviDemux *avi)
+gst_avi_demux_add_stream (GstAviDemux * avi)
{
GstElementClass *klass = GST_ELEMENT_GET_CLASS (avi);
GstRiffRead *riff = GST_RIFF_READ (avi);
@@ -782,7 +746,8 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
GstPadTemplate *templ = NULL;
GstPad *pad;
avi_stream_context *stream;
- union {
+ union
+ {
gst_riff_strf_vids *vids;
gst_riff_strf_auds *auds;
gst_riff_strf_iavs *iavs;
@@ -803,25 +768,25 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
return FALSE;
if (tag != GST_RIFF_TAG_strf) {
GST_ELEMENT_ERROR (avi, STREAM, DEMUX, (NULL),
- ("Invalid AVI header (no strf as second tag)"));
+ ("Invalid AVI header (no strf as second tag)"));
goto skip_stream;
}
switch (strh->type) {
case GST_RIFF_FCC_vids:
if (!gst_riff_read_strf_vids (riff, &strf.vids))
- return FALSE;
+ return FALSE;
break;
case GST_RIFF_FCC_auds:
if (!gst_riff_read_strf_auds (riff, &strf.auds))
- return FALSE;
+ return FALSE;
break;
case GST_RIFF_FCC_iavs:
if (!gst_riff_read_strf_iavs (riff, &strf.iavs))
- return FALSE;
+ return FALSE;
break;
default:
g_warning ("Unknown stream type " GST_FOURCC_FORMAT,
- GST_FOURCC_ARGS (strh->type));
+ GST_FOURCC_ARGS (strh->type));
goto skip_stream;
}
@@ -836,22 +801,22 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
switch (tag) {
case GST_RIFF_TAG_strn:
- if (name)
- g_free (name);
- if (!gst_riff_read_ascii (riff, &tag, &name))
- return FALSE;
- break;
+ if (name)
+ g_free (name);
+ if (!gst_riff_read_ascii (riff, &tag, &name))
+ return FALSE;
+ break;
default:
- GST_WARNING ("Unknown tag " GST_FOURCC_FORMAT " in AVI header",
- GST_FOURCC_ARGS (tag));
- /* fall-through */
+ GST_WARNING ("Unknown tag " GST_FOURCC_FORMAT " in AVI header",
+ GST_FOURCC_ARGS (tag));
+ /* fall-through */
- case GST_RIFF_TAG_strd: /* what is this? */
+ case GST_RIFF_TAG_strd: /* what is this? */
case GST_RIFF_TAG_JUNK:
- if (!gst_riff_read_skip (riff))
- return FALSE;
- break;
+ if (!gst_riff_read_skip (riff))
+ return FALSE;
+ break;
}
if (avi->level_up) {
@@ -866,15 +831,17 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
{
char *codec_name = NULL;
GstTagList *list = gst_tag_list_new ();
+
padname = g_strdup_printf ("video_%02d", avi->num_v_streams);
templ = gst_element_class_get_pad_template (klass, "video_%02d");
caps = gst_riff_create_video_caps (strf.vids->compression, strh,
- strf.vids, &codec_name);
+ strf.vids, &codec_name);
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
- codec_name, NULL);
+ codec_name, NULL);
gst_element_found_tags (GST_ELEMENT (avi), list);
gst_tag_list_free (list);
- if (codec_name) g_free (codec_name);
+ if (codec_name)
+ g_free (codec_name);
g_free (strf.vids);
avi->num_v_streams++;
break;
@@ -883,15 +850,17 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
{
char *codec_name = NULL;
GstTagList *list = gst_tag_list_new ();
+
padname = g_strdup_printf ("audio_%02d", avi->num_a_streams);
templ = gst_element_class_get_pad_template (klass, "audio_%02d");
caps = gst_riff_create_audio_caps (strf.auds->format, strh, strf.auds,
- &codec_name);
+ &codec_name);
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_AUDIO_CODEC,
- codec_name, NULL);
+ codec_name, NULL);
gst_element_found_tags (GST_ELEMENT (avi), list);
gst_tag_list_free (list);
- if (codec_name) g_free (codec_name);
+ if (codec_name)
+ g_free (codec_name);
g_free (strf.auds);
avi->num_a_streams++;
break;
@@ -900,15 +869,17 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
{
char *codec_name = NULL;
GstTagList *list = gst_tag_list_new ();
+
padname = g_strdup_printf ("video_%02d", avi->num_v_streams);
templ = gst_element_class_get_pad_template (klass, "video_%02d");
caps = gst_riff_create_iavs_caps (strh->fcc_handler, strh, strf.iavs,
- &codec_name);
+ &codec_name);
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
- codec_name, NULL);
+ codec_name, NULL);
gst_element_found_tags (GST_ELEMENT (avi), list);
gst_tag_list_free (list);
- if (codec_name) g_free (codec_name);
+ if (codec_name)
+ g_free (codec_name);
g_free (strf.iavs);
avi->num_v_streams++;
break;
@@ -918,7 +889,7 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
}
/* set proper settings and add it */
- pad = gst_pad_new_from_template (templ, padname);
+ pad = gst_pad_new_from_template (templ, padname);
g_free (padname);
gst_pad_set_formats_function (pad, gst_avi_demux_get_src_formats);
@@ -964,7 +935,7 @@ skip_stream:
/* add a "NULL" stream */
avi->num_streams++;
- return TRUE; /* recoverable */
+ return TRUE; /* recoverable */
}
/*
@@ -972,7 +943,7 @@ skip_stream:
*/
static gboolean
-gst_avi_demux_stream_odml (GstAviDemux *avi)
+gst_avi_demux_stream_odml (GstAviDemux * avi)
{
GstRiffRead *riff = GST_RIFF_READ (avi);
guint32 tag;
@@ -987,38 +958,38 @@ gst_avi_demux_stream_odml (GstAviDemux *avi)
}
switch (tag) {
- case GST_RIFF_TAG_dmlh: {
- gst_riff_dmlh dmlh, *_dmlh;
- GstBuffer *buf;
-
- if (!gst_riff_read_data (riff, &tag, &buf))
- return FALSE;
- if (GST_BUFFER_SIZE (buf) < sizeof (gst_riff_dmlh)) {
- g_warning ("DMLH entry is too small (%d bytes, %d needed)",
- GST_BUFFER_SIZE (buf), (int) sizeof (gst_riff_dmlh));
- gst_buffer_unref (buf);
- break;
- }
- _dmlh = (gst_riff_dmlh *) GST_BUFFER_DATA (buf);
- dmlh.totalframes = GUINT32_FROM_LE (_dmlh->totalframes);
-
- GST_INFO ("dmlh tag found:");
- GST_INFO (" totalframes: %u", dmlh.totalframes);
-
- avi->num_frames = dmlh.totalframes;
- gst_buffer_unref (buf);
- break;
+ case GST_RIFF_TAG_dmlh:{
+ gst_riff_dmlh dmlh, *_dmlh;
+ GstBuffer *buf;
+
+ if (!gst_riff_read_data (riff, &tag, &buf))
+ return FALSE;
+ if (GST_BUFFER_SIZE (buf) < sizeof (gst_riff_dmlh)) {
+ g_warning ("DMLH entry is too small (%d bytes, %d needed)",
+ GST_BUFFER_SIZE (buf), (int) sizeof (gst_riff_dmlh));
+ gst_buffer_unref (buf);
+ break;
+ }
+ _dmlh = (gst_riff_dmlh *) GST_BUFFER_DATA (buf);
+ dmlh.totalframes = GUINT32_FROM_LE (_dmlh->totalframes);
+
+ GST_INFO ("dmlh tag found:");
+ GST_INFO (" totalframes: %u", dmlh.totalframes);
+
+ avi->num_frames = dmlh.totalframes;
+ gst_buffer_unref (buf);
+ break;
}
default:
- GST_WARNING ("Unknown tag " GST_FOURCC_FORMAT " in AVI header",
- GST_FOURCC_ARGS (tag));
- /* fall-through */
+ GST_WARNING ("Unknown tag " GST_FOURCC_FORMAT " in AVI header",
+ GST_FOURCC_ARGS (tag));
+ /* fall-through */
case GST_RIFF_TAG_JUNK:
- if (!gst_riff_read_skip (riff))
- return FALSE;
- break;
+ if (!gst_riff_read_skip (riff))
+ return FALSE;
+ break;
}
if (avi->level_up) {
@@ -1035,7 +1006,7 @@ gst_avi_demux_stream_odml (GstAviDemux *avi)
*/
gboolean
-gst_avi_demux_stream_index (GstAviDemux *avi)
+gst_avi_demux_stream_index (GstAviDemux * avi)
{
GstBuffer *buf = NULL;
guint i;
@@ -1065,7 +1036,7 @@ gst_avi_demux_stream_index (GstAviDemux *avi)
return FALSE;
if (tag != GST_RIFF_TAG_idx1) {
g_warning ("No index after data, but " GST_FOURCC_FORMAT,
- GST_FOURCC_ARGS (tag));
+ GST_FOURCC_ARGS (tag));
goto end;
}
@@ -1075,7 +1046,8 @@ gst_avi_demux_stream_index (GstAviDemux *avi)
/* parse all entries */
avi->index_size = GST_BUFFER_SIZE (buf) / sizeof (gst_riff_index_entry);
- avi->index_entries = g_malloc (avi->index_size * sizeof (gst_avi_index_entry));
+ avi->index_entries =
+ g_malloc (avi->index_size * sizeof (gst_avi_index_entry));
GST_INFO ("%u index entries", avi->index_size);
for (i = 0; i < avi->index_size; i++) {
@@ -1086,16 +1058,15 @@ gst_avi_demux_stream_index (GstAviDemux *avi)
GstFormat format;
_entry = &((gst_riff_index_entry *) GST_BUFFER_DATA (buf))[i];
- entry.id = GUINT32_FROM_LE (_entry->id);
+ entry.id = GUINT32_FROM_LE (_entry->id);
entry.offset = GUINT32_FROM_LE (_entry->offset);
- entry.flags = GUINT32_FROM_LE (_entry->flags);
- entry.size = GUINT32_FROM_LE (_entry->size);
+ entry.flags = GUINT32_FROM_LE (_entry->flags);
+ entry.size = GUINT32_FROM_LE (_entry->size);
target = &avi->index_entries[i];
stream_nr = CHUNKID_TO_STREAMNR (entry.id);
if (stream_nr >= avi->num_streams || stream_nr < 0) {
- g_warning ("Index entry %d has invalid stream nr %d",
- i, stream_nr);
+ g_warning ("Index entry %d has invalid stream nr %d", i, stream_nr);
target->stream_nr = -1;
continue;
}
@@ -1103,9 +1074,9 @@ gst_avi_demux_stream_index (GstAviDemux *avi)
stream = &avi->stream[stream_nr];
target->index_nr = i;
- target->flags = entry.flags;
- target->size = entry.size;
- target->offset = entry.offset;
+ target->flags = entry.flags;
+ target->size = entry.size;
+ target->offset = entry.offset;
/* figure out if the index is 0 based or relative to the MOVI start */
if (i == 0) {
@@ -1123,15 +1094,15 @@ gst_avi_demux_stream_index (GstAviDemux *avi)
/* all audio frames are keyframes */
target->flags |= GST_RIFF_IF_KEYFRAME;
}
-
+
if (stream->strh->samplesize && stream->strh->type == GST_RIFF_FCC_auds) {
/* constant rate stream */
gst_pad_convert (stream->pad, GST_FORMAT_BYTES,
- stream->total_bytes, &format, &target->ts);
+ stream->total_bytes, &format, &target->ts);
} else {
/* VBR stream */
gst_pad_convert (stream->pad, GST_FORMAT_DEFAULT,
- stream->total_frames, &format, &target->ts);
+ stream->total_frames, &format, &target->ts);
}
stream->total_bytes += target->size;
@@ -1143,8 +1114,8 @@ gst_avi_demux_stream_index (GstAviDemux *avi)
avi_stream_context *stream;
stream = &avi->stream[i];
- GST_DEBUG ("stream %u: %u frames, %" G_GINT64_FORMAT " bytes",
- i, stream->total_frames, stream->total_bytes);
+ GST_DEBUG ("stream %u: %u frames, %" G_GINT64_FORMAT " bytes",
+ i, stream->total_frames, stream->total_bytes);
}
end:
@@ -1164,7 +1135,7 @@ end:
*/
gboolean
-gst_avi_demux_stream_scan (GstAviDemux *avi)
+gst_avi_demux_stream_scan (GstAviDemux * avi)
{
//GstRiffRead *riff = GST_RIFF_READ (avi);
@@ -1178,7 +1149,7 @@ gst_avi_demux_stream_scan (GstAviDemux *avi)
*/
gboolean
-gst_avi_demux_stream_header (GstAviDemux *avi)
+gst_avi_demux_stream_header (GstAviDemux * avi)
{
GstRiffRead *riff = GST_RIFF_READ (avi);
guint32 tag, flags, streams;
@@ -1188,16 +1159,16 @@ gst_avi_demux_stream_header (GstAviDemux *avi)
return FALSE;
if (tag != GST_RIFF_TAG_LIST) {
GST_ELEMENT_ERROR (avi, STREAM, DEMUX, (NULL),
- ("Invalid AVI header (no LIST at start): "
- GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag)));
+ ("Invalid AVI header (no LIST at start): "
+ GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag)));
return FALSE;
}
if (!gst_riff_read_list (riff, &tag))
return FALSE;
if (tag != GST_RIFF_LIST_hdrl) {
GST_ELEMENT_ERROR (avi, STREAM, DEMUX, (NULL),
- ("Invalid AVI header (no hdrl at start): "
- GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag)));
+ ("Invalid AVI header (no hdrl at start): "
+ GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag)));
return FALSE;
}
@@ -1206,8 +1177,8 @@ gst_avi_demux_stream_header (GstAviDemux *avi)
return FALSE;
if (tag != GST_RIFF_TAG_avih) {
GST_ELEMENT_ERROR (avi, STREAM, DEMUX, (NULL),
- ("Invalid AVI header (no avih at start): "
- GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag)));
+ ("Invalid AVI header (no avih at start): "
+ GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag)));
return FALSE;
}
if (!gst_avi_demux_stream_avih (avi, &flags, &streams))
@@ -1224,44 +1195,44 @@ gst_avi_demux_stream_header (GstAviDemux *avi)
switch (tag) {
case GST_RIFF_TAG_LIST:
- if (!(tag = gst_riff_peek_list (riff)))
- return FALSE;
-
- switch (tag) {
- case GST_RIFF_LIST_strl:
- if (!gst_riff_read_list (riff, &tag) ||
- !gst_avi_demux_add_stream (avi))
- return FALSE;
- break;
-
- case GST_RIFF_LIST_odml:
- if (!gst_riff_read_list (riff, &tag) ||
- !gst_avi_demux_stream_odml (avi))
- return FALSE;
- break;
-
- default:
- GST_WARNING ("Unknown list " GST_FOURCC_FORMAT " in AVI header",
- GST_FOURCC_ARGS (tag));
- /* fall-through */
-
- case GST_RIFF_TAG_JUNK:
- if (!gst_riff_read_skip (riff))
- return FALSE;
- break;
- }
-
- break;
+ if (!(tag = gst_riff_peek_list (riff)))
+ return FALSE;
+
+ switch (tag) {
+ case GST_RIFF_LIST_strl:
+ if (!gst_riff_read_list (riff, &tag) ||
+ !gst_avi_demux_add_stream (avi))
+ return FALSE;
+ break;
+
+ case GST_RIFF_LIST_odml:
+ if (!gst_riff_read_list (riff, &tag) ||
+ !gst_avi_demux_stream_odml (avi))
+ return FALSE;
+ break;
+
+ default:
+ GST_WARNING ("Unknown list " GST_FOURCC_FORMAT " in AVI header",
+ GST_FOURCC_ARGS (tag));
+ /* fall-through */
+
+ case GST_RIFF_TAG_JUNK:
+ if (!gst_riff_read_skip (riff))
+ return FALSE;
+ break;
+ }
+
+ break;
default:
- GST_WARNING ("Unknown tag " GST_FOURCC_FORMAT " in AVI header",
- GST_FOURCC_ARGS (tag));
- /* fall-through */
+ GST_WARNING ("Unknown tag " GST_FOURCC_FORMAT " in AVI header",
+ GST_FOURCC_ARGS (tag));
+ /* fall-through */
case GST_RIFF_TAG_JUNK:
- if (!gst_riff_read_skip (riff))
- return FALSE;
- break;
+ if (!gst_riff_read_skip (riff))
+ return FALSE;
+ break;
}
if (avi->level_up) {
@@ -1272,11 +1243,11 @@ gst_avi_demux_stream_header (GstAviDemux *avi)
if (avi->num_streams != streams) {
g_warning ("Stream header mentioned %d streams, but %d available",
- streams, avi->num_streams);
+ streams, avi->num_streams);
}
/* we've got streaminfo now */
- g_object_notify (G_OBJECT(avi), "streaminfo");
+ g_object_notify (G_OBJECT (avi), "streaminfo");
/* Now, find the data (i.e. skip all junk between header and data) */
while (1) {
@@ -1284,18 +1255,17 @@ gst_avi_demux_stream_header (GstAviDemux *avi)
return FALSE;
if (tag != GST_RIFF_TAG_LIST) {
if (!gst_riff_read_skip (riff))
- return FALSE;
+ return FALSE;
continue;
}
if (!(tag = gst_riff_peek_list (riff)))
return FALSE;
if (tag != GST_RIFF_LIST_movi) {
if (tag == GST_RIFF_LIST_INFO) {
- if (!gst_riff_read_list (riff, &tag) ||
- !gst_riff_read_info (riff))
- return FALSE;
- } else if (!gst_riff_read_skip (riff)) {
- return FALSE;
+ if (!gst_riff_read_list (riff, &tag) || !gst_riff_read_info (riff))
+ return FALSE;
+ } else if (!gst_riff_read_skip (riff)) {
+ return FALSE;
}
continue;
}
@@ -1319,7 +1289,7 @@ gst_avi_demux_stream_header (GstAviDemux *avi)
*/
static gboolean
-gst_avi_demux_handle_seek (GstAviDemux *avi)
+gst_avi_demux_handle_seek (GstAviDemux * avi)
{
GstRiffRead *riff = GST_RIFF_READ (avi);
guint i;
@@ -1336,8 +1306,8 @@ gst_avi_demux_handle_seek (GstAviDemux *avi)
avi_stream_context *stream = &avi->stream[i];
if (GST_PAD_IS_USABLE (stream->pad)) {
- event = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME,
- avi->last_seek + stream->delay , NULL);
+ event = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME,
+ avi->last_seek + stream->delay, NULL);
gst_pad_push (stream->pad, GST_DATA (event));
}
}
@@ -1350,17 +1320,17 @@ gst_avi_demux_handle_seek (GstAviDemux *avi)
*/
gboolean
-gst_avi_demux_stream_data (GstAviDemux *avi)
+gst_avi_demux_stream_data (GstAviDemux * avi)
{
GstRiffRead *riff = GST_RIFF_READ (avi);
guint32 tag;
guint stream_nr;
gst_avi_index_entry *entry;
- if (avi->seek_offset != (guint64) -1) {
+ if (avi->seek_offset != (guint64) - 1) {
if (!gst_avi_demux_handle_seek (avi))
return FALSE;
- avi->seek_offset = (guint64) -1;
+ avi->seek_offset = (guint64) - 1;
}
/* peek first (for the end of this 'list/movi' section) */
@@ -1377,40 +1347,40 @@ gst_avi_demux_stream_data (GstAviDemux *avi)
switch (tag) {
case GST_RIFF_TAG_LIST:
- if (!(tag = gst_riff_peek_list (riff)))
- return FALSE;
-
- switch (tag) {
- case GST_RIFF_LIST_AVIX:
- case GST_RIFF_LIST_movi:
- if (!gst_riff_read_list (riff, &tag))
- return FALSE;
- /* we're now going to read buffers! */
- break;
-
- default:
- GST_WARNING ("Unknown list " GST_FOURCC_FORMAT " before AVI data",
- GST_FOURCC_ARGS (tag));
- /* fall-through */
-
- case GST_RIFF_TAG_JUNK:
- if (!gst_riff_read_skip (riff))
- return FALSE;
- break;
- }
-
- break;
+ if (!(tag = gst_riff_peek_list (riff)))
+ return FALSE;
+
+ switch (tag) {
+ case GST_RIFF_LIST_AVIX:
+ case GST_RIFF_LIST_movi:
+ if (!gst_riff_read_list (riff, &tag))
+ return FALSE;
+ /* we're now going to read buffers! */
+ break;
+
+ default:
+ GST_WARNING ("Unknown list " GST_FOURCC_FORMAT " before AVI data",
+ GST_FOURCC_ARGS (tag));
+ /* fall-through */
+
+ case GST_RIFF_TAG_JUNK:
+ if (!gst_riff_read_skip (riff))
+ return FALSE;
+ break;
+ }
+
+ break;
default:
- GST_WARNING ("Unknown tag " GST_FOURCC_FORMAT " before AVI data",
- GST_FOURCC_ARGS (tag));
- /* fall-through */
+ GST_WARNING ("Unknown tag " GST_FOURCC_FORMAT " before AVI data",
+ GST_FOURCC_ARGS (tag));
+ /* fall-through */
case GST_RIFF_TAG_idx1:
case GST_RIFF_TAG_JUNK:
- if (!gst_riff_read_skip (riff))
- return FALSE;
- break;
+ if (!gst_riff_read_skip (riff))
+ return FALSE;
+ break;
}
}
@@ -1421,7 +1391,7 @@ gst_avi_demux_stream_data (GstAviDemux *avi)
if (stream_nr < 0 || stream_nr >= avi->num_streams) {
/* recoverable */
g_warning ("Invalid stream ID %d (" GST_FOURCC_FORMAT ")",
- stream_nr, GST_FOURCC_ARGS (tag));
+ stream_nr, GST_FOURCC_ARGS (tag));
if (!gst_riff_read_skip (riff))
return FALSE;
} else {
@@ -1437,20 +1407,19 @@ gst_avi_demux_stream_data (GstAviDemux *avi)
/* get time of this buffer */
stream = &avi->stream[stream_nr];
entry = gst_avi_demux_index_next (avi, stream_nr,
- stream->current_entry + 1, 0);
+ stream->current_entry + 1, 0);
if (entry) {
stream->current_entry = entry->index_nr;
if (entry->flags & GST_RIFF_IF_KEYFRAME) {
- GST_BUFFER_FLAG_SET (buf, GST_BUFFER_KEY_UNIT);
+ GST_BUFFER_FLAG_SET (buf, GST_BUFFER_KEY_UNIT);
}
}
format = GST_FORMAT_TIME;
- gst_pad_query (stream->pad, GST_QUERY_POSITION,
- &format, &next_ts);
+ gst_pad_query (stream->pad, GST_QUERY_POSITION, &format, &next_ts);
/* set delay (if any) */
if (stream->strh->init_frames == stream->current_frame &&
- stream->delay == 0)
+ stream->delay == 0)
stream->delay = next_ts;
stream->current_frame++;
@@ -1462,16 +1431,15 @@ gst_avi_demux_stream_data (GstAviDemux *avi)
gst_buffer_unref (buf);
} else {
if (!stream->pad || !GST_PAD_IS_USABLE (stream->pad)) {
- gst_buffer_unref (buf);
+ gst_buffer_unref (buf);
} else {
- GstClockTime dur_ts;
+ GstClockTime dur_ts;
- GST_BUFFER_TIMESTAMP (buf) = next_ts;
- gst_pad_query (stream->pad, GST_QUERY_POSITION,
- &format, &dur_ts);
- GST_BUFFER_DURATION (buf) = dur_ts - next_ts;
+ GST_BUFFER_TIMESTAMP (buf) = next_ts;
+ gst_pad_query (stream->pad, GST_QUERY_POSITION, &format, &dur_ts);
+ GST_BUFFER_DURATION (buf) = dur_ts - next_ts;
- gst_pad_push (stream->pad, GST_DATA (buf));
+ gst_pad_push (stream->pad, GST_DATA (buf));
}
}
}
@@ -1480,26 +1448,26 @@ gst_avi_demux_stream_data (GstAviDemux *avi)
}
static void
-gst_avi_demux_loop (GstElement *element)
+gst_avi_demux_loop (GstElement * element)
{
GstAviDemux *avi = GST_AVI_DEMUX (element);
switch (avi->state) {
case GST_AVI_DEMUX_START:
if (!gst_avi_demux_stream_init (avi))
- return;
+ return;
avi->state = GST_AVI_DEMUX_HEADER;
/* fall-through */
case GST_AVI_DEMUX_HEADER:
if (!gst_avi_demux_stream_header (avi))
- return;
+ return;
avi->state = GST_AVI_DEMUX_MOVI;
/* fall-through */
case GST_AVI_DEMUX_MOVI:
if (!gst_avi_demux_stream_data (avi))
- return;
+ return;
break;
default:
@@ -1508,7 +1476,7 @@ gst_avi_demux_loop (GstElement *element)
}
static GstElementStateReturn
-gst_avi_demux_change_state (GstElement *element)
+gst_avi_demux_change_state (GstElement * element)
{
GstAviDemux *avi = GST_AVI_DEMUX (element);
@@ -1530,10 +1498,8 @@ gst_avi_demux_change_state (GstElement *element)
}
static void
-gst_avi_demux_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+gst_avi_demux_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
{
GstAviDemux *avi = GST_AVI_DEMUX (object);
diff --git a/gst/avi/gstavidemux.h b/gst/avi/gstavidemux.h
index d94433ae..9849bdaf 100644
--- a/gst/avi/gstavidemux.h
+++ b/gst/avi/gstavidemux.h
@@ -26,7 +26,6 @@
#include "gst/riff/riff-read.h"
G_BEGIN_DECLS
-
#define GST_TYPE_AVI_DEMUX \
(gst_avi_demux_get_type ())
#define GST_AVI_DEMUX(obj) \
@@ -37,93 +36,94 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_AVI_DEMUX))
#define GST_IS_AVI_DEMUX_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_AVI_DEMUX))
-
-#define GST_AVI_DEMUX_MAX_STREAMS 16
-
+#define GST_AVI_DEMUX_MAX_STREAMS 16
#define CHUNKID_TO_STREAMNR(chunkid) \
((((chunkid) & 0xff) - '0') * 10 + \
(((chunkid) >> 8) & 0xff) - '0')
-
-typedef struct {
- gint index_nr;
- gint stream_nr;
- guint64 ts;
- guint32 flags;
- guint32 offset;
- gint size;
- guint64 bytes_before;
- guint32 frames_before;
+ typedef struct
+{
+ gint index_nr;
+ gint stream_nr;
+ guint64 ts;
+ guint32 flags;
+ guint32 offset;
+ gint size;
+ guint64 bytes_before;
+ guint32 frames_before;
} gst_avi_index_entry;
-typedef struct {
+typedef struct
+{
/* index of this streamcontext */
- guint num;
+ guint num;
/* pad, strh */
- GstPad *pad;
- GstCaps *caps;
- gst_riff_strh *strh;
+ GstPad *pad;
+ GstCaps *caps;
+ gst_riff_strh *strh;
/* current position (byte, frame, time) */
- guint current_frame;
- guint64 current_byte;
- gint current_entry;
+ guint current_frame;
+ guint64 current_byte;
+ gint current_entry;
/* delay in time (init_frames) */
- guint64 delay;
+ guint64 delay;
/* stream length */
- guint64 total_bytes;
- guint32 total_frames;
+ guint64 total_bytes;
+ guint32 total_frames;
- guint32 skip;
+ guint32 skip;
} avi_stream_context;
-typedef enum {
+typedef enum
+{
GST_AVI_DEMUX_START,
GST_AVI_DEMUX_HEADER,
GST_AVI_DEMUX_MOVI,
} GstAviDemuxState;
-typedef struct _GstAviDemux {
- GstRiffRead parent;
+typedef struct _GstAviDemux
+{
+ GstRiffRead parent;
/* pads */
- GstPad *sinkpad;
+ GstPad *sinkpad;
/* AVI decoding state */
GstAviDemuxState state;
- guint level_up;
+ guint level_up;
/* index */
gst_avi_index_entry *index_entries;
- guint index_size;
- guint64 index_offset;
+ guint index_size;
+ guint64 index_offset;
/* streams */
- guint num_streams;
- guint num_v_streams;
- guint num_a_streams;
+ guint num_streams;
+ guint num_v_streams;
+ guint num_a_streams;
avi_stream_context stream[GST_AVI_DEMUX_MAX_STREAMS];
/* some stream info for length */
- guint32 us_per_frame;
- guint32 num_frames;
+ guint32 us_per_frame;
+ guint32 num_frames;
/* seeking */
- guint64 seek_offset;
- guint64 last_seek;
+ guint64 seek_offset;
+ guint64 last_seek;
/* info */
- GstCaps *streaminfo;
+ GstCaps *streaminfo;
} GstAviDemux;
-typedef struct _GstAviDemuxClass {
+typedef struct _GstAviDemuxClass
+{
GstRiffReadClass parent_class;
} GstAviDemuxClass;
-GType gst_avi_demux_get_type (void);
+GType gst_avi_demux_get_type (void);
G_END_DECLS
-
#endif /* __GST_AVI_DEMUX_H__ */
diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c
index a064378f..f5287db0 100644
--- a/gst/avi/gstavimux.c
+++ b/gst/avi/gstavimux.c
@@ -45,138 +45,126 @@
#endif
/* AviMux signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_BIGFILE,
};
-static GstStaticPadTemplate src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("video/x-msvideo")
-);
-
+static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("video/x-msvideo")
+ );
+
static GstStaticPadTemplate video_sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "video_%d",
- GST_PAD_SINK,
- GST_PAD_REQUEST,
- GST_STATIC_CAPS (
- "video/x-raw-yuv, "
- "format = (fourcc) { YUY2, I420 }, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ]; "
- "video/x-jpeg, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ]; "
- "video/x-divx, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ], "
- "divxversion = (int) [ 3, 5 ]; "
- "video/x-xvid, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ]; "
- "video/x-3ivx, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ]; "
- "video/x-msmpeg, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ], "
- "msmpegversion = (int) [ 41, 43 ]; "
- "video/mpeg, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ], "
- "mpegversion = (int) 1, "
- "systemstream = (boolean) FALSE; "
- "video/x-h263, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ]; "
- "video/x-dv, "
- "width = (int) 720, "
- "height = (int) { 576, 480 }, "
- "systemstream = (boolean) FALSE; "
- "video/x-huffyuv, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ]"
- )
-);
-
+ GST_STATIC_PAD_TEMPLATE ("video_%d",
+ GST_PAD_SINK,
+ GST_PAD_REQUEST,
+ GST_STATIC_CAPS ("video/x-raw-yuv, "
+ "format = (fourcc) { YUY2, I420 }, "
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ]; "
+ "video/x-jpeg, "
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ]; "
+ "video/x-divx, "
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ], "
+ "divxversion = (int) [ 3, 5 ]; "
+ "video/x-xvid, "
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ]; "
+ "video/x-3ivx, "
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ]; "
+ "video/x-msmpeg, "
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ], "
+ "msmpegversion = (int) [ 41, 43 ]; "
+ "video/mpeg, "
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ], "
+ "mpegversion = (int) 1, "
+ "systemstream = (boolean) FALSE; "
+ "video/x-h263, "
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ]; "
+ "video/x-dv, "
+ "width = (int) 720, "
+ "height = (int) { 576, 480 }, "
+ "systemstream = (boolean) FALSE; "
+ "video/x-huffyuv, "
+ "width = (int) [ 16, 4096 ], " "height = (int) [ 16, 4096 ]")
+ );
+
static GstStaticPadTemplate audio_sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "audio_%d",
- GST_PAD_SINK,
- GST_PAD_REQUEST,
- GST_STATIC_CAPS (
- "audio/x-raw-int, "
- "endianness = (int) LITTLE_ENDIAN, "
- "signed = (boolean) { TRUE, FALSE }, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "rate = (int) [ 1000, 96000 ], "
- "channels = (int) [ 1, 2 ]; "
- "audio/mpeg, "
- "mpegversion = (int) 1, "
- "layer = (int) [ 1, 3 ], "
- "rate = (int) [ 1000, 96000 ], "
- "channels = (int) [ 1, 2 ]; "
- "audio/x-vorbis, "
- "rate = (int) [ 1000, 96000 ], "
- "channels = (int) [ 1, 2 ]; "
- "audio/x-ac3, "
- "rate = (int) [ 1000, 96000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
-
-
-static void gst_avimux_base_init (gpointer g_class);
-static void gst_avimux_class_init (GstAviMuxClass *klass);
-static void gst_avimux_init (GstAviMux *avimux);
-
-static void gst_avimux_loop (GstElement *element);
-static gboolean gst_avimux_handle_event (GstPad *pad,
- GstEvent *event);
-static GstPad* gst_avimux_request_new_pad (GstElement *element,
- GstPadTemplate *templ,
- const gchar *name);
-static void gst_avimux_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_avimux_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static GstElementStateReturn gst_avimux_change_state (GstElement *element);
+ GST_STATIC_PAD_TEMPLATE ("audio_%d",
+ GST_PAD_SINK,
+ GST_PAD_REQUEST,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) LITTLE_ENDIAN, "
+ "signed = (boolean) { TRUE, FALSE }, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, "
+ "rate = (int) [ 1000, 96000 ], "
+ "channels = (int) [ 1, 2 ]; "
+ "audio/mpeg, "
+ "mpegversion = (int) 1, "
+ "layer = (int) [ 1, 3 ], "
+ "rate = (int) [ 1000, 96000 ], "
+ "channels = (int) [ 1, 2 ]; "
+ "audio/x-vorbis, "
+ "rate = (int) [ 1000, 96000 ], "
+ "channels = (int) [ 1, 2 ]; "
+ "audio/x-ac3, "
+ "rate = (int) [ 1000, 96000 ], " "channels = (int) [ 1, 2 ]")
+ );
+
+
+static void gst_avimux_base_init (gpointer g_class);
+static void gst_avimux_class_init (GstAviMuxClass * klass);
+static void gst_avimux_init (GstAviMux * avimux);
+
+static void gst_avimux_loop (GstElement * element);
+static gboolean gst_avimux_handle_event (GstPad * pad, GstEvent * event);
+static GstPad *gst_avimux_request_new_pad (GstElement * element,
+ GstPadTemplate * templ, const gchar * name);
+static void gst_avimux_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_avimux_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_avimux_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_avimux_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_avimux_get_type (void)
+gst_avimux_get_type (void)
{
static GType avimux_type = 0;
if (!avimux_type) {
static const GTypeInfo avimux_info = {
- sizeof(GstAviMuxClass),
+ sizeof (GstAviMuxClass),
gst_avimux_base_init,
NULL,
- (GClassInitFunc)gst_avimux_class_init,
+ (GClassInitFunc) gst_avimux_class_init,
NULL,
NULL,
- sizeof(GstAviMux),
+ sizeof (GstAviMux),
0,
- (GInstanceInitFunc)gst_avimux_init,
+ (GInstanceInitFunc) gst_avimux_init,
};
- avimux_type = g_type_register_static(GST_TYPE_ELEMENT, "GstAviMux", &avimux_info, 0);
+ avimux_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstAviMux", &avimux_info, 0);
}
return avimux_type;
}
@@ -185,12 +173,11 @@ static void
gst_avimux_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- static GstElementDetails gst_avimux_details = GST_ELEMENT_DETAILS (
- "Avi multiplexer",
- "Codec/Muxer",
- "Muxes audio and video into an avi stream",
- "Ronald Bultje <rbultje@ronald.bitfreak.net>"
- );
+ static GstElementDetails gst_avimux_details =
+ GST_ELEMENT_DETAILS ("Avi multiplexer",
+ "Codec/Muxer",
+ "Muxes audio and video into an avi stream",
+ "Ronald Bultje <rbultje@ronald.bitfreak.net>");
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_factory));
@@ -203,20 +190,19 @@ gst_avimux_base_init (gpointer g_class)
}
static void
-gst_avimux_class_init (GstAviMuxClass *klass)
+gst_avimux_class_init (GstAviMuxClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BIGFILE,
- g_param_spec_boolean("bigfile","Bigfile Support",
- "Support for openDML-2.0 (big) AVI files",
- 0,G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BIGFILE,
+ g_param_spec_boolean ("bigfile", "Bigfile Support",
+ "Support for openDML-2.0 (big) AVI files", 0, G_PARAM_READWRITE));
gstelement_class->request_new_pad = gst_avimux_request_new_pad;
@@ -227,26 +213,27 @@ gst_avimux_class_init (GstAviMuxClass *klass)
}
static const GstEventMask *
-gst_avimux_get_event_masks (GstPad *pad)
+gst_avimux_get_event_masks (GstPad * pad)
{
static const GstEventMask gst_avimux_sink_event_masks[] = {
- { GST_EVENT_EOS, 0 },
- { 0, }
+ {GST_EVENT_EOS, 0},
+ {0,}
};
return gst_avimux_sink_event_masks;
}
-static void
-gst_avimux_init (GstAviMux *avimux)
+static void
+gst_avimux_init (GstAviMux * avimux)
{
GstElementClass *klass = GST_ELEMENT_GET_CLASS (avimux);
- avimux->srcpad = gst_pad_new_from_template (
- gst_element_class_get_pad_template (klass, "src"), "src");
+ avimux->srcpad =
+ gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
+ "src"), "src");
gst_element_add_pad (GST_ELEMENT (avimux), avimux->srcpad);
- GST_FLAG_SET (GST_ELEMENT(avimux), GST_ELEMENT_EVENT_AWARE);
+ GST_FLAG_SET (GST_ELEMENT (avimux), GST_ELEMENT_EVENT_AWARE);
avimux->audiosinkpad = NULL;
avimux->audio_pad_connected = FALSE;
@@ -259,15 +246,15 @@ gst_avimux_init (GstAviMux *avimux)
avimux->num_frames = 0;
/* audio/video/AVI header initialisation */
- memset(&(avimux->avi_hdr),0,sizeof(gst_riff_avih));
- memset(&(avimux->vids_hdr),0,sizeof(gst_riff_strh));
- memset(&(avimux->vids),0,sizeof(gst_riff_strf_vids));
- memset(&(avimux->auds_hdr),0,sizeof(gst_riff_strh));
- memset(&(avimux->auds),0,sizeof(gst_riff_strf_auds));
- avimux->vids_hdr.type = GST_MAKE_FOURCC('v','i','d','s');
+ memset (&(avimux->avi_hdr), 0, sizeof (gst_riff_avih));
+ memset (&(avimux->vids_hdr), 0, sizeof (gst_riff_strh));
+ memset (&(avimux->vids), 0, sizeof (gst_riff_strf_vids));
+ memset (&(avimux->auds_hdr), 0, sizeof (gst_riff_strh));
+ memset (&(avimux->auds), 0, sizeof (gst_riff_strf_auds));
+ avimux->vids_hdr.type = GST_MAKE_FOURCC ('v', 'i', 'd', 's');
avimux->vids_hdr.rate = 1000000;
avimux->avi_hdr.max_bps = 10000000;
- avimux->auds_hdr.type = GST_MAKE_FOURCC('a','u','d','s');
+ avimux->auds_hdr.type = GST_MAKE_FOURCC ('a', 'u', 'd', 's');
avimux->vids_hdr.quality = 0xFFFFFFFF;
avimux->auds_hdr.quality = 0xFFFFFFFF;
@@ -277,33 +264,34 @@ gst_avimux_init (GstAviMux *avimux)
avimux->enable_large_avi = TRUE;
- gst_element_set_loop_function(GST_ELEMENT(avimux), gst_avimux_loop);
+ gst_element_set_loop_function (GST_ELEMENT (avimux), gst_avimux_loop);
}
static GstPadLinkReturn
-gst_avimux_vidsinkconnect (GstPad *pad, const GstCaps *vscaps)
+gst_avimux_vidsinkconnect (GstPad * pad, const GstCaps * vscaps)
{
GstAviMux *avimux;
GstStructure *structure;
- const gchar* mimetype;
+ const gchar *mimetype;
gdouble fps = 0.;
gboolean ret;
avimux = GST_AVIMUX (gst_pad_get_parent (pad));
GST_DEBUG ("avimux: video sinkconnect triggered on %s",
- gst_pad_get_name (pad));
+ gst_pad_get_name (pad));
structure = gst_caps_get_structure (vscaps, 0);
mimetype = gst_structure_get_name (structure);
/* global */
- avimux->vids.size = sizeof(gst_riff_strf_vids);
- avimux->vids.planes = 1;
+ avimux->vids.size = sizeof (gst_riff_strf_vids);
+ avimux->vids.planes = 1;
ret = gst_structure_get_int (structure, "width", &avimux->vids.width);
ret &= gst_structure_get_int (structure, "height", &avimux->vids.height);
ret &= gst_structure_get_double (structure, "framerate", &fps);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
if (fps != 0.)
avimux->vids_hdr.scale = avimux->vids_hdr.rate / fps;
@@ -313,13 +301,12 @@ gst_avimux_vidsinkconnect (GstPad *pad, const GstCaps *vscaps)
gst_structure_get_fourcc (structure, "format", &format);
avimux->vids.compression = format;
- switch (format)
- {
- case GST_MAKE_FOURCC('Y','U','Y','2'):
- avimux->vids.bit_cnt = 16;
+ switch (format) {
+ case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
+ avimux->vids.bit_cnt = 16;
break;
- case GST_MAKE_FOURCC('I','4','2','0'):
- avimux->vids.bit_cnt = 12;
+ case GST_MAKE_FOURCC ('I', '4', '2', '0'):
+ avimux->vids.bit_cnt = 12;
break;
}
} else {
@@ -328,47 +315,49 @@ gst_avimux_vidsinkconnect (GstPad *pad, const GstCaps *vscaps)
/* find format */
if (!strcmp (mimetype, "video/x-huffyuv")) {
- avimux->vids.compression = GST_MAKE_FOURCC('H','F','Y','U');
+ avimux->vids.compression = GST_MAKE_FOURCC ('H', 'F', 'Y', 'U');
} else if (!strcmp (mimetype, "video/x-jpeg")) {
- avimux->vids.compression = GST_MAKE_FOURCC('M','J','P','G');
+ avimux->vids.compression = GST_MAKE_FOURCC ('M', 'J', 'P', 'G');
} else if (!strcmp (mimetype, "video/x-divx")) {
gint divxversion;
+
gst_structure_get_int (structure, "divxversion", &divxversion);
switch (divxversion) {
case 3:
- avimux->vids.compression = GST_MAKE_FOURCC('D','I','V','3');
+ avimux->vids.compression = GST_MAKE_FOURCC ('D', 'I', 'V', '3');
break;
case 4:
- avimux->vids.compression = GST_MAKE_FOURCC('D','I','V','X');
+ avimux->vids.compression = GST_MAKE_FOURCC ('D', 'I', 'V', 'X');
break;
case 5:
- avimux->vids.compression = GST_MAKE_FOURCC('D','X','5','0');
- break;
+ avimux->vids.compression = GST_MAKE_FOURCC ('D', 'X', '5', '0');
+ break;
}
} else if (!strcmp (mimetype, "video/x-xvid")) {
- avimux->vids.compression = GST_MAKE_FOURCC('X','V','I','D');
+ avimux->vids.compression = GST_MAKE_FOURCC ('X', 'V', 'I', 'D');
} else if (!strcmp (mimetype, "video/x-3ivx")) {
- avimux->vids.compression = GST_MAKE_FOURCC('3','I','V','2');
+ avimux->vids.compression = GST_MAKE_FOURCC ('3', 'I', 'V', '2');
} else if (!strcmp (mimetype, "video/x-msmpeg")) {
gint msmpegversion;
+
gst_structure_get_int (structure, "msmpegversion", &msmpegversion);
switch (msmpegversion) {
case 41:
- avimux->vids.compression = GST_MAKE_FOURCC('M','P','G','4');
+ avimux->vids.compression = GST_MAKE_FOURCC ('M', 'P', 'G', '4');
break;
case 42:
- avimux->vids.compression = GST_MAKE_FOURCC('M','P','4','2');
+ avimux->vids.compression = GST_MAKE_FOURCC ('M', 'P', '4', '2');
break;
case 43:
- avimux->vids.compression = GST_MAKE_FOURCC('M','P','4','3');
+ avimux->vids.compression = GST_MAKE_FOURCC ('M', 'P', '4', '3');
break;
}
} else if (!strcmp (mimetype, "video/x-dv")) {
- avimux->vids.compression = GST_MAKE_FOURCC('D','V','S','D');
+ avimux->vids.compression = GST_MAKE_FOURCC ('D', 'V', 'S', 'D');
} else if (!strcmp (mimetype, "video/x-h263")) {
- avimux->vids.compression = GST_MAKE_FOURCC('H','2','6','3');
+ avimux->vids.compression = GST_MAKE_FOURCC ('H', '2', '6', '3');
} else if (!strcmp (mimetype, "video/mpeg")) {
- avimux->vids.compression = GST_MAKE_FOURCC('M','P','E','G');
+ avimux->vids.compression = GST_MAKE_FOURCC ('M', 'P', 'E', 'G');
}
if (!avimux->vids.compression) {
@@ -385,17 +374,17 @@ gst_avimux_vidsinkconnect (GstPad *pad, const GstCaps *vscaps)
}
static GstPadLinkReturn
-gst_avimux_audsinkconnect (GstPad *pad, const GstCaps *vscaps)
+gst_avimux_audsinkconnect (GstPad * pad, const GstCaps * vscaps)
{
GstAviMux *avimux;
GstStructure *structure;
- const gchar* mimetype;
+ const gchar *mimetype;
int i;
avimux = GST_AVIMUX (gst_pad_get_parent (pad));
GST_DEBUG ("avimux: audio sinkconnect triggered on %s",
- gst_pad_get_name (pad));
+ gst_pad_get_name (pad));
structure = gst_caps_get_structure (vscaps, 0);
mimetype = gst_structure_get_name (structure);
@@ -407,7 +396,7 @@ gst_avimux_audsinkconnect (GstPad *pad, const GstCaps *vscaps)
avimux->auds.rate = i;
if (!strcmp (mimetype, "audio/x-raw-int")) {
- avimux->auds.format = GST_RIFF_WAVE_FORMAT_PCM;
+ avimux->auds.format = GST_RIFF_WAVE_FORMAT_PCM;
gst_structure_get_int (structure, "width", &i);
avimux->auds.blockalign = i;
@@ -419,18 +408,20 @@ gst_avimux_audsinkconnect (GstPad *pad, const GstCaps *vscaps)
avimux->auds.blockalign *= avimux->auds.channels;
avimux->auds.av_bps = avimux->auds.blockalign * avimux->auds.rate;
} else if (!strcmp (mimetype, "audio/mpeg") ||
- !strcmp (mimetype, "audio/x-vorbis") ||
- !strcmp (mimetype, "audio/x-ac3")) {
+ !strcmp (mimetype, "audio/x-vorbis") ||
+ !strcmp (mimetype, "audio/x-ac3")) {
avimux->auds.format = 0;
if (!strcmp (mimetype, "audio/mpeg")) {
gint layer = 3;
+
gst_structure_get_int (structure, "layer", &layer);
switch (layer) {
case 3:
avimux->auds.format = GST_RIFF_WAVE_FORMAT_MPEGL3;
break;
- case 1: case 2:
+ case 1:
+ case 2:
avimux->auds.format = GST_RIFF_WAVE_FORMAT_MPEGL12;
break;
}
@@ -449,31 +440,24 @@ gst_avimux_audsinkconnect (GstPad *pad, const GstCaps *vscaps)
}
}
- avimux->auds_hdr.rate = avimux->auds.blockalign * avimux->auds.rate;
+ avimux->auds_hdr.rate = avimux->auds.blockalign * avimux->auds.rate;
avimux->auds_hdr.samplesize = avimux->auds.blockalign;
avimux->auds_hdr.scale = avimux->auds.blockalign;
return GST_PAD_LINK_OK;
}
static void
-gst_avimux_pad_link (GstPad *pad,
- GstPad *peer,
- gpointer data)
+gst_avimux_pad_link (GstPad * pad, GstPad * peer, gpointer data)
{
- GstAviMux *avimux = GST_AVIMUX(data);
+ GstAviMux *avimux = GST_AVIMUX (data);
const gchar *padname = gst_pad_get_name (pad);
- if (pad == avimux->audiosinkpad)
- {
+ if (pad == avimux->audiosinkpad) {
avimux->audio_pad_connected = TRUE;
- }
- else if (pad == avimux->videosinkpad)
- {
+ } else if (pad == avimux->videosinkpad) {
avimux->video_pad_connected = TRUE;
- }
- else
- {
- g_warning("Unknown padname '%s'", padname);
+ } else {
+ g_warning ("Unknown padname '%s'", padname);
return;
}
@@ -481,36 +465,28 @@ gst_avimux_pad_link (GstPad *pad,
}
static void
-gst_avimux_pad_unlink (GstPad *pad,
- GstPad *peer,
- gpointer data)
+gst_avimux_pad_unlink (GstPad * pad, GstPad * peer, gpointer data)
{
- GstAviMux *avimux = GST_AVIMUX(data);
+ GstAviMux *avimux = GST_AVIMUX (data);
const gchar *padname = gst_pad_get_name (pad);
- if (pad == avimux->audiosinkpad)
- {
+ if (pad == avimux->audiosinkpad) {
avimux->audio_pad_connected = FALSE;
avimux->audiosinkpad = NULL;
- }
- else if (pad == avimux->videosinkpad)
- {
+ } else if (pad == avimux->videosinkpad) {
avimux->video_pad_connected = FALSE;
avimux->videosinkpad = NULL;
- }
- else
- {
- g_warning("Unknown padname '%s'", padname);
+ } else {
+ g_warning ("Unknown padname '%s'", padname);
return;
}
GST_DEBUG ("pad '%s' unlinked", padname);
}
-static GstPad*
-gst_avimux_request_new_pad (GstElement *element,
- GstPadTemplate *templ,
- const gchar *req_name)
+static GstPad *
+gst_avimux_request_new_pad (GstElement * element,
+ GstPadTemplate * templ, const gchar * req_name)
{
GstAviMux *avimux;
GstPad *newpad;
@@ -528,29 +504,27 @@ gst_avimux_request_new_pad (GstElement *element,
avimux = GST_AVIMUX (element);
if (templ == gst_element_class_get_pad_template (klass, "audio_%d")) {
- g_return_val_if_fail(avimux->audiosinkpad == NULL, NULL);
+ g_return_val_if_fail (avimux->audiosinkpad == NULL, NULL);
newpad = gst_pad_new_from_template (templ, "audio_00");
gst_pad_set_link_function (newpad, gst_avimux_audsinkconnect);
avimux->audiosinkpad = newpad;
- }
- else if (templ == gst_element_class_get_pad_template (klass, "video_%d")) {
- g_return_val_if_fail(avimux->videosinkpad == NULL, NULL);
+ } else if (templ == gst_element_class_get_pad_template (klass, "video_%d")) {
+ g_return_val_if_fail (avimux->videosinkpad == NULL, NULL);
newpad = gst_pad_new_from_template (templ, "video_00");
gst_pad_set_link_function (newpad, gst_avimux_vidsinkconnect);
avimux->videosinkpad = newpad;
- }
- else {
+ } else {
g_warning ("avimux: this is not our template!\n");
return NULL;
}
- g_signal_connect(newpad, "linked",
- G_CALLBACK(gst_avimux_pad_link), (gpointer)avimux);
- g_signal_connect(newpad, "unlinked",
- G_CALLBACK(gst_avimux_pad_unlink), (gpointer)avimux);
+ g_signal_connect (newpad, "linked",
+ G_CALLBACK (gst_avimux_pad_link), (gpointer) avimux);
+ g_signal_connect (newpad, "unlinked",
+ G_CALLBACK (gst_avimux_pad_unlink), (gpointer) avimux);
gst_element_add_pad (element, newpad);
- gst_pad_set_event_mask_function(newpad, gst_avimux_get_event_masks);
-
+ gst_pad_set_event_mask_function (newpad, gst_avimux_get_event_masks);
+
return newpad;
}
@@ -559,215 +533,301 @@ gst_avimux_request_new_pad (GstElement *element,
/* DISCLAIMER: this function is ugly. So be it (i.e. it makes the rest easier) */
static GstBuffer *
-gst_avimux_riff_get_avi_header (GstAviMux *avimux)
+gst_avimux_riff_get_avi_header (GstAviMux * avimux)
{
GstBuffer *buffer;
guint8 *buffdata;
guint16 temp16;
guint32 temp32;
- buffer = gst_buffer_new();
+ buffer = gst_buffer_new ();
/* first, let's see what actually needs to be in the buffer */
- GST_BUFFER_SIZE(buffer) = 0;
- GST_BUFFER_SIZE(buffer) += 32 + sizeof(gst_riff_avih); /* avi header */
- if (avimux->video_pad_connected)
- { /* we have video */
- GST_BUFFER_SIZE(buffer) += 28 + sizeof(gst_riff_strh) + sizeof(gst_riff_strf_vids); /* vid hdr */
- GST_BUFFER_SIZE(buffer) += 24; /* odml header */
+ GST_BUFFER_SIZE (buffer) = 0;
+ GST_BUFFER_SIZE (buffer) += 32 + sizeof (gst_riff_avih); /* avi header */
+ if (avimux->video_pad_connected) { /* we have video */
+ GST_BUFFER_SIZE (buffer) += 28 + sizeof (gst_riff_strh) + sizeof (gst_riff_strf_vids); /* vid hdr */
+ GST_BUFFER_SIZE (buffer) += 24; /* odml header */
}
- if (avimux->audio_pad_connected)
- { /* we have audio */
- GST_BUFFER_SIZE(buffer) += 28 + sizeof(gst_riff_strh) + sizeof(gst_riff_strf_auds); /* aud hdr */
+ if (avimux->audio_pad_connected) { /* we have audio */
+ GST_BUFFER_SIZE (buffer) += 28 + sizeof (gst_riff_strh) + sizeof (gst_riff_strf_auds); /* aud hdr */
}
/* this is the "riff size" */
- avimux->header_size = GST_BUFFER_SIZE(buffer);
- GST_BUFFER_SIZE(buffer) += 12; /* avi data header */
+ avimux->header_size = GST_BUFFER_SIZE (buffer);
+ GST_BUFFER_SIZE (buffer) += 12; /* avi data header */
/* allocate the buffer */
- buffdata = GST_BUFFER_DATA(buffer) = g_malloc(GST_BUFFER_SIZE(buffer));
+ buffdata = GST_BUFFER_DATA (buffer) = g_malloc (GST_BUFFER_SIZE (buffer));
/* avi header metadata */
- memcpy(buffdata, "RIFF", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->header_size + avimux->idx_size + avimux->data_size);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- memcpy(buffdata, "AVI ", 4); buffdata += 4;
- memcpy(buffdata, "LIST", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->header_size - 4*5);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- memcpy(buffdata, "hdrl", 4); buffdata += 4;
- memcpy(buffdata, "avih", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(sizeof(gst_riff_avih));
- memcpy(buffdata, &temp32, 4); buffdata += 4;
+ memcpy (buffdata, "RIFF", 4);
+ buffdata += 4;
+ temp32 =
+ LE_FROM_GUINT32 (avimux->header_size + avimux->idx_size +
+ avimux->data_size);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ memcpy (buffdata, "AVI ", 4);
+ buffdata += 4;
+ memcpy (buffdata, "LIST", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->header_size - 4 * 5);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ memcpy (buffdata, "hdrl", 4);
+ buffdata += 4;
+ memcpy (buffdata, "avih", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (sizeof (gst_riff_avih));
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
/* the AVI header itself */
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.us_frame);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.max_bps);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.pad_gran);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.flags);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.tot_frames);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.init_frames);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.streams);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.bufsize);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.width);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.height);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.scale);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.rate);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.start);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->avi_hdr.length);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
-
- if (avimux->video_pad_connected)
- {
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.us_frame);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.max_bps);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.pad_gran);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.flags);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.tot_frames);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.init_frames);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.streams);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.bufsize);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.width);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.height);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.scale);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.rate);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.start);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->avi_hdr.length);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+
+ if (avimux->video_pad_connected) {
/* video header metadata */
- memcpy(buffdata, "LIST", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(sizeof(gst_riff_strh) + sizeof(gst_riff_strf_vids) + 4*5);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- memcpy(buffdata, "strl", 4); buffdata += 4;
+ memcpy (buffdata, "LIST", 4);
+ buffdata += 4;
+ temp32 =
+ LE_FROM_GUINT32 (sizeof (gst_riff_strh) + sizeof (gst_riff_strf_vids) +
+ 4 * 5);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ memcpy (buffdata, "strl", 4);
+ buffdata += 4;
/* generic header */
- memcpy(buffdata, "strh", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(sizeof(gst_riff_strh));
- memcpy(buffdata, &temp32, 4); buffdata += 4;
+ memcpy (buffdata, "strh", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (sizeof (gst_riff_strh));
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
/* the actual header */
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.type);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.fcc_handler);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.flags);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.priority);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.init_frames);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.scale);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.rate);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.start);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.length);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.bufsize);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.quality);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids_hdr.samplesize);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.type);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.fcc_handler);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.flags);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.priority);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.init_frames);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.scale);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.rate);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.start);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.length);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.bufsize);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.quality);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids_hdr.samplesize);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
/* the video header */
- memcpy(buffdata, "strf", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(sizeof(gst_riff_strf_vids));
- memcpy(buffdata, &temp32, 4); buffdata += 4;
+ memcpy (buffdata, "strf", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (sizeof (gst_riff_strf_vids));
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
/* the actual header */
- temp32 = LE_FROM_GUINT32(avimux->vids.size);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids.width);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids.height);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp16 = LE_FROM_GUINT16(avimux->vids.planes);
- memcpy(buffdata, &temp16, 2); buffdata += 2;
- temp16 = LE_FROM_GUINT16(avimux->vids.bit_cnt);
- memcpy(buffdata, &temp16, 2); buffdata += 2;
- temp32 = LE_FROM_GUINT32(avimux->vids.compression);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids.image_size);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids.xpels_meter);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids.ypels_meter);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids.num_colors);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->vids.imp_colors);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids.size);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids.width);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids.height);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp16 = LE_FROM_GUINT16 (avimux->vids.planes);
+ memcpy (buffdata, &temp16, 2);
+ buffdata += 2;
+ temp16 = LE_FROM_GUINT16 (avimux->vids.bit_cnt);
+ memcpy (buffdata, &temp16, 2);
+ buffdata += 2;
+ temp32 = LE_FROM_GUINT32 (avimux->vids.compression);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids.image_size);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids.xpels_meter);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids.ypels_meter);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids.num_colors);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->vids.imp_colors);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
}
- if (avimux->audio_pad_connected)
- {
+ if (avimux->audio_pad_connected) {
/* audio header */
- memcpy(buffdata, "LIST", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(sizeof(gst_riff_strh) + sizeof(gst_riff_strf_auds) + 4*5);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- memcpy(buffdata, "strl", 4); buffdata += 4;
+ memcpy (buffdata, "LIST", 4);
+ buffdata += 4;
+ temp32 =
+ LE_FROM_GUINT32 (sizeof (gst_riff_strh) + sizeof (gst_riff_strf_auds) +
+ 4 * 5);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ memcpy (buffdata, "strl", 4);
+ buffdata += 4;
/* generic header */
- memcpy(buffdata, "strh", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(sizeof(gst_riff_strh));
- memcpy(buffdata, &temp32, 4); buffdata += 4;
+ memcpy (buffdata, "strh", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (sizeof (gst_riff_strh));
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
/* the actual header */
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.type);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.fcc_handler);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.flags);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.priority);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.init_frames);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.scale);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.rate);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.start);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.length);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.bufsize);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.quality);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds_hdr.samplesize);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.type);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.fcc_handler);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.flags);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.priority);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.init_frames);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.scale);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.rate);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.start);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.length);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.bufsize);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.quality);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds_hdr.samplesize);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
/* the audio header */
- memcpy(buffdata, "strf", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(sizeof(gst_riff_strf_auds));
- memcpy(buffdata, &temp32, 4); buffdata += 4;
+ memcpy (buffdata, "strf", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (sizeof (gst_riff_strf_auds));
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
/* the actual header */
- temp16 = LE_FROM_GUINT16(avimux->auds.format);
- memcpy(buffdata, &temp16, 2); buffdata += 2;
- temp16 = LE_FROM_GUINT16(avimux->auds.channels);
- memcpy(buffdata, &temp16, 2); buffdata += 2;
- temp32 = LE_FROM_GUINT32(avimux->auds.rate);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->auds.av_bps);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp16 = LE_FROM_GUINT16(avimux->auds.blockalign);
- memcpy(buffdata, &temp16, 2); buffdata += 2;
- temp16 = LE_FROM_GUINT16(avimux->auds.size);
- memcpy(buffdata, &temp16, 2); buffdata += 2;
+ temp16 = LE_FROM_GUINT16 (avimux->auds.format);
+ memcpy (buffdata, &temp16, 2);
+ buffdata += 2;
+ temp16 = LE_FROM_GUINT16 (avimux->auds.channels);
+ memcpy (buffdata, &temp16, 2);
+ buffdata += 2;
+ temp32 = LE_FROM_GUINT32 (avimux->auds.rate);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->auds.av_bps);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp16 = LE_FROM_GUINT16 (avimux->auds.blockalign);
+ memcpy (buffdata, &temp16, 2);
+ buffdata += 2;
+ temp16 = LE_FROM_GUINT16 (avimux->auds.size);
+ memcpy (buffdata, &temp16, 2);
+ buffdata += 2;
}
- if (avimux->video_pad_connected)
- {
+ if (avimux->video_pad_connected) {
/* odml header */
- memcpy(buffdata, "LIST", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(sizeof(guint32)+4*3);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- memcpy(buffdata, "odml", 4); buffdata += 4;
- memcpy(buffdata, "dmlh", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(sizeof(guint32));
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->total_frames);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
+ memcpy (buffdata, "LIST", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (sizeof (guint32) + 4 * 3);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ memcpy (buffdata, "odml", 4);
+ buffdata += 4;
+ memcpy (buffdata, "dmlh", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (sizeof (guint32));
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->total_frames);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
}
/* avi data header */
- memcpy(buffdata, "LIST", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(avimux->data_size);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- memcpy(buffdata, "movi", 4);
+ memcpy (buffdata, "LIST", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (avimux->data_size);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ memcpy (buffdata, "movi", 4);
return buffer;
}
@@ -779,18 +839,23 @@ gst_avimux_riff_get_avix_header (guint32 datax_size)
guint8 *buffdata;
guint32 temp32;
- buffer = gst_buffer_new();
- GST_BUFFER_SIZE(buffer) = 24;
- buffdata = GST_BUFFER_DATA(buffer) = g_malloc(GST_BUFFER_SIZE(buffer));
-
- memcpy(buffdata, "LIST", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(datax_size+4*4);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- memcpy(buffdata, "AVIX", 4); buffdata += 4;
- memcpy(buffdata, "LIST", 4); buffdata += 4;
- temp32 = LE_FROM_GUINT32(datax_size);
- memcpy(buffdata, &temp32, 4); buffdata += 4;
- memcpy(buffdata, "movi", 4);
+ buffer = gst_buffer_new ();
+ GST_BUFFER_SIZE (buffer) = 24;
+ buffdata = GST_BUFFER_DATA (buffer) = g_malloc (GST_BUFFER_SIZE (buffer));
+
+ memcpy (buffdata, "LIST", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (datax_size + 4 * 4);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ memcpy (buffdata, "AVIX", 4);
+ buffdata += 4;
+ memcpy (buffdata, "LIST", 4);
+ buffdata += 4;
+ temp32 = LE_FROM_GUINT32 (datax_size);
+ memcpy (buffdata, &temp32, 4);
+ buffdata += 4;
+ memcpy (buffdata, "movi", 4);
return buffer;
}
@@ -801,12 +866,12 @@ gst_avimux_riff_get_video_header (guint32 video_frame_size)
GstBuffer *buffer;
guint32 temp32;
- buffer = gst_buffer_new();
- GST_BUFFER_DATA(buffer) = g_malloc(8);
- GST_BUFFER_SIZE(buffer) = 8;
- memcpy(GST_BUFFER_DATA(buffer), "00db", 4);
- temp32 = LE_FROM_GUINT32(video_frame_size);
- memcpy(GST_BUFFER_DATA(buffer)+4, &temp32, 4);
+ buffer = gst_buffer_new ();
+ GST_BUFFER_DATA (buffer) = g_malloc (8);
+ GST_BUFFER_SIZE (buffer) = 8;
+ memcpy (GST_BUFFER_DATA (buffer), "00db", 4);
+ temp32 = LE_FROM_GUINT32 (video_frame_size);
+ memcpy (GST_BUFFER_DATA (buffer) + 4, &temp32, 4);
return buffer;
}
@@ -817,12 +882,12 @@ gst_avimux_riff_get_audio_header (guint32 audio_sample_size)
GstBuffer *buffer;
guint32 temp32;
- buffer = gst_buffer_new();
- GST_BUFFER_DATA(buffer) = g_malloc(8);
- GST_BUFFER_SIZE(buffer) = 8;
- memcpy(GST_BUFFER_DATA(buffer), "01wb", 4);
- temp32 = LE_FROM_GUINT32(audio_sample_size);
- memcpy(GST_BUFFER_DATA(buffer)+4, &temp32, 4);
+ buffer = gst_buffer_new ();
+ GST_BUFFER_DATA (buffer) = g_malloc (8);
+ GST_BUFFER_SIZE (buffer) = 8;
+ memcpy (GST_BUFFER_DATA (buffer), "01wb", 4);
+ temp32 = LE_FROM_GUINT32 (audio_sample_size);
+ memcpy (GST_BUFFER_DATA (buffer) + 4, &temp32, 4);
return buffer;
}
@@ -830,73 +895,70 @@ gst_avimux_riff_get_audio_header (guint32 audio_sample_size)
/* some other usable functions (thankyou xawtv ;-) ) */
static void
-gst_avimux_add_index (GstAviMux *avimux, guchar *code, guint32 flags, guint32 size)
+gst_avimux_add_index (GstAviMux * avimux, guchar * code, guint32 flags,
+ guint32 size)
{
- if (avimux->idx_index == avimux->idx_count)
- {
+ if (avimux->idx_index == avimux->idx_count) {
avimux->idx_count += 256;
- avimux->idx = realloc(avimux->idx, avimux->idx_count*sizeof(gst_riff_index_entry));
+ avimux->idx =
+ realloc (avimux->idx,
+ avimux->idx_count * sizeof (gst_riff_index_entry));
}
- memcpy(&(avimux->idx[avimux->idx_index].id), code, 4);
- avimux->idx[avimux->idx_index].flags = LE_FROM_GUINT32(flags);
- avimux->idx[avimux->idx_index].offset = LE_FROM_GUINT32(avimux->idx_offset);
- avimux->idx[avimux->idx_index].size = LE_FROM_GUINT32(size);
+ memcpy (&(avimux->idx[avimux->idx_index].id), code, 4);
+ avimux->idx[avimux->idx_index].flags = LE_FROM_GUINT32 (flags);
+ avimux->idx[avimux->idx_index].offset = LE_FROM_GUINT32 (avimux->idx_offset);
+ avimux->idx[avimux->idx_index].size = LE_FROM_GUINT32 (size);
avimux->idx_index++;
}
static void
-gst_avimux_write_index (GstAviMux *avimux)
+gst_avimux_write_index (GstAviMux * avimux)
{
GstBuffer *buffer;
guint32 temp32;
- buffer = gst_buffer_new();
- GST_BUFFER_SIZE(buffer) = 8;
- GST_BUFFER_DATA(buffer) = g_malloc(8);
- memcpy(GST_BUFFER_DATA(buffer), "idx1", 4);
- temp32 = LE_FROM_GUINT32(avimux->idx_index * sizeof(gst_riff_index_entry));
- memcpy(GST_BUFFER_DATA(buffer)+4, &temp32, 4);
- gst_pad_push(avimux->srcpad, GST_DATA (buffer));
+ buffer = gst_buffer_new ();
+ GST_BUFFER_SIZE (buffer) = 8;
+ GST_BUFFER_DATA (buffer) = g_malloc (8);
+ memcpy (GST_BUFFER_DATA (buffer), "idx1", 4);
+ temp32 = LE_FROM_GUINT32 (avimux->idx_index * sizeof (gst_riff_index_entry));
+ memcpy (GST_BUFFER_DATA (buffer) + 4, &temp32, 4);
+ gst_pad_push (avimux->srcpad, GST_DATA (buffer));
- buffer = gst_buffer_new();
- GST_BUFFER_SIZE(buffer) = avimux->idx_index * sizeof(gst_riff_index_entry);
- GST_BUFFER_DATA(buffer) = (unsigned char*) avimux->idx;
- avimux->idx = NULL; /* will be free()'ed by gst_buffer_unref() */
- avimux->total_data += GST_BUFFER_SIZE(buffer);
- gst_pad_push(avimux->srcpad, GST_DATA (buffer));
+ buffer = gst_buffer_new ();
+ GST_BUFFER_SIZE (buffer) = avimux->idx_index * sizeof (gst_riff_index_entry);
+ GST_BUFFER_DATA (buffer) = (unsigned char *) avimux->idx;
+ avimux->idx = NULL; /* will be free()'ed by gst_buffer_unref() */
+ avimux->total_data += GST_BUFFER_SIZE (buffer);
+ gst_pad_push (avimux->srcpad, GST_DATA (buffer));
- avimux->idx_size += avimux->idx_index * sizeof(gst_riff_index_entry) + 8;
+ avimux->idx_size += avimux->idx_index * sizeof (gst_riff_index_entry) + 8;
/* update header */
avimux->avi_hdr.flags |= GST_RIFF_AVIH_HASINDEX;
}
static void
-gst_avimux_bigfile(GstAviMux *avimux, gboolean last)
+gst_avimux_bigfile (GstAviMux * avimux, gboolean last)
{
GstBuffer *header;
GstEvent *event;
-
- if (avimux->is_bigfile)
- {
+
+ if (avimux->is_bigfile) {
/* sarch back */
- event = gst_event_new_seek (GST_FORMAT_BYTES |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH,
- avimux->avix_start);
+ event = gst_event_new_seek (GST_FORMAT_BYTES |
+ GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH, avimux->avix_start);
/* if the event succeeds */
- gst_pad_push(avimux->srcpad, GST_DATA(event));
+ gst_pad_push (avimux->srcpad, GST_DATA (event));
/* rewrite AVIX header */
- header = gst_avimux_riff_get_avix_header(avimux->datax_size);
- gst_pad_push(avimux->srcpad, GST_DATA (header));
+ header = gst_avimux_riff_get_avix_header (avimux->datax_size);
+ gst_pad_push (avimux->srcpad, GST_DATA (header));
/* go back to current location */
- event = gst_event_new_seek (GST_FORMAT_BYTES |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH,
- avimux->total_data);
- gst_pad_push(avimux->srcpad, GST_DATA(event));
+ event = gst_event_new_seek (GST_FORMAT_BYTES |
+ GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH, avimux->total_data);
+ gst_pad_push (avimux->srcpad, GST_DATA (event));
}
avimux->avix_start = avimux->total_data;
@@ -907,21 +969,21 @@ gst_avimux_bigfile(GstAviMux *avimux, gboolean last)
avimux->numx_frames = 0;
avimux->datax_size = 0;
- header = gst_avimux_riff_get_avix_header(0);
- avimux->total_data += GST_BUFFER_SIZE(header);
- gst_pad_push(avimux->srcpad, GST_DATA (header));
+ header = gst_avimux_riff_get_avix_header (0);
+ avimux->total_data += GST_BUFFER_SIZE (header);
+ gst_pad_push (avimux->srcpad, GST_DATA (header));
}
/* enough header blabla now, let's go on to actually writing the headers */
static void
-gst_avimux_start_file (GstAviMux *avimux)
+gst_avimux_start_file (GstAviMux * avimux)
{
GstBuffer *header;
avimux->total_data = 0;
avimux->total_frames = 0;
- avimux->data_size = 4; /* ? */
+ avimux->data_size = 4; /* ? */
avimux->datax_size = 0;
avimux->num_frames = 0;
avimux->numx_frames = 0;
@@ -930,41 +992,39 @@ gst_avimux_start_file (GstAviMux *avimux)
avimux->avix_start = 0;
avimux->idx_index = 0;
- avimux->idx_offset = 0; /* see 10 lines below */
+ avimux->idx_offset = 0; /* see 10 lines below */
avimux->idx_size = 0;
avimux->idx_count = 0;
avimux->idx = NULL;
/* header */
- avimux->avi_hdr.streams = (avimux->video_pad_connected?1:0) + (avimux->audio_pad_connected?1:0);
+ avimux->avi_hdr.streams =
+ (avimux->video_pad_connected ? 1 : 0) +
+ (avimux->audio_pad_connected ? 1 : 0);
avimux->is_bigfile = FALSE;
- header = gst_avimux_riff_get_avi_header(avimux);
- avimux->total_data += GST_BUFFER_SIZE(header);
+ header = gst_avimux_riff_get_avi_header (avimux);
+ avimux->total_data += GST_BUFFER_SIZE (header);
avimux->idx_offset = avimux->total_data;
- gst_pad_push(avimux->srcpad, GST_DATA (header));
+ gst_pad_push (avimux->srcpad, GST_DATA (header));
avimux->write_header = FALSE;
avimux->restart = FALSE;
}
static void
-gst_avimux_stop_file (GstAviMux *avimux)
+gst_avimux_stop_file (GstAviMux * avimux)
{
GstEvent *event;
GstBuffer *header;
/* if bigfile, rewrite header, else write indexes */
- if (avimux->video_pad_connected)
- {
- if (avimux->is_bigfile)
- {
- gst_avimux_bigfile(avimux, TRUE);
+ if (avimux->video_pad_connected) {
+ if (avimux->is_bigfile) {
+ gst_avimux_bigfile (avimux, TRUE);
avimux->idx_size = 0;
- }
- else
- {
- gst_avimux_write_index(avimux);
+ } else {
+ gst_avimux_write_index (avimux);
}
}
@@ -974,7 +1034,8 @@ gst_avimux_stop_file (GstAviMux *avimux)
avimux->vids_hdr.length = avimux->num_frames;
}
if (avimux->audio_pad_connected) {
- avimux->auds_hdr.length = (avimux->audio_time * avimux->auds.rate)/GST_SECOND;
+ avimux->auds_hdr.length =
+ (avimux->audio_time * avimux->auds.rate) / GST_SECOND;
}
/* set rate and everything having to do with that */
@@ -983,68 +1044,68 @@ gst_avimux_stop_file (GstAviMux *avimux)
/* calculate bps if needed */
if (!avimux->auds.av_bps) {
if (avimux->audio_time) {
- avimux->auds_hdr.rate = (GST_SECOND * avimux->audio_size) / avimux->audio_time;
+ avimux->auds_hdr.rate =
+ (GST_SECOND * avimux->audio_size) / avimux->audio_time;
} else {
- GST_ELEMENT_ERROR (avimux, STREAM, MUX,
- (_("No or invalid input audio, AVI stream will be corrupt.")), (NULL));
- avimux->auds_hdr.rate = 0;
+ GST_ELEMENT_ERROR (avimux, STREAM, MUX,
+ (_("No or invalid input audio, AVI stream will be corrupt.")),
+ (NULL));
+ avimux->auds_hdr.rate = 0;
}
avimux->auds.av_bps = avimux->auds_hdr.rate * avimux->auds_hdr.scale;
}
avimux->avi_hdr.max_bps += avimux->auds.av_bps;
}
if (avimux->video_pad_connected) {
- avimux->avi_hdr.max_bps += ((avimux->vids.bit_cnt+7)/8) *
- (1000000. / avimux->avi_hdr.us_frame) *
- avimux->vids.image_size;
+ avimux->avi_hdr.max_bps += ((avimux->vids.bit_cnt + 7) / 8) *
+ (1000000. / avimux->avi_hdr.us_frame) * avimux->vids.image_size;
}
/* seek and rewrite the header */
- header = gst_avimux_riff_get_avi_header(avimux);
- event = gst_event_new_seek (GST_FORMAT_BYTES |
- GST_SEEK_METHOD_SET, 0);
- gst_pad_push(avimux->srcpad, GST_DATA(event));
- gst_pad_push(avimux->srcpad, GST_DATA (header));
+ header = gst_avimux_riff_get_avi_header (avimux);
+ event = gst_event_new_seek (GST_FORMAT_BYTES | GST_SEEK_METHOD_SET, 0);
+ gst_pad_push (avimux->srcpad, GST_DATA (event));
+ gst_pad_push (avimux->srcpad, GST_DATA (header));
event = gst_event_new_seek (GST_FORMAT_BYTES |
- GST_SEEK_METHOD_SET, avimux->total_data);
- gst_pad_push(avimux->srcpad, GST_DATA(event));
+ GST_SEEK_METHOD_SET, avimux->total_data);
+ gst_pad_push (avimux->srcpad, GST_DATA (event));
avimux->write_header = TRUE;
}
static void
-gst_avimux_restart_file (GstAviMux *avimux)
+gst_avimux_restart_file (GstAviMux * avimux)
{
GstEvent *event;
- gst_avimux_stop_file(avimux);
+ gst_avimux_stop_file (avimux);
- event = gst_event_new(GST_EVENT_EOS);
- gst_pad_push(avimux->srcpad, GST_DATA(event));
+ event = gst_event_new (GST_EVENT_EOS);
+ gst_pad_push (avimux->srcpad, GST_DATA (event));
- gst_avimux_start_file(avimux);
+ gst_avimux_start_file (avimux);
}
/* handle events (search) */
static gboolean
-gst_avimux_handle_event (GstPad *pad, GstEvent *event)
+gst_avimux_handle_event (GstPad * pad, GstEvent * event)
{
GstAviMux *avimux;
GstEventType type;
avimux = GST_AVIMUX (gst_pad_get_parent (pad));
-
+
type = event ? GST_EVENT_TYPE (event) : GST_EVENT_UNKNOWN;
switch (type) {
case GST_EVENT_EOS:
/* is this allright? */
if (pad == avimux->videosinkpad) {
- avimux->video_pad_eos = TRUE;
+ avimux->video_pad_eos = TRUE;
} else if (pad == avimux->audiosinkpad) {
- avimux->audio_pad_eos = TRUE;
+ avimux->audio_pad_eos = TRUE;
} else {
- g_warning("Unknown pad for EOS!");
+ g_warning ("Unknown pad for EOS!");
}
break;
default:
@@ -1057,19 +1118,17 @@ gst_avimux_handle_event (GstPad *pad, GstEvent *event)
/* fill the internal queue for each available pad */
static void
-gst_avimux_fill_queue (GstAviMux *avimux)
+gst_avimux_fill_queue (GstAviMux * avimux)
{
GstBuffer *buffer;
while (!avimux->audio_buffer_queue &&
- avimux->audiosinkpad &&
- avimux->audio_pad_connected &&
- GST_PAD_IS_USABLE(avimux->audiosinkpad) &&
- !avimux->audio_pad_eos)
- {
- buffer = GST_BUFFER (gst_pad_pull(avimux->audiosinkpad));
- if (GST_IS_EVENT(buffer)) {
- gst_avimux_handle_event(avimux->audiosinkpad, GST_EVENT(buffer));
+ avimux->audiosinkpad &&
+ avimux->audio_pad_connected &&
+ GST_PAD_IS_USABLE (avimux->audiosinkpad) && !avimux->audio_pad_eos) {
+ buffer = GST_BUFFER (gst_pad_pull (avimux->audiosinkpad));
+ if (GST_IS_EVENT (buffer)) {
+ gst_avimux_handle_event (avimux->audiosinkpad, GST_EVENT (buffer));
} else {
avimux->audio_buffer_queue = buffer;
break;
@@ -1077,14 +1136,12 @@ gst_avimux_fill_queue (GstAviMux *avimux)
}
while (!avimux->video_buffer_queue &&
- avimux->videosinkpad &&
- avimux->video_pad_connected &&
- GST_PAD_IS_USABLE(avimux->videosinkpad) &&
- !avimux->video_pad_eos)
- {
- buffer = GST_BUFFER (gst_pad_pull(avimux->videosinkpad));
- if (GST_IS_EVENT(buffer)) {
- gst_avimux_handle_event(avimux->videosinkpad, GST_EVENT(buffer));
+ avimux->videosinkpad &&
+ avimux->video_pad_connected &&
+ GST_PAD_IS_USABLE (avimux->videosinkpad) && !avimux->video_pad_eos) {
+ buffer = GST_BUFFER (gst_pad_pull (avimux->videosinkpad));
+ if (GST_IS_EVENT (buffer)) {
+ gst_avimux_handle_event (avimux->videosinkpad, GST_EVENT (buffer));
} else {
avimux->video_buffer_queue = buffer;
break;
@@ -1095,49 +1152,45 @@ gst_avimux_fill_queue (GstAviMux *avimux)
/* send extra 'padding' data */
static void
-gst_avimux_send_pad_data (GstAviMux *avimux,
- gulong num_bytes)
+gst_avimux_send_pad_data (GstAviMux * avimux, gulong num_bytes)
{
GstBuffer *buffer;
- buffer = gst_buffer_new();
- GST_BUFFER_SIZE(buffer) = num_bytes;
- GST_BUFFER_DATA(buffer) = g_malloc(num_bytes);
- memset(GST_BUFFER_DATA(buffer), 0, num_bytes);
+ buffer = gst_buffer_new ();
+ GST_BUFFER_SIZE (buffer) = num_bytes;
+ GST_BUFFER_DATA (buffer) = g_malloc (num_bytes);
+ memset (GST_BUFFER_DATA (buffer), 0, num_bytes);
- gst_pad_push(avimux->srcpad, GST_DATA (buffer));
+ gst_pad_push (avimux->srcpad, GST_DATA (buffer));
}
/* do audio buffer */
static void
-gst_avimux_do_audio_buffer (GstAviMux *avimux)
+gst_avimux_do_audio_buffer (GstAviMux * avimux)
{
GstBuffer *data = avimux->audio_buffer_queue, *header;
gulong total_size, pad_bytes = 0;
/* write a audio header + index entry */
- if (GST_BUFFER_SIZE(data) & 1) {
- pad_bytes = 2 - (GST_BUFFER_SIZE(data) & 1);
+ if (GST_BUFFER_SIZE (data) & 1) {
+ pad_bytes = 2 - (GST_BUFFER_SIZE (data) & 1);
}
- header = gst_avimux_riff_get_audio_header(GST_BUFFER_SIZE(data));
- total_size = GST_BUFFER_SIZE(header) + GST_BUFFER_SIZE(data) + pad_bytes;
+ header = gst_avimux_riff_get_audio_header (GST_BUFFER_SIZE (data));
+ total_size = GST_BUFFER_SIZE (header) + GST_BUFFER_SIZE (data) + pad_bytes;
- if (avimux->is_bigfile)
- {
+ if (avimux->is_bigfile) {
avimux->datax_size += total_size;
- }
- else
- {
+ } else {
avimux->data_size += total_size;
- avimux->audio_size += GST_BUFFER_SIZE(data);
- avimux->audio_time += GST_BUFFER_DURATION(data);
- gst_avimux_add_index(avimux, "01wb", 0x0, GST_BUFFER_SIZE(data));
+ avimux->audio_size += GST_BUFFER_SIZE (data);
+ avimux->audio_time += GST_BUFFER_DURATION (data);
+ gst_avimux_add_index (avimux, "01wb", 0x0, GST_BUFFER_SIZE (data));
}
- gst_pad_push(avimux->srcpad, GST_DATA (header));
- gst_pad_push(avimux->srcpad, GST_DATA (data));
+ gst_pad_push (avimux->srcpad, GST_DATA (header));
+ gst_pad_push (avimux->srcpad, GST_DATA (data));
if (pad_bytes) {
- gst_avimux_send_pad_data(avimux, pad_bytes);
+ gst_avimux_send_pad_data (avimux, pad_bytes);
}
avimux->total_data += total_size;
avimux->idx_offset += total_size;
@@ -1148,49 +1201,47 @@ gst_avimux_do_audio_buffer (GstAviMux *avimux)
/* do video buffer */
static void
-gst_avimux_do_video_buffer (GstAviMux *avimux)
+gst_avimux_do_video_buffer (GstAviMux * avimux)
{
GstBuffer *data = avimux->video_buffer_queue, *header;
gulong total_size, pad_bytes = 0;
if (avimux->restart)
- gst_avimux_restart_file(avimux);
+ gst_avimux_restart_file (avimux);
/* write a video header + index entry */
- if ((avimux->is_bigfile?avimux->datax_size:avimux->data_size)+GST_BUFFER_SIZE(data)>1024*1024*2000)
- {
+ if ((avimux->is_bigfile ? avimux->datax_size : avimux->data_size) +
+ GST_BUFFER_SIZE (data) > 1024 * 1024 * 2000) {
if (avimux->enable_large_avi)
- gst_avimux_bigfile(avimux, FALSE);
+ gst_avimux_bigfile (avimux, FALSE);
else
- gst_avimux_restart_file(avimux);
+ gst_avimux_restart_file (avimux);
}
- if (GST_BUFFER_SIZE(data) & 1) {
- pad_bytes = 2 - (GST_BUFFER_SIZE(data) & 1);
+ if (GST_BUFFER_SIZE (data) & 1) {
+ pad_bytes = 2 - (GST_BUFFER_SIZE (data) & 1);
}
- header = gst_avimux_riff_get_video_header(GST_BUFFER_SIZE(data));
- total_size = GST_BUFFER_SIZE(header) + GST_BUFFER_SIZE(data) + pad_bytes;
+ header = gst_avimux_riff_get_video_header (GST_BUFFER_SIZE (data));
+ total_size = GST_BUFFER_SIZE (header) + GST_BUFFER_SIZE (data) + pad_bytes;
avimux->total_frames++;
- if (avimux->is_bigfile)
- {
+ if (avimux->is_bigfile) {
avimux->datax_size += total_size;
avimux->numx_frames++;
- }
- else
- {
+ } else {
guint flags = 0x2;
+
if (GST_BUFFER_FLAG_IS_SET (data, GST_BUFFER_KEY_UNIT))
flags |= 0x10;
avimux->data_size += total_size;
avimux->num_frames++;
- gst_avimux_add_index(avimux, "00db", flags, GST_BUFFER_SIZE(data));
+ gst_avimux_add_index (avimux, "00db", flags, GST_BUFFER_SIZE (data));
}
- gst_pad_push(avimux->srcpad, GST_DATA (header));
- gst_pad_push(avimux->srcpad, GST_DATA (data));
+ gst_pad_push (avimux->srcpad, GST_DATA (header));
+ gst_pad_push (avimux->srcpad, GST_DATA (data));
if (pad_bytes) {
- gst_avimux_send_pad_data(avimux, pad_bytes);
+ gst_avimux_send_pad_data (avimux, pad_bytes);
}
avimux->total_data += total_size;
avimux->idx_offset += total_size;
@@ -1201,31 +1252,24 @@ gst_avimux_do_video_buffer (GstAviMux *avimux)
/* take the oldest buffer in our internal queue and push-it */
static gboolean
-gst_avimux_do_one_buffer (GstAviMux *avimux)
+gst_avimux_do_one_buffer (GstAviMux * avimux)
{
- if (avimux->video_buffer_queue &&
- avimux->audio_buffer_queue)
- {
- if (GST_BUFFER_TIMESTAMP(avimux->video_buffer_queue) <=
- GST_BUFFER_TIMESTAMP(avimux->audio_buffer_queue))
- gst_avimux_do_video_buffer(avimux);
+ if (avimux->video_buffer_queue && avimux->audio_buffer_queue) {
+ if (GST_BUFFER_TIMESTAMP (avimux->video_buffer_queue) <=
+ GST_BUFFER_TIMESTAMP (avimux->audio_buffer_queue))
+ gst_avimux_do_video_buffer (avimux);
else
- gst_avimux_do_audio_buffer(avimux);
- }
- else if (avimux->video_buffer_queue ||
- avimux->audio_buffer_queue)
- {
+ gst_avimux_do_audio_buffer (avimux);
+ } else if (avimux->video_buffer_queue || avimux->audio_buffer_queue) {
if (avimux->video_buffer_queue)
- gst_avimux_do_video_buffer(avimux);
+ gst_avimux_do_video_buffer (avimux);
else
- gst_avimux_do_audio_buffer(avimux);
- }
- else {
+ gst_avimux_do_audio_buffer (avimux);
+ } else {
/* simply finish off the file and send EOS */
- gst_avimux_stop_file(avimux);
- gst_pad_push(avimux->srcpad,
- GST_DATA(gst_event_new(GST_EVENT_EOS)));
- gst_element_set_eos(GST_ELEMENT(avimux));
+ gst_avimux_stop_file (avimux);
+ gst_pad_push (avimux->srcpad, GST_DATA (gst_event_new (GST_EVENT_EOS)));
+ gst_element_set_eos (GST_ELEMENT (avimux));
return FALSE;
}
@@ -1234,38 +1278,35 @@ gst_avimux_do_one_buffer (GstAviMux *avimux)
static void
-gst_avimux_loop (GstElement *element)
+gst_avimux_loop (GstElement * element)
{
GstAviMux *avimux;
- avimux = GST_AVIMUX(element);
+ avimux = GST_AVIMUX (element);
/* first fill queue (some elements only set caps when
* flowing data), then write header */
- gst_avimux_fill_queue(avimux);
-
+ gst_avimux_fill_queue (avimux);
+
if (avimux->write_header)
- gst_avimux_start_file(avimux);
+ gst_avimux_start_file (avimux);
- gst_avimux_do_one_buffer(avimux);
+ gst_avimux_do_one_buffer (avimux);
}
static void
-gst_avimux_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+gst_avimux_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
{
GstAviMux *avimux;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_AVIMUX(object));
- avimux = GST_AVIMUX(object);
+ g_return_if_fail (GST_IS_AVIMUX (object));
+ avimux = GST_AVIMUX (object);
- switch (prop_id)
- {
+ switch (prop_id) {
case ARG_BIGFILE:
- g_value_set_boolean(value, avimux->enable_large_avi);
+ g_value_set_boolean (value, avimux->enable_large_avi);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1274,21 +1315,18 @@ gst_avimux_get_property (GObject *object,
}
static void
-gst_avimux_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+gst_avimux_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
{
GstAviMux *avimux;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_AVIMUX(object));
- avimux = GST_AVIMUX(object);
+ g_return_if_fail (GST_IS_AVIMUX (object));
+ avimux = GST_AVIMUX (object);
- switch (prop_id)
- {
+ switch (prop_id) {
case ARG_BIGFILE:
- avimux->enable_large_avi = g_value_get_boolean(value);
+ avimux->enable_large_avi = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1297,14 +1335,14 @@ gst_avimux_set_property (GObject *object,
}
static GstElementStateReturn
-gst_avimux_change_state (GstElement *element)
+gst_avimux_change_state (GstElement * element)
{
GstAviMux *avimux;
gint transition = GST_STATE_TRANSITION (element);
- g_return_val_if_fail(GST_IS_AVIMUX(element), GST_STATE_FAILURE);
-
- avimux = GST_AVIMUX(element);
+ g_return_val_if_fail (GST_IS_AVIMUX (element), GST_STATE_FAILURE);
+
+ avimux = GST_AVIMUX (element);
switch (transition) {
case GST_STATE_PAUSED_TO_PLAYING:
@@ -1317,4 +1355,3 @@ gst_avimux_change_state (GstElement *element)
return GST_STATE_SUCCESS;
}
-
diff --git a/gst/avi/gstavimux.h b/gst/avi/gstavimux.h
index 452b7221..e51f3010 100644
--- a/gst/avi/gstavimux.h
+++ b/gst/avi/gstavimux.h
@@ -28,8 +28,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_AVIMUX \
@@ -44,65 +45,67 @@ extern "C" {
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVIMUX))
-typedef struct _GstAviMux GstAviMux;
-typedef struct _GstAviMuxClass GstAviMuxClass;
-
-struct _GstAviMux {
- GstElement element;
-
- /* pads */
- GstPad *srcpad;
- GstPad *audiosinkpad;
- gboolean audio_pad_connected, audio_pad_eos;
- GstPad *videosinkpad;
- gboolean video_pad_connected, video_pad_eos;
-
- /* the AVI header */
- gst_riff_avih avi_hdr;
- guint32 total_frames; /* total number of frames */
- guint64 total_data; /* amount of total data */
- guint32 data_size, datax_size; /* amount of data (bytes) in the AVI/AVIX block */
- guint32 num_frames, numx_frames; /* num frames in the AVI/AVIX block */
- guint32 header_size;
- gboolean write_header;
- gboolean restart;
- guint32 audio_size;
- guint64 audio_time;
-
- /* video header */
- gst_riff_strh vids_hdr;
- gst_riff_strf_vids vids;
-
- /* audio header */
- gst_riff_strh auds_hdr;
- gst_riff_strf_auds auds;
-
- /* information about the AVI index ('idx') */
- gst_riff_index_entry *idx;
- gint idx_index, idx_count;
- guint32 idx_offset, idx_size;
-
- /* are we a big file already? */
- gboolean is_bigfile;
- guint64 avix_start;
-
- /* whether to use "large AVI files" or just stick to small indexed files */
- gboolean enable_large_avi;
-
- /* in order to be usable as a loopbased element, we need an internal
- * 'buffered' buffer for each pad, so one for audio, one for video */
- GstBuffer *audio_buffer_queue, *video_buffer_queue;
-};
-
-struct _GstAviMuxClass {
- GstElementClass parent_class;
-};
-
-GType gst_avimux_get_type(void);
+ typedef struct _GstAviMux GstAviMux;
+ typedef struct _GstAviMuxClass GstAviMuxClass;
+
+ struct _GstAviMux
+ {
+ GstElement element;
+
+ /* pads */
+ GstPad *srcpad;
+ GstPad *audiosinkpad;
+ gboolean audio_pad_connected, audio_pad_eos;
+ GstPad *videosinkpad;
+ gboolean video_pad_connected, video_pad_eos;
+
+ /* the AVI header */
+ gst_riff_avih avi_hdr;
+ guint32 total_frames; /* total number of frames */
+ guint64 total_data; /* amount of total data */
+ guint32 data_size, datax_size; /* amount of data (bytes) in the AVI/AVIX block */
+ guint32 num_frames, numx_frames; /* num frames in the AVI/AVIX block */
+ guint32 header_size;
+ gboolean write_header;
+ gboolean restart;
+ guint32 audio_size;
+ guint64 audio_time;
+
+ /* video header */
+ gst_riff_strh vids_hdr;
+ gst_riff_strf_vids vids;
+
+ /* audio header */
+ gst_riff_strh auds_hdr;
+ gst_riff_strf_auds auds;
+
+ /* information about the AVI index ('idx') */
+ gst_riff_index_entry *idx;
+ gint idx_index, idx_count;
+ guint32 idx_offset, idx_size;
+
+ /* are we a big file already? */
+ gboolean is_bigfile;
+ guint64 avix_start;
+
+ /* whether to use "large AVI files" or just stick to small indexed files */
+ gboolean enable_large_avi;
+
+ /* in order to be usable as a loopbased element, we need an internal
+ * 'buffered' buffer for each pad, so one for audio, one for video */
+ GstBuffer *audio_buffer_queue, *video_buffer_queue;
+ };
+
+ struct _GstAviMuxClass
+ {
+ GstElementClass parent_class;
+ };
+
+ GType gst_avimux_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_AVIMUX_H__ */
+#endif /* __GST_AVIMUX_H__ */
diff --git a/gst/cutter/gstcutter.c b/gst/cutter/gstcutter.c
index f163c0b6..9b82b057 100644
--- a/gst/cutter/gstcutter.c
+++ b/gst/cutter/gstcutter.c
@@ -35,14 +35,16 @@ static GstElementDetails cutter_details = {
/* Filter signals and args */
-enum {
+enum
+{
/* FILL ME */
CUT_START,
CUT_STOP,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_THRESHOLD,
ARG_THRESHOLD_DB,
@@ -51,52 +53,43 @@ enum {
ARG_LEAKY
};
-static GstStaticPadTemplate cutter_src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- GST_AUDIO_INT_PAD_TEMPLATE_CAPS "; "
- GST_AUDIO_FLOAT_PAD_TEMPLATE_CAPS
- )
-);
+static GstStaticPadTemplate cutter_src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS "; "
+ GST_AUDIO_FLOAT_PAD_TEMPLATE_CAPS)
+ );
static GstStaticPadTemplate cutter_sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- GST_AUDIO_INT_PAD_TEMPLATE_CAPS "; "
- GST_AUDIO_FLOAT_PAD_TEMPLATE_CAPS
- )
-);
-
-static void gst_cutter_base_init (gpointer g_class);
-static void gst_cutter_class_init (GstCutterClass *klass);
-static void gst_cutter_init (GstCutter *filter);
-
-static void gst_cutter_set_property (GObject *object, guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_cutter_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
-
-static void gst_cutter_chain (GstPad *pad, GstData *_data);
-static double
-inline gst_cutter_16bit_ms (gint16* data, guint numsamples);
-static double
-inline gst_cutter_8bit_ms (gint8* data, guint numsamples);
-
-void gst_cutter_get_caps (GstPad *pad, GstCutter* filter);
+ GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS "; "
+ GST_AUDIO_FLOAT_PAD_TEMPLATE_CAPS)
+ );
+
+static void gst_cutter_base_init (gpointer g_class);
+static void gst_cutter_class_init (GstCutterClass * klass);
+static void gst_cutter_init (GstCutter * filter);
+
+static void gst_cutter_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_cutter_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+
+static void gst_cutter_chain (GstPad * pad, GstData * _data);
+static double inline gst_cutter_16bit_ms (gint16 * data, guint numsamples);
+static double inline gst_cutter_8bit_ms (gint8 * data, guint numsamples);
+
+void gst_cutter_get_caps (GstPad * pad, GstCutter * filter);
static GstElementClass *parent_class = NULL;
static guint gst_cutter_signals[LAST_SIGNAL] = { 0 };
GType
-gst_cutter_get_type (void) {
+gst_cutter_get_type (void)
+{
static GType cutter_type = 0;
if (!cutter_type) {
@@ -109,7 +102,7 @@ gst_cutter_get_type (void) {
(GInstanceInitFunc) gst_cutter_init,
};
cutter_type = g_type_register_static (GST_TYPE_ELEMENT, "GstCutter",
- &cutter_info, 0);
+ &cutter_info, 0);
}
return cutter_type;
}
@@ -119,13 +112,15 @@ gst_cutter_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&cutter_src_factory));
- gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&cutter_sink_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&cutter_src_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&cutter_sink_factory));
gst_element_class_set_details (element_class, &cutter_details);
}
static GstPadLinkReturn
-gst_cutter_link (GstPad *pad, const GstCaps*caps)
+gst_cutter_link (GstPad * pad, const GstCaps * caps)
{
GstCutter *filter;
GstPad *otherpad;
@@ -139,46 +134,46 @@ gst_cutter_link (GstPad *pad, const GstCaps*caps)
}
static void
-gst_cutter_class_init (GstCutterClass *klass)
+gst_cutter_class_init (GstCutterClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*) klass;
- gstelement_class = (GstElementClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_THRESHOLD,
- g_param_spec_double ("threshold", "Threshold",
- "Volume threshold before trigger",
- -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE));
+ g_param_spec_double ("threshold", "Threshold",
+ "Volume threshold before trigger",
+ -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_THRESHOLD_DB,
- g_param_spec_double ("threshold_dB", "Threshold (dB)",
- "Volume threshold before trigger (in dB)",
- -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE));
+ g_param_spec_double ("threshold_dB", "Threshold (dB)",
+ "Volume threshold before trigger (in dB)",
+ -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_RUN_LENGTH,
- g_param_spec_double ("runlength", "Runlength",
- "Length of drop below threshold before cut_stop (seconds)",
- 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE));
+ g_param_spec_double ("runlength", "Runlength",
+ "Length of drop below threshold before cut_stop (seconds)",
+ 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PRE_LENGTH,
- g_param_spec_double ("prelength", "prelength",
- "Length of pre-recording buffer (seconds)",
- 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE));
+ g_param_spec_double ("prelength", "prelength",
+ "Length of pre-recording buffer (seconds)",
+ 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LEAKY,
- g_param_spec_boolean ("leaky", "Leaky",
- "do we leak buffers when below threshold ?",
- FALSE, G_PARAM_READWRITE));
+ g_param_spec_boolean ("leaky", "Leaky",
+ "do we leak buffers when below threshold ?",
+ FALSE, G_PARAM_READWRITE));
gst_cutter_signals[CUT_START] =
- g_signal_new ("cut-start", G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (GstCutterClass, cut_start), NULL, NULL,
- g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+ g_signal_new ("cut-start", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GstCutterClass, cut_start), NULL, NULL,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
gst_cutter_signals[CUT_STOP] =
- g_signal_new ("cut-stop", G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (GstCutterClass, cut_stop), NULL, NULL,
- g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+ g_signal_new ("cut-stop", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GstCutterClass, cut_stop), NULL, NULL,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
gobject_class->set_property = gst_cutter_set_property;
@@ -186,12 +181,14 @@ gst_cutter_class_init (GstCutterClass *klass)
}
static void
-gst_cutter_init (GstCutter *filter)
+gst_cutter_init (GstCutter * filter)
{
- filter->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&cutter_sink_factory),"sink");
- filter->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&cutter_src_factory),"src");
+ filter->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&cutter_sink_factory), "sink");
+ filter->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&cutter_src_factory), "src");
filter->threshold_level = 0.1;
filter->threshold_length = 0.5;
@@ -208,19 +205,19 @@ gst_cutter_init (GstCutter *filter)
gst_pad_set_link_function (filter->sinkpad, gst_cutter_link);
gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
- /*gst_pad_set_link_function (filter->srcpad, gst_cutter_link);*/
+ /*gst_pad_set_link_function (filter->srcpad, gst_cutter_link); */
}
static void
-gst_cutter_chain (GstPad *pad, GstData *_data)
+gst_cutter_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstCutter *filter;
gint16 *in_data;
- double RMS = 0.0; /* RMS of signal in buffer */
- double ms = 0.0; /* mean square value of buffer */
- static gboolean silent_prev = FALSE; /* previous value of silent */
- GstBuffer *prebuf; /* pointer to a prebuffer element */
+ double RMS = 0.0; /* RMS of signal in buffer */
+ double ms = 0.0; /* mean square value of buffer */
+ static gboolean silent_prev = FALSE; /* previous value of silent */
+ GstBuffer *prebuf; /* pointer to a prebuffer element */
g_return_if_fail (pad != NULL);
g_return_if_fail (GST_IS_PAD (pad));
@@ -233,16 +230,14 @@ gst_cutter_chain (GstPad *pad, GstData *_data)
if (gst_audio_is_buffer_framed (pad, buf) == FALSE)
g_warning ("audio buffer is not framed !\n");
- if (!filter->have_caps) gst_cutter_get_caps (pad, filter);
+ if (!filter->have_caps)
+ gst_cutter_get_caps (pad, filter);
in_data = (gint16 *) GST_BUFFER_DATA (buf);
- GST_DEBUG (
- "length of prerec buffer: %.3f sec",
- filter->pre_run_length);
+ GST_DEBUG ("length of prerec buffer: %.3f sec", filter->pre_run_length);
/* calculate mean square value on buffer */
- switch (filter->width)
- {
+ switch (filter->width) {
case 16:
ms = gst_cutter_16bit_ms (in_data, GST_BUFFER_SIZE (buf) / 2);
break;
@@ -252,7 +247,7 @@ gst_cutter_chain (GstPad *pad, GstData *_data)
default:
/* this shouldn't happen */
g_print ("WARNING: no mean square function for width %d\n",
- filter->width);
+ filter->width);
break;
}
@@ -262,13 +257,11 @@ gst_cutter_chain (GstPad *pad, GstData *_data)
/* if RMS below threshold, add buffer length to silent run length count
* if not, reset
*/
- GST_DEBUG (
- "buffer stats: ms %f, RMS %f, audio length %f",
- ms, RMS, gst_audio_length (filter->srcpad, buf));
+ GST_DEBUG ("buffer stats: ms %f, RMS %f, audio length %f",
+ ms, RMS, gst_audio_length (filter->srcpad, buf));
if (RMS < filter->threshold_level)
filter->silent_run_length += gst_audio_length (filter->srcpad, buf);
- else
- {
+ else {
filter->silent_run_length = 0.0;
filter->silent = FALSE;
}
@@ -280,27 +273,21 @@ gst_cutter_chain (GstPad *pad, GstData *_data)
/* has the silent status changed ? if so, send right signal
* and, if from silent -> not silent, flush pre_record buffer
*/
- if (filter->silent != silent_prev)
- {
- if (filter->silent)
- {
+ if (filter->silent != silent_prev) {
+ if (filter->silent) {
/* g_print ("DEBUG: cutter: cut to here, turning off out\n"); */
g_signal_emit (G_OBJECT (filter), gst_cutter_signals[CUT_STOP], 0);
- }
- else
- {
+ } else {
gint count = 0;
+
/* g_print ("DEBUG: cutter: start from here, turning on out\n"); */
/* first of all, flush current buffer */
g_signal_emit (G_OBJECT (filter), gst_cutter_signals[CUT_START], 0);
- GST_DEBUG (
- "flushing buffer of length %.3f",
- filter->pre_run_length);
- while (filter->pre_buffer)
- {
- prebuf = (g_list_first (filter->pre_buffer))->data;
- filter->pre_buffer = g_list_remove (filter->pre_buffer, prebuf);
- gst_pad_push (filter->srcpad, GST_DATA (prebuf));
+ GST_DEBUG ("flushing buffer of length %.3f", filter->pre_run_length);
+ while (filter->pre_buffer) {
+ prebuf = (g_list_first (filter->pre_buffer))->data;
+ filter->pre_buffer = g_list_remove (filter->pre_buffer, prebuf);
+ gst_pad_push (filter->srcpad, GST_DATA (prebuf));
++count;
}
GST_DEBUG ("flushed %d buffers", count);
@@ -309,59 +296,50 @@ gst_cutter_chain (GstPad *pad, GstData *_data)
}
/* now check if we have to send the new buffer to the internal buffer cache
* or to the srcpad */
- if (filter->silent)
- {
- /* we ref it before putting it in the pre_buffer */
- /* FIXME: we shouldn't probably do this, because the buffer
- * arrives reffed already; the plugin should just push it
- * or unref it to make it disappear */
- /*
- gst_buffer_ref (buf);
- */
- filter->pre_buffer = g_list_append (filter->pre_buffer, buf);
- filter->pre_run_length += gst_audio_length (filter->srcpad, buf);
- while (filter->pre_run_length > filter->pre_length)
- {
- prebuf = (g_list_first (filter->pre_buffer))->data;
- g_assert (GST_IS_BUFFER (prebuf));
- filter->pre_buffer = g_list_remove (filter->pre_buffer, prebuf);
- filter->pre_run_length -= gst_audio_length (filter->srcpad, prebuf);
- /* only pass buffers if we don't leak */
- if (!filter->leaky)
- gst_pad_push (filter->srcpad, GST_DATA (prebuf));
- /* we unref it after getting it out of the pre_buffer */
- gst_buffer_unref (prebuf);
- }
- }
- else
+ if (filter->silent) {
+ /* we ref it before putting it in the pre_buffer */
+ /* FIXME: we shouldn't probably do this, because the buffer
+ * arrives reffed already; the plugin should just push it
+ * or unref it to make it disappear */
+ /*
+ gst_buffer_ref (buf);
+ */
+ filter->pre_buffer = g_list_append (filter->pre_buffer, buf);
+ filter->pre_run_length += gst_audio_length (filter->srcpad, buf);
+ while (filter->pre_run_length > filter->pre_length) {
+ prebuf = (g_list_first (filter->pre_buffer))->data;
+ g_assert (GST_IS_BUFFER (prebuf));
+ filter->pre_buffer = g_list_remove (filter->pre_buffer, prebuf);
+ filter->pre_run_length -= gst_audio_length (filter->srcpad, prebuf);
+ /* only pass buffers if we don't leak */
+ if (!filter->leaky)
+ gst_pad_push (filter->srcpad, GST_DATA (prebuf));
+ /* we unref it after getting it out of the pre_buffer */
+ gst_buffer_unref (prebuf);
+ }
+ } else
gst_pad_push (filter->srcpad, GST_DATA (buf));
}
static double inline
-gst_cutter_16bit_ms (gint16* data, guint num_samples)
+gst_cutter_16bit_ms (gint16 * data, guint num_samples)
#include "filter.func"
-
-static double inline
-gst_cutter_8bit_ms (gint8* data, guint num_samples)
+ static double inline gst_cutter_8bit_ms (gint8 * data, guint num_samples)
#include "filter.func"
-
-static void
-gst_cutter_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
+ static void
+ gst_cutter_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstCutter *filter;
g_return_if_fail (GST_IS_CUTTER (object));
filter = GST_CUTTER (object);
- switch (prop_id)
- {
+ switch (prop_id) {
case ARG_THRESHOLD:
- /* set the level */
+ /* set the level */
filter->threshold_level = g_value_get_double (value);
- GST_DEBUG (
- "DEBUG: set threshold level to %f",
- filter->threshold_level);
+ GST_DEBUG ("DEBUG: set threshold level to %f", filter->threshold_level);
break;
case ARG_THRESHOLD_DB:
/* set the level given in dB
@@ -369,9 +347,7 @@ gst_cutter_set_property (GObject *object, guint prop_id,
* values in dB < 0 result in values between 0 and 1
*/
filter->threshold_level = pow (10, g_value_get_double (value) / 20);
- GST_DEBUG (
- "DEBUG: set threshold level to %f",
- filter->threshold_level);
+ GST_DEBUG ("DEBUG: set threshold level to %f", filter->threshold_level);
break;
case ARG_RUN_LENGTH:
/* set the minimum length of the silent run required */
@@ -392,25 +368,24 @@ gst_cutter_set_property (GObject *object, guint prop_id,
}
static void
-gst_cutter_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
+gst_cutter_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
{
GstCutter *filter;
g_return_if_fail (GST_IS_CUTTER (object));
filter = GST_CUTTER (object);
- switch (prop_id)
- {
+ switch (prop_id) {
case ARG_RUN_LENGTH:
- g_value_set_double (value, filter->threshold_length);
- break;
+ g_value_set_double (value, filter->threshold_length);
+ break;
case ARG_THRESHOLD:
- g_value_set_double (value, filter->threshold_level);
- break;
+ g_value_set_double (value, filter->threshold_level);
+ break;
case ARG_THRESHOLD_DB:
- g_value_set_double (value, 20 * log (filter->threshold_level));
- break;
+ g_value_set_double (value, 20 * log (filter->threshold_level));
+ break;
case ARG_PRE_LENGTH:
g_value_set_double (value, filter->pre_length);
break;
@@ -424,9 +399,9 @@ gst_cutter_get_property (GObject *object, guint prop_id,
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- /* load audio support library */
+ /* load audio support library */
if (!gst_library_load ("gstaudio"))
return FALSE;
@@ -436,25 +411,19 @@ plugin_init (GstPlugin *plugin)
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "cutter",
- "Audio Cutter to split audio into non-silent bits",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
-
-void
-gst_cutter_get_caps (GstPad *pad, GstCutter* filter)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "cutter",
+ "Audio Cutter to split audio into non-silent bits",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
+
+ void gst_cutter_get_caps (GstPad * pad, GstCutter * filter)
{
const GstCaps *caps = NULL;
GstStructure *structure;
caps = GST_PAD_CAPS (pad);
- /* FIXME : Please change this to a better warning method ! */
+ /* FIXME : Please change this to a better warning method ! */
g_assert (caps != NULL);
if (caps == NULL)
printf ("WARNING: get_caps: Could not get caps of pad !\n");
@@ -463,4 +432,3 @@ gst_cutter_get_caps (GstPad *pad, GstCutter* filter)
filter->max_sample = gst_audio_highest_sample_value (pad);
filter->have_caps = TRUE;
}
-
diff --git a/gst/cutter/gstcutter.h b/gst/cutter/gstcutter.h
index 84166636..e1ed9976 100644
--- a/gst/cutter/gstcutter.h
+++ b/gst/cutter/gstcutter.h
@@ -27,8 +27,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_CUTTER \
@@ -42,44 +43,44 @@ extern "C" {
#define GST_IS_CUTTER_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CUTTER))
-typedef struct _GstCutter GstCutter;
-typedef struct _GstCutterClass GstCutterClass;
+ typedef struct _GstCutter GstCutter;
+ typedef struct _GstCutterClass GstCutterClass;
-struct _GstCutter
-{
- GstElement element;
+ struct _GstCutter
+ {
+ GstElement element;
- GstPad *sinkpad, *srcpad;
+ GstPad *sinkpad, *srcpad;
- double threshold_level; /* level below which to cut */
- double threshold_length; /* how long signal has to remain
+ double threshold_level; /* level below which to cut */
+ double threshold_length; /* how long signal has to remain
* below this level before cutting */
- double silent_run_length; /* how long has it been below threshold ? */
- gboolean silent;
+ double silent_run_length; /* how long has it been below threshold ? */
+ gboolean silent;
- double pre_length; /* how long can the pre-record buffer be ? */
- double pre_run_length; /* how long is it currently ? */
- GList *pre_buffer; /* list of GstBuffers in pre-record buffer */
- gboolean leaky; /* do we leak an overflowing prebuffer ? */
+ double pre_length; /* how long can the pre-record buffer be ? */
+ double pre_run_length; /* how long is it currently ? */
+ GList *pre_buffer; /* list of GstBuffers in pre-record buffer */
+ gboolean leaky; /* do we leak an overflowing prebuffer ? */
- gboolean have_caps; /* did we get the needed caps yet ? */
- gint width; /* bit width of data */
- long max_sample; /* maximum sample value */
-};
+ gboolean have_caps; /* did we get the needed caps yet ? */
+ gint width; /* bit width of data */
+ long max_sample; /* maximum sample value */
+ };
-struct _GstCutterClass
-{
- GstElementClass parent_class;
- void (*cut_start) (GstCutter* filter);
- void (*cut_stop) (GstCutter* filter);
-};
+ struct _GstCutterClass
+ {
+ GstElementClass parent_class;
+ void (*cut_start) (GstCutter * filter);
+ void (*cut_stop) (GstCutter * filter);
+ };
-GType gst_cutter_get_type (void);
+ GType gst_cutter_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_STEREO_H__ */
+#endif /* __GST_STEREO_H__ */
diff --git a/gst/debug/efence.c b/gst/debug/efence.c
index 571ab178..f6e576e3 100644
--- a/gst/debug/efence.c
+++ b/gst/debug/efence.c
@@ -43,79 +43,75 @@ static GstElementDetails plugin_details = {
"Electric Fence",
"Testing/EFence",
"This element converts a stream of normal GStreamer buffers into a "
-"stream of buffers that are allocated in such a way that out-of-bounds "
-"access to data in the buffer is more likely to cause segmentation "
-"faults. This allocation method is very similar to the debugging tool "
-"\"Electric Fence\".",
+ "stream of buffers that are allocated in such a way that out-of-bounds "
+ "access to data in the buffer is more likely to cause segmentation "
+ "faults. This allocation method is very similar to the debugging tool "
+ "\"Electric Fence\".",
"David A. Schleef <ds@schleef.org>",
};
/* Filter signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_FENCE_TOP
};
static GstStaticPadTemplate gst_efence_sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY
-);
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
static GstStaticPadTemplate gst_efence_src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY
-);
-
-static void gst_efence_base_init (gpointer g_class);
-static void gst_efence_class_init (GstEFenceClass *klass);
-static void gst_efence_init (GstEFence *filter);
-
-static void gst_efence_set_property(GObject *object, guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_efence_get_property(GObject *object, guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-static void gst_efence_chain (GstPad *pad, GstData *_data);
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+static void gst_efence_base_init (gpointer g_class);
+static void gst_efence_class_init (GstEFenceClass * klass);
+static void gst_efence_init (GstEFence * filter);
+
+static void gst_efence_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_efence_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+
+static void gst_efence_chain (GstPad * pad, GstData * _data);
static GstElementClass *parent_class = NULL;
typedef struct _GstFencedBuffer GstFencedBuffer;
-struct _GstFencedBuffer {
+struct _GstFencedBuffer
+{
GstBuffer buffer;
void *region;
unsigned int length;
};
-void gst_fenced_buffer_default_free (GstData *data);
-GstData * gst_fenced_buffer_default_copy (const GstData *data);
-void *gst_fenced_buffer_alloc(GstBuffer *buffer, unsigned int length,
+void gst_fenced_buffer_default_free (GstData * data);
+GstData *gst_fenced_buffer_default_copy (const GstData * data);
+void *gst_fenced_buffer_alloc (GstBuffer * buffer, unsigned int length,
gboolean fence_top);
-static GstBuffer * gst_efence_buffer_alloc (GstPad *pad, guint64 offset, guint size);
+static GstBuffer *gst_efence_buffer_alloc (GstPad * pad, guint64 offset,
+ guint size);
-GstBuffer *gst_fenced_buffer_new(void);
+GstBuffer *gst_fenced_buffer_new (void);
GType
gst_gst_efence_get_type (void)
{
static GType plugin_type = 0;
- if (!plugin_type)
- {
- static const GTypeInfo plugin_info =
- {
+ if (!plugin_type) {
+ static const GTypeInfo plugin_info = {
sizeof (GstEFenceClass),
gst_efence_base_init,
NULL,
@@ -127,8 +123,7 @@ gst_gst_efence_get_type (void)
(GInstanceInitFunc) gst_efence_init,
};
plugin_type = g_type_register_static (GST_TYPE_ELEMENT,
- "GstEFence",
- &plugin_info, 0);
+ "GstEFence", &plugin_info, 0);
}
return plugin_type;
}
@@ -139,27 +134,27 @@ gst_efence_base_init (gpointer g_class)
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get(&gst_efence_sink_factory));
+ gst_static_pad_template_get (&gst_efence_sink_factory));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get(&gst_efence_src_factory));
+ gst_static_pad_template_get (&gst_efence_src_factory));
gst_element_class_set_details (element_class, &plugin_details);
}
/* initialize the plugin's class */
static void
-gst_efence_class_init (GstEFenceClass *klass)
+gst_efence_class_init (GstEFenceClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*) klass;
- gstelement_class = (GstElementClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (gobject_class, ARG_FENCE_TOP,
- g_param_spec_boolean ("fence_top", "Fence Top", "Align buffers with top of fenced region",
- TRUE, G_PARAM_READWRITE));
+ g_param_spec_boolean ("fence_top", "Fence Top",
+ "Align buffers with top of fenced region", TRUE, G_PARAM_READWRITE));
gobject_class->set_property = gst_efence_set_property;
gobject_class->get_property = gst_efence_get_property;
@@ -171,14 +166,16 @@ gst_efence_class_init (GstEFenceClass *klass)
* initialize structure
*/
static void
-gst_efence_init (GstEFence *filter)
+gst_efence_init (GstEFence * filter)
{
- filter->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_efence_sink_factory), "sink");
+ filter->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_efence_sink_factory), "sink");
gst_pad_set_getcaps_function (filter->sinkpad, gst_pad_proxy_getcaps);
gst_pad_set_link_function (filter->sinkpad, gst_pad_proxy_pad_link);
- filter->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_efence_src_factory), "src");
+ filter->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_efence_src_factory), "src");
gst_pad_set_getcaps_function (filter->srcpad, gst_pad_proxy_getcaps);
gst_pad_set_link_function (filter->srcpad, gst_pad_proxy_pad_link);
@@ -195,7 +192,7 @@ gst_efence_init (GstEFence *filter)
*/
static void
-gst_efence_chain (GstPad *pad, GstData *_data)
+gst_efence_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buffer = GST_BUFFER (_data);
GstEFence *efence;
@@ -215,27 +212,27 @@ gst_efence_chain (GstPad *pad, GstData *_data)
return;
}
- copy = gst_fenced_buffer_new();
+ copy = gst_fenced_buffer_new ();
- ptr = gst_fenced_buffer_alloc(copy, GST_BUFFER_SIZE(buffer),
+ ptr = gst_fenced_buffer_alloc (copy, GST_BUFFER_SIZE (buffer),
efence->fence_top);
- memcpy(ptr, GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer));
-
- GST_BUFFER_DATA (copy) = ptr;
- GST_BUFFER_SIZE (copy) = GST_BUFFER_SIZE (buffer);
- GST_BUFFER_MAXSIZE (copy) = GST_BUFFER_SIZE (buffer);
- GST_BUFFER_TIMESTAMP (copy) = GST_BUFFER_TIMESTAMP (buffer);
- GST_BUFFER_DURATION (copy) = GST_BUFFER_DURATION (buffer);
- GST_BUFFER_OFFSET (copy) = GST_BUFFER_OFFSET (buffer);
+ memcpy (ptr, GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer));
+
+ GST_BUFFER_DATA (copy) = ptr;
+ GST_BUFFER_SIZE (copy) = GST_BUFFER_SIZE (buffer);
+ GST_BUFFER_MAXSIZE (copy) = GST_BUFFER_SIZE (buffer);
+ GST_BUFFER_TIMESTAMP (copy) = GST_BUFFER_TIMESTAMP (buffer);
+ GST_BUFFER_DURATION (copy) = GST_BUFFER_DURATION (buffer);
+ GST_BUFFER_OFFSET (copy) = GST_BUFFER_OFFSET (buffer);
GST_BUFFER_FREE_DATA_FUNC (copy) = NULL;
- GST_BUFFER_PRIVATE (copy) = NULL;
+ GST_BUFFER_PRIVATE (copy) = NULL;
- gst_buffer_unref(buffer);
+ gst_buffer_unref (buffer);
gst_pad_push (efence->srcpad, GST_DATA (copy));
}
static GstBuffer *
-gst_efence_buffer_alloc (GstPad *pad, guint64 offset, guint size)
+gst_efence_buffer_alloc (GstPad * pad, guint64 offset, guint size)
{
GstBuffer *buffer;
GstEFence *efence;
@@ -244,7 +241,7 @@ gst_efence_buffer_alloc (GstPad *pad, guint64 offset, guint size)
buffer = gst_fenced_buffer_new ();
- GST_BUFFER_DATA (buffer) = gst_fenced_buffer_alloc(buffer, size,
+ GST_BUFFER_DATA (buffer) = gst_fenced_buffer_alloc (buffer, size,
efence->fence_top);
GST_BUFFER_SIZE (buffer) = size;
@@ -252,28 +249,27 @@ gst_efence_buffer_alloc (GstPad *pad, guint64 offset, guint size)
}
static void
-gst_efence_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
+gst_efence_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstEFence *filter;
g_return_if_fail (GST_IS_EFENCE (object));
filter = GST_EFENCE (object);
- switch (prop_id)
- {
- case ARG_FENCE_TOP:
- filter->fence_top = g_value_get_boolean (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
+ switch (prop_id) {
+ case ARG_FENCE_TOP:
+ filter->fence_top = g_value_get_boolean (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
}
}
static void
-gst_efence_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
+gst_efence_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
{
GstEFence *filter;
@@ -281,12 +277,12 @@ gst_efence_get_property (GObject *object, guint prop_id,
filter = GST_EFENCE (object);
switch (prop_id) {
- case ARG_FENCE_TOP:
- g_value_set_boolean (value, filter->fence_top);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
+ case ARG_FENCE_TOP:
+ g_value_set_boolean (value, filter->fence_top);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
}
}
@@ -296,55 +292,50 @@ gst_efence_get_property (GObject *object, guint prop_id,
* register the features
*/
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_element_register (plugin, "efence", GST_RANK_NONE, GST_TYPE_EFENCE))
return FALSE;
-
+
/* plugin initialisation succeeded */
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "efence",
- "This element converts a stream of normal GStreamer buffers into a "
- "stream of buffers that are allocated in such a way that out-of-bounds "
- "access to data in the buffer is more likely to cause segmentation "
- "faults. This allocation method is very similar to the debugging tool "
- "\"Electric Fence\".",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
-
-GstBuffer *gst_fenced_buffer_new(void)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "efence",
+ "This element converts a stream of normal GStreamer buffers into a "
+ "stream of buffers that are allocated in such a way that out-of-bounds "
+ "access to data in the buffer is more likely to cause segmentation "
+ "faults. This allocation method is very similar to the debugging tool "
+ "\"Electric Fence\".",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
+
+ GstBuffer *gst_fenced_buffer_new (void)
{
GstBuffer *newbuf;
- newbuf = (GstBuffer *) g_new0(GstFencedBuffer,1);
+ newbuf = (GstBuffer *) g_new0 (GstFencedBuffer, 1);
gst_data_init (GST_DATA (newbuf), _gst_buffer_type, 0,
- gst_fenced_buffer_default_free,
- gst_fenced_buffer_default_copy);
-
- GST_BUFFER_DATA (newbuf) = NULL;
- GST_BUFFER_SIZE (newbuf) = 0;
- GST_BUFFER_MAXSIZE (newbuf) = GST_BUFFER_MAXSIZE_NONE;
- GST_BUFFER_TIMESTAMP (newbuf) = GST_CLOCK_TIME_NONE;
- GST_BUFFER_DURATION (newbuf) = GST_CLOCK_TIME_NONE;
- GST_BUFFER_OFFSET (newbuf) = GST_BUFFER_OFFSET_NONE;
+ gst_fenced_buffer_default_free, gst_fenced_buffer_default_copy);
+
+ GST_BUFFER_DATA (newbuf) = NULL;
+ GST_BUFFER_SIZE (newbuf) = 0;
+ GST_BUFFER_MAXSIZE (newbuf) = GST_BUFFER_MAXSIZE_NONE;
+ GST_BUFFER_TIMESTAMP (newbuf) = GST_CLOCK_TIME_NONE;
+ GST_BUFFER_DURATION (newbuf) = GST_CLOCK_TIME_NONE;
+ GST_BUFFER_OFFSET (newbuf) = GST_BUFFER_OFFSET_NONE;
GST_BUFFER_FREE_DATA_FUNC (newbuf) = NULL;
- GST_BUFFER_PRIVATE (newbuf) = NULL;
+ GST_BUFFER_PRIVATE (newbuf) = NULL;
GST_DEBUG ("new buffer=%p", newbuf);
return newbuf;
}
-void gst_fenced_buffer_default_free (GstData *data)
+void
+gst_fenced_buffer_default_free (GstData * data)
{
GstFencedBuffer *fenced_buffer;
GstBuffer *buffer = GST_BUFFER (data);
@@ -360,51 +351,52 @@ void gst_fenced_buffer_default_free (GstData *data)
GST_BUFFER_DATA (buffer)) {
GST_DEBUG ("free region %p %d", fenced_buffer->region,
fenced_buffer->length);
- munmap(fenced_buffer->region, fenced_buffer->length);
- }else{
+ munmap (fenced_buffer->region, fenced_buffer->length);
+ } else {
GST_DEBUG ("not freeing region %p %d %p", fenced_buffer->region,
- GST_BUFFER_FLAGS(buffer), GST_BUFFER_DATA(buffer));
+ GST_BUFFER_FLAGS (buffer), GST_BUFFER_DATA (buffer));
}
/* set to safe values */
GST_BUFFER_DATA (buffer) = NULL;
GST_BUFFER_SIZE (buffer) = 0;
-
+
g_free (buffer);
}
-GstData* gst_fenced_buffer_default_copy (const GstData *data)
-{
+GstData *
+gst_fenced_buffer_default_copy (const GstData * data)
+{
GstBuffer *buffer = GST_BUFFER (data);
GstData *copy;
void *ptr;
-
+
g_return_val_if_fail (buffer != NULL, NULL);
-
+
/* create a fresh new buffer */
- copy = (GstData *) g_new0(GstFencedBuffer,1);
-
+ copy = (GstData *) g_new0 (GstFencedBuffer, 1);
+
gst_data_init (copy, _gst_buffer_type, 0,
- gst_fenced_buffer_default_free,
- gst_fenced_buffer_default_copy);
-
+ gst_fenced_buffer_default_free, gst_fenced_buffer_default_copy);
+
/* we simply copy everything from our parent */
- ptr = gst_fenced_buffer_alloc(GST_BUFFER(copy),
- GST_BUFFER_SIZE(buffer), TRUE);
- memcpy(ptr, GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer));
-
- GST_BUFFER_SIZE (copy) = GST_BUFFER_SIZE (buffer);
- GST_BUFFER_MAXSIZE (copy) = GST_BUFFER_SIZE (buffer);
- GST_BUFFER_TIMESTAMP (copy) = GST_BUFFER_TIMESTAMP (buffer);
- GST_BUFFER_DURATION (copy) = GST_BUFFER_DURATION (buffer);
- GST_BUFFER_OFFSET (copy) = GST_BUFFER_OFFSET (buffer);
+ ptr = gst_fenced_buffer_alloc (GST_BUFFER (copy),
+ GST_BUFFER_SIZE (buffer), TRUE);
+ memcpy (ptr, GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer));
+
+ GST_BUFFER_SIZE (copy) = GST_BUFFER_SIZE (buffer);
+ GST_BUFFER_MAXSIZE (copy) = GST_BUFFER_SIZE (buffer);
+ GST_BUFFER_TIMESTAMP (copy) = GST_BUFFER_TIMESTAMP (buffer);
+ GST_BUFFER_DURATION (copy) = GST_BUFFER_DURATION (buffer);
+ GST_BUFFER_OFFSET (copy) = GST_BUFFER_OFFSET (buffer);
GST_BUFFER_FREE_DATA_FUNC (copy) = NULL;
- GST_BUFFER_PRIVATE (copy) = NULL;
-
+ GST_BUFFER_PRIVATE (copy) = NULL;
+
return copy;
}
-void *gst_fenced_buffer_alloc(GstBuffer *buffer, unsigned int length,
+void *
+gst_fenced_buffer_alloc (GstBuffer * buffer, unsigned int length,
gboolean fence_top)
{
int alloc_size;
@@ -414,41 +406,41 @@ void *gst_fenced_buffer_alloc(GstBuffer *buffer, unsigned int length,
GST_DEBUG ("buffer=%p length=%d fence_top=%d", buffer, length, fence_top);
- if(length==0)return NULL;
+ if (length == 0)
+ return NULL;
#ifdef _SC_PAGESIZE
- page_size = sysconf(_SC_PAGESIZE);
+ page_size = sysconf (_SC_PAGESIZE);
#else
- page_size = getpagesize();
+ page_size = getpagesize ();
#endif
alloc_size = ((length - 1) & ~(page_size - 1)) + page_size;
- alloc_size += 2*page_size;
+ alloc_size += 2 * page_size;
- region = mmap(NULL, alloc_size, PROT_READ|PROT_WRITE,
+ region = mmap (NULL, alloc_size, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- if(region == MAP_FAILED){
- g_warning("mmap failed");
+ if (region == MAP_FAILED) {
+ g_warning ("mmap failed");
return NULL;
}
- munmap(region, page_size);
- munmap(region + alloc_size - page_size, page_size);
+ munmap (region, page_size);
+ munmap (region + alloc_size - page_size, page_size);
fenced_buffer->region = region;
fenced_buffer->length = alloc_size;
- GST_DEBUG ("new region %p %d", fenced_buffer->region,
- fenced_buffer->length);
-
- if(fence_top){
+ GST_DEBUG ("new region %p %d", fenced_buffer->region, fenced_buffer->length);
+
+ if (fence_top) {
int offset;
+
/* Align to top of region, but force alignment to 4 bytes */
offset = alloc_size - page_size - length;
offset &= ~0x3;
return region + offset;
- }else{
+ } else {
return region + page_size;
}
}
-
diff --git a/gst/debug/efence.h b/gst/debug/efence.h
index bf0790dd..8447e848 100644
--- a/gst/debug/efence.h
+++ b/gst/debug/efence.h
@@ -8,8 +8,9 @@
#include <gst/gst.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
/* #define's don't like whitespacey bits */
#define GST_TYPE_EFENCE \
@@ -23,27 +24,27 @@ extern "C" {
#define GST_IS_EFENCE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_EFENCE))
-typedef struct _GstEFence GstEFence;
-typedef struct _GstEFenceClass GstEFenceClass;
+ typedef struct _GstEFence GstEFence;
+ typedef struct _GstEFenceClass GstEFenceClass;
-struct _GstEFence
-{
- GstElement element;
+ struct _GstEFence
+ {
+ GstElement element;
- GstPad *sinkpad, *srcpad;
+ GstPad *sinkpad, *srcpad;
- gboolean fence_top;
-};
+ gboolean fence_top;
+ };
-struct _GstEFenceClass
-{
- GstElementClass parent_class;
-};
+ struct _GstEFenceClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_gst_efence_get_type (void);
+ GType gst_gst_efence_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_EFENCE_H__ */
+#endif /* __GST_EFENCE_H__ */
diff --git a/gst/debug/gstnavigationtest.c b/gst/debug/gstnavigationtest.c
index 0dad689b..e1b7486f 100644
--- a/gst/debug/gstnavigationtest.c
+++ b/gst/debug/gstnavigationtest.c
@@ -33,26 +33,34 @@
#include <math.h>
/* GstNavigationtest signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static void gst_navigationtest_base_init (gpointer g_class);
-static void gst_navigationtest_class_init (gpointer g_class, gpointer class_data);
-static void gst_navigationtest_init (GTypeInstance *instance, gpointer g_class);
+static void gst_navigationtest_base_init (gpointer g_class);
+static void gst_navigationtest_class_init (gpointer g_class,
+ gpointer class_data);
+static void gst_navigationtest_init (GTypeInstance * instance,
+ gpointer g_class);
-static gboolean gst_navigationtest_handle_src_event (GstPad *pad, GstEvent *event);
-static void gst_navigationtest_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_navigationtest_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static gboolean gst_navigationtest_handle_src_event (GstPad * pad,
+ GstEvent * event);
+static void gst_navigationtest_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_navigationtest_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_navigationtest_planar411(GstVideofilter *videofilter, void *dest, void *src);
-static void gst_navigationtest_setup(GstVideofilter *videofilter);
+static void gst_navigationtest_planar411 (GstVideofilter * videofilter,
+ void *dest, void *src);
+static void gst_navigationtest_setup (GstVideofilter * videofilter);
GType
gst_navigationtest_get_type (void)
@@ -61,44 +69,43 @@ gst_navigationtest_get_type (void)
if (!navigationtest_type) {
static const GTypeInfo navigationtest_info = {
- sizeof(GstNavigationtestClass),
+ sizeof (GstNavigationtestClass),
gst_navigationtest_base_init,
NULL,
gst_navigationtest_class_init,
NULL,
NULL,
- sizeof(GstNavigationtest),
+ sizeof (GstNavigationtest),
0,
gst_navigationtest_init,
};
- navigationtest_type = g_type_register_static(GST_TYPE_VIDEOFILTER,
- "GstNavigationtest", &navigationtest_info, 0);
+ navigationtest_type = g_type_register_static (GST_TYPE_VIDEOFILTER,
+ "GstNavigationtest", &navigationtest_info, 0);
}
return navigationtest_type;
}
static GstVideofilterFormat gst_navigationtest_formats[] = {
- { "I420", 12, gst_navigationtest_planar411, },
+ {"I420", 12, gst_navigationtest_planar411,},
};
-
+
static void
gst_navigationtest_base_init (gpointer g_class)
{
- static GstElementDetails navigationtest_details = GST_ELEMENT_DETAILS (
- "Video Filter Template",
- "Filter/Video",
- "Template for a video filter",
- "David Schleef <ds@schleef.org>"
- );
+ static GstElementDetails navigationtest_details =
+ GST_ELEMENT_DETAILS ("Video Filter Template",
+ "Filter/Video",
+ "Template for a video filter",
+ "David Schleef <ds@schleef.org>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &navigationtest_details);
- for(i=0;i<G_N_ELEMENTS(gst_navigationtest_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_navigationtest_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_navigationtest_formats + i);
}
@@ -115,10 +122,10 @@ gst_navigationtest_class_init (gpointer g_class, gpointer class_data)
videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
#if 0
- g_object_class_install_property(gobject_class, ARG_METHOD,
- g_param_spec_enum("method","method","method",
- GST_TYPE_NAVIGATIONTEST_METHOD, GST_NAVIGATIONTEST_METHOD_1,
- G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_METHOD,
+ g_param_spec_enum ("method", "method", "method",
+ GST_TYPE_NAVIGATIONTEST_METHOD, GST_NAVIGATIONTEST_METHOD_1,
+ G_PARAM_READWRITE));
#endif
gobject_class->set_property = gst_navigationtest_set_property;
@@ -128,14 +135,14 @@ gst_navigationtest_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_navigationtest_init (GTypeInstance *instance, gpointer g_class)
+gst_navigationtest_init (GTypeInstance * instance, gpointer g_class)
{
GstNavigationtest *navigationtest = GST_NAVIGATIONTEST (instance);
GstVideofilter *videofilter;
- GST_DEBUG("gst_navigationtest_init");
+ GST_DEBUG ("gst_navigationtest_init");
- videofilter = GST_VIDEOFILTER(navigationtest);
+ videofilter = GST_VIDEOFILTER (navigationtest);
gst_pad_set_event_function (videofilter->srcpad,
gst_navigationtest_handle_src_event);
@@ -145,7 +152,7 @@ gst_navigationtest_init (GTypeInstance *instance, gpointer g_class)
}
static gboolean
-gst_navigationtest_handle_src_event (GstPad *pad, GstEvent *event)
+gst_navigationtest_handle_src_event (GstPad * pad, GstEvent * event)
{
GstNavigationtest *navigationtest;
@@ -153,10 +160,10 @@ gst_navigationtest_handle_src_event (GstPad *pad, GstEvent *event)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_NAVIGATION:
- gst_structure_get_double(event->event_data.structure.structure,
- "pointer_x", &navigationtest->x);
- gst_structure_get_double(event->event_data.structure.structure,
- "pointer_y", &navigationtest->y);
+ gst_structure_get_double (event->event_data.structure.structure,
+ "pointer_x", &navigationtest->x);
+ gst_structure_get_double (event->event_data.structure.structure,
+ "pointer_y", &navigationtest->y);
break;
default:
break;
@@ -165,15 +172,16 @@ gst_navigationtest_handle_src_event (GstPad *pad, GstEvent *event)
}
static void
-gst_navigationtest_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_navigationtest_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstNavigationtest *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_NAVIGATIONTEST(object));
- src = GST_NAVIGATIONTEST(object);
+ g_return_if_fail (GST_IS_NAVIGATIONTEST (object));
+ src = GST_NAVIGATIONTEST (object);
- GST_DEBUG("gst_navigationtest_set_property");
+ GST_DEBUG ("gst_navigationtest_set_property");
switch (prop_id) {
#if 0
case ARG_METHOD:
@@ -186,13 +194,14 @@ gst_navigationtest_set_property (GObject *object, guint prop_id, const GValue *v
}
static void
-gst_navigationtest_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_navigationtest_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
{
GstNavigationtest *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_NAVIGATIONTEST(object));
- src = GST_NAVIGATIONTEST(object);
+ g_return_if_fail (GST_IS_NAVIGATIONTEST (object));
+ src = GST_NAVIGATIONTEST (object);
switch (prop_id) {
#if 0
@@ -206,89 +215,85 @@ gst_navigationtest_get_property (GObject *object, guint prop_id, GValue *value,
}
}
-static gboolean plugin_init (GstPlugin *plugin)
+static gboolean
+plugin_init (GstPlugin * plugin)
{
- if(!gst_library_load("gstvideofilter"))
+ if (!gst_library_load ("gstvideofilter"))
return FALSE;
return gst_element_register (plugin, "navigationtest", GST_RANK_NONE,
GST_TYPE_NAVIGATIONTEST);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "navigationtest",
- "Template for a video filter",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
-
-static void gst_navigationtest_setup(GstVideofilter *videofilter)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "navigationtest",
+ "Template for a video filter",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
+
+ static void gst_navigationtest_setup (GstVideofilter * videofilter)
{
GstNavigationtest *navigationtest;
- g_return_if_fail(GST_IS_NAVIGATIONTEST(videofilter));
- navigationtest = GST_NAVIGATIONTEST(videofilter);
+ g_return_if_fail (GST_IS_NAVIGATIONTEST (videofilter));
+ navigationtest = GST_NAVIGATIONTEST (videofilter);
/* if any setup needs to be done, do it here */
}
-static void gst_navigationtest_planar411(GstVideofilter *videofilter,
+static void
+gst_navigationtest_planar411 (GstVideofilter * videofilter,
void *dest, void *src)
{
GstNavigationtest *navigationtest;
- int width = gst_videofilter_get_input_width(videofilter);
- int height = gst_videofilter_get_input_height(videofilter);
- int x,y;
+ int width = gst_videofilter_get_input_width (videofilter);
+ int height = gst_videofilter_get_input_height (videofilter);
+ int x, y;
int x1, x2, y1, y2;
- g_return_if_fail(GST_IS_NAVIGATIONTEST(videofilter));
- navigationtest = GST_NAVIGATIONTEST(videofilter);
+ g_return_if_fail (GST_IS_NAVIGATIONTEST (videofilter));
+ navigationtest = GST_NAVIGATIONTEST (videofilter);
/* do something interesting here. This simply copies the source
* to the destination. */
- memcpy(dest,src,width * height + (width/2) * (height/2) * 2);
+ memcpy (dest, src, width * height + (width / 2) * (height / 2) * 2);
- x = rint(navigationtest->x);
- y = rint(navigationtest->y);
+ x = rint (navigationtest->x);
+ y = rint (navigationtest->y);
- if(x<0 || y<0 || x>=width || y>=height)return;
+ if (x < 0 || y < 0 || x >= width || y >= height)
+ return;
- x1 = MAX(x-5, 0);
- x2 = MIN(x+5, width);
- y1 = MAX(y-5, 0);
- y2 = MIN(y+5, height);
+ x1 = MAX (x - 5, 0);
+ x2 = MIN (x + 5, width);
+ y1 = MAX (y - 5, 0);
+ y2 = MIN (y + 5, height);
- for(y=y1;y<y2;y++){
- for(x=x1;x<x2;x++){
- ((guint8 *)dest)[y*width + x] = 0;
+ for (y = y1; y < y2; y++) {
+ for (x = x1; x < x2; x++) {
+ ((guint8 *) dest)[y * width + x] = 0;
}
}
- dest += height*width;
+ dest += height * width;
width /= 2;
height /= 2;
x1 /= 2;
x2 /= 2;
y1 /= 2;
y2 /= 2;
- for(y=y1;y<y2;y++){
- for(x=x1;x<x2;x++){
- ((guint8 *)dest)[y*width + x] = 128;
+ for (y = y1; y < y2; y++) {
+ for (x = x1; x < x2; x++) {
+ ((guint8 *) dest)[y * width + x] = 128;
}
}
- dest += height*width;
- for(y=y1;y<y2;y++){
- for(x=x1;x<x2;x++){
- ((guint8 *)dest)[y*width + x] = 128;
+ dest += height * width;
+ for (y = y1; y < y2; y++) {
+ for (x = x1; x < x2; x++) {
+ ((guint8 *) dest)[y * width + x] = 128;
}
}
}
-
diff --git a/gst/debug/gstnavigationtest.h b/gst/debug/gstnavigationtest.h
index 61798c93..00d3e6d1 100644
--- a/gst/debug/gstnavigationtest.h
+++ b/gst/debug/gstnavigationtest.h
@@ -28,7 +28,6 @@
G_BEGIN_DECLS
-
#define GST_TYPE_NAVIGATIONTEST \
(gst_navigationtest_get_type())
#define GST_NAVIGATIONTEST(obj) \
@@ -39,24 +38,23 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_NAVIGATIONTEST))
#define GST_IS_NAVIGATIONTEST_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NAVIGATIONTEST))
-
typedef struct _GstNavigationtest GstNavigationtest;
typedef struct _GstNavigationtestClass GstNavigationtestClass;
-struct _GstNavigationtest {
+struct _GstNavigationtest
+{
GstVideofilter videofilter;
double x;
double y;
};
-struct _GstNavigationtestClass {
+struct _GstNavigationtestClass
+{
GstVideofilterClass parent_class;
};
-GType gst_navigationtest_get_type(void);
+GType gst_navigationtest_get_type (void);
G_END_DECLS
-
#endif /* __GST_NAVIGATIONTEST_H__ */
-
diff --git a/gst/effectv/gstaging.c b/gst/effectv/gstaging.c
index b6739f42..44683546 100644
--- a/gst/effectv/gstaging.c
+++ b/gst/effectv/gstaging.c
@@ -62,13 +62,14 @@ typedef struct _scratch
gint init;
} scratch;
-static int dx[8] = { 1, 1, 0, -1, -1, -1, 0, 1};
-static int dy[8] = { 0, -1, -1, -1, 0, 1, 1, 1};
+static int dx[8] = { 1, 1, 0, -1, -1, -1, 0, 1 };
+static int dy[8] = { 0, -1, -1, -1, 0, 1, 1, 1 };
typedef struct _GstAgingTV GstAgingTV;
typedef struct _GstAgingTVClass GstAgingTVClass;
-struct _GstAgingTV {
+struct _GstAgingTV
+{
GstVideofilter videofilter;
gint width, height;
@@ -82,29 +83,34 @@ struct _GstAgingTV {
};
-struct _GstAgingTVClass {
+struct _GstAgingTVClass
+{
GstVideofilterClass parent_class;
};
/* GstAgingTV signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static void gst_agingtv_base_init (gpointer g_class);
-static void gst_agingtv_class_init (gpointer g_class, gpointer class_data);
-static void gst_agingtv_init (GTypeInstance *instance, gpointer g_class);
-static void gst_agingtv_setup (GstVideofilter *videofilter);
+static void gst_agingtv_base_init (gpointer g_class);
+static void gst_agingtv_class_init (gpointer g_class, gpointer class_data);
+static void gst_agingtv_init (GTypeInstance * instance, gpointer g_class);
+static void gst_agingtv_setup (GstVideofilter * videofilter);
-static void gst_agingtv_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_agingtv_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-static void gst_agingtv_rgb32 (GstVideofilter *videofilter, void *d, void *s);
+static void gst_agingtv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_agingtv_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_agingtv_rgb32 (GstVideofilter * videofilter, void *d, void *s);
GType
gst_agingtv_get_type (void)
@@ -113,43 +119,42 @@ gst_agingtv_get_type (void)
if (!agingtv_type) {
static const GTypeInfo agingtv_info = {
- sizeof(GstAgingTVClass),
+ sizeof (GstAgingTVClass),
gst_agingtv_base_init,
NULL,
gst_agingtv_class_init,
NULL,
NULL,
- sizeof(GstAgingTV),
+ sizeof (GstAgingTV),
0,
gst_agingtv_init,
};
- agingtv_type = g_type_register_static(GST_TYPE_VIDEOFILTER,
- "GstAgingTV", &agingtv_info, 0);
+ agingtv_type = g_type_register_static (GST_TYPE_VIDEOFILTER,
+ "GstAgingTV", &agingtv_info, 0);
}
return agingtv_type;
}
static GstVideofilterFormat gst_agingtv_formats[] = {
- { "RGB ", 32, gst_agingtv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000, 0xff000000 }
+ {"RGB ", 32, gst_agingtv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000,
+ 0xff000000}
};
-
+
static void
gst_agingtv_base_init (gpointer g_class)
{
- static GstElementDetails agingtv_details = GST_ELEMENT_DETAILS (
- "AgingTV",
- "Filter/Effect/Video",
- "AgingTV adds age to video input using scratches and dust",
- "Sam Lantinga <slouken@devolution.com>"
- );
+ static GstElementDetails agingtv_details = GST_ELEMENT_DETAILS ("AgingTV",
+ "Filter/Effect/Video",
+ "AgingTV adds age to video input using scratches and dust",
+ "Sam Lantinga <slouken@devolution.com>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &agingtv_details);
- for(i=0;i<G_N_ELEMENTS(gst_agingtv_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_agingtv_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_agingtv_formats + i);
}
@@ -166,10 +171,9 @@ gst_agingtv_class_init (gpointer g_class, gpointer class_data)
videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
#if 0
- g_object_class_install_property(gobject_class, ARG_METHOD,
- g_param_spec_enum("method","method","method",
- GST_TYPE_AGINGTV_METHOD, GST_AGINGTV_METHOD_1,
- G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_METHOD,
+ g_param_spec_enum ("method", "method", "method",
+ GST_TYPE_AGINGTV_METHOD, GST_AGINGTV_METHOD_1, G_PARAM_READWRITE));
#endif
gobject_class->set_property = gst_agingtv_set_property;
@@ -179,26 +183,27 @@ gst_agingtv_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_agingtv_init (GTypeInstance *instance, gpointer g_class)
+gst_agingtv_init (GTypeInstance * instance, gpointer g_class)
{
GstAgingTV *agingtv = GST_AGINGTV (instance);
GstVideofilter *videofilter;
- GST_DEBUG("gst_agingtv_init");
+ GST_DEBUG ("gst_agingtv_init");
- videofilter = GST_VIDEOFILTER(agingtv);
+ videofilter = GST_VIDEOFILTER (agingtv);
/* do stuff */
}
-static void gst_agingtv_setup(GstVideofilter *videofilter)
+static void
+gst_agingtv_setup (GstVideofilter * videofilter)
{
GstAgingTV *agingtv;
- int width = gst_videofilter_get_input_width(videofilter);
- int height = gst_videofilter_get_input_height(videofilter);
+ int width = gst_videofilter_get_input_width (videofilter);
+ int height = gst_videofilter_get_input_height (videofilter);
- g_return_if_fail(GST_IS_AGINGTV(videofilter));
- agingtv = GST_AGINGTV(videofilter);
+ g_return_if_fail (GST_IS_AGINGTV (videofilter));
+ agingtv = GST_AGINGTV (videofilter);
/* if any setup needs to be done, do it here */
@@ -206,7 +211,7 @@ static void gst_agingtv_setup(GstVideofilter *videofilter)
agingtv->height = height;
}
-static unsigned int
+static unsigned int
fastrand (void)
{
static unsigned int fastrand_val;
@@ -215,8 +220,8 @@ fastrand (void)
}
-static void
-coloraging (guint32 *src, guint32 *dest, gint video_area)
+static void
+coloraging (guint32 * src, guint32 * dest, gint video_area)
{
guint32 a, b;
gint i;
@@ -229,8 +234,9 @@ coloraging (guint32 *src, guint32 *dest, gint video_area)
}
-static void
-scratching (scratch *scratches, gint scratch_lines, guint32 *dest, gint width, gint height)
+static void
+scratching (scratch * scratches, gint scratch_lines, guint32 * dest, gint width,
+ gint height)
{
gint i, y, y1, y2;
guint32 *p, a, b;
@@ -241,7 +247,7 @@ scratching (scratch *scratches, gint scratch_lines, guint32 *dest, gint width, g
if (scratch->life) {
scratch->x = scratch->x + scratch->dx;
-
+
if (scratch->x < 0 || scratch->x > width * 256) {
scratch->life = 0;
break;
@@ -277,8 +283,9 @@ scratching (scratch *scratches, gint scratch_lines, guint32 *dest, gint width, g
}
}
-static void
-dusts (guint32 *dest, gint width, gint height, gint dust_interval, gint area_scale)
+static void
+dusts (guint32 * dest, gint width, gint height, gint dust_interval,
+ gint area_scale)
{
int i, j;
int dnum;
@@ -291,8 +298,8 @@ dusts (guint32 *dest, gint width, gint height, gint dust_interval, gint area_sca
}
return;
}
- dnum = area_scale * 4 + (fastrand() >> 27);
-
+ dnum = area_scale * 4 + (fastrand () >> 27);
+
for (i = 0; i < dnum; i++) {
x = fastrand () % width;
y = fastrand () % height;
@@ -303,7 +310,8 @@ dusts (guint32 *dest, gint width, gint height, gint dust_interval, gint area_sca
y += dy[d];
x += dx[d];
- if (y >= height || x >= width) break;
+ if (y >= height || x >= width)
+ break;
d = (d + fastrand () % 3 - 1) & 7;
}
@@ -311,8 +319,9 @@ dusts (guint32 *dest, gint width, gint height, gint dust_interval, gint area_sca
dust_interval--;
}
-static void
-pits (guint32 *dest, gint width, gint height, gint area_scale, gint pits_interval)
+static void
+pits (guint32 * dest, gint width, gint height, gint area_scale,
+ gint pits_interval)
{
int i, j;
int pnum, size, pnumscale;
@@ -340,46 +349,50 @@ pits (guint32 *dest, gint width, gint height, gint area_scale, gint pits_interva
x = x + fastrand () % 3 - 1;
y = y + fastrand () % 3 - 1;
- if (y >= height || x >= width) break;
+ if (y >= height || x >= width)
+ break;
dest[y * width + x] = 0xc0c0c0;
}
}
}
-static void
-gst_agingtv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
+static void
+gst_agingtv_rgb32 (GstVideofilter * videofilter, void *d, void *s)
{
GstAgingTV *agingtv;
- int width = gst_videofilter_get_input_width(videofilter);
- int height = gst_videofilter_get_input_height(videofilter);
+ int width = gst_videofilter_get_input_width (videofilter);
+ int height = gst_videofilter_get_input_height (videofilter);
int video_size = width * height;
guint32 *src = s;
guint32 *dest = d;
gint area_scale = width * height / 64 / 480;
- if (area_scale <= 0) area_scale = 1;
- g_return_if_fail(GST_IS_AGINGTV(videofilter));
- agingtv = GST_AGINGTV(videofilter);
+ if (area_scale <= 0)
+ area_scale = 1;
+
+ g_return_if_fail (GST_IS_AGINGTV (videofilter));
+ agingtv = GST_AGINGTV (videofilter);
coloraging (src, dest, video_size);
scratching (agingtv->scratches, agingtv->scratch_lines, dest, width, height);
pits (dest, width, height, area_scale, agingtv->pits_interval);
- if(area_scale > 1)
+ if (area_scale > 1)
dusts (dest, width, height, agingtv->dust_interval, area_scale);
-
+
}
static void
-gst_agingtv_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_agingtv_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstAgingTV *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_AGINGTV(object));
- src = GST_AGINGTV(object);
+ g_return_if_fail (GST_IS_AGINGTV (object));
+ src = GST_AGINGTV (object);
- GST_DEBUG("gst_agingtv_set_property");
+ GST_DEBUG ("gst_agingtv_set_property");
switch (prop_id) {
#if 0
case ARG_METHOD:
@@ -392,13 +405,14 @@ gst_agingtv_set_property (GObject *object, guint prop_id, const GValue *value, G
}
static void
-gst_agingtv_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_agingtv_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstAgingTV *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_AGINGTV(object));
- src = GST_AGINGTV(object);
+ g_return_if_fail (GST_IS_AGINGTV (object));
+ src = GST_AGINGTV (object);
switch (prop_id) {
#if 0
@@ -411,4 +425,3 @@ gst_agingtv_get_property (GObject *object, guint prop_id, GValue *value, GParamS
break;
}
}
-
diff --git a/gst/effectv/gstdice.c b/gst/effectv/gstdice.c
index ba2d1d6c..a7cbbc36 100644
--- a/gst/effectv/gstdice.c
+++ b/gst/effectv/gstdice.c
@@ -35,12 +35,12 @@ typedef struct _GstDiceTVClass GstDiceTVClass;
#define MAX_CUBE_BITS 5
#define MIN_CUBE_BITS 0
-typedef enum _dice_dir
+typedef enum _dice_dir
{
- DICE_UP = 0,
- DICE_RIGHT = 1,
- DICE_DOWN = 2,
- DICE_LEFT = 3
+ DICE_UP = 0,
+ DICE_RIGHT = 1,
+ DICE_DOWN = 2,
+ DICE_LEFT = 3
} DiceDir;
struct _GstDiceTV
@@ -48,7 +48,7 @@ struct _GstDiceTV
GstVideofilter videofilter;
gint width, height;
- gchar* dicemap;
+ gchar *dicemap;
gint g_cube_bits;
gint g_cube_size;
@@ -60,7 +60,7 @@ struct _GstDiceTVClass
{
GstVideofilterClass parent_class;
- void (*reset) (GstElement *element);
+ void (*reset) (GstElement * element);
};
/* Filter signals and args */
@@ -77,29 +77,30 @@ enum
ARG_CUBE_BITS,
};
-static void gst_dicetv_base_init (gpointer g_class);
-static void gst_dicetv_class_init (gpointer g_class, gpointer class_data);
-static void gst_dicetv_init (GTypeInstance *instance, gpointer g_class);
+static void gst_dicetv_base_init (gpointer g_class);
+static void gst_dicetv_class_init (gpointer g_class, gpointer class_data);
+static void gst_dicetv_init (GTypeInstance * instance, gpointer g_class);
-static void gst_dicetv_reset_handler (GstElement *elem);
-static void gst_dicetv_create_map (GstDiceTV *filter);
+static void gst_dicetv_reset_handler (GstElement * elem);
+static void gst_dicetv_create_map (GstDiceTV * filter);
-static void gst_dicetv_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_dicetv_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_dicetv_setup (GstVideofilter *videofilter);
-static void gst_dicetv_draw (GstVideofilter *videofilter, void *d, void *s);
+static void gst_dicetv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_dicetv_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_dicetv_setup (GstVideofilter * videofilter);
+static void gst_dicetv_draw (GstVideofilter * videofilter, void *d, void *s);
static guint gst_dicetv_signals[LAST_SIGNAL] = { 0 };
-GType gst_dicetv_get_type (void)
+GType
+gst_dicetv_get_type (void)
{
static GType dicetv_type = 0;
if (!dicetv_type) {
static const GTypeInfo dicetv_info = {
- sizeof (GstDiceTVClass),
+ sizeof (GstDiceTVClass),
gst_dicetv_base_init,
NULL,
(GClassInitFunc) gst_dicetv_class_init,
@@ -110,37 +111,41 @@ GType gst_dicetv_get_type (void)
(GInstanceInitFunc) gst_dicetv_init,
};
- dicetv_type = g_type_register_static (GST_TYPE_VIDEOFILTER, "GstDiceTV", &dicetv_info, 0);
+ dicetv_type =
+ g_type_register_static (GST_TYPE_VIDEOFILTER, "GstDiceTV", &dicetv_info,
+ 0);
}
return dicetv_type;
}
static GstVideofilterFormat gst_dicetv_formats[] = {
- { "RGB ", 32, gst_dicetv_draw, 24, G_BIG_ENDIAN, 0x00ff0000, 0x0000ff00, 0x000000ff },
- { "RGB ", 32, gst_dicetv_draw, 24, G_BIG_ENDIAN, 0xff000000, 0x00ff0000, 0x0000ff00 },
- { "RGB ", 32, gst_dicetv_draw, 24, G_BIG_ENDIAN, 0x000000ff, 0x0000ff00, 0x00ff0000 },
- { "RGB ", 32, gst_dicetv_draw, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000, 0xff000000 },
+ {"RGB ", 32, gst_dicetv_draw, 24, G_BIG_ENDIAN, 0x00ff0000, 0x0000ff00,
+ 0x000000ff},
+ {"RGB ", 32, gst_dicetv_draw, 24, G_BIG_ENDIAN, 0xff000000, 0x00ff0000,
+ 0x0000ff00},
+ {"RGB ", 32, gst_dicetv_draw, 24, G_BIG_ENDIAN, 0x000000ff, 0x0000ff00,
+ 0x00ff0000},
+ {"RGB ", 32, gst_dicetv_draw, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000,
+ 0xff000000},
};
static void
gst_dicetv_base_init (gpointer g_class)
{
/* elementfactory information */
- static GstElementDetails gst_dicetv_details = GST_ELEMENT_DETAILS (
- "DiceTV",
- "Filter/Effect/Video",
- "'Dices' the screen up into many small squares",
- "Wim Taymans <wim.taymans@chello.be>"
- );
+ static GstElementDetails gst_dicetv_details = GST_ELEMENT_DETAILS ("DiceTV",
+ "Filter/Effect/Video",
+ "'Dices' the screen up into many small squares",
+ "Wim Taymans <wim.taymans@chello.be>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &gst_dicetv_details);
- for(i=0; i < G_N_ELEMENTS(gst_dicetv_formats); i++) {
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_dicetv_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_dicetv_formats + i);
}
@@ -159,19 +164,17 @@ gst_dicetv_class_init (gpointer g_class, gpointer class_data)
dicetv_class = GST_DICETV_CLASS (g_class);
gst_dicetv_signals[RESET_SIGNAL] =
- g_signal_new ("reset",
- G_TYPE_FROM_CLASS (g_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstDiceTVClass, reset),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ g_signal_new ("reset",
+ G_TYPE_FROM_CLASS (g_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GstDiceTVClass, reset),
+ NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
dicetv_class->reset = gst_dicetv_reset_handler;
-
+
g_object_class_install_property (gobject_class, ARG_CUBE_BITS,
- g_param_spec_int ("square_bits","Square Bits","The size of the Squares",
- MIN_CUBE_BITS, MAX_CUBE_BITS, DEFAULT_CUBE_BITS, G_PARAM_READWRITE));
+ g_param_spec_int ("square_bits", "Square Bits", "The size of the Squares",
+ MIN_CUBE_BITS, MAX_CUBE_BITS, DEFAULT_CUBE_BITS, G_PARAM_READWRITE));
gobject_class->set_property = gst_dicetv_set_property;
gobject_class->get_property = gst_dicetv_get_property;
@@ -180,7 +183,7 @@ gst_dicetv_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_dicetv_setup (GstVideofilter *videofilter)
+gst_dicetv_setup (GstVideofilter * videofilter)
{
GstDiceTV *dicetv;
@@ -191,12 +194,13 @@ gst_dicetv_setup (GstVideofilter *videofilter)
dicetv->height = gst_videofilter_get_input_height (videofilter);
g_free (dicetv->dicemap);
- dicetv->dicemap = (gchar *) g_malloc (dicetv->height * dicetv->width * sizeof(char));
+ dicetv->dicemap =
+ (gchar *) g_malloc (dicetv->height * dicetv->width * sizeof (char));
gst_dicetv_create_map (dicetv);
}
static void
-gst_dicetv_init (GTypeInstance *instance, gpointer g_class)
+gst_dicetv_init (GTypeInstance * instance, gpointer g_class)
{
GstDiceTV *filter = GST_DICETV (instance);
@@ -208,7 +212,7 @@ gst_dicetv_init (GTypeInstance *instance, gpointer g_class)
}
static void
-gst_dicetv_reset_handler (GstElement *element)
+gst_dicetv_reset_handler (GstElement * element)
{
GstDiceTV *filter = GST_DICETV (element);
@@ -217,14 +221,14 @@ gst_dicetv_reset_handler (GstElement *element)
static unsigned int
fastrand (void)
-{
+{
static unsigned int fastrand_val;
return (fastrand_val = fastrand_val * 1103515245 + 12345);
}
-static void
-gst_dicetv_draw (GstVideofilter *videofilter, void *d, void *s)
+static void
+gst_dicetv_draw (GstVideofilter * videofilter, void *d, void *s)
{
GstDiceTV *filter;
guint32 *src;
@@ -236,10 +240,10 @@ gst_dicetv_draw (GstVideofilter *videofilter, void *d, void *s)
gint video_width = filter->width;
gint g_cube_bits = filter->g_cube_bits;
gint g_cube_size = filter->g_cube_size;
-
+
filter = GST_DICETV (videofilter);
- src = (guint32 *)s;
- dest = (guint32 *)d;
+ src = (guint32 *) s;
+ dest = (guint32 *) d;
video_width = filter->width;
g_cube_bits = filter->g_cube_bits;
@@ -248,64 +252,64 @@ gst_dicetv_draw (GstVideofilter *videofilter, void *d, void *s)
map_i = 0;
for (map_y = 0; map_y < filter->g_map_height; map_y++) {
for (map_x = 0; map_x < filter->g_map_width; map_x++) {
- base = (map_y << g_cube_bits) * video_width + (map_x << g_cube_bits);
-
- switch (filter->dicemap[map_i]) {
- case DICE_UP:
- for (dy = 0; dy < g_cube_size; dy++) {
- i = base + dy * video_width;
- for (dx = 0; dx < g_cube_size; dx++) {
- dest[i] = src[i];
- i++;
- }
- }
- break;
- case DICE_LEFT:
- for (dy = 0; dy < g_cube_size; dy++) {
- i = base + dy * video_width;
-
- for (dx = 0; dx < g_cube_size; dx++) {
- di = base + (dx * video_width) + (g_cube_size - dy - 1);
- dest[di] = src[i];
- i++;
- }
- }
- break;
- case DICE_DOWN:
- for (dy = 0; dy < g_cube_size; dy++) {
- di = base + dy * video_width;
- i = base + (g_cube_size - dy - 1) * video_width + g_cube_size;
- for (dx = 0; dx < g_cube_size; dx++) {
- i--;
- dest[di] = src[i];
- di++;
- }
- }
- break;
- case DICE_RIGHT:
- for (dy = 0; dy < g_cube_size; dy++) {
- i = base + (dy * video_width);
- for (dx = 0; dx < g_cube_size; dx++) {
- di = base + dy + (g_cube_size - dx - 1) * video_width;
- dest[di] = src[i];
- i++;
- }
- }
- break;
- default:
- g_assert_not_reached ();
- break;
+ base = (map_y << g_cube_bits) * video_width + (map_x << g_cube_bits);
+
+ switch (filter->dicemap[map_i]) {
+ case DICE_UP:
+ for (dy = 0; dy < g_cube_size; dy++) {
+ i = base + dy * video_width;
+ for (dx = 0; dx < g_cube_size; dx++) {
+ dest[i] = src[i];
+ i++;
+ }
+ }
+ break;
+ case DICE_LEFT:
+ for (dy = 0; dy < g_cube_size; dy++) {
+ i = base + dy * video_width;
+
+ for (dx = 0; dx < g_cube_size; dx++) {
+ di = base + (dx * video_width) + (g_cube_size - dy - 1);
+ dest[di] = src[i];
+ i++;
+ }
+ }
+ break;
+ case DICE_DOWN:
+ for (dy = 0; dy < g_cube_size; dy++) {
+ di = base + dy * video_width;
+ i = base + (g_cube_size - dy - 1) * video_width + g_cube_size;
+ for (dx = 0; dx < g_cube_size; dx++) {
+ i--;
+ dest[di] = src[i];
+ di++;
+ }
+ }
+ break;
+ case DICE_RIGHT:
+ for (dy = 0; dy < g_cube_size; dy++) {
+ i = base + (dy * video_width);
+ for (dx = 0; dx < g_cube_size; dx++) {
+ di = base + dy + (g_cube_size - dx - 1) * video_width;
+ dest[di] = src[i];
+ i++;
+ }
+ }
+ break;
+ default:
+ g_assert_not_reached ();
+ break;
}
map_i++;
}
}
}
-static void
-gst_dicetv_create_map (GstDiceTV *filter)
+static void
+gst_dicetv_create_map (GstDiceTV * filter)
{
gint x, y, i;
-
+
filter->g_map_height = filter->height >> filter->g_cube_bits;
filter->g_map_width = filter->width >> filter->g_cube_bits;
filter->g_cube_size = 1 << filter->g_cube_bits;
@@ -313,16 +317,17 @@ gst_dicetv_create_map (GstDiceTV *filter)
i = 0;
for (y = 0; y < filter->g_map_height; y++) {
- for(x = 0; x < filter->g_map_width; x++) {
+ for (x = 0; x < filter->g_map_width; x++) {
// dicemap[i] = ((i + y) & 0x3); /* Up, Down, Left or Right */
- filter->dicemap[i] = (fastrand() >> 24) & 0x03;
+ filter->dicemap[i] = (fastrand () >> 24) & 0x03;
i++;
}
}
}
static void
-gst_dicetv_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_dicetv_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstDiceTV *filter;
@@ -341,7 +346,8 @@ gst_dicetv_set_property (GObject * object, guint prop_id, const GValue * value,
}
static void
-gst_dicetv_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_dicetv_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstDiceTV *filter;
diff --git a/gst/effectv/gstedge.c b/gst/effectv/gstedge.c
index 26bf2696..1e9002bf 100644
--- a/gst/effectv/gstedge.c
+++ b/gst/effectv/gstedge.c
@@ -69,27 +69,28 @@ enum
ARG_0,
};
-static void gst_edgetv_base_init (gpointer g_class);
-static void gst_edgetv_class_init (gpointer g_class, gpointer class_data);
-static void gst_edgetv_init (GTypeInstance *instance, gpointer g_class);
+static void gst_edgetv_base_init (gpointer g_class);
+static void gst_edgetv_class_init (gpointer g_class, gpointer class_data);
+static void gst_edgetv_init (GTypeInstance * instance, gpointer g_class);
-static void gst_edgetv_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_edgetv_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
+static void gst_edgetv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_edgetv_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_edgetv_setup (GstVideofilter *videofilter);
-static void gst_edgetv_rgb32 (GstVideofilter *videofilter, void *d, void *s);
+static void gst_edgetv_setup (GstVideofilter * videofilter);
+static void gst_edgetv_rgb32 (GstVideofilter * videofilter, void *d, void *s);
/*static guint gst_edgetv_signals[LAST_SIGNAL] = { 0 }; */
-GType gst_edgetv_get_type (void)
+GType
+gst_edgetv_get_type (void)
{
static GType edgetv_type = 0;
if (!edgetv_type) {
static const GTypeInfo edgetv_info = {
- sizeof (GstEdgeTVClass),
+ sizeof (GstEdgeTVClass),
gst_edgetv_base_init,
NULL,
(GClassInitFunc) gst_edgetv_class_init,
@@ -100,34 +101,35 @@ GType gst_edgetv_get_type (void)
(GInstanceInitFunc) gst_edgetv_init,
};
- edgetv_type = g_type_register_static (GST_TYPE_VIDEOFILTER, "GstEdgeTV", &edgetv_info, 0);
+ edgetv_type =
+ g_type_register_static (GST_TYPE_VIDEOFILTER, "GstEdgeTV", &edgetv_info,
+ 0);
}
return edgetv_type;
}
static GstVideofilterFormat gst_edgetv_formats[] = {
- { "RGB ", 32, gst_edgetv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000, 0xff000000 }
+ {"RGB ", 32, gst_edgetv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000,
+ 0xff000000}
};
static void
gst_edgetv_base_init (gpointer g_class)
{
/* elementfactory information */
- static GstElementDetails gst_edgetv_details = GST_ELEMENT_DETAILS (
- "EdgeTV",
- "Filter/Effect/Video",
- "Apply edge detect on video",
- "Wim Taymans <wim.taymans@chello.be>"
- );
+ static GstElementDetails gst_edgetv_details = GST_ELEMENT_DETAILS ("EdgeTV",
+ "Filter/Effect/Video",
+ "Apply edge detect on video",
+ "Wim Taymans <wim.taymans@chello.be>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &gst_edgetv_details);
- for(i=0; i < G_N_ELEMENTS(gst_edgetv_formats); i++) {
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_edgetv_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_edgetv_formats + i);
}
@@ -150,14 +152,15 @@ gst_edgetv_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_edgetv_init (GTypeInstance *instance, gpointer g_class)
+gst_edgetv_init (GTypeInstance * instance, gpointer g_class)
{
GstEdgeTV *edgetv = GST_EDGETV (instance);
edgetv->map = NULL;
}
-static void gst_edgetv_setup(GstVideofilter *videofilter)
+static void
+gst_edgetv_setup (GstVideofilter * videofilter)
{
GstEdgeTV *edgetv;
int width = gst_videofilter_get_input_width (videofilter);
@@ -173,12 +176,15 @@ static void gst_edgetv_setup(GstVideofilter *videofilter)
edgetv->video_width_margin = width % 4;
g_free (edgetv->map);
- edgetv->map = (guint32 *)g_malloc (edgetv->map_width * edgetv->map_height * sizeof (guint32) * 2);
- memset(edgetv->map, 0, edgetv->map_width * edgetv->map_height * sizeof (guint32) * 2);
+ edgetv->map =
+ (guint32 *) g_malloc (edgetv->map_width * edgetv->map_height *
+ sizeof (guint32) * 2);
+ memset (edgetv->map, 0,
+ edgetv->map_width * edgetv->map_height * sizeof (guint32) * 2);
}
-static void
-gst_edgetv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
+static void
+gst_edgetv_rgb32 (GstVideofilter * videofilter, void *d, void *s)
{
GstEdgeTV *filter;
int x, y;
@@ -191,10 +197,10 @@ gst_edgetv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
src = (guint32 *) s;
dest = (guint32 *) d;
-
+
src += filter->width * 4 + 4;
dest += filter->width * 4 + 4;
-
+
for (y = 1; y < filter->map_height - 1; y++) {
for (x = 1; x < filter->map_width - 1; x++) {
@@ -272,7 +278,8 @@ gst_edgetv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
}
static void
-gst_edgetv_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_edgetv_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstEdgeTV *filter;
@@ -288,7 +295,8 @@ gst_edgetv_set_property (GObject * object, guint prop_id, const GValue * value,
}
static void
-gst_edgetv_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_edgetv_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstEdgeTV *filter;
diff --git a/gst/effectv/gsteffectv.c b/gst/effectv/gsteffectv.c
index 2fa1583b..71f51c55 100644
--- a/gst/effectv/gsteffectv.c
+++ b/gst/effectv/gsteffectv.c
@@ -31,45 +31,37 @@
#include "gsteffectv.h"
-struct _elements_entry {
+struct _elements_entry
+{
gchar *name;
- GType (*type) (void);
+ GType (*type) (void);
};
static struct _elements_entry _elements[] = {
- { "edgeTV", gst_edgetv_get_type },
- { "agingTV", gst_agingtv_get_type },
- { "diceTV", gst_dicetv_get_type },
- { "warpTV", gst_warptv_get_type },
- { "shagadelicTV", gst_shagadelictv_get_type },
- { "vertigoTV", gst_vertigotv_get_type },
- { "revTV", gst_revtv_get_type },
- { "quarkTV", gst_quarktv_get_type },
- { NULL, 0 },
+ {"edgeTV", gst_edgetv_get_type},
+ {"agingTV", gst_agingtv_get_type},
+ {"diceTV", gst_dicetv_get_type},
+ {"warpTV", gst_warptv_get_type},
+ {"shagadelicTV", gst_shagadelictv_get_type},
+ {"vertigoTV", gst_vertigotv_get_type},
+ {"revTV", gst_revtv_get_type},
+ {"quarkTV", gst_quarktv_get_type},
+ {NULL, 0},
};
-GstStaticPadTemplate gst_effectv_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GstStaticPadTemplate gst_effectv_src_template = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- GST_VIDEO_CAPS_BGRx "; "
- GST_VIDEO_CAPS_RGBx
- )
-);
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_BGRx "; " GST_VIDEO_CAPS_RGBx)
+ );
GstStaticPadTemplate gst_effectv_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+ GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- GST_VIDEO_CAPS_BGRx "; "
- GST_VIDEO_CAPS_RGBx
- )
-);
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_BGRx "; " GST_VIDEO_CAPS_RGBx)
+ );
static gboolean
plugin_init (GstPlugin * plugin)
@@ -81,7 +73,7 @@ plugin_init (GstPlugin * plugin)
while (_elements[i].name) {
if (!gst_element_register (plugin, _elements[i].name,
- GST_RANK_NONE, (_elements[i].type) ()))
+ GST_RANK_NONE, (_elements[i].type) ()))
return FALSE;
i++;
}
@@ -89,14 +81,8 @@ plugin_init (GstPlugin * plugin)
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "effectv",
- "effect plugins from the effectv project",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-);
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "effectv",
+ "effect plugins from the effectv project",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN);
diff --git a/gst/effectv/gstquark.c b/gst/effectv/gstquark.c
index 1b4a2278..42683212 100644
--- a/gst/effectv/gstquark.c
+++ b/gst/effectv/gstquark.c
@@ -66,12 +66,10 @@ struct _GstQuarkTVClass
};
/* elementfactory information */
-static GstElementDetails gst_quarktv_details = GST_ELEMENT_DETAILS (
- "QuarkTV",
- "Filter/Effect/Video",
- "Motion dissolver",
- "FUKUCHI, Kentarou <fukuchi@users.sourceforge.net>"
-);
+static GstElementDetails gst_quarktv_details = GST_ELEMENT_DETAILS ("QuarkTV",
+ "Filter/Effect/Video",
+ "Motion dissolver",
+ "FUKUCHI, Kentarou <fukuchi@users.sourceforge.net>");
/* Filter signals and args */
enum
@@ -86,21 +84,21 @@ enum
ARG_PLANES,
};
-static void gst_quarktv_base_init (gpointer g_class);
-static void gst_quarktv_class_init (GstQuarkTVClass * klass);
-static void gst_quarktv_init (GstQuarkTV * filter);
+static void gst_quarktv_base_init (gpointer g_class);
+static void gst_quarktv_class_init (GstQuarkTVClass * klass);
+static void gst_quarktv_init (GstQuarkTV * filter);
-static GstElementStateReturn
- gst_quarktv_change_state (GstElement *element);
-
-static void gst_quarktv_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_quarktv_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_quarktv_change_state (GstElement * element);
+
+static void gst_quarktv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_quarktv_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_quarktv_chain (GstPad * pad, GstData *_data);
+static void gst_quarktv_chain (GstPad * pad, GstData * _data);
static GstElementClass *parent_class = NULL;
+
/* static guint gst_quarktv_signals[LAST_SIGNAL] = { 0 }; */
static inline guint32
@@ -111,13 +109,14 @@ fastrand (void)
return (fastrand_val = fastrand_val * 1103515245 + 12345);
}
-GType gst_quarktv_get_type (void)
+GType
+gst_quarktv_get_type (void)
{
static GType quarktv_type = 0;
if (!quarktv_type) {
static const GTypeInfo quarktv_info = {
- sizeof (GstQuarkTVClass),
+ sizeof (GstQuarkTVClass),
gst_quarktv_base_init,
NULL,
(GClassInitFunc) gst_quarktv_class_init,
@@ -128,7 +127,9 @@ GType gst_quarktv_get_type (void)
(GInstanceInitFunc) gst_quarktv_init,
};
- quarktv_type = g_type_register_static (GST_TYPE_ELEMENT, "GstQuarkTV", &quarktv_info, 0);
+ quarktv_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstQuarkTV", &quarktv_info,
+ 0);
}
return quarktv_type;
}
@@ -142,7 +143,7 @@ gst_quarktv_base_init (gpointer g_class)
gst_static_pad_template_get (&gst_effectv_src_template));
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&gst_effectv_sink_template));
-
+
gst_element_class_set_details (element_class, &gst_quarktv_details);
}
@@ -158,9 +159,9 @@ gst_quarktv_class_init (GstQuarkTVClass * klass)
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PLANES,
- g_param_spec_int ("planes","Planes","Number of frames in the buffer",
- 1, 32, PLANES, G_PARAM_READWRITE));
-
+ g_param_spec_int ("planes", "Planes", "Number of frames in the buffer",
+ 1, 32, PLANES, G_PARAM_READWRITE));
+
gobject_class->set_property = gst_quarktv_set_property;
gobject_class->get_property = gst_quarktv_get_property;
@@ -192,8 +193,8 @@ gst_quarktv_link (GstPad * pad, const GstCaps * caps)
filter->area = filter->width * filter->height;
- for(i = 0; i < filter->planes; i++) {
- if (filter->planetable[i])
+ for (i = 0; i < filter->planes; i++) {
+ if (filter->planetable[i])
gst_buffer_unref (filter->planetable[i]);
filter->planetable[i] = NULL;
}
@@ -204,27 +205,30 @@ gst_quarktv_link (GstPad * pad, const GstCaps * caps)
static void
gst_quarktv_init (GstQuarkTV * filter)
{
- filter->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_effectv_sink_template), "sink");
+ filter->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_effectv_sink_template), "sink");
gst_pad_set_getcaps_function (filter->sinkpad, gst_pad_proxy_getcaps);
gst_pad_set_chain_function (filter->sinkpad, gst_quarktv_chain);
gst_pad_set_link_function (filter->sinkpad, gst_quarktv_link);
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
- filter->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_effectv_src_template), "src");
+ filter->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_effectv_src_template), "src");
gst_pad_set_getcaps_function (filter->srcpad, gst_pad_proxy_getcaps);
gst_pad_set_link_function (filter->srcpad, gst_quarktv_link);
gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
filter->planes = PLANES;
filter->current_plane = filter->planes - 1;
- filter->planetable = (GstBuffer **) g_malloc(filter->planes * sizeof(GstBuffer *));
- memset (filter->planetable, 0, filter->planes * sizeof(GstBuffer *));
+ filter->planetable =
+ (GstBuffer **) g_malloc (filter->planes * sizeof (GstBuffer *));
+ memset (filter->planetable, 0, filter->planes * sizeof (GstBuffer *));
}
static void
-gst_quarktv_chain (GstPad * pad, GstData *_data)
+gst_quarktv_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstQuarkTV *filter;
@@ -239,35 +243,38 @@ gst_quarktv_chain (GstPad * pad, GstData *_data)
area = filter->area;
outbuf = gst_buffer_new ();
- GST_BUFFER_SIZE (outbuf) = area * sizeof(guint32);
- dest = (guint32 *) GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
+ GST_BUFFER_SIZE (outbuf) = area * sizeof (guint32);
+ dest = (guint32 *) GST_BUFFER_DATA (outbuf) =
+ g_malloc (GST_BUFFER_SIZE (outbuf));
GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
-
- if (filter->planetable[filter->current_plane])
+
+ if (filter->planetable[filter->current_plane])
gst_buffer_unref (filter->planetable[filter->current_plane]);
filter->planetable[filter->current_plane] = buf;
while (--area) {
GstBuffer *rand;
-
+
/* pick a random buffer */
- rand = filter->planetable[(filter->current_plane + (fastrand () >> 24)) & (filter->planes - 1)];
-
- dest[area] = (rand ? ((guint32 *)GST_BUFFER_DATA (rand))[area] : 0);
+ rand =
+ filter->planetable[(filter->current_plane +
+ (fastrand () >> 24)) & (filter->planes - 1)];
+
+ dest[area] = (rand ? ((guint32 *) GST_BUFFER_DATA (rand))[area] : 0);
}
gst_pad_push (filter->srcpad, GST_DATA (outbuf));
filter->current_plane--;
-
- if (filter->current_plane < 0)
+
+ if (filter->current_plane < 0)
filter->current_plane = filter->planes - 1;
}
static GstElementStateReturn
-gst_quarktv_change_state (GstElement *element)
-{
+gst_quarktv_change_state (GstElement * element)
+{
GstQuarkTV *filter = GST_QUARKTV (element);
switch (GST_STATE_TRANSITION (element)) {
@@ -276,9 +283,9 @@ gst_quarktv_change_state (GstElement *element)
gint i;
for (i = 0; i < filter->planes; i++) {
- if (filter->planetable[i])
- gst_buffer_unref (filter->planetable[i]);
- filter->planetable[i] = NULL;
+ if (filter->planetable[i])
+ gst_buffer_unref (filter->planetable[i]);
+ filter->planetable[i] = NULL;
}
g_free (filter->planetable);
filter->planetable = NULL;
@@ -293,7 +300,8 @@ gst_quarktv_change_state (GstElement *element)
static void
-gst_quarktv_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_quarktv_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstQuarkTV *filter;
@@ -304,29 +312,29 @@ gst_quarktv_set_property (GObject * object, guint prop_id, const GValue * value,
switch (prop_id) {
case ARG_PLANES:
- {
- gint new_n_planes = g_value_get_int (value);
- GstBuffer **new_planetable;
- gint i;
-
- /* If the number of planes changed, copy across any existing planes */
- if (new_n_planes != filter->planes)
- {
- new_planetable = (GstBuffer **) g_malloc(new_n_planes * sizeof(GstBuffer *));
-
- for(i = 0; (i < new_n_planes) && (i < filter->planes); i++) {
- new_planetable[i] = filter->planetable[i];
- }
- for(; i < filter->planes; i++) {
- if (filter->planetable[i])
- gst_buffer_unref (filter->planetable[i]);
- }
- g_free (filter->planetable);
- filter->planetable = new_planetable;
- filter->current_plane = filter->planes - 1;
- filter->planes = new_n_planes;
- }
+ {
+ gint new_n_planes = g_value_get_int (value);
+ GstBuffer **new_planetable;
+ gint i;
+
+ /* If the number of planes changed, copy across any existing planes */
+ if (new_n_planes != filter->planes) {
+ new_planetable =
+ (GstBuffer **) g_malloc (new_n_planes * sizeof (GstBuffer *));
+
+ for (i = 0; (i < new_n_planes) && (i < filter->planes); i++) {
+ new_planetable[i] = filter->planetable[i];
+ }
+ for (; i < filter->planes; i++) {
+ if (filter->planetable[i])
+ gst_buffer_unref (filter->planetable[i]);
+ }
+ g_free (filter->planetable);
+ filter->planetable = new_planetable;
+ filter->current_plane = filter->planes - 1;
+ filter->planes = new_n_planes;
}
+ }
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -335,7 +343,8 @@ gst_quarktv_set_property (GObject * object, guint prop_id, const GValue * value,
}
static void
-gst_quarktv_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_quarktv_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstQuarkTV *filter;
diff --git a/gst/effectv/gstrev.c b/gst/effectv/gstrev.c
index 33e6bf8a..32752107 100644
--- a/gst/effectv/gstrev.c
+++ b/gst/effectv/gstrev.c
@@ -79,7 +79,7 @@ struct _GstRevTVClass
{
GstVideofilterClass parent_class;
- void (*reset) (GstElement *element);
+ void (*reset) (GstElement * element);
};
/* Filter signals and args */
@@ -97,26 +97,27 @@ enum
ARG_GAIN,
};
-static void gst_revtv_base_init (gpointer g_class);
-static void gst_revtv_class_init (gpointer g_class, gpointer class_data);
-static void gst_revtv_init (GTypeInstance *instance, gpointer g_class);
+static void gst_revtv_base_init (gpointer g_class);
+static void gst_revtv_class_init (gpointer g_class, gpointer class_data);
+static void gst_revtv_init (GTypeInstance * instance, gpointer g_class);
-static void gst_revtv_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_revtv_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_revtv_setup (GstVideofilter *videofilter);
-static void gst_revtv_rgb32 (GstVideofilter *videofilter, void *d, void *s);
+static void gst_revtv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_revtv_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_revtv_setup (GstVideofilter * videofilter);
+static void gst_revtv_rgb32 (GstVideofilter * videofilter, void *d, void *s);
/* static guint gst_revtv_signals[LAST_SIGNAL] = { 0 }; */
-GType gst_revtv_get_type (void)
+GType
+gst_revtv_get_type (void)
{
static GType revtv_type = 0;
if (!revtv_type) {
static const GTypeInfo revtv_info = {
- sizeof (GstRevTVClass),
+ sizeof (GstRevTVClass),
gst_revtv_base_init,
NULL,
(GClassInitFunc) gst_revtv_class_init,
@@ -127,35 +128,35 @@ GType gst_revtv_get_type (void)
(GInstanceInitFunc) gst_revtv_init,
};
- revtv_type = g_type_register_static (GST_TYPE_VIDEOFILTER, "GstRevTV", &revtv_info, 0);
+ revtv_type =
+ g_type_register_static (GST_TYPE_VIDEOFILTER, "GstRevTV", &revtv_info,
+ 0);
}
return revtv_type;
}
static GstVideofilterFormat gst_revtv_formats[] = {
- { "RGB ", 32, gst_revtv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000, 0xff000000 }
+ {"RGB ", 32, gst_revtv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000,
+ 0xff000000}
};
static void
gst_revtv_base_init (gpointer g_class)
{
/* elementfactory information */
- static GstElementDetails gst_revtv_details = GST_ELEMENT_DETAILS (
- "RevTV",
- "Filter/Effect/Video",
- "A video waveform monitor for each line of video processed",
- "Wim Taymans <wim.taymans@chello.be>"
- );
+ static GstElementDetails gst_revtv_details = GST_ELEMENT_DETAILS ("RevTV",
+ "Filter/Effect/Video",
+ "A video waveform monitor for each line of video processed",
+ "Wim Taymans <wim.taymans@chello.be>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &gst_revtv_details);
- for(i=0; i < G_N_ELEMENTS(gst_revtv_formats); i++) {
- gst_videofilter_class_add_format(videofilter_class,
- gst_revtv_formats + i);
+ for (i = 0; i < G_N_ELEMENTS (gst_revtv_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class, gst_revtv_formats + i);
}
gst_videofilter_class_add_pad_templates (GST_VIDEOFILTER_CLASS (g_class));
@@ -171,14 +172,14 @@ gst_revtv_class_init (gpointer klass, gpointer class_data)
videofilter_class = GST_VIDEOFILTER_CLASS (klass);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DELAY,
- g_param_spec_int ("delay","Delay","Delay in frames between updates",
- 1, 100, 1, G_PARAM_READWRITE));
+ g_param_spec_int ("delay", "Delay", "Delay in frames between updates",
+ 1, 100, 1, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LINESPACE,
- g_param_spec_int ("linespace","Linespace","Control line spacing",
- 1, 100, 6, G_PARAM_READWRITE));
+ g_param_spec_int ("linespace", "Linespace", "Control line spacing",
+ 1, 100, 6, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_GAIN,
- g_param_spec_int ("gain","Gain","Control gain",
- 1, 200, 50, G_PARAM_READWRITE));
+ g_param_spec_int ("gain", "Gain", "Control gain",
+ 1, 200, 50, G_PARAM_READWRITE));
gobject_class->set_property = gst_revtv_set_property;
gobject_class->get_property = gst_revtv_get_property;
@@ -187,7 +188,7 @@ gst_revtv_class_init (gpointer klass, gpointer class_data)
}
static void
-gst_revtv_init (GTypeInstance *instance, gpointer g_class)
+gst_revtv_init (GTypeInstance * instance, gpointer g_class)
{
GstRevTV *restv = GST_REVTV (instance);
@@ -198,7 +199,7 @@ gst_revtv_init (GTypeInstance *instance, gpointer g_class)
}
static void
-gst_revtv_setup (GstVideofilter *videofilter)
+gst_revtv_setup (GstVideofilter * videofilter)
{
GstRevTV *revtv;
@@ -210,7 +211,7 @@ gst_revtv_setup (GstVideofilter *videofilter)
}
static void
-gst_revtv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
+gst_revtv_rgb32 (GstVideofilter * videofilter, void *d, void *s)
{
GstRevTV *filter;
guint32 *src, *dest;
@@ -227,29 +228,30 @@ gst_revtv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
height = filter->height;
/* Clear everything to black */
- memset (dest, 0, width*height*sizeof(guint32));
+ memset (dest, 0, width * height * sizeof (guint32));
// draw the offset lines
- for (y = 0; y < height ; y += filter->linespace){
+ for (y = 0; y < height; y += filter->linespace) {
for (x = 0; x <= width; x++) {
nsrc = src + (y * width) + x;
// Calc Y Value for curpix
R = ((*nsrc) & 0xff0000) >> (16 - 1);
G = ((*nsrc) & 0xff00) >> (8 - 2);
- B = (*nsrc) & 0xff;
+ B = (*nsrc) & 0xff;
- yval = y - ((short) (R + G + B) / filter->vscale) ;
+ yval = y - ((short) (R + G + B) / filter->vscale);
if (yval > 0) {
- dest[x + (yval * width)] = THE_COLOR;
+ dest[x + (yval * width)] = THE_COLOR;
}
}
}
}
static void
-gst_revtv_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_revtv_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstRevTV *filter;
@@ -274,7 +276,8 @@ gst_revtv_set_property (GObject * object, guint prop_id, const GValue * value, G
}
static void
-gst_revtv_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_revtv_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstRevTV *filter;
diff --git a/gst/effectv/gstshagadelic.c b/gst/effectv/gstshagadelic.c
index 790649d5..345f2762 100644
--- a/gst/effectv/gstshagadelic.c
+++ b/gst/effectv/gstshagadelic.c
@@ -20,7 +20,7 @@
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
- */
+ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -76,28 +76,30 @@ enum
ARG_0,
};
-static void gst_shagadelictv_base_init (gpointer g_class);
-static void gst_shagadelictv_class_init (gpointer g_class, gpointer class_data);
-static void gst_shagadelictv_init (GTypeInstance *instance, gpointer g_class);
+static void gst_shagadelictv_base_init (gpointer g_class);
+static void gst_shagadelictv_class_init (gpointer g_class, gpointer class_data);
+static void gst_shagadelictv_init (GTypeInstance * instance, gpointer g_class);
-static void gst_shagadelic_initialize (GstShagadelicTV *filter);
+static void gst_shagadelic_initialize (GstShagadelicTV * filter);
-static void gst_shagadelictv_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_shagadelictv_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_shagadelictv_setup (GstVideofilter *videofilter);
-static void gst_shagadelictv_rgb32 (GstVideofilter *videofilter, void *d, void *s);
+static void gst_shagadelictv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_shagadelictv_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_shagadelictv_setup (GstVideofilter * videofilter);
+static void gst_shagadelictv_rgb32 (GstVideofilter * videofilter, void *d,
+ void *s);
/*static guint gst_shagadelictv_signals[LAST_SIGNAL] = { 0 }; */
-GType gst_shagadelictv_get_type (void)
+GType
+gst_shagadelictv_get_type (void)
{
static GType shagadelictv_type = 0;
if (!shagadelictv_type) {
static const GTypeInfo shagadelictv_info = {
- sizeof (GstShagadelicTVClass),
+ sizeof (GstShagadelicTVClass),
gst_shagadelictv_base_init,
NULL,
(GClassInitFunc) gst_shagadelictv_class_init,
@@ -108,34 +110,36 @@ GType gst_shagadelictv_get_type (void)
(GInstanceInitFunc) gst_shagadelictv_init,
};
- shagadelictv_type = g_type_register_static (GST_TYPE_VIDEOFILTER, "GstShagadelicTV", &shagadelictv_info, 0);
+ shagadelictv_type =
+ g_type_register_static (GST_TYPE_VIDEOFILTER, "GstShagadelicTV",
+ &shagadelictv_info, 0);
}
return shagadelictv_type;
}
static GstVideofilterFormat gst_shagadelictv_formats[] = {
- { "RGB ", 32, gst_shagadelictv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000, 0xff000000 }
+ {"RGB ", 32, gst_shagadelictv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000,
+ 0xff000000}
};
-
+
static void
gst_shagadelictv_base_init (gpointer g_class)
{
/* elementfactory information */
- static GstElementDetails gst_shagadelictv_details = GST_ELEMENT_DETAILS (
- "ShagadelicTV",
- "Filter/Effect/Video",
- "Oh behave, ShagedelicTV makes images shagadelic!",
- "Wim Taymans <wim.taymans@chello.be>"
- );
+ static GstElementDetails gst_shagadelictv_details =
+ GST_ELEMENT_DETAILS ("ShagadelicTV",
+ "Filter/Effect/Video",
+ "Oh behave, ShagedelicTV makes images shagadelic!",
+ "Wim Taymans <wim.taymans@chello.be>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &gst_shagadelictv_details);
- for(i=0;i<G_N_ELEMENTS(gst_shagadelictv_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_shagadelictv_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_shagadelictv_formats + i);
}
@@ -158,7 +162,7 @@ gst_shagadelictv_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_shagadelictv_init (GTypeInstance *instance, gpointer g_class)
+gst_shagadelictv_init (GTypeInstance * instance, gpointer g_class)
{
GstShagadelicTV *filter = GST_SHAGADELICTV (instance);
@@ -166,12 +170,12 @@ gst_shagadelictv_init (GTypeInstance *instance, gpointer g_class)
filter->spiral = NULL;
}
-static void
-gst_shagadelictv_setup(GstVideofilter *videofilter)
+static void
+gst_shagadelictv_setup (GstVideofilter * videofilter)
{
GstShagadelicTV *filter;
- int width = gst_videofilter_get_input_width(videofilter);
- int height = gst_videofilter_get_input_height(videofilter);
+ int width = gst_videofilter_get_input_width (videofilter);
+ int height = gst_videofilter_get_input_height (videofilter);
int area;
g_return_if_fail (GST_IS_SHAGADELICTV (videofilter));
@@ -193,16 +197,17 @@ gst_shagadelictv_setup(GstVideofilter *videofilter)
static unsigned int
fastrand (void)
-{
+{
static unsigned int fastrand_val;
return (fastrand_val = fastrand_val * 1103515245 + 12345);
}
static void
-gst_shagadelic_initialize (GstShagadelicTV *filter)
+gst_shagadelic_initialize (GstShagadelicTV * filter)
{
int i, x, y;
+
#ifdef PS2
float xx, yy;
#else
@@ -210,32 +215,35 @@ gst_shagadelic_initialize (GstShagadelicTV *filter)
#endif
i = 0;
- for(y = 0; y < filter->height * 2; y++) {
+ for (y = 0; y < filter->height * 2; y++) {
yy = y - filter->height;
yy *= yy;
for (x = 0; x < filter->width * 2; x++) {
xx = x - filter->width;
#ifdef PS2
- filter->ripple[i++] = ((unsigned int)(sqrtf(xx*xx+yy)*8))&255;
+ filter->ripple[i++] = ((unsigned int) (sqrtf (xx * xx + yy) * 8)) & 255;
#else
- filter->ripple[i++] = ((unsigned int)(sqrt(xx*xx+yy)*8))&255;
+ filter->ripple[i++] = ((unsigned int) (sqrt (xx * xx + yy) * 8)) & 255;
#endif
}
}
i = 0;
for (y = 0; y < filter->height; y++) {
- yy = y - filter->height/2;
-
+ yy = y - filter->height / 2;
+
for (x = 0; x < filter->width; x++) {
- xx = x - filter->width/2;
+ xx = x - filter->width / 2;
#ifdef PS2
filter->spiral[i++] = ((unsigned int)
- ((atan2f(xx, yy)/((float)M_PI)*256*9) + (sqrtf(xx*xx+yy*yy)*5)))&255;
+ ((atan2f (xx,
+ yy) / ((float) M_PI) * 256 * 9) + (sqrtf (xx * xx +
+ yy * yy) * 5))) & 255;
#else
filter->spiral[i++] = ((unsigned int)
- ((atan2(xx, yy)/M_PI*256*9) + (sqrt(xx*xx+yy*yy)*5)))&255;
+ ((atan2 (xx, yy) / M_PI * 256 * 9) + (sqrt (xx * xx +
+ yy * yy) * 5))) & 255;
#endif
/* Here is another Swinger!
* ((atan2(xx, yy)/M_PI*256) + (sqrt(xx*xx+yy*yy)*10))&255;
@@ -254,7 +262,7 @@ gst_shagadelic_initialize (GstShagadelicTV *filter)
}
static void
-gst_shagadelictv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
+gst_shagadelictv_rgb32 (GstVideofilter * videofilter, void *d, void *s)
{
GstShagadelicTV *filter;
guint32 *src, *dest;
@@ -280,18 +288,24 @@ gst_shagadelictv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
* v = *src++;
* *dest++ = v & ((r<<16)|(g<<8)|b);
*/
- r = (gchar) (filter->ripple[(filter->ry + y) * width * 2 + filter->rx + x] + filter->phase * 2) >> 7;
+ r = (gchar) (filter->ripple[(filter->ry + y) * width * 2 + filter->rx +
+ x] + filter->phase * 2) >> 7;
g = (gchar) (filter->spiral[y * width + x] + filter->phase * 3) >> 7;
- b = (gchar) (filter->ripple[(filter->by + y) * width * 2 + filter->bx + x] - filter->phase) >> 7;
+ b = (gchar) (filter->ripple[(filter->by + y) * width * 2 + filter->bx +
+ x] - filter->phase) >> 7;
*dest++ = v & ((r << 16) | (g << 8) | b);
}
}
filter->phase -= 8;
- if ((filter->rx + filter->rvx) < 0 || (filter->rx + filter->rvx) >= width) filter->rvx =- filter->rvx;
- if ((filter->ry + filter->rvy) < 0 || (filter->ry + filter->rvy) >= height) filter->rvy =- filter->rvy;
- if ((filter->bx + filter->bvx) < 0 || (filter->bx + filter->bvx) >= width) filter->bvx =- filter->bvx;
- if ((filter->by + filter->bvy) < 0 || (filter->by + filter->bvy) >= height) filter->bvy =- filter->bvy;
+ if ((filter->rx + filter->rvx) < 0 || (filter->rx + filter->rvx) >= width)
+ filter->rvx = -filter->rvx;
+ if ((filter->ry + filter->rvy) < 0 || (filter->ry + filter->rvy) >= height)
+ filter->rvy = -filter->rvy;
+ if ((filter->bx + filter->bvx) < 0 || (filter->bx + filter->bvx) >= width)
+ filter->bvx = -filter->bvx;
+ if ((filter->by + filter->bvy) < 0 || (filter->by + filter->bvy) >= height)
+ filter->bvy = -filter->bvy;
filter->rx += filter->rvx;
filter->ry += filter->rvy;
filter->bx += filter->bvx;
@@ -299,7 +313,8 @@ gst_shagadelictv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
}
static void
-gst_shagadelictv_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_shagadelictv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstShagadelicTV *filter;
@@ -315,7 +330,8 @@ gst_shagadelictv_set_property (GObject * object, guint prop_id, const GValue * v
}
static void
-gst_shagadelictv_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_shagadelictv_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstShagadelicTV *filter;
diff --git a/gst/effectv/gstvertigo.c b/gst/effectv/gstvertigo.c
index 06e795ea..6faa8cb2 100644
--- a/gst/effectv/gstvertigo.c
+++ b/gst/effectv/gstvertigo.c
@@ -19,8 +19,8 @@
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
- */
-
+ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -62,7 +62,7 @@ struct _GstVertigoTVClass
{
GstVideofilterClass parent_class;
- void (*reset) (GstElement *element);
+ void (*reset) (GstElement * element);
};
/* Filter signals and args */
@@ -80,28 +80,31 @@ enum
ARG_ZOOM_SPEED,
};
-static void gst_vertigotv_base_init (gpointer g_class);
-static void gst_vertigotv_class_init (GstVertigoTVClass * klass, gpointer class_data);
-static void gst_vertigotv_init (GTypeInstance *instance, gpointer g_class);
-static void gst_vertigotv_setup (GstVideofilter *videofilter);
+static void gst_vertigotv_base_init (gpointer g_class);
+static void gst_vertigotv_class_init (GstVertigoTVClass * klass,
+ gpointer class_data);
+static void gst_vertigotv_init (GTypeInstance * instance, gpointer g_class);
+static void gst_vertigotv_setup (GstVideofilter * videofilter);
-static void gst_vertigotv_reset_handler (GstElement *element);
+static void gst_vertigotv_reset_handler (GstElement * element);
-static void gst_vertigotv_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_vertigotv_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_vertigotv_rgb32 (GstVideofilter *videofilter, void *d, void *s);
+static void gst_vertigotv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_vertigotv_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_vertigotv_rgb32 (GstVideofilter * videofilter, void *d,
+ void *s);
static guint gst_vertigotv_signals[LAST_SIGNAL] = { 0 };
-GType gst_vertigotv_get_type (void)
+GType
+gst_vertigotv_get_type (void)
{
static GType vertigotv_type = 0;
if (!vertigotv_type) {
static const GTypeInfo vertigotv_info = {
- sizeof (GstVertigoTVClass),
+ sizeof (GstVertigoTVClass),
gst_vertigotv_base_init,
NULL,
(GClassInitFunc) gst_vertigotv_class_init,
@@ -112,33 +115,34 @@ GType gst_vertigotv_get_type (void)
(GInstanceInitFunc) gst_vertigotv_init,
};
- vertigotv_type = g_type_register_static (GST_TYPE_VIDEOFILTER, "GstVertigoTV", &vertigotv_info, 0);
+ vertigotv_type =
+ g_type_register_static (GST_TYPE_VIDEOFILTER, "GstVertigoTV",
+ &vertigotv_info, 0);
}
return vertigotv_type;
}
static GstVideofilterFormat gst_vertigotv_formats[] = {
- { "RGB ", 32, gst_vertigotv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000, 0xff000000 }
+ {"RGB ", 32, gst_vertigotv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000,
+ 0xff000000}
};
static void
gst_vertigotv_base_init (gpointer g_class)
{
/* elementfactory information */
- static GstElementDetails vertigotv_details = GST_ELEMENT_DETAILS (
- "VertigoTV",
- "Filter/Effect/Video",
- "A loopback alpha blending effector with rotating and scaling",
- "Wim Taymans <wim.taymans@chello.be>"
- );
+ static GstElementDetails vertigotv_details = GST_ELEMENT_DETAILS ("VertigoTV",
+ "Filter/Effect/Video",
+ "A loopback alpha blending effector with rotating and scaling",
+ "Wim Taymans <wim.taymans@chello.be>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &vertigotv_details);
- for(i=0;i<G_N_ELEMENTS(gst_vertigotv_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_vertigotv_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_vertigotv_formats + i);
}
@@ -157,22 +161,20 @@ gst_vertigotv_class_init (GstVertigoTVClass * klass, gpointer class_data)
videofilter_class = GST_VIDEOFILTER_CLASS (klass);
gst_vertigotv_signals[RESET_SIGNAL] =
- g_signal_new ("reset-parms",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GstVertigoTVClass, reset),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ g_signal_new ("reset-parms",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (GstVertigoTVClass, reset),
+ NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
klass->reset = gst_vertigotv_reset_handler;
-
+
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SPEED,
- g_param_spec_float ("speed","Speed","Control the speed of movement",
- 0.01, 100.0, 0.02, G_PARAM_READWRITE));
+ g_param_spec_float ("speed", "Speed", "Control the speed of movement",
+ 0.01, 100.0, 0.02, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ZOOM_SPEED,
- g_param_spec_float ("zoom_speed","Zoom Speed","Control the rate of zooming",
- 1.01, 1.1, 1.01, G_PARAM_READWRITE));
+ g_param_spec_float ("zoom_speed", "Zoom Speed",
+ "Control the rate of zooming", 1.01, 1.1, 1.01, G_PARAM_READWRITE));
gobject_class->set_property = gst_vertigotv_set_property;
gobject_class->get_property = gst_vertigotv_get_property;
@@ -181,7 +183,7 @@ gst_vertigotv_class_init (GstVertigoTVClass * klass, gpointer class_data)
}
static void
-gst_vertigotv_reset_handler (GstElement *element)
+gst_vertigotv_reset_handler (GstElement * element)
{
GstVertigoTV *filter = GST_VERTIGOTV (element);
@@ -190,16 +192,16 @@ gst_vertigotv_reset_handler (GstElement *element)
filter->zoomrate = 1.01;
}
-static void
-gst_vertigotv_setup(GstVideofilter *videofilter)
+static void
+gst_vertigotv_setup (GstVideofilter * videofilter)
{
GstVertigoTV *filter;
gint area;
- int width = gst_videofilter_get_input_width(videofilter);
- int height = gst_videofilter_get_input_height(videofilter);
+ int width = gst_videofilter_get_input_width (videofilter);
+ int height = gst_videofilter_get_input_height (videofilter);
- g_return_if_fail(GST_IS_VERTIGOTV(videofilter));
- filter = GST_VERTIGOTV(videofilter);
+ g_return_if_fail (GST_IS_VERTIGOTV (videofilter));
+ filter = GST_VERTIGOTV (videofilter);
filter->width = width;
filter->height = height;
@@ -207,16 +209,16 @@ gst_vertigotv_setup(GstVideofilter *videofilter)
area = width * height;
g_free (filter->buffer);
- filter->buffer = (guint32 *) g_malloc (area * 2 * sizeof(guint32));
+ filter->buffer = (guint32 *) g_malloc (area * 2 * sizeof (guint32));
- memset (filter->buffer, 0, area * 2 * sizeof(guint32));
+ memset (filter->buffer, 0, area * 2 * sizeof (guint32));
filter->current_buffer = filter->buffer;
filter->alt_buffer = filter->buffer + area;
filter->phase = 0;
}
static void
-gst_vertigotv_init (GTypeInstance *instance, gpointer g_class)
+gst_vertigotv_init (GTypeInstance * instance, gpointer g_class)
{
GstVertigoTV *filter = GST_VERTIGOTV (instance);
@@ -226,36 +228,40 @@ gst_vertigotv_init (GTypeInstance *instance, gpointer g_class)
filter->zoomrate = 1.01;
}
-static void
-gst_vertigotv_set_parms (GstVertigoTV *filter)
+static void
+gst_vertigotv_set_parms (GstVertigoTV * filter)
{
double vx, vy;
double t;
double x, y;
double dizz;
- dizz = sin (filter->phase) * 10 + sin (filter->phase*1.9+5) * 5;
+ dizz = sin (filter->phase) * 10 + sin (filter->phase * 1.9 + 5) * 5;
x = filter->width / 2;
y = filter->height / 2;
- t = (x*x + y*y) * filter->zoomrate;
+ t = (x * x + y * y) * filter->zoomrate;
if (filter->width > filter->height) {
if (dizz >= 0) {
- if (dizz > x) dizz = x;
- vx = (x * (x - dizz) + y * y) / t;
+ if (dizz > x)
+ dizz = x;
+ vx = (x * (x - dizz) + y * y) / t;
} else {
- if (dizz < -x) dizz = -x;
+ if (dizz < -x)
+ dizz = -x;
vx = (x * (x + dizz) + y * y) / t;
}
vy = (dizz * y) / t;
} else {
if (dizz >= 0) {
- if (dizz > y) dizz = y;
+ if (dizz > y)
+ dizz = y;
vx = (x * x + y * (y - dizz)) / t;
} else {
- if (dizz < -y) dizz = -y;
+ if (dizz < -y)
+ dizz = -y;
vx = (x * x + y * (y + dizz)) / t;
}
vy = (dizz * x) / t;
@@ -266,11 +272,12 @@ gst_vertigotv_set_parms (GstVertigoTV *filter)
filter->sy = (-vx * y - vy * x + y + sin (filter->phase * 6) * 2) * 65536;
filter->phase += filter->phase_increment;
- if (filter->phase > 5700000) filter->phase = 0;
+ if (filter->phase > 5700000)
+ filter->phase = 0;
}
-
-static void
-gst_vertigotv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
+
+static void
+gst_vertigotv_rgb32 (GstVideofilter * videofilter, void *d, void *s)
{
GstVertigoTV *filter;
guint32 *src, *dest;
@@ -299,12 +306,14 @@ gst_vertigotv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
for (x = width; x > 0; x--) {
i = (oy >> 16) * width + (ox >> 16);
- if (i < 0) i = 0;
- if (i >= area) i = area;
-
+ if (i < 0)
+ i = 0;
+ if (i >= area)
+ i = area;
+
v = filter->current_buffer[i] & 0xfcfcff;
v = (v * 3) + ((*src++) & 0xfcfcff);
-
+
*p++ = (v >> 2);
ox += filter->dx;
oy += filter->dy;
@@ -313,7 +322,7 @@ gst_vertigotv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
filter->sy += filter->dx;
}
- memcpy(dest, filter->alt_buffer, area * sizeof(guint32));
+ memcpy (dest, filter->alt_buffer, area * sizeof (guint32));
p = filter->current_buffer;
filter->current_buffer = filter->alt_buffer;
@@ -321,7 +330,8 @@ gst_vertigotv_rgb32 (GstVideofilter *videofilter, void *d, void *s)
}
static void
-gst_vertigotv_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_vertigotv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstVertigoTV *filter;
@@ -343,7 +353,8 @@ gst_vertigotv_set_property (GObject * object, guint prop_id, const GValue * valu
}
static void
-gst_vertigotv_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_vertigotv_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstVertigoTV *filter;
diff --git a/gst/effectv/gstwarp.c b/gst/effectv/gstwarp.c
index 82c24ddd..4eb81a65 100644
--- a/gst/effectv/gstwarp.c
+++ b/gst/effectv/gstwarp.c
@@ -62,45 +62,51 @@
typedef struct _GstWarpTV GstWarpTV;
typedef struct _GstWarpTVClass GstWarpTVClass;
-struct _GstWarpTV {
+struct _GstWarpTV
+{
GstVideofilter videofilter;
gint width, height;
gint *offstable;
gint32 *disttable;
gint32 ctable[1024];
- gint32 sintable[1024+256];
+ gint32 sintable[1024 + 256];
gint tval;
};
-struct _GstWarpTVClass {
+struct _GstWarpTVClass
+{
GstVideofilterClass parent_class;
};
/* GstWarpTV signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static void gst_warptv_base_init (gpointer g_class);
-static void gst_warptv_class_init (gpointer g_class, gpointer class_data);
-static void gst_warptv_init (GTypeInstance *instance, gpointer g_class);
+static void gst_warptv_base_init (gpointer g_class);
+static void gst_warptv_class_init (gpointer g_class, gpointer class_data);
+static void gst_warptv_init (GTypeInstance * instance, gpointer g_class);
-static void gst_warptv_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_warptv_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_warptv_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_warptv_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_warptv_setup(GstVideofilter *videofilter);
-static void initSinTable (GstWarpTV *filter);
-static void initOffsTable (GstWarpTV *filter);
-static void initDistTable (GstWarpTV *filter);
-static void gst_warptv_rgb32 (GstVideofilter *videofilter, void *d, void *s);
+static void gst_warptv_setup (GstVideofilter * videofilter);
+static void initSinTable (GstWarpTV * filter);
+static void initOffsTable (GstWarpTV * filter);
+static void initDistTable (GstWarpTV * filter);
+static void gst_warptv_rgb32 (GstVideofilter * videofilter, void *d, void *s);
GType
gst_warptv_get_type (void)
@@ -109,46 +115,48 @@ gst_warptv_get_type (void)
if (!warptv_type) {
static const GTypeInfo warptv_info = {
- sizeof(GstWarpTVClass),
+ sizeof (GstWarpTVClass),
gst_warptv_base_init,
NULL,
gst_warptv_class_init,
NULL,
NULL,
- sizeof(GstWarpTV),
+ sizeof (GstWarpTV),
0,
gst_warptv_init,
};
- warptv_type = g_type_register_static(GST_TYPE_VIDEOFILTER,
- "GstWarpTV", &warptv_info, 0);
+ warptv_type = g_type_register_static (GST_TYPE_VIDEOFILTER,
+ "GstWarpTV", &warptv_info, 0);
}
return warptv_type;
}
static GstVideofilterFormat gst_warptv_formats[] = {
- { "RGB ", 32, gst_warptv_rgb32, 24, G_BIG_ENDIAN, 0x00ff0000, 0x0000ff00, 0x000000ff },
- { "RGB ", 32, gst_warptv_rgb32, 24, G_BIG_ENDIAN, 0xff000000, 0x00ff0000, 0x0000ff00 },
- { "RGB ", 32, gst_warptv_rgb32, 24, G_BIG_ENDIAN, 0x000000ff, 0x0000ff00, 0x00ff0000 },
- { "RGB ", 32, gst_warptv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000, 0xff000000 },
+ {"RGB ", 32, gst_warptv_rgb32, 24, G_BIG_ENDIAN, 0x00ff0000, 0x0000ff00,
+ 0x000000ff},
+ {"RGB ", 32, gst_warptv_rgb32, 24, G_BIG_ENDIAN, 0xff000000, 0x00ff0000,
+ 0x0000ff00},
+ {"RGB ", 32, gst_warptv_rgb32, 24, G_BIG_ENDIAN, 0x000000ff, 0x0000ff00,
+ 0x00ff0000},
+ {"RGB ", 32, gst_warptv_rgb32, 24, G_BIG_ENDIAN, 0x0000ff00, 0x00ff0000,
+ 0xff000000},
};
static void
gst_warptv_base_init (gpointer g_class)
{
- static GstElementDetails warptv_details = GST_ELEMENT_DETAILS (
- "WarpTV",
- "Filter/Effect/Video",
- "WarpTV does realtime goo'ing of the video input",
- "Sam Lantinga <slouken@devolution.com>"
- );
+ static GstElementDetails warptv_details = GST_ELEMENT_DETAILS ("WarpTV",
+ "Filter/Effect/Video",
+ "WarpTV does realtime goo'ing of the video input",
+ "Sam Lantinga <slouken@devolution.com>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &warptv_details);
- for(i=0;i<G_N_ELEMENTS(gst_warptv_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_warptv_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_warptv_formats + i);
}
@@ -165,10 +173,9 @@ gst_warptv_class_init (gpointer g_class, gpointer class_data)
videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
#if 0
- g_object_class_install_property(gobject_class, ARG_METHOD,
- g_param_spec_enum("method","method","method",
- GST_TYPE_WARPTV_METHOD, GST_WARPTV_METHOD_1,
- G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_METHOD,
+ g_param_spec_enum ("method", "method", "method",
+ GST_TYPE_WARPTV_METHOD, GST_WARPTV_METHOD_1, G_PARAM_READWRITE));
#endif
gobject_class->set_property = gst_warptv_set_property;
@@ -178,28 +185,29 @@ gst_warptv_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_warptv_init (GTypeInstance *instance, gpointer g_class)
+gst_warptv_init (GTypeInstance * instance, gpointer g_class)
{
GstWarpTV *warptv = GST_WARPTV (instance);
GstVideofilter *videofilter;
- GST_DEBUG("gst_warptv_init");
+ GST_DEBUG ("gst_warptv_init");
- videofilter = GST_VIDEOFILTER(warptv);
+ videofilter = GST_VIDEOFILTER (warptv);
/* do stuff */
}
static void
-gst_warptv_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_warptv_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstWarpTV *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_WARPTV(object));
- src = GST_WARPTV(object);
+ g_return_if_fail (GST_IS_WARPTV (object));
+ src = GST_WARPTV (object);
- GST_DEBUG("gst_warptv_set_property");
+ GST_DEBUG ("gst_warptv_set_property");
switch (prop_id) {
#if 0
case ARG_METHOD:
@@ -212,13 +220,14 @@ gst_warptv_set_property (GObject *object, guint prop_id, const GValue *value, GP
}
static void
-gst_warptv_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_warptv_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstWarpTV *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_WARPTV(object));
- src = GST_WARPTV(object);
+ g_return_if_fail (GST_IS_WARPTV (object));
+ src = GST_WARPTV (object);
switch (prop_id) {
#if 0
@@ -233,14 +242,15 @@ gst_warptv_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
}
-static void gst_warptv_setup(GstVideofilter *videofilter)
+static void
+gst_warptv_setup (GstVideofilter * videofilter)
{
GstWarpTV *warptv;
- int width = gst_videofilter_get_input_width(videofilter);
- int height = gst_videofilter_get_input_height(videofilter);
+ int width = gst_videofilter_get_input_width (videofilter);
+ int height = gst_videofilter_get_input_height (videofilter);
- g_return_if_fail(GST_IS_WARPTV(videofilter));
- warptv = GST_WARPTV(videofilter);
+ g_return_if_fail (GST_IS_WARPTV (videofilter));
+ warptv = GST_WARPTV (videofilter);
/* if any setup needs to be done, do it here */
@@ -254,7 +264,7 @@ static void gst_warptv_setup(GstVideofilter *videofilter)
g_free (warptv->disttable);
g_free (warptv->offstable);
- warptv->offstable = (guint32 *) g_malloc (height * sizeof (guint32));
+ warptv->offstable = (guint32 *) g_malloc (height * sizeof (guint32));
warptv->disttable = g_malloc (width * height * sizeof (guint32));
initSinTable (warptv);
@@ -262,11 +272,11 @@ static void gst_warptv_setup(GstVideofilter *videofilter)
initDistTable (warptv);
}
-static void
-initSinTable (GstWarpTV *filter)
+static void
+initSinTable (GstWarpTV * filter)
{
- gint32 *tptr, *tsinptr;
- double i;
+ gint32 *tptr, *tsinptr;
+ double i;
tsinptr = tptr = filter->sintable;
@@ -277,35 +287,36 @@ initSinTable (GstWarpTV *filter)
*tptr++ = *tsinptr++;
}
-static void
-initOffsTable (GstWarpTV *filter)
+static void
+initOffsTable (GstWarpTV * filter)
{
int y;
-
+
for (y = 0; y < filter->height; y++) {
filter->offstable[y] = y * filter->width;
}
}
-
-static void
-initDistTable (GstWarpTV *filter)
+
+static void
+initDistTable (GstWarpTV * filter)
{
gint32 halfw, halfh, *distptr;
+
#ifdef PS2
- float x,y,m;
+ float x, y, m;
#else
- double x,y,m;
+ double x, y, m;
#endif
- halfw = filter->width>> 1;
+ halfw = filter->width >> 1;
halfh = filter->height >> 1;
distptr = filter->disttable;
- m = sqrt ((double)(halfw * halfw + halfh * halfh));
+ m = sqrt ((double) (halfw * halfw + halfh * halfh));
for (y = -halfh; y < halfh; y++)
- for (x= -halfw; x < halfw; x++)
+ for (x = -halfw; x < halfw; x++)
#ifdef PS2
*distptr++ = ((int) ((sqrtf (x * x + y * y) * 511.9999) / m)) << 1;
#else
@@ -313,34 +324,34 @@ initDistTable (GstWarpTV *filter)
#endif
}
-static void gst_warptv_rgb32 (GstVideofilter *videofilter,
- void *d, void *s)
+static void
+gst_warptv_rgb32 (GstVideofilter * videofilter, void *d, void *s)
{
GstWarpTV *warptv;
- int width = gst_videofilter_get_input_width(videofilter);
- int height = gst_videofilter_get_input_height(videofilter);
+ int width = gst_videofilter_get_input_width (videofilter);
+ int height = gst_videofilter_get_input_height (videofilter);
guint32 *src = s;
guint32 *dest = d;
- gint xw,yw,cw;
- gint32 c,i, x,y, dx,dy, maxx, maxy;
+ gint xw, yw, cw;
+ gint32 c, i, x, y, dx, dy, maxx, maxy;
gint32 skip, *ctptr, *distptr;
gint32 *sintable, *ctable;
- g_return_if_fail(GST_IS_WARPTV(videofilter));
- warptv = GST_WARPTV(videofilter);
+ g_return_if_fail (GST_IS_WARPTV (videofilter));
+ warptv = GST_WARPTV (videofilter);
- xw = (gint) (sin ((warptv->tval + 100) * M_PI / 128) * 30);
- yw = (gint) (sin ((warptv->tval) * M_PI / 256) * -35);
- cw = (gint) (sin ((warptv->tval - 70) * M_PI / 64) * 50);
+ xw = (gint) (sin ((warptv->tval + 100) * M_PI / 128) * 30);
+ yw = (gint) (sin ((warptv->tval) * M_PI / 256) * -35);
+ cw = (gint) (sin ((warptv->tval - 70) * M_PI / 64) * 50);
xw += (gint) (sin ((warptv->tval - 10) * M_PI / 512) * 40);
- yw += (gint) (sin ((warptv->tval + 30) * M_PI / 512) * 40);
+ yw += (gint) (sin ((warptv->tval + 30) * M_PI / 512) * 40);
ctptr = warptv->ctable;
distptr = warptv->disttable;
sintable = warptv->sintable;
ctable = warptv->ctable;
- skip = 0 ; /* video_width*sizeof(RGB32)/4 - video_width;; */
+ skip = 0; /* video_width*sizeof(RGB32)/4 - video_width;; */
c = 0;
for (x = 0; x < 512; x++) {
@@ -349,24 +360,28 @@ static void gst_warptv_rgb32 (GstVideofilter *videofilter,
*ctptr++ = ((sintable[i + 256] * xw) >> 15);
c += cw;
}
- maxx = width - 2; maxy = height - 2;
+ maxx = width - 2;
+ maxy = height - 2;
for (y = 0; y < height - 1; y++) {
for (x = 0; x < width; x++) {
- i = *distptr++;
- dx = ctable [i + 1] + x;
- dy = ctable [i] + y;
-
- if (dx < 0) dx = 0;
- else if (dx > maxx) dx = maxx;
-
- if (dy < 0) dy = 0;
- else if (dy > maxy) dy = maxy;
- *dest++ = src[warptv->offstable[dy] + dx];
+ i = *distptr++;
+ dx = ctable[i + 1] + x;
+ dy = ctable[i] + y;
+
+ if (dx < 0)
+ dx = 0;
+ else if (dx > maxx)
+ dx = maxx;
+
+ if (dy < 0)
+ dy = 0;
+ else if (dy > maxy)
+ dy = maxy;
+ *dest++ = src[warptv->offstable[dy] + dx];
}
dest += skip;
}
warptv->tval = (warptv->tval + 1) & 511;
}
-
diff --git a/gst/flx/flx_color.c b/gst/flx/flx_color.c
index b64c90c4..73846845 100644
--- a/gst/flx/flx_color.c
+++ b/gst/flx/flx_color.c
@@ -27,40 +27,41 @@
#include "flx_color.h"
FlxColorSpaceConverter *
-flx_colorspace_converter_new(gint width, gint height)
+flx_colorspace_converter_new (gint width, gint height)
{
- FlxColorSpaceConverter *new = g_malloc(sizeof(FlxColorSpaceConverter));
+ FlxColorSpaceConverter *new = g_malloc (sizeof (FlxColorSpaceConverter));
new->width = width;
new->height = height;
- memset(new->palvec, 0, sizeof(new->palvec));
+ memset (new->palvec, 0, sizeof (new->palvec));
return new;
}
void
-flx_colorspace_converter_destroy(FlxColorSpaceConverter *flxpal)
+flx_colorspace_converter_destroy (FlxColorSpaceConverter * flxpal)
{
- g_return_if_fail(flxpal != NULL);
+ g_return_if_fail (flxpal != NULL);
- g_free(flxpal);
+ g_free (flxpal);
}
void
-flx_colorspace_convert(FlxColorSpaceConverter *flxpal, guchar *src, guchar *dest)
+flx_colorspace_convert (FlxColorSpaceConverter * flxpal, guchar * src,
+ guchar * dest)
{
guint size, col;
- g_return_if_fail(flxpal != NULL);
- g_return_if_fail(src != dest);
+ g_return_if_fail (flxpal != NULL);
+ g_return_if_fail (src != dest);
size = flxpal->width * flxpal->height;
- while(size--) {
- col = (*src++ * 3);
- *dest++ = flxpal->palvec[col+2];
- *dest++ = flxpal->palvec[col+1];
+ while (size--) {
+ col = (*src++ * 3);
+ *dest++ = flxpal->palvec[col + 2];
+ *dest++ = flxpal->palvec[col + 1];
*dest++ = flxpal->palvec[col];
*dest++ = 0;
}
@@ -68,13 +69,14 @@ flx_colorspace_convert(FlxColorSpaceConverter *flxpal, guchar *src, guchar *dest
}
-void
-flx_set_palette_vector(FlxColorSpaceConverter *flxpal, guint start, guint num, guchar *newpal, gint scale)
+void
+flx_set_palette_vector (FlxColorSpaceConverter * flxpal, guint start, guint num,
+ guchar * newpal, gint scale)
{
- guint grab;
-
- g_return_if_fail(flxpal != NULL);
- g_return_if_fail(start < 0x100);
+ guint grab;
+
+ g_return_if_fail (flxpal != NULL);
+ g_return_if_fail (start < 0x100);
grab = ((start + num) > 0x100 ? 0x100 - start : num);
@@ -88,23 +90,21 @@ flx_set_palette_vector(FlxColorSpaceConverter *flxpal, guint start, guint num, g
flxpal->palvec[start++] = newpal[i++] << scale;
grab--;
}
- }
- else {
- memcpy(&flxpal->palvec[start * 3], newpal, grab * 3);
+ } else {
+ memcpy (&flxpal->palvec[start * 3], newpal, grab * 3);
}
}
void
-flx_set_color(FlxColorSpaceConverter *flxpal, guint colr, guint red, guint green, guint blue, gint scale)
+flx_set_color (FlxColorSpaceConverter * flxpal, guint colr, guint red,
+ guint green, guint blue, gint scale)
{
-
- g_return_if_fail(flxpal != NULL);
- g_return_if_fail(colr < 0x100);
- flxpal->palvec[(colr * 3)] = red << scale;
+ g_return_if_fail (flxpal != NULL);
+ g_return_if_fail (colr < 0x100);
+
+ flxpal->palvec[(colr * 3)] = red << scale;
flxpal->palvec[(colr * 3) + 1] = green << scale;
flxpal->palvec[(colr * 3) + 2] = blue << scale;
}
-
-
diff --git a/gst/flx/flx_color.h b/gst/flx/flx_color.h
index d423ab87..2ad852fa 100644
--- a/gst/flx/flx_color.h
+++ b/gst/flx/flx_color.h
@@ -17,7 +17,8 @@
* Boston, MA 02111-1307, USA.
*/
-typedef enum {
+typedef enum
+{
FLX_COLORSPACE_RGB8,
FLX_COLORSPACE_RGB32,
} FlxColorSpaceType;
@@ -25,19 +26,20 @@ typedef enum {
typedef struct _FlxColorSpaceConverter FlxColorSpaceConverter;
-struct _FlxColorSpaceConverter {
- guint width;
- guint height;
- guchar palvec[768];
+struct _FlxColorSpaceConverter
+{
+ guint width;
+ guint height;
+ guchar palvec[768];
};
-void flx_colorspace_converter_destroy(FlxColorSpaceConverter *flxpal);
-void flx_colorspace_convert(FlxColorSpaceConverter *flxpal, guchar *src, guchar *dest);
-FlxColorSpaceConverter * flx_colorspace_converter_new(gint width, gint height);
-
-void flx_set_palette_vector(FlxColorSpaceConverter *flxpal, guint start, guint num,
- guchar *newpal, gint scale);
-void flx_set_color(FlxColorSpaceConverter *flxpal, guint colr, guint red, guint green,
- guint blue, gint scale);
+void flx_colorspace_converter_destroy (FlxColorSpaceConverter * flxpal);
+void flx_colorspace_convert (FlxColorSpaceConverter * flxpal, guchar * src,
+ guchar * dest);
+FlxColorSpaceConverter *flx_colorspace_converter_new (gint width, gint height);
+void flx_set_palette_vector (FlxColorSpaceConverter * flxpal, guint start,
+ guint num, guchar * newpal, gint scale);
+void flx_set_color (FlxColorSpaceConverter * flxpal, guint colr, guint red,
+ guint green, guint blue, gint scale);
diff --git a/gst/flx/flx_fmt.h b/gst/flx/flx_fmt.h
index ac2062ed..1457551a 100644
--- a/gst/flx/flx_fmt.h
+++ b/gst/flx/flx_fmt.h
@@ -24,113 +24,114 @@
#include <gst/gst.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-enum Flx_TypeChunk
-{
- /* frame chunks */
- FLX_PREFIX_TYPE = 0xf100,
- FLX_SCRIPT_CHUNK = 0xf1e0,
- FLX_FRAME_TYPE = 0xf1fa,
- FLX_SEGMENT_TABLE = 0xf1fb,
- FLX_HUFFMAN_TABLE = 0xf1fc,
-
- /* sub chunks */
- FLX_CEL_DATA = 3,
- FLX_COLOR256 = 4,
- FLX_SS2 = 7,
- FLX_COLOR64 = 11,
- FLX_LC = 12,
- FLX_BLACK = 13,
- FLX_BRUN = 15,
- FLX_COPY = 16,
- FLX_MINI = 18,
- FLX_DTA_RUN = 25,
- FLX_DTA_COPY = 26,
- FLX_DTA_LC = 27,
- FLX_LABEL = 31,
- FLX_BMP_MASK = 32,
- FLX_MLEV_MASK = 33,
- FLX_SEGMENT = 34,
- FLX_KEY_IMAGE = 35,
- FLX_KEY_PAL = 36,
- FLX_REGION = 37,
- FLX_WAVE = 38,
- FLX_USERSTRING = 39,
- FLX_RGN_MASK = 40,
-
-};
-
-enum Flx_MagicHdr
+extern "C"
{
- FLX_MAGICHDR_FLI = 0xaf11,
- FLX_MAGICHDR_FLC = 0xaf12,
- FLX_MAGICHDR_FLX = 0xaf44,
- FLX_MAGICHDR_HUFFBWT = 0xaf30,
-};
-
-
-
-typedef struct _FlxHeader
-{
- guint32 size;
- guint16 type;
- guint16 frames;
- guint16 width,height,depth,flags;
- guint32 speed;
- guint16 reserved1;
- /* FLC */
- guint32 created,creator,updated,updater;
- guint16 aspect_dx, aspect_dy;
- /* EGI */
- guint16 ext_flags,keyframes,totalframes;
- guint32 req_memory;
- guint16 max_regions,transp_num;
- guchar reserved2[24];
- /* FLC */
- guint32 oframe1,oframe2;
- guchar reserved3[40];
-} FlxHeader;
+#endif /* __cplusplus */
+
+ enum Flx_TypeChunk
+ {
+ /* frame chunks */
+ FLX_PREFIX_TYPE = 0xf100,
+ FLX_SCRIPT_CHUNK = 0xf1e0,
+ FLX_FRAME_TYPE = 0xf1fa,
+ FLX_SEGMENT_TABLE = 0xf1fb,
+ FLX_HUFFMAN_TABLE = 0xf1fc,
+
+ /* sub chunks */
+ FLX_CEL_DATA = 3,
+ FLX_COLOR256 = 4,
+ FLX_SS2 = 7,
+ FLX_COLOR64 = 11,
+ FLX_LC = 12,
+ FLX_BLACK = 13,
+ FLX_BRUN = 15,
+ FLX_COPY = 16,
+ FLX_MINI = 18,
+ FLX_DTA_RUN = 25,
+ FLX_DTA_COPY = 26,
+ FLX_DTA_LC = 27,
+ FLX_LABEL = 31,
+ FLX_BMP_MASK = 32,
+ FLX_MLEV_MASK = 33,
+ FLX_SEGMENT = 34,
+ FLX_KEY_IMAGE = 35,
+ FLX_KEY_PAL = 36,
+ FLX_REGION = 37,
+ FLX_WAVE = 38,
+ FLX_USERSTRING = 39,
+ FLX_RGN_MASK = 40,
+
+ };
+
+ enum Flx_MagicHdr
+ {
+ FLX_MAGICHDR_FLI = 0xaf11,
+ FLX_MAGICHDR_FLC = 0xaf12,
+ FLX_MAGICHDR_FLX = 0xaf44,
+ FLX_MAGICHDR_HUFFBWT = 0xaf30,
+ };
+
+
+
+ typedef struct _FlxHeader
+ {
+ guint32 size;
+ guint16 type;
+ guint16 frames;
+ guint16 width, height, depth, flags;
+ guint32 speed;
+ guint16 reserved1;
+ /* FLC */
+ guint32 created, creator, updated, updater;
+ guint16 aspect_dx, aspect_dy;
+ /* EGI */
+ guint16 ext_flags, keyframes, totalframes;
+ guint32 req_memory;
+ guint16 max_regions, transp_num;
+ guchar reserved2[24];
+ /* FLC */
+ guint32 oframe1, oframe2;
+ guchar reserved3[40];
+ } FlxHeader;
#define FlxHeaderSize 128
-typedef struct _FlxFrameChunk
-{
- guint32 size;
- guint16 id;
-} FlxFrameChunk;
+ typedef struct _FlxFrameChunk
+ {
+ guint32 size;
+ guint16 id;
+ } FlxFrameChunk;
#define FlxFrameChunkSize 6
-typedef struct _FlxPrefixChunk
-{
- guint16 chunks;
- guchar reserved[8];
-} FlxPrefixChunk;
-
-typedef struct _FlxSegmentTable
-{
- guint16 segments;
-} FlxSegmentTable;
-
-typedef struct _FlxHuffmanTable
-{
- guint16 codelength;
- guint16 numcodes;
- guchar reserved[6];
-} FlxHuffmanTable;
-
-typedef struct _FlxFrameType
-{
- guint16 chunks;
- guint16 delay;
- guchar reserved[6];
-} FlxFrameType;
+ typedef struct _FlxPrefixChunk
+ {
+ guint16 chunks;
+ guchar reserved[8];
+ } FlxPrefixChunk;
+
+ typedef struct _FlxSegmentTable
+ {
+ guint16 segments;
+ } FlxSegmentTable;
+
+ typedef struct _FlxHuffmanTable
+ {
+ guint16 codelength;
+ guint16 numcodes;
+ guchar reserved[6];
+ } FlxHuffmanTable;
+
+ typedef struct _FlxFrameType
+ {
+ guint16 chunks;
+ guint16 delay;
+ guchar reserved[6];
+ } FlxFrameType;
#define FlxFrameTypeSize 10
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_FLX_FMT_H__ */
+#endif /* __GST_FLX_FMT_H__ */
diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
index aaddee58..a84ce2d2 100644
--- a/gst/flx/gstflxdec.c
+++ b/gst/flx/gstflxdec.c
@@ -37,120 +37,122 @@ static GstElementDetails flxdec_details = {
};
/* Flx signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0
};
/* input */
-static GstStaticPadTemplate sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "video/x-fli" )
-);
+static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("video/x-fli")
+ );
/* output */
-static GstStaticPadTemplate src_video_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( GST_VIDEO_CAPS_xRGB_HOST_ENDIAN )
-);
+static GstStaticPadTemplate src_video_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_xRGB_HOST_ENDIAN)
+ );
-static void gst_flxdec_class_init (GstFlxDecClass *klass);
-static void gst_flxdec_base_init (GstFlxDecClass *klass);
-static void gst_flxdec_init (GstFlxDec *flxdec);
+static void gst_flxdec_class_init (GstFlxDecClass * klass);
+static void gst_flxdec_base_init (GstFlxDecClass * klass);
+static void gst_flxdec_init (GstFlxDec * flxdec);
-static void gst_flxdec_loop (GstElement *element);
+static void gst_flxdec_loop (GstElement * element);
-static GstElementStateReturn
- gst_flxdec_change_state (GstElement *element);
+static GstElementStateReturn gst_flxdec_change_state (GstElement * element);
-static void gst_flxdec_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_flxdec_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_flxdec_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_flxdec_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void flx_decode_color (GstFlxDec *, guchar *, guchar *, gint);
-static void flx_decode_brun (GstFlxDec *, guchar *, guchar *);
-static void flx_decode_delta_fli (GstFlxDec *, guchar *, guchar *);
-static void flx_decode_delta_flc (GstFlxDec *, guchar *, guchar *);
+static void flx_decode_color (GstFlxDec *, guchar *, guchar *, gint);
+static void flx_decode_brun (GstFlxDec *, guchar *, guchar *);
+static void flx_decode_delta_fli (GstFlxDec *, guchar *, guchar *);
+static void flx_decode_delta_flc (GstFlxDec *, guchar *, guchar *);
#define rndalign(off) ((off) + ((off) % 2))
static GstElementClass *parent_class = NULL;
GType
-gst_flxdec_get_type(void)
+gst_flxdec_get_type (void)
{
static GType flxdec_type = 0;
if (!flxdec_type) {
static const GTypeInfo flxdec_info = {
- sizeof(GstFlxDecClass),
- (GBaseInitFunc)gst_flxdec_base_init,
+ sizeof (GstFlxDecClass),
+ (GBaseInitFunc) gst_flxdec_base_init,
NULL,
- (GClassInitFunc)gst_flxdec_class_init,
+ (GClassInitFunc) gst_flxdec_class_init,
NULL,
NULL,
- sizeof(GstFlxDec),
+ sizeof (GstFlxDec),
0,
- (GInstanceInitFunc)gst_flxdec_init,
+ (GInstanceInitFunc) gst_flxdec_init,
};
- flxdec_type = g_type_register_static(GST_TYPE_ELEMENT, "GstFlxDec", &flxdec_info, 0);
+ flxdec_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstFlxDec", &flxdec_info, 0);
}
return flxdec_type;
}
static void
-gst_flxdec_base_init (GstFlxDecClass *klass)
+gst_flxdec_base_init (GstFlxDecClass * klass)
{
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
-
+
gst_element_class_set_details (gstelement_class, &flxdec_details);
gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_static_pad_template_get (&sink_factory));
gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_video_factory));
+ gst_static_pad_template_get (&src_video_factory));
}
-static void
-gst_flxdec_class_init (GstFlxDecClass *klass)
+static void
+gst_flxdec_class_init (GstFlxDecClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- gobject_class->set_property = gst_flxdec_set_property;
+ gobject_class->set_property = gst_flxdec_set_property;
gobject_class->get_property = gst_flxdec_get_property;
gstelement_class->change_state = gst_flxdec_change_state;
}
-
-static void
-gst_flxdec_init(GstFlxDec *flxdec)
+
+static void
+gst_flxdec_init (GstFlxDec * flxdec)
{
- flxdec->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&sink_factory), "sink");
- gst_element_add_pad(GST_ELEMENT(flxdec),flxdec->sinkpad);
- gst_element_set_loop_function(GST_ELEMENT(flxdec),gst_flxdec_loop);
+ flxdec->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get (&sink_factory),
+ "sink");
+ gst_element_add_pad (GST_ELEMENT (flxdec), flxdec->sinkpad);
+ gst_element_set_loop_function (GST_ELEMENT (flxdec), gst_flxdec_loop);
- flxdec->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&src_video_factory), "src");
- gst_element_add_pad(GST_ELEMENT(flxdec),flxdec->srcpad);
+ flxdec->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&src_video_factory), "src");
+ gst_element_add_pad (GST_ELEMENT (flxdec), flxdec->srcpad);
flxdec->bs = NULL;
flxdec->frame = NULL;
@@ -158,75 +160,74 @@ gst_flxdec_init(GstFlxDec *flxdec)
}
static void
-flx_decode_chunks (GstFlxDec *flxdec , gulong count, gchar *data, gchar *dest)
+flx_decode_chunks (GstFlxDec * flxdec, gulong count, gchar * data, gchar * dest)
{
- FlxFrameChunk *hdr;
+ FlxFrameChunk *hdr;
- g_return_if_fail(data != NULL);
+ g_return_if_fail (data != NULL);
while (count--) {
- hdr = (FlxFrameChunk *) data;
+ hdr = (FlxFrameChunk *) data;
data += FlxFrameChunkSize;
- switch(hdr->id)
- {
+ switch (hdr->id) {
case FLX_COLOR64:
- flx_decode_color(flxdec, data, dest, 2);
- data += rndalign(hdr->size) - FlxFrameChunkSize;
- break;
+ flx_decode_color (flxdec, data, dest, 2);
+ data += rndalign (hdr->size) - FlxFrameChunkSize;
+ break;
case FLX_COLOR256:
- flx_decode_color(flxdec, data, dest, 0);
- data += rndalign(hdr->size) - FlxFrameChunkSize;
- break;
+ flx_decode_color (flxdec, data, dest, 0);
+ data += rndalign (hdr->size) - FlxFrameChunkSize;
+ break;
case FLX_BRUN:
- flx_decode_brun(flxdec, data, dest);
- data += rndalign(hdr->size) - FlxFrameChunkSize;
- break;
+ flx_decode_brun (flxdec, data, dest);
+ data += rndalign (hdr->size) - FlxFrameChunkSize;
+ break;
case FLX_LC:
- flx_decode_delta_fli(flxdec, data, dest);
- data += rndalign(hdr->size) - FlxFrameChunkSize;
- break;
+ flx_decode_delta_fli (flxdec, data, dest);
+ data += rndalign (hdr->size) - FlxFrameChunkSize;
+ break;
case FLX_SS2:
- flx_decode_delta_flc(flxdec, data, dest);
- data += rndalign(hdr->size) - FlxFrameChunkSize;
- break;
+ flx_decode_delta_flc (flxdec, data, dest);
+ data += rndalign (hdr->size) - FlxFrameChunkSize;
+ break;
case FLX_BLACK:
- memset(dest, 0, flxdec->size);
- break;
+ memset (dest, 0, flxdec->size);
+ break;
case FLX_MINI:
- data += rndalign(hdr->size) - FlxFrameChunkSize;
- break;
+ data += rndalign (hdr->size) - FlxFrameChunkSize;
+ break;
default:
- g_print("GstFlxDec: Unimplented chunk type: 0x%02x size: %d\n",
- hdr->id, hdr->size);
- g_print("GstFlxDec: Skipping...\n");
- data += rndalign(hdr->size) - FlxFrameChunkSize;
- break;
+ g_print ("GstFlxDec: Unimplented chunk type: 0x%02x size: %d\n",
+ hdr->id, hdr->size);
+ g_print ("GstFlxDec: Skipping...\n");
+ data += rndalign (hdr->size) - FlxFrameChunkSize;
+ break;
}
}
}
static void
-flx_decode_color(GstFlxDec *flxdec, guchar *data, guchar *dest, gint scale)
+flx_decode_color (GstFlxDec * flxdec, guchar * data, guchar * dest, gint scale)
{
guint packs, count, indx;
- g_return_if_fail(flxdec != NULL);
+ g_return_if_fail (flxdec != NULL);
packs = (data[0] + (data[1] << 8));
data += 2;
- indx = 0;
+ indx = 0;
- g_print("GstFlxDec: cmap packs: %d\n", packs);
+ g_print ("GstFlxDec: cmap packs: %d\n", packs);
while (packs--) {
/* color map index + skip count */
indx += *data++;
@@ -236,23 +237,23 @@ flx_decode_color(GstFlxDec *flxdec, guchar *data, guchar *dest, gint scale)
if (count == 0)
count = 256;
- g_print("GstFlxDec: cmap count: %d (indx: %d)\n", count, indx);
- flx_set_palette_vector(flxdec->converter, indx, count, data, scale);
+ g_print ("GstFlxDec: cmap count: %d (indx: %d)\n", count, indx);
+ flx_set_palette_vector (flxdec->converter, indx, count, data, scale);
data += (count * 3);
}
}
-static void
-flx_decode_brun(GstFlxDec *flxdec, guchar *data, guchar *dest)
+static void
+flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
{
- gulong count, lines, row;
- guchar x;
-
- g_return_if_fail(flxdec != NULL);
+ gulong count, lines, row;
+ guchar x;
+
+ g_return_if_fail (flxdec != NULL);
lines = flxdec->hdr.height;
- while(lines--) {
+ while (lines--) {
/* packet count.
* should not be used anymore, since the flc format can
* contain more then 255 RLE packets. we use the frame
@@ -261,101 +262,101 @@ flx_decode_brun(GstFlxDec *flxdec, guchar *data, guchar *dest)
data++;
row = flxdec->hdr.width;
- while(row) {
+ while (row) {
count = *data++;
- if (count > 0x7f) {
- /* literal run */
- count = 0x100 - count;
- row -= count;
+ if (count > 0x7f) {
+ /* literal run */
+ count = 0x100 - count;
+ row -= count;
+
+ while (count--)
+ *dest++ = *data++;
- while(count--)
- *dest++ = *data++;
-
} else {
- /* replicate run */
- row -= count;
- x = *data++;
+ /* replicate run */
+ row -= count;
+ x = *data++;
- while(count--)
- *dest++ = x;
+ while (count--)
+ *dest++ = x;
}
}
}
}
-static void
-flx_decode_delta_fli(GstFlxDec *flxdec, guchar *data, guchar *dest)
+static void
+flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
{
- gulong count, packets, lines, start_line, start_l;
- guchar *start_p, x;
-
- g_return_if_fail(flxdec != NULL);
- g_return_if_fail(flxdec->delta != NULL);
+ gulong count, packets, lines, start_line, start_l;
+ guchar *start_p, x;
+
+ g_return_if_fail (flxdec != NULL);
+ g_return_if_fail (flxdec->delta != NULL);
/* use last frame for delta */
- memcpy(dest, GST_BUFFER_DATA(flxdec->delta),
- GST_BUFFER_SIZE(flxdec->delta));
+ memcpy (dest, GST_BUFFER_DATA (flxdec->delta),
+ GST_BUFFER_SIZE (flxdec->delta));
start_line = (data[0] + (data[1] << 8));
- lines = (data[2] + (data[3] << 8));
- data += 4;
+ lines = (data[2] + (data[3] << 8));
+ data += 4;
/* start position of delta */
dest += (flxdec->hdr.width * start_line);
start_p = dest;
start_l = lines;
- while(lines--) {
+ while (lines--) {
/* packet count */
packets = *data++;
- while(packets--) {
+ while (packets--) {
/* skip count */
dest += *data++;
/* RLE count */
count = *data++;
- if (count > 0x7f) {
- /* literal run */
- count = 0x100 - count;
- x = *data++;
+ if (count > 0x7f) {
+ /* literal run */
+ count = 0x100 - count;
+ x = *data++;
- while (count--)
- *dest++ = x;
+ while (count--)
+ *dest++ = x;
} else {
- /* replicate run */
- while (count--)
- *dest++ = *data++;
+ /* replicate run */
+ while (count--)
+ *dest++ = *data++;
}
}
start_p += flxdec->hdr.width;
dest = start_p;
- }
+ }
}
-static void
-flx_decode_delta_flc(GstFlxDec *flxdec, guchar *data, guchar *dest)
+static void
+flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
{
- gulong count, lines, start_l, opcode;
- guchar *start_p;
-
- g_return_if_fail(flxdec != NULL);
- g_return_if_fail(flxdec->delta != NULL);
+ gulong count, lines, start_l, opcode;
+ guchar *start_p;
+
+ g_return_if_fail (flxdec != NULL);
+ g_return_if_fail (flxdec->delta != NULL);
/* use last frame for delta */
- memcpy(dest, GST_BUFFER_DATA(flxdec->delta),
- GST_BUFFER_SIZE(flxdec->delta));
+ memcpy (dest, GST_BUFFER_DATA (flxdec->delta),
+ GST_BUFFER_SIZE (flxdec->delta));
- lines = (data[0] + (data[1] << 8));
- data += 2;
+ lines = (data[0] + (data[1] << 8));
+ data += 2;
- start_p = dest;
- start_l = lines;
+ start_p = dest;
+ start_l = lines;
while (lines) {
dest = start_p + (flxdec->hdr.width * (start_l - lines));
@@ -364,47 +365,47 @@ flx_decode_delta_flc(GstFlxDec *flxdec, guchar *data, guchar *dest)
while ((opcode = (data[0] + (data[1] << 8))) & 0xc000) {
data += 2;
if ((opcode & 0xc000) == 0xc000) {
- /* skip count */
- start_l += (0x10000 - opcode);
- dest += flxdec->hdr.width * (0x10000 - opcode);
+ /* skip count */
+ start_l += (0x10000 - opcode);
+ dest += flxdec->hdr.width * (0x10000 - opcode);
} else {
- /* last pixel */
- dest += flxdec->hdr.width;
- *dest++ = (opcode & 0xff);
- }
+ /* last pixel */
+ dest += flxdec->hdr.width;
+ *dest++ = (opcode & 0xff);
+ }
}
data += 2;
/* last opcode is the packet count */
- while(opcode--) {
+ while (opcode--) {
/* skip count */
dest += *data++;
-
+
/* RLE count */
count = *data++;
-
+
if (count > 0x7f) {
- /* replicate word run */
- count = 0x100 - count;
- while (count--) {
- *dest++ = data[0];
- *dest++ = data[1];
- }
- data += 2;
+ /* replicate word run */
+ count = 0x100 - count;
+ while (count--) {
+ *dest++ = data[0];
+ *dest++ = data[1];
+ }
+ data += 2;
} else {
- /* literal word run */
- while (count--) {
- *dest++ = *data++;
- *dest++ = *data++;
- }
+ /* literal word run */
+ while (count--) {
+ *dest++ = *data++;
+ *dest++ = *data++;
+ }
}
}
lines--;
}
}
-
-static GstBuffer*
-flx_get_data(GstFlxDec *flxdec, gulong size)
+
+static GstBuffer *
+flx_get_data (GstFlxDec * flxdec, gulong size)
{
GstBuffer *retbuf;
guint32 got_bytes;
@@ -424,36 +425,36 @@ flx_get_data(GstFlxDec *flxdec, gulong size)
}
-static void
-gst_flxdec_loop (GstElement *element)
+static void
+gst_flxdec_loop (GstElement * element)
{
- GstBuffer *buf;
- GstBuffer *databuf;
- guchar *data, *chunk;
- GstCaps *caps;
-
- GstFlxDec *flxdec;
- FlxHeader *flxh;
- FlxFrameChunk *flxfh;
-
+ GstBuffer *buf;
+ GstBuffer *databuf;
+ guchar *data, *chunk;
+ GstCaps *caps;
+
+ GstFlxDec *flxdec;
+ FlxHeader *flxh;
+ FlxFrameChunk *flxfh;
+
g_return_if_fail (element != NULL);
- g_return_if_fail (GST_IS_FLXDEC(element));
+ g_return_if_fail (GST_IS_FLXDEC (element));
GST_DEBUG ("entering loop function");
-
- flxdec = GST_FLXDEC(element);
+
+ flxdec = GST_FLXDEC (element);
if (flxdec->state == GST_FLXDEC_READ_HEADER) {
- databuf = flx_get_data(flxdec, FlxHeaderSize);
+ databuf = flx_get_data (flxdec, FlxHeaderSize);
if (!databuf) {
g_print ("empty buffer\n");
return;
}
- data = GST_BUFFER_DATA(databuf);
+ data = GST_BUFFER_DATA (databuf);
- memcpy((char *) &flxdec->hdr, data, sizeof(FlxHeader));
+ memcpy ((char *) &flxdec->hdr, data, sizeof (FlxHeader));
gst_buffer_unref (databuf);
@@ -461,119 +462,115 @@ gst_flxdec_loop (GstElement *element)
/* check header */
if (flxh->type != FLX_MAGICHDR_FLI &&
- flxh->type != FLX_MAGICHDR_FLC &&
- flxh->type != FLX_MAGICHDR_FLX) {
- GST_ELEMENT_ERROR (element, STREAM, WRONG_TYPE, (NULL), ("not a flx file (type %d)\n", flxh->type));
+ flxh->type != FLX_MAGICHDR_FLC && flxh->type != FLX_MAGICHDR_FLX) {
+ GST_ELEMENT_ERROR (element, STREAM, WRONG_TYPE, (NULL),
+ ("not a flx file (type %d)\n", flxh->type));
return;
}
-
-
- g_print("GstFlxDec: size : %d\n", flxh->size);
- g_print("GstFlxDec: frames : %d\n", flxh->frames);
- g_print("GstFlxDec: width : %d\n", flxh->width);
- g_print("GstFlxDec: height : %d\n", flxh->height);
- g_print("GstFlxDec: depth : %d\n", flxh->depth);
- g_print("GstFlxDec: speed : %d\n", flxh->speed);
+
+
+ g_print ("GstFlxDec: size : %d\n", flxh->size);
+ g_print ("GstFlxDec: frames : %d\n", flxh->frames);
+ g_print ("GstFlxDec: width : %d\n", flxh->width);
+ g_print ("GstFlxDec: height : %d\n", flxh->height);
+ g_print ("GstFlxDec: depth : %d\n", flxh->depth);
+ g_print ("GstFlxDec: speed : %d\n", flxh->speed);
flxdec->next_time = 0;
if (flxh->type == FLX_MAGICHDR_FLI) {
flxdec->frame_time = JIFFIE * flxh->speed;
- }
- else {
+ } else {
flxdec->frame_time = flxh->speed * GST_MSECOND;
}
-
+
caps = gst_caps_from_string (GST_VIDEO_CAPS_xRGB_HOST_ENDIAN);
gst_caps_set_simple (caps,
- "width", G_TYPE_INT, flxh->width,
+ "width", G_TYPE_INT, flxh->width,
"height", G_TYPE_INT, flxh->height,
- "framerate", G_TYPE_DOUBLE, GST_SECOND/flxdec->frame_time, NULL);
+ "framerate", G_TYPE_DOUBLE, GST_SECOND / flxdec->frame_time, NULL);
- if (flxh->depth <= 8)
- flxdec->converter = flx_colorspace_converter_new(flxh->width, flxh->height);
+ if (flxh->depth <= 8)
+ flxdec->converter =
+ flx_colorspace_converter_new (flxh->width, flxh->height);
- if (flxh->type == FLX_MAGICHDR_FLC ||
- flxh->type == FLX_MAGICHDR_FLX) {
- g_print("GstFlxDec: (FLC) aspect_dx : %d\n", flxh->aspect_dx);
- g_print("GstFlxDec: (FLC) aspect_dy : %d\n", flxh->aspect_dy);
- g_print("GstFlxDec: (FLC) oframe1 : 0x%08x\n", flxh->oframe1);
- g_print("GstFlxDec: (FLC) oframe2 : 0x%08x\n", flxh->oframe2);
+ if (flxh->type == FLX_MAGICHDR_FLC || flxh->type == FLX_MAGICHDR_FLX) {
+ g_print ("GstFlxDec: (FLC) aspect_dx : %d\n", flxh->aspect_dx);
+ g_print ("GstFlxDec: (FLC) aspect_dy : %d\n", flxh->aspect_dy);
+ g_print ("GstFlxDec: (FLC) oframe1 : 0x%08x\n", flxh->oframe1);
+ g_print ("GstFlxDec: (FLC) oframe2 : 0x%08x\n", flxh->oframe2);
}
-
+
flxdec->size = (flxh->width * flxh->height);
-
+
/* create delta and output frame */
- flxdec->frame = gst_buffer_new();
- flxdec->delta = gst_buffer_new();
- GST_BUFFER_DATA(flxdec->frame) = g_malloc(flxdec->size);
- GST_BUFFER_SIZE(flxdec->frame) = flxdec->size;
- GST_BUFFER_DATA(flxdec->delta) = g_malloc(flxdec->size);
- GST_BUFFER_SIZE(flxdec->delta) = flxdec->size;
+ flxdec->frame = gst_buffer_new ();
+ flxdec->delta = gst_buffer_new ();
+ GST_BUFFER_DATA (flxdec->frame) = g_malloc (flxdec->size);
+ GST_BUFFER_SIZE (flxdec->frame) = flxdec->size;
+ GST_BUFFER_DATA (flxdec->delta) = g_malloc (flxdec->size);
+ GST_BUFFER_SIZE (flxdec->delta) = flxdec->size;
flxdec->state = GST_FLXDEC_PLAYING;
- }
- else if (flxdec->state == GST_FLXDEC_PLAYING) {
+ } else if (flxdec->state == GST_FLXDEC_PLAYING) {
GstBuffer *out;
- databuf = flx_get_data(flxdec, FlxFrameChunkSize);
+ databuf = flx_get_data (flxdec, FlxFrameChunkSize);
if (!databuf)
return;
- flxfh = (FlxFrameChunk *) GST_BUFFER_DATA(databuf);
-
- switch(flxfh->id) {
+ flxfh = (FlxFrameChunk *) GST_BUFFER_DATA (databuf);
+
+ switch (flxfh->id) {
case FLX_FRAME_TYPE:
- buf = flx_get_data(flxdec, flxfh->size-FlxFrameChunkSize);
-
- chunk = GST_BUFFER_DATA(buf);
-
- if (((FlxFrameType *)chunk)->chunks == 0)
- break;
-
- /* create 32 bits output frame */
- out = gst_buffer_new();
- GST_BUFFER_DATA(out) = g_malloc(flxdec->size * 4);
- GST_BUFFER_SIZE(out) = flxdec->size * 4;
-
- /* decode chunks */
- flx_decode_chunks(flxdec,
- ((FlxFrameType *)chunk)->chunks,
- GST_BUFFER_DATA(buf) + FlxFrameTypeSize,
- GST_BUFFER_DATA(flxdec->frame));
-
- /* destroy input buffer*/
- gst_buffer_unref(buf);
-
- /* save copy of the current frame for possible delta. */
- memcpy(GST_BUFFER_DATA(flxdec->delta),
- GST_BUFFER_DATA(flxdec->frame),
- GST_BUFFER_SIZE(flxdec->delta));
-
- /* convert current frame. */
- flx_colorspace_convert(flxdec->converter,
- GST_BUFFER_DATA(flxdec->frame),
- GST_BUFFER_DATA(out));
+ buf = flx_get_data (flxdec, flxfh->size - FlxFrameChunkSize);
+
+ chunk = GST_BUFFER_DATA (buf);
+
+ if (((FlxFrameType *) chunk)->chunks == 0)
+ break;
+
+ /* create 32 bits output frame */
+ out = gst_buffer_new ();
+ GST_BUFFER_DATA (out) = g_malloc (flxdec->size * 4);
+ GST_BUFFER_SIZE (out) = flxdec->size * 4;
+
+ /* decode chunks */
+ flx_decode_chunks (flxdec,
+ ((FlxFrameType *) chunk)->chunks,
+ GST_BUFFER_DATA (buf) + FlxFrameTypeSize,
+ GST_BUFFER_DATA (flxdec->frame));
+
+ /* destroy input buffer */
+ gst_buffer_unref (buf);
+
+ /* save copy of the current frame for possible delta. */
+ memcpy (GST_BUFFER_DATA (flxdec->delta),
+ GST_BUFFER_DATA (flxdec->frame), GST_BUFFER_SIZE (flxdec->delta));
+
+ /* convert current frame. */
+ flx_colorspace_convert (flxdec->converter,
+ GST_BUFFER_DATA (flxdec->frame), GST_BUFFER_DATA (out));
GST_BUFFER_TIMESTAMP (out) = flxdec->next_time;
flxdec->next_time += flxdec->frame_time;
- gst_pad_push(flxdec->srcpad, GST_DATA (out));
-
- break;
+ gst_pad_push (flxdec->srcpad, GST_DATA (out));
+
+ break;
}
/* destroy header buffer */
- gst_buffer_unref(databuf);
+ gst_buffer_unref (databuf);
}
}
-static GstElementStateReturn
-gst_flxdec_change_state (GstElement *element)
+static GstElementStateReturn
+gst_flxdec_change_state (GstElement * element)
{
GstFlxDec *flxdec;
- flxdec = GST_FLXDEC(element);
+ flxdec = GST_FLXDEC (element);
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_NULL_TO_READY:
@@ -596,20 +593,21 @@ gst_flxdec_change_state (GstElement *element)
case GST_STATE_READY_TO_NULL:
break;
}
-
+
parent_class->change_state (element);
return GST_STATE_SUCCESS;
}
-static void
-gst_flxdec_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+static void
+gst_flxdec_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstFlxDec *flxdec;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_FLXDEC(object));
- flxdec = GST_FLXDEC(object);
+ g_return_if_fail (GST_IS_FLXDEC (object));
+ flxdec = GST_FLXDEC (object);
switch (prop_id) {
default:
@@ -617,14 +615,15 @@ gst_flxdec_set_property (GObject *object, guint prop_id, const GValue *value, GP
}
}
-static void
-gst_flxdec_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+static void
+gst_flxdec_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstFlxDec *flxdec;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_FLXDEC(object));
- flxdec = GST_FLXDEC(object);
+ g_return_if_fail (GST_IS_FLXDEC (object));
+ flxdec = GST_FLXDEC (object);
switch (prop_id) {
default:
@@ -634,23 +633,17 @@ gst_flxdec_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_library_load ("gstbytestream"))
return FALSE;
return gst_element_register (plugin, "flxdec",
- GST_RANK_PRIMARY, GST_TYPE_FLXDEC);
+ GST_RANK_PRIMARY, GST_TYPE_FLXDEC);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "flxdec",
- "FLX video decoder",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "flxdec",
+ "FLX video decoder",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/flx/gstflxdec.h b/gst/flx/gstflxdec.h
index c7d6f386..c5ce60ec 100644
--- a/gst/flx/gstflxdec.h
+++ b/gst/flx/gstflxdec.h
@@ -27,42 +27,46 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
+
+ typedef enum
+ {
+ GST_FLXDEC_READ_HEADER,
+ GST_FLXDEC_PLAYING,
+ } GstFlxDecState;
-typedef enum {
- GST_FLXDEC_READ_HEADER,
- GST_FLXDEC_PLAYING,
-} GstFlxDecState;
-
/* Definition of structure storing data for this element. */
-typedef struct _GstFlxDec GstFlxDec;
+ typedef struct _GstFlxDec GstFlxDec;
-struct _GstFlxDec {
- GstElement element;
+ struct _GstFlxDec
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- gboolean active, new_meta;
+ gboolean active, new_meta;
- GstBuffer *delta, *frame;
- GstByteStream *bs;
- gulong size;
- GstFlxDecState state;
- glong frame_time;
- gint64 next_time;
+ GstBuffer *delta, *frame;
+ GstByteStream *bs;
+ gulong size;
+ GstFlxDecState state;
+ glong frame_time;
+ gint64 next_time;
- FlxColorSpaceConverter *converter;
+ FlxColorSpaceConverter *converter;
- FlxHeader hdr;
-};
+ FlxHeader hdr;
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstFlxDecClass GstFlxDecClass;
-struct _GstFlxDecClass {
- GstElementClass parent_class;
-};
+ typedef struct _GstFlxDecClass GstFlxDecClass;
+ struct _GstFlxDecClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_FLXDEC \
@@ -77,12 +81,12 @@ struct _GstFlxDecClass {
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FLXDEC))
/* Standard function returning type information. */
-GType gst_flxdec_get_type(void);
+ GType gst_flxdec_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_FLX_DECODER_H__ */
+#endif /* __GST_FLX_DECODER_H__ */
diff --git a/gst/goom/filters.c b/gst/goom/filters.c
index 5d74b622..14bd7ec6 100644
--- a/gst/goom/filters.c
+++ b/gst/goom/filters.c
@@ -43,44 +43,45 @@ extern volatile guint32 resoly;
#ifdef USE_ASM
#ifdef MMX
-int mmx_zoom () ;
+int mmx_zoom ();
guint32 mmx_zoom_size;
#endif /* MMX */
#ifdef POWERPC
extern unsigned int useAltivec;
-extern void ppc_zoom(void);
-extern void ppc_zoom_altivec(void);
+extern void ppc_zoom (void);
+extern void ppc_zoom_altivec (void);
unsigned int ppcsize4;
#endif /* PowerPC */
unsigned int *coeffs = 0, *freecoeffs = 0;
-guint32 *expix1 = 0; /* pointeur exporte vers p1 */
-guint32 *expix2 = 0; /* pointeur exporte vers p2 */
+guint32 *expix1 = 0; /* pointeur exporte vers p1 */
+guint32 *expix2 = 0; /* pointeur exporte vers p2 */
guint32 zoom_width;
#endif /* ASM */
-static int sintable [0xffff] ;
+static int sintable[0xffff];
static int vitesse = 127;
-static char theMode = AMULETTE_MODE ;
+static char theMode = AMULETTE_MODE;
static int vPlaneEffect = 0;
static int hPlaneEffect = 0;
static char noisify = 2;
-static int middleX , middleY ;
-static unsigned char sqrtperte = 16 ;
+static int middleX, middleY;
+static unsigned char sqrtperte = 16;
-static int * firedec = 0 ;
+static int *firedec = 0;
/* retourne x>>s , en testant le signe de x */
-inline int ShiftRight (int x, const unsigned char s)
+inline int
+ShiftRight (int x, const unsigned char s)
{
- if (x<0)
- return -(-x >> s) ;
+ if (x < 0)
+ return -(-x >> s);
else
- return x >> s ;
+ return x >> s;
}
/*
@@ -88,454 +89,463 @@ inline int ShiftRight (int x, const unsigned char s)
px et py indique la nouvelle position (en sqrtperte ieme de pixel)
(valeur * 16)
*/
-void calculatePXandPY (int x, int y, int *px, int *py)
+void
+calculatePXandPY (int x, int y, int *px, int *py)
{
- if (theMode == WATER_MODE)
- {
- static int wave = 0 ;
- static int wavesp = 0 ;
- int yy ;
-
- yy = y + RAND () % 4 + wave / 10 ;
- yy -= RAND () % 4;
- if (yy < 0) yy = 0 ;
- if (yy >= resoly) yy = resoly - 1 ;
-
- *px = (x<<4) + firedec [yy] + (wave / 10) ;
- *py = (y<<4) + 132 - ((vitesse < 132) ? vitesse : 131) ;
-
- wavesp += RAND () % 3;
- wavesp -= RAND () % 3;
- if (wave < -10) wavesp += 2 ;
- if (wave > 10) wavesp -= 2 ;
- wave += (wavesp / 10) + RAND () % 3;
- wave -= RAND () % 3;
- if (wavesp > 100) wavesp = (wavesp * 9) / 10 ;
+ if (theMode == WATER_MODE) {
+ static int wave = 0;
+ static int wavesp = 0;
+ int yy;
+
+ yy = y + RAND () % 4 + wave / 10;
+ yy -= RAND () % 4;
+ if (yy < 0)
+ yy = 0;
+ if (yy >= resoly)
+ yy = resoly - 1;
+
+ *px = (x << 4) + firedec[yy] + (wave / 10);
+ *py = (y << 4) + 132 - ((vitesse < 132) ? vitesse : 131);
+
+ wavesp += RAND () % 3;
+ wavesp -= RAND () % 3;
+ if (wave < -10)
+ wavesp += 2;
+ if (wave > 10)
+ wavesp -= 2;
+ wave += (wavesp / 10) + RAND () % 3;
+ wave -= RAND () % 3;
+ if (wavesp > 100)
+ wavesp = (wavesp * 9) / 10;
+ } else {
+ int dist;
+ register int vx, vy;
+ int fvitesse = vitesse << 4;
+
+ if (noisify) {
+ x += RAND () % noisify;
+ x -= RAND () % noisify;
+ y += RAND () % noisify;
+ y -= RAND () % noisify;
}
+
+ if (hPlaneEffect)
+ vx = ((x - middleX) << 9) + hPlaneEffect * (y - middleY);
+ else
+ vx = (x - middleX) << 9;
+
+ if (vPlaneEffect)
+ vy = ((y - middleY) << 9) + vPlaneEffect * (x - middleX);
else
- {
- int dist ;
- register int vx,vy ;
- int fvitesse = vitesse << 4 ;
-
- if (noisify)
- {
- x += RAND() % noisify;
- x -= RAND() % noisify;
- y += RAND() % noisify;
- y -= RAND() % noisify;
- }
-
- if (hPlaneEffect) vx = ((x - middleX) << 9) + hPlaneEffect * (y - middleY);
- else vx = (x - middleX) << 9 ;
-
- if (vPlaneEffect) vy = ((y - middleY) << 9) + vPlaneEffect * (x - middleX);
- else vy = (y - middleY) << 9 ;
-
- switch (theMode)
- {
- case WAVE_MODE:
- dist = ShiftRight(vx,9) * ShiftRight(vx,9) + ShiftRight(vy,9) * ShiftRight(vy,9);
- fvitesse *= 1024 + ShiftRight (
- sintable [(unsigned short)(0xffff*dist*EFFECT_DISTORS)],6);
- fvitesse /= 1024 ;
- break ;
- case CRYSTAL_BALL_MODE:
- dist = ShiftRight(vx,9) * ShiftRight(vx,9) + ShiftRight(vy,9) * ShiftRight(vy,9);
- fvitesse += (dist * EFFECT_DISTORS >> 10);
- break;
- case AMULETTE_MODE:
- dist = ShiftRight(vx,9) * ShiftRight(vx,9) + ShiftRight(vy,9) * ShiftRight(vy,9);
- fvitesse -= (dist * EFFECT_DISTORS >> 4);
- break;
- case SCRUNCH_MODE:
- dist = ShiftRight(vx,9) * ShiftRight(vx,9) + ShiftRight(vy,9) * ShiftRight(vy,9);
- fvitesse -= (dist * EFFECT_DISTORS >> 9);
- break;
- }
- if (vx<0) *px = (middleX << 4) - (-(vx * fvitesse) >> 16) ;
- else *px = (middleX << 4) + ((vx * fvitesse) >> 16) ;
- if (vy<0) *py = (middleY << 4) - (-(vy * fvitesse) >> 16) ;
- else *py = (middleY << 4) + ((vy * fvitesse) >> 16) ;
+ vy = (y - middleY) << 9;
+
+ switch (theMode) {
+ case WAVE_MODE:
+ dist =
+ ShiftRight (vx, 9) * ShiftRight (vx, 9) + ShiftRight (vy,
+ 9) * ShiftRight (vy, 9);
+ fvitesse *=
+ 1024 +
+ ShiftRight (sintable[(unsigned short) (0xffff * dist *
+ EFFECT_DISTORS)], 6);
+ fvitesse /= 1024;
+ break;
+ case CRYSTAL_BALL_MODE:
+ dist =
+ ShiftRight (vx, 9) * ShiftRight (vx, 9) + ShiftRight (vy,
+ 9) * ShiftRight (vy, 9);
+ fvitesse += (dist * EFFECT_DISTORS >> 10);
+ break;
+ case AMULETTE_MODE:
+ dist =
+ ShiftRight (vx, 9) * ShiftRight (vx, 9) + ShiftRight (vy,
+ 9) * ShiftRight (vy, 9);
+ fvitesse -= (dist * EFFECT_DISTORS >> 4);
+ break;
+ case SCRUNCH_MODE:
+ dist =
+ ShiftRight (vx, 9) * ShiftRight (vx, 9) + ShiftRight (vy,
+ 9) * ShiftRight (vy, 9);
+ fvitesse -= (dist * EFFECT_DISTORS >> 9);
+ break;
}
+ if (vx < 0)
+ *px = (middleX << 4) - (-(vx * fvitesse) >> 16);
+ else
+ *px = (middleX << 4) + ((vx * fvitesse) >> 16);
+ if (vy < 0)
+ *py = (middleY << 4) - (-(vy * fvitesse) >> 16);
+ else
+ *py = (middleY << 4) + ((vy * fvitesse) >> 16);
+ }
}
/*#define _DEBUG */
-inline void setPixelRGB(Uint *buffer, Uint x, Uint y, Color c)
+inline void
+setPixelRGB (Uint * buffer, Uint x, Uint y, Color c)
{
/* buffer[ y*WIDTH + x ] = (c.r<<16)|(c.v<<8)|c.b */
#ifdef _DEBUG_PIXEL
- if ( x+y*resolx >= resolx * resoly)
- {
- fprintf (stderr,"setPixel ERROR : hors du tableau... %i, %i\n", x,y) ;
- /*exit (1) ; */
- }
+ if (x + y * resolx >= resolx * resoly) {
+ fprintf (stderr, "setPixel ERROR : hors du tableau... %i, %i\n", x, y);
+ /*exit (1) ; */
+ }
#endif
-
+
#ifdef USE_DGA
- buffer[ y*resolx + x ] = (c.b<<16)|(c.v<<8)|c.r ;
+ buffer[y * resolx + x] = (c.b << 16) | (c.v << 8) | c.r;
#else
- buffer[ y*resolx + x ] = (c.r<<16)|(c.v<<8)|c.b ;
+ buffer[y * resolx + x] = (c.r << 16) | (c.v << 8) | c.b;
#endif
}
-inline void setPixelRGB_ (Uint *buffer, Uint x, Color c)
+inline void
+setPixelRGB_ (Uint * buffer, Uint x, Color c)
{
#ifdef _DEBUG
- if ( x >= resolx*resoly )
- {
- printf ("setPixel ERROR : hors du tableau... %i, %i\n", x,y) ;
- exit (1) ;
- }
+ if (x >= resolx * resoly) {
+ printf ("setPixel ERROR : hors du tableau... %i, %i\n", x, y);
+ exit (1);
+ }
#endif
-
+
#ifdef USE_DGA
- buffer[ x ] = (c.b<<16)|(c.v<<8)|c.r ;
+ buffer[x] = (c.b << 16) | (c.v << 8) | c.r;
#else
- buffer[ x ] = (c.r<<16)|(c.v<<8)|c.b ;
+ buffer[x] = (c.r << 16) | (c.v << 8) | c.b;
#endif
}
-inline void getPixelRGB (Uint *buffer, Uint x, Uint y, Color *c)
+inline void
+getPixelRGB (Uint * buffer, Uint x, Uint y, Color * c)
{
- register unsigned char *tmp8;
+ register unsigned char *tmp8;
- #ifdef _DEBUG
- if (x + y * resolx >= resolx*resoly)
- {
- printf ("getPixel ERROR : hors du tableau... %i, %i\n", x,y) ;
- exit (1) ;
- }
- #endif
+#ifdef _DEBUG
+ if (x + y * resolx >= resolx * resoly) {
+ printf ("getPixel ERROR : hors du tableau... %i, %i\n", x, y);
+ exit (1);
+ }
+#endif
#ifdef __BIG_ENDIAN__
- c->b = *(unsigned char *)(tmp8 = (unsigned char*)(buffer + (x + y*resolx)));
- c->r = *(unsigned char *)(++tmp8);
- c->v = *(unsigned char *)(++tmp8);
- c->b = *(unsigned char *)(++tmp8);
-
+ c->b = *(unsigned char *) (tmp8 =
+ (unsigned char *) (buffer + (x + y * resolx)));
+ c->r = *(unsigned char *) (++tmp8);
+ c->v = *(unsigned char *) (++tmp8);
+ c->b = *(unsigned char *) (++tmp8);
+
#else
- /* ATTENTION AU PETIT INDIEN */
- c->b = *(unsigned char *)(tmp8 = (unsigned char*)(buffer + (x + y*resolx)));
- c->v = *(unsigned char *)(++tmp8);
- c->r = *(unsigned char *)(++tmp8);
+ /* ATTENTION AU PETIT INDIEN */
+ c->b = *(unsigned char *) (tmp8 =
+ (unsigned char *) (buffer + (x + y * resolx)));
+ c->v = *(unsigned char *) (++tmp8);
+ c->r = *(unsigned char *) (++tmp8);
/* *c = (Color) buffer[x+y*WIDTH] ; */
#endif
}
-inline void getPixelRGB_ (Uint *buffer, Uint x, Color *c)
+inline void
+getPixelRGB_ (Uint * buffer, Uint x, Color * c)
{
- register unsigned char *tmp8;
+ register unsigned char *tmp8;
- #ifdef _DEBUG
- if ( x >= resolx*resoly )
- {
- printf ("getPixel ERROR : hors du tableau... %i\n", x) ;
- exit (1) ;
- }
- #endif
+#ifdef _DEBUG
+ if (x >= resolx * resoly) {
+ printf ("getPixel ERROR : hors du tableau... %i\n", x);
+ exit (1);
+ }
+#endif
#ifdef __BIG_ENDIAN__
- c->b = *(unsigned char *)(tmp8 = (unsigned char*)(buffer + x));
- c->r = *(unsigned char *)(++tmp8);
- c->v = *(unsigned char *)(++tmp8);
- c->b = *(unsigned char *)(++tmp8);
-
+ c->b = *(unsigned char *) (tmp8 = (unsigned char *) (buffer + x));
+ c->r = *(unsigned char *) (++tmp8);
+ c->v = *(unsigned char *) (++tmp8);
+ c->b = *(unsigned char *) (++tmp8);
+
#else
- /* ATTENTION AU PETIT INDIEN */
- c->b = *(unsigned char *)(tmp8 = (unsigned char*)(buffer + x));
- c->v = *(unsigned char *)(++tmp8);
- c->r = *(unsigned char *)(++tmp8);
+ /* ATTENTION AU PETIT INDIEN */
+ c->b = *(unsigned char *) (tmp8 = (unsigned char *) (buffer + x));
+ c->v = *(unsigned char *) (++tmp8);
+ c->r = *(unsigned char *) (++tmp8);
/* *c = (Color) buffer[x+y*WIDTH] ; */
#endif
}
/*===============================================================*/
-void zoomFilterFastRGB (Uint *pix1,
- Uint *pix2,
- ZoomFilterData *zf,
- Uint resx, Uint resy)
+void
+zoomFilterFastRGB (Uint * pix1,
+ Uint * pix2, ZoomFilterData * zf, Uint resx, Uint resy)
{
static guint32 prevX = 0, prevY = 0;
- static char reverse = 0 ; /*vitesse inversé..(zoom out) */
- /* static int perte = 100; // 100 = normal */
- static unsigned char pertedec = 8 ;
+ static char reverse = 0; /*vitesse inversé..(zoom out) */
+
+ /* static int perte = 100; // 100 = normal */
+ static unsigned char pertedec = 8;
static char firstTime = 1;
-
+
Uint x, y;
/* static unsigned int prevX = 0, prevY = 0; */
-
+
#ifdef USE_ASM
- expix1 = pix1 ;
- expix2 = pix2 ;
+ expix1 = pix1;
+ expix2 = pix2;
#else
Color couleur;
- Color col1,col2,col3,col4;
- Uint position ;
+ Color col1, col2, col3, col4;
+ Uint position;
static unsigned int *pos10 = 0;
- static unsigned int *c1 = 0,
- *c2 = 0,
- *c3 = 0,
- *c4 = 0;
+ static unsigned int *c1 = 0, *c2 = 0, *c3 = 0, *c4 = 0;
#endif
-
- if ((prevX != resx) || (prevY != resy))
- {
- prevX = resx;
- prevY = resy;
+
+ if ((prevX != resx) || (prevY != resy)) {
+ prevX = resx;
+ prevY = resy;
#ifndef USE_ASM
- if (c1) free (c1) ;
- if (c2) free (c2) ;
- if (c3) free (c3) ;
- if (c4) free (c4) ;
- if (pos10) free (pos10) ;
- c1=c2=c3=c4=pos10=0;
+ if (c1)
+ free (c1);
+ if (c2)
+ free (c2);
+ if (c3)
+ free (c3);
+ if (c4)
+ free (c4);
+ if (pos10)
+ free (pos10);
+ c1 = c2 = c3 = c4 = pos10 = 0;
#else
- if (coeffs) free (freecoeffs) ;
- coeffs = 0;
+ if (coeffs)
+ free (freecoeffs);
+ coeffs = 0;
#endif
- middleX = resx / 2 ;
- middleY = resy - 1;
- firstTime = 1 ;
- if (firedec) free (firedec);
- firedec=0;
- }
-
- if (zf)
- {
- reverse = zf->reverse ;
- vitesse = zf->vitesse ;
- if (reverse)
- vitesse = 256 - vitesse ;
+ middleX = resx / 2;
+ middleY = resy - 1;
+ firstTime = 1;
+ if (firedec)
+ free (firedec);
+ firedec = 0;
+ }
+
+ if (zf) {
+ reverse = zf->reverse;
+ vitesse = zf->vitesse;
+ if (reverse)
+ vitesse = 256 - vitesse;
#ifndef USE_ASM
- sqrtperte = zf->sqrtperte ;
+ sqrtperte = zf->sqrtperte;
#endif
- pertedec = zf->pertedec ;
- middleX = zf->middleX ;
- middleY = zf->middleY ;
- theMode = zf->mode ;
- hPlaneEffect = zf->hPlaneEffect;
- vPlaneEffect = zf->vPlaneEffect;
- noisify = zf->noisify;
- }
-
- if (firstTime || zf)
- {
-
- /* generation d'une table de sinus */
- if (firstTime)
- {
- unsigned short us ;
-
- firstTime = 0;
+ pertedec = zf->pertedec;
+ middleX = zf->middleX;
+ middleY = zf->middleY;
+ theMode = zf->mode;
+ hPlaneEffect = zf->hPlaneEffect;
+ vPlaneEffect = zf->vPlaneEffect;
+ noisify = zf->noisify;
+ }
+
+ if (firstTime || zf) {
+
+ /* generation d'une table de sinus */
+ if (firstTime) {
+ unsigned short us;
+
+ firstTime = 0;
#ifdef USE_ASM
- freecoeffs = (unsigned int *)
- malloc (resx*resy*2*sizeof(unsigned int)+128);
- coeffs = (guint32 *)((1+((unsigned int)(freecoeffs))/128)*128);
+ freecoeffs = (unsigned int *)
+ malloc (resx * resy * 2 * sizeof (unsigned int) + 128);
+ coeffs = (guint32 *) ((1 + ((unsigned int) (freecoeffs)) / 128) * 128);
#else
- pos10 = (unsigned int *) malloc (resx*resy*sizeof(unsigned int)) ;
- c1 = (unsigned int *) malloc (resx*resy*sizeof(unsigned int)) ;
- c2 = (unsigned int *) malloc (resx*resy*sizeof(unsigned int)) ;
- c3 = (unsigned int *) malloc (resx*resy*sizeof(unsigned int)) ;
- c4 = (unsigned int *) malloc (resx*resy*sizeof(unsigned int)) ;
+ pos10 = (unsigned int *) malloc (resx * resy * sizeof (unsigned int));
+ c1 = (unsigned int *) malloc (resx * resy * sizeof (unsigned int));
+ c2 = (unsigned int *) malloc (resx * resy * sizeof (unsigned int));
+ c3 = (unsigned int *) malloc (resx * resy * sizeof (unsigned int));
+ c4 = (unsigned int *) malloc (resx * resy * sizeof (unsigned int));
#endif
- for (us=0; us<0xffff; us++)
- {
- sintable [us] = (int)(1024.0f * sin (us*2*3.31415f/0xffff)) ;
- }
-
- {
- int loopv ;
- firedec = (int *) malloc (prevY * sizeof(int)) ;
- for (loopv = prevY ; loopv != 0 ;)
- {
- static int decc = 0 ;
- static int spdc = 0 ;
- static int accel = 0 ;
- loopv -- ;
- firedec [loopv] = decc ;
- decc += spdc / 10 ;
- spdc+= RAND () % 3;
- spdc-= RAND () % 3;
-
- if (decc > 4)
- spdc -= 1 ;
- if (decc < -4)
- spdc += 1 ;
-
- if (spdc > 30)
- spdc = spdc - RAND () % 3 + accel / 10 ;
- if (spdc < -30)
- spdc = spdc + RAND () % 3 + accel / 10 ;
-
- if (decc > 8 && spdc > 1 )
- spdc -= RAND () % 3 - 2 ;
-
- if (decc < -8 && spdc < -1 )
- spdc += RAND () % 3 + 2 ;
-
- if (decc > 8 || decc < -8)
- decc = decc * 8 / 9 ;
-
- accel += RAND () % 2;
- accel -= RAND () % 2;
- if (accel > 20)
- accel -= 2 ;
- if (accel < -20)
- accel += 2 ;
- }
- }
- }
-
-
- /* generation du buffer */
- for (y = 0 ; y < prevY ; y++)
- for (x = 0; x < prevX ; x++)
- {
- int px,py;
- unsigned char coefv,coefh;
-
- /* calculer px et py en fonction de */
- /* x,y,middleX,middleY et theMode */
- calculatePXandPY (x,y,&px, &py) ;
- if ((px == x << 4) && (py == y << 4))
- py += 8 ;
-
- if ( (py<0) || (px<0) ||
- (py>=(prevY-1)*sqrtperte) ||
- (px>=(prevX-1)*sqrtperte))
- {
+ for (us = 0; us < 0xffff; us++) {
+ sintable[us] = (int) (1024.0f * sin (us * 2 * 3.31415f / 0xffff));
+ }
+
+ {
+ int loopv;
+ firedec = (int *) malloc (prevY * sizeof (int));
+ for (loopv = prevY; loopv != 0;) {
+ static int decc = 0;
+ static int spdc = 0;
+ static int accel = 0;
+
+ loopv--;
+ firedec[loopv] = decc;
+ decc += spdc / 10;
+ spdc += RAND () % 3;
+ spdc -= RAND () % 3;
+
+ if (decc > 4)
+ spdc -= 1;
+ if (decc < -4)
+ spdc += 1;
+
+ if (spdc > 30)
+ spdc = spdc - RAND () % 3 + accel / 10;
+ if (spdc < -30)
+ spdc = spdc + RAND () % 3 + accel / 10;
+
+ if (decc > 8 && spdc > 1)
+ spdc -= RAND () % 3 - 2;
+
+ if (decc < -8 && spdc < -1)
+ spdc += RAND () % 3 + 2;
+
+ if (decc > 8 || decc < -8)
+ decc = decc * 8 / 9;
+
+ accel += RAND () % 2;
+ accel -= RAND () % 2;
+ if (accel > 20)
+ accel -= 2;
+ if (accel < -20)
+ accel += 2;
+ }
+ }
+ }
+
+
+ /* generation du buffer */
+ for (y = 0; y < prevY; y++)
+ for (x = 0; x < prevX; x++) {
+ int px, py;
+ unsigned char coefv, coefh;
+
+ /* calculer px et py en fonction de */
+ /* x,y,middleX,middleY et theMode */
+ calculatePXandPY (x, y, &px, &py);
+ if ((px == x << 4) && (py == y << 4))
+ py += 8;
+
+ if ((py < 0) || (px < 0) ||
+ (py >= (prevY - 1) * sqrtperte) ||
+ (px >= (prevX - 1) * sqrtperte)) {
#ifdef USE_ASM
- coeffs[(y*prevX+x)*2]=0 ;
- coeffs[(y*prevX+x)*2+1]=0;
+ coeffs[(y * prevX + x) * 2] = 0;
+ coeffs[(y * prevX + x) * 2 + 1] = 0;
#else
- pos10[y*prevX+x]=0 ;
- c1[y*prevX+x] = 0 ;
- c2[y*prevX+x] = 0 ;
- c3[y*prevX+x] = 0 ;
- c4[y*prevX+x] = 0 ;
+ pos10[y * prevX + x] = 0;
+ c1[y * prevX + x] = 0;
+ c2[y * prevX + x] = 0;
+ c3[y * prevX + x] = 0;
+ c4[y * prevX + x] = 0;
#endif
- }
- else
- {
- int npx10 ;
- int npy10 ;
- int pos;
-
- npx10 = (px/sqrtperte) ;
- npy10 = (py/sqrtperte) ;
-
+ } else {
+ int npx10;
+ int npy10;
+ int pos;
+
+ npx10 = (px / sqrtperte);
+ npy10 = (py / sqrtperte);
+
/* if (npx10 >= prevX) fprintf(stderr,"error npx:%d",npx10);
if (npy10 >= prevY) fprintf(stderr,"error npy:%d",npy10);
-*/
- coefh = px % sqrtperte ;
- coefv = py % sqrtperte ;
+*/
+ coefh = px % sqrtperte;
+ coefv = py % sqrtperte;
#ifdef USE_ASM
- pos = (y*prevX+x)*2;
- coeffs[pos] = (npx10 + prevX * npy10) * 4;
-
- if (!(coefh || coefv))
- coeffs[pos+1] = (sqrtperte*sqrtperte-1) ;
- else
- coeffs[pos+1] = (
- (sqrtperte-coefh) *
- (sqrtperte-coefv) );
-
- coeffs[pos+1] |= (coefh * (sqrtperte-coefv)) << 8 ;
- coeffs[pos+1] |= ((sqrtperte-coefh) * coefv) << 16 ;
- coeffs[pos+1] |= (coefh * coefv)<<24 ;
+ pos = (y * prevX + x) * 2;
+ coeffs[pos] = (npx10 + prevX * npy10) * 4;
+
+ if (!(coefh || coefv))
+ coeffs[pos + 1] = (sqrtperte * sqrtperte - 1);
+ else
+ coeffs[pos + 1] = ((sqrtperte - coefh) * (sqrtperte - coefv));
+
+ coeffs[pos + 1] |= (coefh * (sqrtperte - coefv)) << 8;
+ coeffs[pos + 1] |= ((sqrtperte - coefh) * coefv) << 16;
+ coeffs[pos + 1] |= (coefh * coefv) << 24;
#else
- pos = y*prevX+x;
- pos10[pos]= npx10 + prevX * npy10 ;
-
- if (!(coefh || coefv))
- c1[pos] = sqrtperte*sqrtperte-1 ;
- else
- c1[pos] = (sqrtperte-coefh) * (sqrtperte-coefv);
-
- c2[pos] = coefh * (sqrtperte-coefv) ;
- c3[pos] = (sqrtperte-coefh) * coefv ;
- c4[pos] = coefh * coefv ;
+ pos = y * prevX + x;
+ pos10[pos] = npx10 + prevX * npy10;
+
+ if (!(coefh || coefv))
+ c1[pos] = sqrtperte * sqrtperte - 1;
+ else
+ c1[pos] = (sqrtperte - coefh) * (sqrtperte - coefv);
+
+ c2[pos] = coefh * (sqrtperte - coefv);
+ c3[pos] = (sqrtperte - coefh) * coefv;
+ c4[pos] = coefh * coefv;
#endif
- }
- }
- }
-
+ }
+ }
+ }
#ifdef USE_ASM
- #ifdef MMX
- zoom_width = prevX ;
- mmx_zoom_size = prevX * prevY ;
- mmx_zoom () ;
- #endif
-
- #ifdef POWERPC
- zoom_width = prevX;
- if (useAltivec)
- {
- ppcsize4 = ((unsigned int)(prevX*prevY))/4;
- ppc_zoom_altivec();
- }
- else
- {
- ppcsize4 = ((unsigned int)(prevX*prevY));
- ppc_zoom();
- }
- #endif
+#ifdef MMX
+ zoom_width = prevX;
+ mmx_zoom_size = prevX * prevY;
+ mmx_zoom ();
+#endif
+
+#ifdef POWERPC
+ zoom_width = prevX;
+ if (useAltivec) {
+ ppcsize4 = ((unsigned int) (prevX * prevY)) / 4;
+ ppc_zoom_altivec ();
+ } else {
+ ppcsize4 = ((unsigned int) (prevX * prevY));
+ ppc_zoom ();
+ }
+#endif
#else
- for (position=0; position<prevX*prevY; position++)
- {
- getPixelRGB_(pix1,pos10[position],&col1);
- getPixelRGB_(pix1,pos10[position]+1,&col2);
- getPixelRGB_(pix1,pos10[position]+prevX,&col3);
- getPixelRGB_(pix1,pos10[position]+prevX+1,&col4);
-
- couleur.r = col1.r * c1[position]
- + col2.r * c2[position]
- + col3.r * c3[position]
- + col4.r * c4[position];
- couleur.r >>= pertedec ;
-
- couleur.v = col1.v * c1[position]
- + col2.v * c2[position]
- + col3.v * c3[position]
- + col4.v * c4[position];
- couleur.v >>= pertedec ;
-
- couleur.b = col1.b * c1[position]
- + col2.b * c2[position]
- + col3.b * c3[position]
- + col4.b * c4[position];
- couleur.b >>= pertedec ;
-
- setPixelRGB_(pix2,position,couleur);
- }
+ for (position = 0; position < prevX * prevY; position++) {
+ getPixelRGB_ (pix1, pos10[position], &col1);
+ getPixelRGB_ (pix1, pos10[position] + 1, &col2);
+ getPixelRGB_ (pix1, pos10[position] + prevX, &col3);
+ getPixelRGB_ (pix1, pos10[position] + prevX + 1, &col4);
+
+ couleur.r = col1.r * c1[position]
+ + col2.r * c2[position]
+ + col3.r * c3[position]
+ + col4.r * c4[position];
+ couleur.r >>= pertedec;
+
+ couleur.v = col1.v * c1[position]
+ + col2.v * c2[position]
+ + col3.v * c3[position]
+ + col4.v * c4[position];
+ couleur.v >>= pertedec;
+
+ couleur.b = col1.b * c1[position]
+ + col2.b * c2[position]
+ + col3.b * c3[position]
+ + col4.b * c4[position];
+ couleur.b >>= pertedec;
+
+ setPixelRGB_ (pix2, position, couleur);
+ }
#endif
}
-void pointFilter(Uint *pix1, Color c,
- float t1, float t2, float t3, float t4,
- Uint cycle)
+void
+pointFilter (Uint * pix1, Color c,
+ float t1, float t2, float t3, float t4, Uint cycle)
{
- Uint x = (Uint)((int)middleX + (int)(t1*cos((float)cycle/t3)));
- Uint y = (Uint)((int)middleY + (int)(t2*sin((float)cycle/t4)));
- if ((x>1) && (y>1) && (x<resolx-2) && (y<resoly-2))
- {
- setPixelRGB(pix1, x+1, y, c);
- setPixelRGB(pix1, x, y+1, c);
- setPixelRGB(pix1, x+1, y+1, WHITE);
- setPixelRGB(pix1, x+2, y+1, c);
- setPixelRGB(pix1, x+1, y+2, c);
- }
+ Uint x = (Uint) ((int) middleX + (int) (t1 * cos ((float) cycle / t3)));
+ Uint y = (Uint) ((int) middleY + (int) (t2 * sin ((float) cycle / t4)));
+
+ if ((x > 1) && (y > 1) && (x < resolx - 2) && (y < resoly - 2)) {
+ setPixelRGB (pix1, x + 1, y, c);
+ setPixelRGB (pix1, x, y + 1, c);
+ setPixelRGB (pix1, x + 1, y + 1, WHITE);
+ setPixelRGB (pix1, x + 2, y + 1, c);
+ setPixelRGB (pix1, x + 1, y + 2, c);
+ }
}
diff --git a/gst/goom/filters.h b/gst/goom/filters.h
index 33784c29..c4f0926d 100644
--- a/gst/goom/filters.h
+++ b/gst/goom/filters.h
@@ -7,17 +7,17 @@
typedef struct
{
- int vitesse ;
- unsigned char pertedec ;
- unsigned char sqrtperte ;
- int middleX,middleY ;
- char reverse ;
- char mode ;
+ int vitesse;
+ unsigned char pertedec;
+ unsigned char sqrtperte;
+ int middleX, middleY;
+ char reverse;
+ char mode;
/** @since June 2001 */
- int hPlaneEffect ;
- int vPlaneEffect ;
- char noisify ;
-} ZoomFilterData ;
+ int hPlaneEffect;
+ int vPlaneEffect;
+ char noisify;
+} ZoomFilterData;
#define NORMAL_MODE 0
@@ -27,9 +27,8 @@ typedef struct
#define AMULETTE_MODE 4
#define WATER_MODE 5
-void pointFilter(guint32 *pix1, Color c,
- float t1, float t2, float t3, float t4,
- guint32 cycle);
+void pointFilter (guint32 * pix1, Color c,
+ float t1, float t2, float t3, float t4, guint32 cycle);
/* filtre de zoom :
le contenu de pix1 est copie dans pix2, avec l'effet appliqué
@@ -42,10 +41,8 @@ Uint middleX,
Uint middleY);
*/
-void zoomFilterFastRGB (guint32 *pix1,
- guint32 *pix2,
- ZoomFilterData *zf,
- guint32 resx, guint32 resy);
+void zoomFilterFastRGB (guint32 * pix1,
+ guint32 * pix2, ZoomFilterData * zf, guint32 resx, guint32 resy);
/* filtre sin :
diff --git a/gst/goom/goom_core.c b/gst/goom/goom_core.c
index cf841127..5c4a75a3 100644
--- a/gst/goom/goom_core.c
+++ b/gst/goom/goom_core.c
@@ -17,410 +17,393 @@
/**-----------------------------------------------------**
** SHARED DATA **
**-----------------------------------------------------**/
-static guint32 *pixel ;
-static guint32 *back ;
-static guint32 *p1,*p2,*tmp;
+static guint32 *pixel;
+static guint32 *back;
+static guint32 *p1, *p2, *tmp;
static guint32 cycle;
guint32 resolx, resoly, buffsize;
-void goom_init (guint32 resx, guint32 resy)
+void
+goom_init (guint32 resx, guint32 resy)
{
#ifdef VERBOSE
- printf ("GOOM: init (%d, %d);\n", resx,resy);
+ printf ("GOOM: init (%d, %d);\n", resx, resy);
#endif
- resolx = resx;
- resoly = resy;
- buffsize = resx * resy;
+ resolx = resx;
+ resoly = resy;
+ buffsize = resx * resy;
- pixel = (guint32 *) malloc (buffsize * sizeof(guint32) + 128);
- back = (guint32 *) malloc (buffsize * sizeof(guint32) + 128);
- RAND_INIT (GPOINTER_TO_INT(pixel));
- cycle = 0 ;
+ pixel = (guint32 *) malloc (buffsize * sizeof (guint32) + 128);
+ back = (guint32 *) malloc (buffsize * sizeof (guint32) + 128);
+ RAND_INIT (GPOINTER_TO_INT (pixel));
+ cycle = 0;
- p1 = (void *)(((unsigned long)pixel + 0x7f)&(~0x7f));
- p2 = (void *)(((unsigned long)back + 0x7f)&(~0x7f));
+ p1 = (void *) (((unsigned long) pixel + 0x7f) & (~0x7f));
+ p2 = (void *) (((unsigned long) back + 0x7f) & (~0x7f));
}
-void goom_set_resolution (guint32 resx, guint32 resy)
+void
+goom_set_resolution (guint32 resx, guint32 resy)
{
- free (pixel);
- free (back);
+ free (pixel);
+ free (back);
- resolx = resx;
- resoly = resy;
- buffsize = resx * resy;
+ resolx = resx;
+ resoly = resy;
+ buffsize = resx * resy;
- pixel = (guint32 *) malloc (buffsize * sizeof(guint32) + 128);
- memset(pixel,0,buffsize * sizeof(guint32) + 128);
- back = (guint32 *) malloc (buffsize * sizeof(guint32) + 128);
- memset(back,0,buffsize * sizeof(guint32) + 128);
+ pixel = (guint32 *) malloc (buffsize * sizeof (guint32) + 128);
+ memset (pixel, 0, buffsize * sizeof (guint32) + 128);
+ back = (guint32 *) malloc (buffsize * sizeof (guint32) + 128);
+ memset (back, 0, buffsize * sizeof (guint32) + 128);
- p1 = (void *)(((unsigned long)pixel + 0x7f)&(~0x7f));
- p2 = (void *)(((unsigned long)back + 0x7f)&(~0x7f));
+ p1 = (void *) (((unsigned long) pixel + 0x7f) & (~0x7f));
+ p2 = (void *) (((unsigned long) back + 0x7f) & (~0x7f));
}
-guint32 * goom_update (gint16 data [2][512])
+guint32 *
+goom_update (gint16 data[2][512])
{
- static int lockvar = 0 ; /* pour empecher de nouveaux changements */
- static int goomvar = 0 ; /* boucle des gooms */
- static int totalgoom = 0 ; /* nombre de gooms par seconds */
- static int agoom = 0 ; /* un goom a eu lieu.. */
- static int loopvar = 0 ; /* mouvement des points */
- static int speedvar = 0 ; /* vitesse des particules */
- static int lineMode = 0 ; /* l'effet lineaire a dessiner */
- guint32 * return_val;
- guint32 pointWidth;
- guint32 pointHeight;
- int incvar ; /* volume du son */
- int accelvar ; /* acceleration des particules */
- int i ;
- float largfactor ; /* elargissement de l'intervalle d'évolution des points */
- static char goomlimit = 2 ; /* sensibilité du goom */
- static ZoomFilterData zfd =
- {
- 128, 8, 16,
- 1, 1, 0, WAVE_MODE,
- 0, 0, 0};
-
- ZoomFilterData *pzfd;
-
- /* test if the config has changed, update it if so */
- pointWidth = (resolx * 2) / 5;
- pointHeight = (resoly * 2) / 5;
-
- /* ! etude du signal ... */
- incvar = 0 ;
- for (i=0;i<512;i++)
- {
- if (incvar < data[0][i]) incvar = data[0][i] ;
- }
+ static int lockvar = 0; /* pour empecher de nouveaux changements */
+ static int goomvar = 0; /* boucle des gooms */
+ static int totalgoom = 0; /* nombre de gooms par seconds */
+ static int agoom = 0; /* un goom a eu lieu.. */
+ static int loopvar = 0; /* mouvement des points */
+ static int speedvar = 0; /* vitesse des particules */
+ static int lineMode = 0; /* l'effet lineaire a dessiner */
+ guint32 *return_val;
+ guint32 pointWidth;
+ guint32 pointHeight;
+ int incvar; /* volume du son */
+ int accelvar; /* acceleration des particules */
+ int i;
+ float largfactor; /* elargissement de l'intervalle d'évolution des points */
+ static char goomlimit = 2; /* sensibilité du goom */
+ static ZoomFilterData zfd = {
+ 128, 8, 16,
+ 1, 1, 0, WAVE_MODE,
+ 0, 0, 0
+ };
+
+ ZoomFilterData *pzfd;
+
+ /* test if the config has changed, update it if so */
+ pointWidth = (resolx * 2) / 5;
+ pointHeight = (resoly * 2) / 5;
+
+ /* ! etude du signal ... */
+ incvar = 0;
+ for (i = 0; i < 512; i++) {
+ if (incvar < data[0][i])
+ incvar = data[0][i];
+ }
- accelvar = incvar / 5000 ;
- if (speedvar>5)
- {
- accelvar-- ;
- if (speedvar>20) accelvar -- ;
- if (speedvar>40) speedvar = 40 ;
- }
- accelvar -- ;
- speedvar += accelvar ;
-
- if (speedvar<0) speedvar=0;
- if (speedvar>40) speedvar = 40 ;
+ accelvar = incvar / 5000;
+ if (speedvar > 5) {
+ accelvar--;
+ if (speedvar > 20)
+ accelvar--;
+ if (speedvar > 40)
+ speedvar = 40;
+ }
+ accelvar--;
+ speedvar += accelvar;
+
+ if (speedvar < 0)
+ speedvar = 0;
+ if (speedvar > 40)
+ speedvar = 40;
/* ! calcul du deplacement des petits points ... */
- largfactor = ((float)speedvar / 40.0f + (float)incvar / 50000.0f) / 1.5f ;
- if (largfactor>1.5f) largfactor = 1.5f ;
-
- for (i = 1 ; i*15 <= speedvar + 15; i ++) {
- loopvar += speedvar + 1 ;
-
- pointFilter(p1,
- YELLOW,
- ((pointWidth - 6.0f) * largfactor + 5.0f),
- ((pointHeight - 6.0f) * largfactor + 5.0f),
- i * 152.0f, 128.0f,
- loopvar + i*2032);
- pointFilter(p1, ORANGE,
- ((pointWidth / 2) * largfactor) / i + 10.0f * i,
- ((pointHeight / 2) * largfactor) / i + 10.0f * i,
- 96.0f, i * 80.0f, loopvar / i);
- pointFilter(p1, VIOLET,
- ((pointHeight / 3 + 5.0f) * largfactor) / i + 10.0f * i,
- ((pointHeight / 3 + 5.0f) * largfactor) / i + 10.0f * i,
- i + 122.0f, 134.0f, loopvar / i);
- pointFilter(p1, BLACK,
- ((pointHeight / 3) * largfactor + 20.0f),
- ((pointHeight / 3) * largfactor + 20.0f),
- 58.0f, i * 66.0f, loopvar / i);
- pointFilter(p1, WHITE,
- (pointHeight * largfactor + 10.0f * i) / i,
- (pointHeight * largfactor + 10.0f * i) / i,
- 66.0f, 74.0f, loopvar + i * 500);
+ largfactor = ((float) speedvar / 40.0f + (float) incvar / 50000.0f) / 1.5f;
+ if (largfactor > 1.5f)
+ largfactor = 1.5f;
+
+ for (i = 1; i * 15 <= speedvar + 15; i++) {
+ loopvar += speedvar + 1;
+
+ pointFilter (p1,
+ YELLOW,
+ ((pointWidth - 6.0f) * largfactor + 5.0f),
+ ((pointHeight - 6.0f) * largfactor + 5.0f),
+ i * 152.0f, 128.0f, loopvar + i * 2032);
+ pointFilter (p1, ORANGE,
+ ((pointWidth / 2) * largfactor) / i + 10.0f * i,
+ ((pointHeight / 2) * largfactor) / i + 10.0f * i,
+ 96.0f, i * 80.0f, loopvar / i);
+ pointFilter (p1, VIOLET,
+ ((pointHeight / 3 + 5.0f) * largfactor) / i + 10.0f * i,
+ ((pointHeight / 3 + 5.0f) * largfactor) / i + 10.0f * i,
+ i + 122.0f, 134.0f, loopvar / i);
+ pointFilter (p1, BLACK,
+ ((pointHeight / 3) * largfactor + 20.0f),
+ ((pointHeight / 3) * largfactor + 20.0f),
+ 58.0f, i * 66.0f, loopvar / i);
+ pointFilter (p1, WHITE,
+ (pointHeight * largfactor + 10.0f * i) / i,
+ (pointHeight * largfactor + 10.0f * i) / i,
+ 66.0f, 74.0f, loopvar + i * 500);
}
- /* par défaut pas de changement de zoom */
- pzfd = NULL ;
-
- /* diminuer de 1 le temps de lockage */
- /* note pour ceux qui n'ont pas suivis : le lockvar permet d'empecher un */
- /* changement d'etat du plugins juste apres un autre changement d'etat. oki ? */
- if (--lockvar < 0) lockvar = 0 ;
-
- /* temps du goom */
- if (--agoom < 0) agoom = 0 ;
-
- /* on verifie qu'il ne se pas un truc interressant avec le son. */
- if ((accelvar>goomlimit) || (accelvar<-goomlimit))
- {
- /* UN GOOM !!! YAHOO ! */
- totalgoom ++ ;
- agoom = 20 ; /* mais pdt 20 cycles, il n'y en aura plus. */
- lineMode = (lineMode + 1)%20; /* Tous les 10 gooms on change de mode lineaire */
-
- /* changement eventuel de mode */
- switch (iRAND(10))
- {
- case 0:
- case 1:
- case 2:
- zfd.mode=WAVE_MODE;
- zfd.vitesse=STOP_SPEED-1;
- zfd.reverse=0;
- break;
- case 3:
- case 4:
- zfd.mode=CRYSTAL_BALL_MODE;
- break;
- case 5:
- zfd.mode=AMULETTE_MODE;
- break;
- case 6:
- zfd.mode = WATER_MODE ;
- break;
- case 7:
- zfd.mode=SCRUNCH_MODE;
- break;
- default:
- zfd.mode=NORMAL_MODE;
- }
+ /* par défaut pas de changement de zoom */
+ pzfd = NULL;
+
+ /* diminuer de 1 le temps de lockage */
+ /* note pour ceux qui n'ont pas suivis : le lockvar permet d'empecher un */
+ /* changement d'etat du plugins juste apres un autre changement d'etat. oki ? */
+ if (--lockvar < 0)
+ lockvar = 0;
+
+ /* temps du goom */
+ if (--agoom < 0)
+ agoom = 0;
+
+ /* on verifie qu'il ne se pas un truc interressant avec le son. */
+ if ((accelvar > goomlimit) || (accelvar < -goomlimit)) {
+ /* UN GOOM !!! YAHOO ! */
+ totalgoom++;
+ agoom = 20; /* mais pdt 20 cycles, il n'y en aura plus. */
+ lineMode = (lineMode + 1) % 20; /* Tous les 10 gooms on change de mode lineaire */
+
+ /* changement eventuel de mode */
+ switch (iRAND (10)) {
+ case 0:
+ case 1:
+ case 2:
+ zfd.mode = WAVE_MODE;
+ zfd.vitesse = STOP_SPEED - 1;
+ zfd.reverse = 0;
+ break;
+ case 3:
+ case 4:
+ zfd.mode = CRYSTAL_BALL_MODE;
+ break;
+ case 5:
+ zfd.mode = AMULETTE_MODE;
+ break;
+ case 6:
+ zfd.mode = WATER_MODE;
+ break;
+ case 7:
+ zfd.mode = SCRUNCH_MODE;
+ break;
+ default:
+ zfd.mode = NORMAL_MODE;
}
+ }
- /* tout ceci ne sera fait qu'en cas de non-blocage */
- if (lockvar == 0)
- {
- /* reperage de goom (acceleration forte de l'acceleration du volume) */
- /* -> coup de boost de la vitesse si besoin.. */
- if ( (accelvar>goomlimit) || (accelvar<-goomlimit) )
- {
- goomvar ++ ;
- /*if (goomvar % 1 == 0) */
- {
- guint32 vtmp ;
- guint32 newvit ;
- newvit = STOP_SPEED - speedvar / 2 ;
- /* retablir le zoom avant.. */
- if ((zfd.reverse) &&
- (!(cycle%12)) &&
- (rand ()%3==0))
- {
- zfd.reverse = 0 ;
- zfd.vitesse = STOP_SPEED - 2 ;
- lockvar = 50 ;
- }
- if (iRAND (10) == 0)
- {
- zfd.reverse = 1;
- lockvar = 100;
- }
-
- /* changement de milieu.. */
- switch (iRAND(20))
- {
- case 0:
- zfd.middleY = resoly - 1 ;
- zfd.middleX = resolx / 2 ;
- break ;
- case 1:
- zfd.middleX = resolx - 1 ;
- break ;
- case 2:
- zfd.middleX = 1 ;
- break ;
- default:
- zfd.middleY = resoly / 2 ;
- zfd.middleX = resolx / 2 ;
- }
-
- if (zfd.mode == WATER_MODE)
- {
- zfd.middleX = resolx / 2;
- zfd.middleY = resoly / 2;
- }
-
- switch (vtmp = (iRAND (27)))
- {
- case 0:
- zfd.vPlaneEffect = iRAND(3);
- zfd.vPlaneEffect -= iRAND(3);
- zfd.hPlaneEffect = iRAND(3);
- zfd.hPlaneEffect -= iRAND(3);
- break;
- case 3:
- zfd.vPlaneEffect = 0 ;
- zfd.hPlaneEffect = iRAND(8);
- zfd.hPlaneEffect -= iRAND(8);
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- zfd.vPlaneEffect = iRAND(5);
- zfd.vPlaneEffect -= iRAND(5);
- zfd.hPlaneEffect = - zfd.vPlaneEffect;
- break;
- case 8:
- zfd.hPlaneEffect = 5 + iRAND (8);
- zfd.vPlaneEffect = - zfd.hPlaneEffect ;
- break;
- case 9:
- zfd.vPlaneEffect = 5 + iRAND (8);
- zfd.hPlaneEffect = - zfd.hPlaneEffect ;
- break;
- case 13:
- zfd.hPlaneEffect = 0;
- zfd.vPlaneEffect = iRAND(10);
- zfd.vPlaneEffect -= iRAND(10);
- break;
- default:
- if (vtmp < 10)
- {
- zfd.vPlaneEffect = 0;
- zfd.hPlaneEffect = 0;
- }
- }
-
- if (iRAND (3) != 0) zfd.noisify = 0 ;
- else
- {
- zfd.noisify = iRAND (3) + 2 ;
- lockvar *= 3;
- }
-
- if (zfd.mode == AMULETTE_MODE)
- {
- zfd.vPlaneEffect = 0;
- zfd.hPlaneEffect = 0;
- zfd.noisify = 0;
- }
-
- if ((zfd.middleX == 1) || (zfd.middleX == resolx - 1))
- {
- zfd.vPlaneEffect = 0 ;
- zfd.hPlaneEffect = iRAND (2) ? 0 : zfd.hPlaneEffect;
- }
-
- if (newvit < zfd.vitesse) /* on accelere */
- {
- pzfd = &zfd;
- if ( ( (newvit < STOP_SPEED - 7) &&
- (zfd.vitesse < STOP_SPEED - 6) &&
- (cycle % 3 == 0)) ||
- (iRAND (40) == 0))
- {
- zfd.vitesse = STOP_SPEED - 1 ;
- zfd.reverse = ! zfd.reverse ;
- }
- else
- {
- zfd.vitesse = (newvit + zfd.vitesse * 4) / 5 ;
- }
- lockvar += 50 ;
- }
- }
- }
- /* mode mega-lent */
- if (iRAND(1000) == 0)
- {
- /*
- printf ("coup du sort...\n") ;
- */
- pzfd = &zfd ;
- zfd.vitesse = STOP_SPEED - 1 ;
- zfd.pertedec = 8 ;
- zfd.sqrtperte = 16 ;
- goomvar = 1 ;
- lockvar += 70 ;
- }
+ /* tout ceci ne sera fait qu'en cas de non-blocage */
+ if (lockvar == 0) {
+ /* reperage de goom (acceleration forte de l'acceleration du volume) */
+ /* -> coup de boost de la vitesse si besoin.. */
+ if ((accelvar > goomlimit) || (accelvar < -goomlimit)) {
+ goomvar++;
+ /*if (goomvar % 1 == 0) */
+ {
+ guint32 vtmp;
+ guint32 newvit;
+
+ newvit = STOP_SPEED - speedvar / 2;
+ /* retablir le zoom avant.. */
+ if ((zfd.reverse) && (!(cycle % 12)) && (rand () % 3 == 0)) {
+ zfd.reverse = 0;
+ zfd.vitesse = STOP_SPEED - 2;
+ lockvar = 50;
}
-
- /* gros frein si la musique est calme */
- if ((speedvar < 1) && (zfd.vitesse < STOP_SPEED - 4) && (cycle % 16 == 0))
- {
- /*
- printf ("++slow part... %i\n", zfd.vitesse) ;
- */
- pzfd = &zfd ;
- zfd.vitesse += 3 ;
- zfd.pertedec = 8 ;
- zfd.sqrtperte = 16 ;
- goomvar = 0 ;
- /*
- printf ("--slow part... %i\n", zfd.vitesse) ;
- */
+ if (iRAND (10) == 0) {
+ zfd.reverse = 1;
+ lockvar = 100;
}
-
- /* baisser regulierement la vitesse... */
- if ( (cycle % 73 == 0) && (zfd.vitesse < STOP_SPEED - 5))
- {
- /*
- printf ("slow down...\n") ;
- */
- pzfd = &zfd ;
- zfd.vitesse ++ ;
+
+ /* changement de milieu.. */
+ switch (iRAND (20)) {
+ case 0:
+ zfd.middleY = resoly - 1;
+ zfd.middleX = resolx / 2;
+ break;
+ case 1:
+ zfd.middleX = resolx - 1;
+ break;
+ case 2:
+ zfd.middleX = 1;
+ break;
+ default:
+ zfd.middleY = resoly / 2;
+ zfd.middleX = resolx / 2;
}
-
- /* arreter de decrémenter au bout d'un certain temps */
- if ((cycle % 101 == 0) && (zfd.pertedec == 7))
- {
- pzfd = &zfd ;
- zfd.pertedec=8 ;
- zfd.sqrtperte=16 ;
+
+ if (zfd.mode == WATER_MODE) {
+ zfd.middleX = resolx / 2;
+ zfd.middleY = resoly / 2;
}
-
-#ifdef VERBOSE
- if (pzfd)
- {
- printf ("GOOM: pzfd->mode = %d\n", pzfd->mode);
+
+ switch (vtmp = (iRAND (27))) {
+ case 0:
+ zfd.vPlaneEffect = iRAND (3);
+ zfd.vPlaneEffect -= iRAND (3);
+ zfd.hPlaneEffect = iRAND (3);
+ zfd.hPlaneEffect -= iRAND (3);
+ break;
+ case 3:
+ zfd.vPlaneEffect = 0;
+ zfd.hPlaneEffect = iRAND (8);
+ zfd.hPlaneEffect -= iRAND (8);
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ zfd.vPlaneEffect = iRAND (5);
+ zfd.vPlaneEffect -= iRAND (5);
+ zfd.hPlaneEffect = -zfd.vPlaneEffect;
+ break;
+ case 8:
+ zfd.hPlaneEffect = 5 + iRAND (8);
+ zfd.vPlaneEffect = -zfd.hPlaneEffect;
+ break;
+ case 9:
+ zfd.vPlaneEffect = 5 + iRAND (8);
+ zfd.hPlaneEffect = -zfd.hPlaneEffect;
+ break;
+ case 13:
+ zfd.hPlaneEffect = 0;
+ zfd.vPlaneEffect = iRAND (10);
+ zfd.vPlaneEffect -= iRAND (10);
+ break;
+ default:
+ if (vtmp < 10) {
+ zfd.vPlaneEffect = 0;
+ zfd.hPlaneEffect = 0;
+ }
+ }
+
+ if (iRAND (3) != 0)
+ zfd.noisify = 0;
+ else {
+ zfd.noisify = iRAND (3) + 2;
+ lockvar *= 3;
+ }
+
+ if (zfd.mode == AMULETTE_MODE) {
+ zfd.vPlaneEffect = 0;
+ zfd.hPlaneEffect = 0;
+ zfd.noisify = 0;
+ }
+
+ if ((zfd.middleX == 1) || (zfd.middleX == resolx - 1)) {
+ zfd.vPlaneEffect = 0;
+ zfd.hPlaneEffect = iRAND (2) ? 0 : zfd.hPlaneEffect;
+ }
+
+ if (newvit < zfd.vitesse) { /* on accelere */
+ pzfd = &zfd;
+ if (((newvit < STOP_SPEED - 7) &&
+ (zfd.vitesse < STOP_SPEED - 6) &&
+ (cycle % 3 == 0)) || (iRAND (40) == 0)) {
+ zfd.vitesse = STOP_SPEED - 1;
+ zfd.reverse = !zfd.reverse;
+ } else {
+ zfd.vitesse = (newvit + zfd.vitesse * 4) / 5;
+ }
+ lockvar += 50;
}
+ }
+ }
+ /* mode mega-lent */
+ if (iRAND (1000) == 0) {
+ /*
+ printf ("coup du sort...\n") ;
+ */
+ pzfd = &zfd;
+ zfd.vitesse = STOP_SPEED - 1;
+ zfd.pertedec = 8;
+ zfd.sqrtperte = 16;
+ goomvar = 1;
+ lockvar += 70;
+ }
+ }
+
+ /* gros frein si la musique est calme */
+ if ((speedvar < 1) && (zfd.vitesse < STOP_SPEED - 4) && (cycle % 16 == 0)) {
+ /*
+ printf ("++slow part... %i\n", zfd.vitesse) ;
+ */
+ pzfd = &zfd;
+ zfd.vitesse += 3;
+ zfd.pertedec = 8;
+ zfd.sqrtperte = 16;
+ goomvar = 0;
+ /*
+ printf ("--slow part... %i\n", zfd.vitesse) ;
+ */
+ }
+
+ /* baisser regulierement la vitesse... */
+ if ((cycle % 73 == 0) && (zfd.vitesse < STOP_SPEED - 5)) {
+ /*
+ printf ("slow down...\n") ;
+ */
+ pzfd = &zfd;
+ zfd.vitesse++;
+ }
+
+ /* arreter de decrémenter au bout d'un certain temps */
+ if ((cycle % 101 == 0) && (zfd.pertedec == 7)) {
+ pzfd = &zfd;
+ zfd.pertedec = 8;
+ zfd.sqrtperte = 16;
+ }
+#ifdef VERBOSE
+ if (pzfd) {
+ printf ("GOOM: pzfd->mode = %d\n", pzfd->mode);
+ }
#endif
- /* Zoom here ! */
- zoomFilterFastRGB (p1, p2, pzfd, resolx, resoly) ;
-
- /* si on est dans un goom : afficher les lignes... */
- if (agoom > 15) goom_lines
- (data,
- ((zfd.middleX==resolx/2) && (zfd.middleY==resoly/2) && (zfd.mode!=WATER_MODE))
- ? (lineMode/10) : 0,
- p2,agoom-15);
-
- return_val = p2 ;
- tmp=p1;
- p1=p2;
- p2=tmp;
-
- /* affichage et swappage des buffers.. */
- cycle++;
-
- /* tous les 100 cycles : vérifier si le taux de goom est correct */
- /* et le modifier sinon.. */
- if (!(cycle%100))
- {
- if (totalgoom>15)
- {
- /* printf ("less gooms\n") ; */
- goomlimit ++ ;
- }
- else
- {
- if ((totalgoom==0) && (goomlimit>1))
- goomlimit -- ;
- }
- totalgoom = 0 ;
+ /* Zoom here ! */
+ zoomFilterFastRGB (p1, p2, pzfd, resolx, resoly);
+
+ /* si on est dans un goom : afficher les lignes... */
+ if (agoom > 15)
+ goom_lines
+ (data, ((zfd.middleX == resolx / 2) && (zfd.middleY == resoly / 2)
+ && (zfd.mode != WATER_MODE))
+ ? (lineMode / 10) : 0, p2, agoom - 15);
+
+ return_val = p2;
+ tmp = p1;
+ p1 = p2;
+ p2 = tmp;
+
+ /* affichage et swappage des buffers.. */
+ cycle++;
+
+ /* tous les 100 cycles : vérifier si le taux de goom est correct */
+ /* et le modifier sinon.. */
+ if (!(cycle % 100)) {
+ if (totalgoom > 15) {
+ /* printf ("less gooms\n") ; */
+ goomlimit++;
+ } else {
+ if ((totalgoom == 0) && (goomlimit > 1))
+ goomlimit--;
}
- return return_val;
+ totalgoom = 0;
+ }
+ return return_val;
}
-void goom_close ()
+void
+goom_close ()
{
- if (pixel!=NULL) free (pixel) ;
- if (back!=NULL) free (back) ;
- pixel = back = NULL;
- RAND_CLOSE();
+ if (pixel != NULL)
+ free (pixel);
+ if (back != NULL)
+ free (back);
+ pixel = back = NULL;
+ RAND_CLOSE ();
}
diff --git a/gst/goom/goom_core.h b/gst/goom/goom_core.h
index 15f942d2..3751b522 100644
--- a/gst/goom/goom_core.h
+++ b/gst/goom/goom_core.h
@@ -6,7 +6,7 @@
void goom_init (guint32 resx, guint32 resy);
void goom_set_resolution (guint32 resx, guint32 resy);
-guint32 * goom_update (gint16 data [2][512]);
+guint32 *goom_update (gint16 data[2][512]);
void goom_close ();
diff --git a/gst/goom/goom_tools.h b/gst/goom/goom_tools.h
index e3613825..5159cf91 100644
--- a/gst/goom/goom_tools.h
+++ b/gst/goom/goom_tools.h
@@ -4,8 +4,8 @@
#define NB_RAND 0x10000
/* in graphic.c */
-extern int * rand_tab ;
-extern unsigned short rand_pos ;
+extern int *rand_tab;
+extern unsigned short rand_pos;
#define RAND_INIT(i) \
srand (i) ;\
@@ -25,5 +25,5 @@ extern unsigned short rand_pos ;
/*#define iRAND(i) ((guint32)((float)i * RAND()/RAND_MAX)) */
#define iRAND(i) (RAND()%i)
-
+
#endif
diff --git a/gst/goom/graphic.c b/gst/goom/graphic.c
index cd24d49f..33fff165 100644
--- a/gst/goom/graphic.c
+++ b/gst/goom/graphic.c
@@ -4,18 +4,18 @@
#include "graphic.h"
-const Color BLACK = {0,0,0} ;
-const Color WHITE = {0xff,0xff,0xff} ;
-const Color RED = {0xff,0,0} ;
-const Color GREEN = {0,0xff,0} ;
-const Color BLUE = {0,0,0xff} ;
-const Color YELLOW = {0xff, 0xff, 0x33} ;
-const Color ORANGE = {0xff, 0xcc, 0x00} ;
-const Color VIOLET = {0x55, 0x00, 0xff} ;
+const Color BLACK = { 0, 0, 0 };
+const Color WHITE = { 0xff, 0xff, 0xff };
+const Color RED = { 0xff, 0, 0 };
+const Color GREEN = { 0, 0xff, 0 };
+const Color BLUE = { 0, 0, 0xff };
+const Color YELLOW = { 0xff, 0xff, 0x33 };
+const Color ORANGE = { 0xff, 0xcc, 0x00 };
+const Color VIOLET = { 0x55, 0x00, 0xff };
-unsigned int SIZE ;
-unsigned int HEIGHT ;
-unsigned int WIDTH ;
+unsigned int SIZE;
+unsigned int HEIGHT;
+unsigned int WIDTH;
-int * rand_tab = 0 ;
-unsigned short int rand_pos = 0 ;
+int *rand_tab = 0;
+unsigned short int rand_pos = 0;
diff --git a/gst/goom/graphic.h b/gst/goom/graphic.h
index 415dde73..1af1030a 100644
--- a/gst/goom/graphic.h
+++ b/gst/goom/graphic.h
@@ -5,7 +5,7 @@ typedef unsigned int Uint;
typedef struct
{
- unsigned short r,v,b;
+ unsigned short r, v, b;
}
Color;
@@ -18,7 +18,7 @@ extern const Color YELLOW;
extern const Color ORANGE;
extern const Color VIOLET;
-inline void setPixelRGB (Uint *buffer, Uint x, Uint y, Color c) ;
-inline void getPixelRGB (Uint *buffer, Uint x, Uint y, Color *c) ;
+inline void setPixelRGB (Uint * buffer, Uint x, Uint y, Color c);
+inline void getPixelRGB (Uint * buffer, Uint x, Uint y, Color * c);
-#endif /*GRAPHIC_H*/
+#endif /*GRAPHIC_H */
diff --git a/gst/goom/gstgoom.c b/gst/goom/gstgoom.c
index 35d5e098..b5ad63a5 100644
--- a/gst/goom/gstgoom.c
+++ b/gst/goom/gstgoom.c
@@ -34,11 +34,12 @@
typedef struct _GstGOOM GstGOOM;
typedef struct _GstGOOMClass GstGOOMClass;
-struct _GstGOOM {
+struct _GstGOOM
+{
GstElement element;
/* pads */
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
/* the timestamp of the next frame */
guint64 next_time;
@@ -52,11 +53,12 @@ struct _GstGOOM {
gboolean srcnegotiated;
};
-struct _GstGOOMClass {
+struct _GstGOOMClass
+{
GstElementClass parent_class;
};
-GType gst_goom_get_type(void);
+GType gst_goom_get_type (void);
/* elementfactory information */
@@ -68,53 +70,50 @@ static GstElementDetails gst_goom_details = {
};
/* signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static GstStaticPadTemplate src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( GST_VIDEO_CAPS_xRGB_HOST_ENDIAN )
-);
-
-static GstStaticPadTemplate sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink", /* the name of the pads */
- GST_PAD_SINK, /* type of the pad */
- GST_PAD_ALWAYS, /* ALWAYS/SOMETIMES */
- GST_STATIC_CAPS ( "audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) TRUE, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = (int) [ 8000, 96000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
-
-
-static void gst_goom_class_init (GstGOOMClass *klass);
-static void gst_goom_base_init (GstGOOMClass *klass);
-static void gst_goom_init (GstGOOM *goom);
-static void gst_goom_dispose (GObject *object);
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_xRGB_HOST_ENDIAN)
+ );
-static GstElementStateReturn
- gst_goom_change_state (GstElement *element);
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", /* the name of the pads */
+ GST_PAD_SINK, /* type of the pad */
+ GST_PAD_ALWAYS, /* ALWAYS/SOMETIMES */
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) BYTE_ORDER, "
+ "signed = (boolean) TRUE, "
+ "width = (int) 16, "
+ "depth = (int) 16, "
+ "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 2 ]")
+ );
+
+
+static void gst_goom_class_init (GstGOOMClass * klass);
+static void gst_goom_base_init (GstGOOMClass * klass);
+static void gst_goom_init (GstGOOM * goom);
+static void gst_goom_dispose (GObject * object);
-static void gst_goom_chain (GstPad *pad, GstData *_data);
+static GstElementStateReturn gst_goom_change_state (GstElement * element);
-static GstPadLinkReturn gst_goom_sinkconnect (GstPad *pad, const GstCaps *caps);
-static GstPadLinkReturn gst_goom_srcconnect (GstPad *pad, const GstCaps *caps);
-static GstCaps * gst_goom_src_fixate (GstPad *pad, const GstCaps *caps);
+static void gst_goom_chain (GstPad * pad, GstData * _data);
+
+static GstPadLinkReturn gst_goom_sinkconnect (GstPad * pad,
+ const GstCaps * caps);
+static GstPadLinkReturn gst_goom_srcconnect (GstPad * pad,
+ const GstCaps * caps);
+static GstCaps *gst_goom_src_fixate (GstPad * pad, const GstCaps * caps);
static GstElementClass *parent_class = NULL;
@@ -125,9 +124,9 @@ gst_goom_get_type (void)
if (!type) {
static const GTypeInfo info = {
- sizeof (GstGOOMClass),
- (GBaseInitFunc) gst_goom_base_init,
- NULL,
+ sizeof (GstGOOMClass),
+ (GBaseInitFunc) gst_goom_base_init,
+ NULL,
(GClassInitFunc) gst_goom_class_init,
NULL,
NULL,
@@ -141,41 +140,43 @@ gst_goom_get_type (void)
}
static void
-gst_goom_base_init (GstGOOMClass *klass)
+gst_goom_base_init (GstGOOMClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gst_element_class_set_details (element_class, &gst_goom_details);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_static_pad_template_get (&sink_template));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_static_pad_template_get (&src_template));
}
static void
-gst_goom_class_init(GstGOOMClass *klass)
+gst_goom_class_init (GstGOOMClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*) klass;
- gstelement_class = (GstElementClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- gobject_class->dispose = gst_goom_dispose;
+ gobject_class->dispose = gst_goom_dispose;
gstelement_class->change_state = gst_goom_change_state;
}
static void
-gst_goom_init (GstGOOM *goom)
+gst_goom_init (GstGOOM * goom)
{
/* create the sink and src pads */
- goom->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&sink_template ), "sink");
- goom->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&src_template ), "src");
+ goom->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get (&sink_template),
+ "sink");
+ goom->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get (&src_template),
+ "src");
gst_element_add_pad (GST_ELEMENT (goom), goom->sinkpad);
gst_element_add_pad (GST_ELEMENT (goom), goom->srcpad);
@@ -189,22 +190,22 @@ gst_goom_init (GstGOOM *goom)
goom->width = 320;
goom->height = 200;
- goom->fps = 25.; /* desired frame rate */
+ goom->fps = 25.; /* desired frame rate */
goom->channels = 0;
/* set to something */
goom_init (50, 50);
}
static void
-gst_goom_dispose (GObject *object)
+gst_goom_dispose (GObject * object)
{
goom_close ();
-
+
G_OBJECT_CLASS (parent_class)->dispose (object);
}
static GstPadLinkReturn
-gst_goom_sinkconnect (GstPad *pad, const GstCaps *caps)
+gst_goom_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstGOOM *goom;
GstStructure *structure;
@@ -219,7 +220,7 @@ gst_goom_sinkconnect (GstPad *pad, const GstCaps *caps)
}
static GstPadLinkReturn
-gst_goom_srcconnect (GstPad *pad, const GstCaps *caps)
+gst_goom_srcconnect (GstPad * pad, const GstCaps * caps)
{
GstGOOM *goom;
GstStructure *structure;
@@ -239,12 +240,13 @@ gst_goom_srcconnect (GstPad *pad, const GstCaps *caps)
}
static GstCaps *
-gst_goom_src_fixate (GstPad *pad, const GstCaps *caps)
+gst_goom_src_fixate (GstPad * pad, const GstCaps * caps)
{
GstCaps *newcaps;
GstStructure *structure;
- if (!gst_caps_is_simple (caps)) return NULL;
+ if (!gst_caps_is_simple (caps))
+ return NULL;
newcaps = gst_caps_copy (caps);
structure = gst_caps_get_structure (newcaps, 0);
@@ -256,7 +258,7 @@ gst_goom_src_fixate (GstPad *pad, const GstCaps *caps)
return newcaps;
}
if (gst_caps_structure_fixate_field_nearest_double (structure, "framerate",
- 30.0)) {
+ 30.0)) {
return newcaps;
}
@@ -266,7 +268,7 @@ gst_goom_src_fixate (GstPad *pad, const GstCaps *caps)
}
static void
-gst_goom_chain (GstPad *pad, GstData *_data)
+gst_goom_chain (GstPad * pad, GstData * _data)
{
GstBuffer *bufin = GST_BUFFER (_data);
GstGOOM *goom;
@@ -289,7 +291,7 @@ gst_goom_chain (GstPad *pad, GstData *_data)
gst_event_discont_get_value (event, GST_FORMAT_TIME, &value);
- goom->next_time = value;
+ goom->next_time = value;
}
default:
gst_pad_event_default (pad, event);
@@ -300,7 +302,7 @@ gst_goom_chain (GstPad *pad, GstData *_data)
if (goom->channels == 0) {
GST_ELEMENT_ERROR (goom, CORE, NEGOTIATION, (NULL),
- ("format wasn't negotiated before chain function"));
+ ("format wasn't negotiated before chain function"));
goto done;
}
@@ -318,13 +320,12 @@ gst_goom_chain (GstPad *pad, GstData *_data)
data = (gint16 *) GST_BUFFER_DATA (bufin);
if (goom->channels == 2) {
- for (i=0; i < 512; i++) {
+ for (i = 0; i < 512; i++) {
goom->datain[0][i] = *data++;
goom->datain[1][i] = *data++;
}
- }
- else {
- for (i=0; i < 512; i++) {
+ } else {
+ for (i = 0; i < 512; i++) {
goom->datain[0][i] = *data;
goom->datain[1][i] = *data++;
}
@@ -347,15 +348,15 @@ done:
}
static GstElementStateReturn
-gst_goom_change_state (GstElement *element)
-{
+gst_goom_change_state (GstElement * element)
+{
GstGOOM *goom = GST_GOOM (element);
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_NULL_TO_READY:
break;
case GST_STATE_READY_TO_NULL:
- break;
+ break;
case GST_STATE_READY_TO_PAUSED:
goom->next_time = 0;
goom->srcnegotiated = FALSE;
@@ -374,20 +375,13 @@ gst_goom_change_state (GstElement *element)
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- return gst_element_register (plugin, "goom",
- GST_RANK_NONE, GST_TYPE_GOOM);
+ return gst_element_register (plugin, "goom", GST_RANK_NONE, GST_TYPE_GOOM);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "goom",
- "GOOM visualization filter",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "goom",
+ "GOOM visualization filter",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/goom/lines.c b/gst/goom/lines.c
index 131fd002..611f9a52 100644
--- a/gst/goom/lines.c
+++ b/gst/goom/lines.c
@@ -14,81 +14,94 @@
#include "lines.h"
#include <math.h>
-extern unsigned int resolx,resoly;
+extern unsigned int resolx, resoly;
-inline unsigned char lighten(unsigned char value,unsigned char power)
+inline unsigned char
+lighten (unsigned char value, unsigned char power)
{
- unsigned char i;
- for (i=0;i < power; i++) value += (255-value)/5;
- return value;
+ unsigned char i;
+
+ for (i = 0; i < power; i++)
+ value += (255 - value) / 5;
+ return value;
}
-void goom_lines(gint16 data [2][512], unsigned int ID,unsigned int* p, guint32 power)
+void
+goom_lines (gint16 data[2][512], unsigned int ID, unsigned int *p,
+ guint32 power)
{
- guint32 color1;
- guint32 color2;
- unsigned char * color = 1 + (unsigned char *) &color1;
+ guint32 color1;
+ guint32 color2;
+ unsigned char *color = 1 + (unsigned char *) &color1;
+
+ switch (ID) {
+ case 0: /* Horizontal stereo lines */
+ {
+ color1 = 0x0000AA00;
+ color2 = 0x00AA0000;
+ break;
+ }
+
+ case 1: /* Stereo circles */
+ {
+ color1 = 0x00AA33DD;
+ color2 = 0x00AA33DD;
+ break;
+ }
+ }
+ *color = lighten (*color, power);
+ color++;
+ *color = lighten (*color, power);
+ color++;
+ *color = lighten (*color, power);
+ color = 1 + (unsigned char *) &color2;
+ *color = lighten (*color, power);
+ color++;
+ *color = lighten (*color, power);
+ color++;
+ *color = lighten (*color, power);
- switch (ID)
+ switch (ID) {
+ case 0: /* Horizontal stereo lines */
{
- case 0: /* Horizontal stereo lines */
- {
- color1 = 0x0000AA00;
- color2 = 0x00AA0000;
- break;
- }
+ unsigned int i;
+
+ for (i = 0; i < 512; i++) {
+ guint32 plot;
- case 1: /* Stereo circles */
- {
- color1 = 0x00AA33DD;
- color2 = 0x00AA33DD;
- break;
- }
+ plot = i * resolx / 512 + (resoly / 4 + data[0][i] / 1600) * resolx;
+ p[plot] = color1;
+ p[plot + 1] = color1;
+ plot = i * resolx / 512 + (resoly * 3 / 4 - data[1][i] / 1600) * resolx;
+ p[plot] = color2;
+ p[plot + 1] = color2;
+ }
+ break;
}
- *color = lighten(*color,power);
- color++;
- * color = lighten(*color,power);
- color++;
- * color = lighten(*color,power);
- color = 1 + (unsigned char *) &color2;
- * color = lighten(*color,power);
- color++;
- * color = lighten(*color,power);
- color++;
- * color = lighten(*color,power);
-
- switch (ID)
+
+ case 1: /* Stereo circles */
{
- case 0: /* Horizontal stereo lines */
- {
- unsigned int i;
- for (i=0;i<512;i++)
- {
- guint32 plot ;
- plot = i * resolx / 512 + (resoly / 4 + data[0][i] / 1600) * resolx;
- p[plot] = color1;
- p[plot+1] = color1;
- plot = i * resolx / 512 + (resoly * 3 / 4 - data[1][i] / 1600) * resolx;
- p[plot] = color2;
- p[plot+1] = color2;
- }
- break;
- }
+ float z;
+ unsigned int monX = resolx / 2;
+ float monY = resoly / 4;
+ float monY2 = resoly / 2;
- case 1: /* Stereo circles */
- {
- float z;
- unsigned int monX = resolx/2;
- float monY = resoly/4;
- float monY2 = resoly/2;
- for (z=0;z<6.2832f; z+=1.0f/monY)
- {
- /* float offset1 = 128+data[1][(unsigned int)(z*81.33f)])/200000; */
- p[ monX + (unsigned int)( (monY + ((float)resoly) * (128+data[1][(unsigned int)(z*81.33f)])/200000) * cos (z) + resolx * (unsigned int)( monY2 + (monY + ((float)resoly)*(128+data[1][(unsigned int)(z*81.33f)])/400000) * sin (z)))] = color1;
- p[ monX + (unsigned int)((monY - ((float)resoly) * (128+data[0][(unsigned int)(z*81.33f)])/200000) * cos (z) + resolx * (unsigned int)( monY2 + (monY - ((float)resoly)*(128+data[0][(unsigned int)(z*81.33f)])/400000) * sin (z)))] = color2;
- }
- break;
- }
+ for (z = 0; z < 6.2832f; z += 1.0f / monY) {
+ /* float offset1 = 128+data[1][(unsigned int)(z*81.33f)])/200000; */
+ p[monX + (unsigned int) ((monY + ((float) resoly) * (128 +
+ data[1][(unsigned int) (z * 81.33f)]) / 200000) *
+ cos (z) + resolx * (unsigned int) (monY2 + (monY +
+ ((float) resoly) * (128 +
+ data[1][(unsigned int) (z * 81.33f)]) / 400000) *
+ sin (z)))] = color1;
+ p[monX + (unsigned int) ((monY - ((float) resoly) * (128 +
+ data[0][(unsigned int) (z * 81.33f)]) / 200000) *
+ cos (z) + resolx * (unsigned int) (monY2 + (monY -
+ ((float) resoly) * (128 +
+ data[0][(unsigned int) (z * 81.33f)]) / 400000) *
+ sin (z)))] = color2;
+ }
+ break;
}
+ }
}
-
diff --git a/gst/goom/lines.h b/gst/goom/lines.h
index 3582d380..988605ee 100644
--- a/gst/goom/lines.h
+++ b/gst/goom/lines.h
@@ -10,6 +10,6 @@
#include "graphic.h"
-void goom_lines(gint16 data [2][512], unsigned int ID,unsigned int* p, guint32 power);
-void goom_lines_conf(gint16 config [25]);
-
+void goom_lines (gint16 data[2][512], unsigned int ID, unsigned int *p,
+ guint32 power);
+void goom_lines_conf (gint16 config[25]);
diff --git a/gst/law/alaw-decode.c b/gst/law/alaw-decode.c
index 00108948..4bae398e 100644
--- a/gst/law/alaw-decode.c
+++ b/gst/law/alaw-decode.c
@@ -36,100 +36,108 @@ static GstElementDetails alawdec_details = {
};
/* Stereo signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0
};
-static void gst_alawdec_class_init (GstALawDecClass *klass);
-static void gst_alawdec_base_init (GstALawDecClass *klass);
-static void gst_alawdec_init (GstALawDec *alawdec);
+static void gst_alawdec_class_init (GstALawDecClass * klass);
+static void gst_alawdec_base_init (GstALawDecClass * klass);
+static void gst_alawdec_init (GstALawDec * alawdec);
-static void gst_alawdec_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_alawdec_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_alawdec_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_alawdec_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_alawdec_chain (GstPad *pad, GstData *_data);
+static void gst_alawdec_chain (GstPad * pad, GstData * _data);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_stereo_signals[LAST_SIGNAL] = { 0 }; */
/*
* alaw_to_s16() - Convert an A-law value to 16-bit linear PCM
*
*/
-static gint alaw_to_s16(guint8 a_val)
+static gint
+alaw_to_s16 (guint8 a_val)
{
- gint t;
- gint seg;
-
- a_val ^= 0x55;
- t = a_val & 0x7f;
- if (t < 16)
- t = (t << 4) + 8;
- else {
- seg = (t >> 4) & 0x07;
- t = ((t & 0x0f) << 4) + 0x108;
- t <<= seg -1;
- }
- return ((a_val & 0x80) ? t : -t);
+ gint t;
+ gint seg;
+
+ a_val ^= 0x55;
+ t = a_val & 0x7f;
+ if (t < 16)
+ t = (t << 4) + 8;
+ else {
+ seg = (t >> 4) & 0x07;
+ t = ((t & 0x0f) << 4) + 0x108;
+ t <<= seg - 1;
+ }
+ return ((a_val & 0x80) ? t : -t);
}
static GstPadLinkReturn
-alawdec_link (GstPad *pad, const GstCaps *caps)
+alawdec_link (GstPad * pad, const GstCaps * caps)
{
- GstCaps* tempcaps;
+ GstCaps *tempcaps;
gint rate, channels;
GstStructure *structure;
gboolean ret;
-
- GstALawDec* alawdec = GST_ALAWDEC (GST_OBJECT_PARENT (pad));
-
+
+ GstALawDec *alawdec = GST_ALAWDEC (GST_OBJECT_PARENT (pad));
+
structure = gst_caps_get_structure (caps, 0);
ret = gst_structure_get_int (structure, "rate", &rate);
ret &= gst_structure_get_int (structure, "channels", &channels);
- if (!ret) return GST_PAD_LINK_REFUSED;
-
- tempcaps = gst_caps_new_simple ( "audio/x-raw-int",
- "depth", G_TYPE_INT, 16,
- "width", G_TYPE_INT, 16,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "rate", G_TYPE_INT, rate,
- "channels", G_TYPE_INT, channels,
- NULL);
-
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
+
+ tempcaps = gst_caps_new_simple ("audio/x-raw-int",
+ "depth", G_TYPE_INT, 16,
+ "width", G_TYPE_INT, 16,
+ "signed", G_TYPE_BOOLEAN, TRUE,
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, channels, NULL);
+
return gst_pad_try_set_caps (alawdec->srcpad, tempcaps);
}
GType
-gst_alawdec_get_type(void) {
+gst_alawdec_get_type (void)
+{
static GType alawdec_type = 0;
if (!alawdec_type) {
static const GTypeInfo alawdec_info = {
- sizeof(GstALawDecClass),
- (GBaseInitFunc)gst_alawdec_base_init,
+ sizeof (GstALawDecClass),
+ (GBaseInitFunc) gst_alawdec_base_init,
NULL,
- (GClassInitFunc)gst_alawdec_class_init,
+ (GClassInitFunc) gst_alawdec_class_init,
NULL,
NULL,
- sizeof(GstALawDec),
+ sizeof (GstALawDec),
0,
- (GInstanceInitFunc)gst_alawdec_init,
+ (GInstanceInitFunc) gst_alawdec_init,
};
- alawdec_type = g_type_register_static(GST_TYPE_ELEMENT, "GstALawDec", &alawdec_info, 0);
+ alawdec_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstALawDec", &alawdec_info,
+ 0);
}
return alawdec_type;
}
static void
-gst_alawdec_base_init (GstALawDecClass *klass)
+gst_alawdec_base_init (GstALawDecClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
@@ -139,74 +147,75 @@ gst_alawdec_base_init (GstALawDecClass *klass)
}
static void
-gst_alawdec_class_init (GstALawDecClass *klass)
+gst_alawdec_class_init (GstALawDecClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gobject_class->set_property = gst_alawdec_set_property;
gobject_class->get_property = gst_alawdec_get_property;
}
static void
-gst_alawdec_init (GstALawDec *alawdec)
+gst_alawdec_init (GstALawDec * alawdec)
{
- alawdec->sinkpad = gst_pad_new_from_template(alawdec_sink_template,"sink");
- alawdec->srcpad = gst_pad_new_from_template(alawdec_src_template,"src");
- gst_pad_set_link_function(alawdec->sinkpad, alawdec_link);
+ alawdec->sinkpad = gst_pad_new_from_template (alawdec_sink_template, "sink");
+ alawdec->srcpad = gst_pad_new_from_template (alawdec_src_template, "src");
+ gst_pad_set_link_function (alawdec->sinkpad, alawdec_link);
- gst_element_add_pad(GST_ELEMENT(alawdec),alawdec->sinkpad);
- gst_pad_set_chain_function(alawdec->sinkpad,gst_alawdec_chain);
- gst_element_add_pad(GST_ELEMENT(alawdec),alawdec->srcpad);
+ gst_element_add_pad (GST_ELEMENT (alawdec), alawdec->sinkpad);
+ gst_pad_set_chain_function (alawdec->sinkpad, gst_alawdec_chain);
+ gst_element_add_pad (GST_ELEMENT (alawdec), alawdec->srcpad);
}
static void
-gst_alawdec_chain (GstPad *pad,GstData *_data)
+gst_alawdec_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstALawDec *alawdec;
gint16 *linear_data;
guint8 *alaw_data;
- GstBuffer* outbuf;
+ GstBuffer *outbuf;
gint i;
- g_return_if_fail(pad != NULL);
- g_return_if_fail(GST_IS_PAD(pad));
- g_return_if_fail(buf != NULL);
+ g_return_if_fail (pad != NULL);
+ g_return_if_fail (GST_IS_PAD (pad));
+ g_return_if_fail (buf != NULL);
- alawdec = GST_ALAWDEC(GST_OBJECT_PARENT (pad));
- g_return_if_fail(alawdec != NULL);
- g_return_if_fail(GST_IS_ALAWDEC(alawdec));
+ alawdec = GST_ALAWDEC (GST_OBJECT_PARENT (pad));
+ g_return_if_fail (alawdec != NULL);
+ g_return_if_fail (GST_IS_ALAWDEC (alawdec));
- alaw_data = (guint8 *)GST_BUFFER_DATA(buf);
- outbuf=gst_buffer_new();
- GST_BUFFER_DATA(outbuf) = (gchar*)g_new(gint16,GST_BUFFER_SIZE(buf));
- GST_BUFFER_SIZE(outbuf) = GST_BUFFER_SIZE(buf)*2;
+ alaw_data = (guint8 *) GST_BUFFER_DATA (buf);
+ outbuf = gst_buffer_new ();
+ GST_BUFFER_DATA (outbuf) = (gchar *) g_new (gint16, GST_BUFFER_SIZE (buf));
+ GST_BUFFER_SIZE (outbuf) = GST_BUFFER_SIZE (buf) * 2;
- linear_data = (gint16*)GST_BUFFER_DATA(outbuf);
- for (i = 0; i < GST_BUFFER_SIZE(buf); i++) {
+ linear_data = (gint16 *) GST_BUFFER_DATA (outbuf);
+ for (i = 0; i < GST_BUFFER_SIZE (buf); i++) {
*linear_data = alaw_to_s16 (*alaw_data);
linear_data++;
alaw_data++;
}
-
- gst_buffer_unref(buf);
- gst_pad_push(alawdec->srcpad,GST_DATA (outbuf));
+
+ gst_buffer_unref (buf);
+ gst_pad_push (alawdec->srcpad, GST_DATA (outbuf));
}
static void
-gst_alawdec_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_alawdec_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstALawDec *alawdec;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_ALAWDEC(object));
- alawdec = GST_ALAWDEC(object);
+ g_return_if_fail (GST_IS_ALAWDEC (object));
+ alawdec = GST_ALAWDEC (object);
switch (prop_id) {
default:
@@ -215,13 +224,14 @@ gst_alawdec_set_property (GObject *object, guint prop_id, const GValue *value, G
}
static void
-gst_alawdec_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_alawdec_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstALawDec *alawdec;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_ALAWDEC(object));
- alawdec = GST_ALAWDEC(object);
+ g_return_if_fail (GST_IS_ALAWDEC (object));
+ alawdec = GST_ALAWDEC (object);
switch (prop_id) {
default:
@@ -229,5 +239,3 @@ gst_alawdec_get_property (GObject *object, guint prop_id, GValue *value, GParamS
break;
}
}
-
-
diff --git a/gst/law/alaw-decode.h b/gst/law/alaw-decode.h
index aa3a418c..8a6ac61b 100644
--- a/gst/law/alaw-decode.h
+++ b/gst/law/alaw-decode.h
@@ -27,8 +27,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_ALAWDEC \
@@ -42,27 +43,29 @@ extern "C" {
#define GST_IS_ALAWDEC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ALAWDEC))
-typedef struct _GstALawDec GstALawDec;
-typedef struct _GstALawDecClass GstALawDecClass;
+ typedef struct _GstALawDec GstALawDec;
+ typedef struct _GstALawDecClass GstALawDecClass;
-struct _GstALawDec {
- GstElement element;
+ struct _GstALawDec
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- /*MetaAudioRaw meta; */
+ /*MetaAudioRaw meta; */
-};
+ };
-struct _GstALawDecClass {
- GstElementClass parent_class;
-};
+ struct _GstALawDecClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_alawdec_get_type(void);
+ GType gst_alawdec_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_STEREO_H__ */
+#endif /* __GST_STEREO_H__ */
diff --git a/gst/law/alaw-encode.c b/gst/law/alaw-encode.c
index 6efdb64f..052f2e00 100644
--- a/gst/law/alaw-encode.c
+++ b/gst/law/alaw-encode.c
@@ -36,23 +36,27 @@ static GstElementDetails alawenc_details = {
};
/* Stereo signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0
};
-static void gst_alawenc_class_init (GstALawEncClass *klass);
-static void gst_alawenc_base_init (GstALawEncClass *klass);
-static void gst_alawenc_init (GstALawEnc *alawenc);
+static void gst_alawenc_class_init (GstALawEncClass * klass);
+static void gst_alawenc_base_init (GstALawEncClass * klass);
+static void gst_alawenc_init (GstALawEnc * alawenc);
-static void gst_alawenc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_alawenc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_alawenc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_alawenc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_alawenc_chain (GstPad *pad, GstData *_data);
+static void gst_alawenc_chain (GstPad * pad, GstData * _data);
/*
* s16_to_alaw() - Convert a 16-bit linear PCM value to 8-bit A-law
@@ -74,102 +78,108 @@ static void gst_alawenc_chain (GstPad *pad, GstData *_data);
* John Wiley & Sons, pps 98-111 and 472-476.
*/
-static inline gint val_seg(gint val)
+static inline gint
+val_seg (gint val)
{
- gint r = 1;
- val >>= 8;
- if (val & 0xf0) {
- val >>= 4;
- r += 4;
- }
- if (val & 0x0c) {
- val >>= 2;
- r += 2;
- }
- if (val & 0x02)
- r += 1;
- return r;
+ gint r = 1;
+
+ val >>= 8;
+ if (val & 0xf0) {
+ val >>= 4;
+ r += 4;
+ }
+ if (val & 0x0c) {
+ val >>= 2;
+ r += 2;
+ }
+ if (val & 0x02)
+ r += 1;
+ return r;
}
-static guint8 s16_to_alaw(gint pcm_val)
+static guint8
+s16_to_alaw (gint pcm_val)
{
- gint seg;
- guint8 mask;
- guint8 aval;
-
- if (pcm_val >= 0) {
- mask = 0xD5;
- } else {
- mask = 0x55;
- pcm_val = -pcm_val;
- if (pcm_val > 0x7fff)
- pcm_val = 0x7fff;
- }
-
- if (pcm_val < 256)
- aval = pcm_val >> 4;
- else {
- /* Convert the scaled magnitude to segment number. */
- seg = val_seg(pcm_val);
- aval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0x0f);
- }
- return aval ^ mask;
+ gint seg;
+ guint8 mask;
+ guint8 aval;
+
+ if (pcm_val >= 0) {
+ mask = 0xD5;
+ } else {
+ mask = 0x55;
+ pcm_val = -pcm_val;
+ if (pcm_val > 0x7fff)
+ pcm_val = 0x7fff;
+ }
+
+ if (pcm_val < 256)
+ aval = pcm_val >> 4;
+ else {
+ /* Convert the scaled magnitude to segment number. */
+ seg = val_seg (pcm_val);
+ aval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0x0f);
+ }
+ return aval ^ mask;
}
static GstElementClass *parent_class = NULL;
+
/*static guint gst_stereo_signals[LAST_SIGNAL] = { 0 }; */
static GstPadLinkReturn
-alawenc_link (GstPad *pad, const GstCaps *caps)
+alawenc_link (GstPad * pad, const GstCaps * caps)
{
- GstCaps* tempcaps;
+ GstCaps *tempcaps;
gint rate, channels;
GstStructure *structure;
gboolean ret;
-
- GstALawEnc* alawenc = GST_ALAWENC (GST_OBJECT_PARENT (pad));
-
+
+ GstALawEnc *alawenc = GST_ALAWENC (GST_OBJECT_PARENT (pad));
+
structure = gst_caps_get_structure (caps, 0);
ret = gst_structure_get_int (structure, "rate", &rate);
ret &= gst_structure_get_int (structure, "channels", &channels);
- if (!ret) return GST_PAD_LINK_REFUSED;
-
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
+
tempcaps = gst_caps_new_simple ("audio/x-alaw",
- "depth", G_TYPE_INT, 8,
- "width", G_TYPE_INT, 8,
- "signed", G_TYPE_BOOLEAN, FALSE,
- "rate", G_TYPE_INT, rate,
- "channels", G_TYPE_INT, channels,
- NULL);
-
+ "depth", G_TYPE_INT, 8,
+ "width", G_TYPE_INT, 8,
+ "signed", G_TYPE_BOOLEAN, FALSE,
+ "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, channels, NULL);
+
return gst_pad_try_set_caps (alawenc->srcpad, tempcaps);
-}
+}
GType
-gst_alawenc_get_type(void) {
+gst_alawenc_get_type (void)
+{
static GType alawenc_type = 0;
if (!alawenc_type) {
static const GTypeInfo alawenc_info = {
- sizeof(GstALawEncClass),
- (GBaseInitFunc)gst_alawenc_base_init,
+ sizeof (GstALawEncClass),
+ (GBaseInitFunc) gst_alawenc_base_init,
NULL,
- (GClassInitFunc)gst_alawenc_class_init,
+ (GClassInitFunc) gst_alawenc_class_init,
NULL,
NULL,
- sizeof(GstALawEnc),
+ sizeof (GstALawEnc),
0,
- (GInstanceInitFunc)gst_alawenc_init,
+ (GInstanceInitFunc) gst_alawenc_init,
};
- alawenc_type = g_type_register_static(GST_TYPE_ELEMENT, "GstALawEnc", &alawenc_info, 0);
+ alawenc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstALawEnc", &alawenc_info,
+ 0);
}
return alawenc_type;
}
static void
-gst_alawenc_base_init (GstALawEncClass *klass)
+gst_alawenc_base_init (GstALawEncClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
@@ -179,74 +189,76 @@ gst_alawenc_base_init (GstALawEncClass *klass)
}
static void
-gst_alawenc_class_init (GstALawEncClass *klass)
+gst_alawenc_class_init (GstALawEncClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gobject_class->set_property = gst_alawenc_set_property;
gobject_class->get_property = gst_alawenc_get_property;
}
static void
-gst_alawenc_init (GstALawEnc *alawenc)
+gst_alawenc_init (GstALawEnc * alawenc)
{
- alawenc->sinkpad = gst_pad_new_from_template(alawenc_sink_template,"sink");
- alawenc->srcpad = gst_pad_new_from_template(alawenc_src_template,"src");
+ alawenc->sinkpad = gst_pad_new_from_template (alawenc_sink_template, "sink");
+ alawenc->srcpad = gst_pad_new_from_template (alawenc_src_template, "src");
gst_pad_set_link_function (alawenc->sinkpad, alawenc_link);
- gst_element_add_pad(GST_ELEMENT(alawenc),alawenc->sinkpad);
- gst_pad_set_chain_function(alawenc->sinkpad,gst_alawenc_chain);
- gst_element_add_pad(GST_ELEMENT(alawenc),alawenc->srcpad);
+ gst_element_add_pad (GST_ELEMENT (alawenc), alawenc->sinkpad);
+ gst_pad_set_chain_function (alawenc->sinkpad, gst_alawenc_chain);
+ gst_element_add_pad (GST_ELEMENT (alawenc), alawenc->srcpad);
}
static void
-gst_alawenc_chain (GstPad *pad,GstData *_data)
+gst_alawenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstALawEnc *alawenc;
gint16 *linear_data;
guint8 *alaw_data;
- GstBuffer* outbuf;
+ GstBuffer *outbuf;
gint i;
- g_return_if_fail(pad != NULL);
- g_return_if_fail(GST_IS_PAD(pad));
- g_return_if_fail(buf != NULL);
+ g_return_if_fail (pad != NULL);
+ g_return_if_fail (GST_IS_PAD (pad));
+ g_return_if_fail (buf != NULL);
+
+ alawenc = GST_ALAWENC (GST_OBJECT_PARENT (pad));
+ g_return_if_fail (alawenc != NULL);
+ g_return_if_fail (GST_IS_ALAWENC (alawenc));
- alawenc = GST_ALAWENC(GST_OBJECT_PARENT (pad));
- g_return_if_fail(alawenc != NULL);
- g_return_if_fail(GST_IS_ALAWENC(alawenc));
+ linear_data = (gint16 *) GST_BUFFER_DATA (buf);
+ outbuf = gst_buffer_new ();
+ GST_BUFFER_DATA (outbuf) =
+ (gchar *) g_new (guint8, GST_BUFFER_SIZE (buf) / 2);
+ GST_BUFFER_SIZE (outbuf) = GST_BUFFER_SIZE (buf) / 2;
- linear_data = (gint16 *)GST_BUFFER_DATA(buf);
- outbuf=gst_buffer_new();
- GST_BUFFER_DATA(outbuf) = (gchar*)g_new(guint8,GST_BUFFER_SIZE(buf)/2);
- GST_BUFFER_SIZE(outbuf) = GST_BUFFER_SIZE(buf)/2;
-
- alaw_data = (guint8*)GST_BUFFER_DATA(outbuf);
- for (i = 0; i < GST_BUFFER_SIZE(outbuf); i++) {
+ alaw_data = (guint8 *) GST_BUFFER_DATA (outbuf);
+ for (i = 0; i < GST_BUFFER_SIZE (outbuf); i++) {
*alaw_data = s16_to_alaw (*linear_data);
alaw_data++;
linear_data++;
}
- gst_buffer_unref(buf);
- gst_pad_push(alawenc->srcpad,GST_DATA (outbuf));
+ gst_buffer_unref (buf);
+ gst_pad_push (alawenc->srcpad, GST_DATA (outbuf));
}
static void
-gst_alawenc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_alawenc_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstALawEnc *alawenc;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_ALAWENC(object));
- alawenc = GST_ALAWENC(object);
+ g_return_if_fail (GST_IS_ALAWENC (object));
+ alawenc = GST_ALAWENC (object);
switch (prop_id) {
default:
@@ -255,13 +267,14 @@ gst_alawenc_set_property (GObject *object, guint prop_id, const GValue *value, G
}
static void
-gst_alawenc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_alawenc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstALawEnc *alawenc;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_ALAWENC(object));
- alawenc = GST_ALAWENC(object);
+ g_return_if_fail (GST_IS_ALAWENC (object));
+ alawenc = GST_ALAWENC (object);
switch (prop_id) {
default:
diff --git a/gst/law/alaw-encode.h b/gst/law/alaw-encode.h
index e0801036..907fa3d8 100644
--- a/gst/law/alaw-encode.h
+++ b/gst/law/alaw-encode.h
@@ -27,8 +27,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_ALAWENC \
@@ -42,27 +43,29 @@ extern "C" {
#define GST_IS_ALAWENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ALAWENC))
-typedef struct _GstALawEnc GstALawEnc;
-typedef struct _GstALawEncClass GstALawEncClass;
+ typedef struct _GstALawEnc GstALawEnc;
+ typedef struct _GstALawEncClass GstALawEncClass;
-struct _GstALawEnc {
- GstElement element;
+ struct _GstALawEnc
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- /*MetaAudioRaw meta; */
+ /*MetaAudioRaw meta; */
-};
+ };
-struct _GstALawEncClass {
- GstElementClass parent_class;
-};
+ struct _GstALawEncClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_alawenc_get_type(void);
+ GType gst_alawenc_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_STEREO_H__ */
+#endif /* __GST_STEREO_H__ */
diff --git a/gst/law/alaw.c b/gst/law/alaw.c
index be0559bb..05ac2d23 100644
--- a/gst/law/alaw.c
+++ b/gst/law/alaw.c
@@ -4,62 +4,58 @@
#include "alaw-encode.h"
#include "alaw-decode.h"
-static GstCaps*
+static GstCaps *
alaw_factory (void)
{
return gst_caps_new_simple ("audio/x-alaw",
- "rate", GST_TYPE_INT_RANGE, 8000, 192000,
- "channels", GST_TYPE_INT_RANGE, 1, 2,
- NULL);
+ "rate", GST_TYPE_INT_RANGE, 8000, 192000,
+ "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
}
-static GstCaps*
+static GstCaps *
linear_factory (void)
{
return gst_caps_new_simple ("audio/x-raw-int",
- "width", G_TYPE_INT, 16,
- "depth", G_TYPE_INT, 16,
+ "width", G_TYPE_INT, 16,
+ "depth", G_TYPE_INT, 16,
"endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "rate", GST_TYPE_INT_RANGE, 8000, 192000,
- "channels", GST_TYPE_INT_RANGE, 1, 2,
- NULL);
+ "signed", G_TYPE_BOOLEAN, TRUE,
+ "rate", GST_TYPE_INT_RANGE, 8000, 192000,
+ "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
}
GstPadTemplate *alawenc_src_template, *alawenc_sink_template;
GstPadTemplate *alawdec_src_template, *alawdec_sink_template;
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- GstCaps* alaw_caps, *linear_caps;
+ GstCaps *alaw_caps, *linear_caps;
alaw_caps = alaw_factory ();
linear_caps = linear_factory ();
- alawenc_src_template = gst_pad_template_new ("src",GST_PAD_SRC,GST_PAD_ALWAYS,alaw_caps);
- alawenc_sink_template = gst_pad_template_new ("sink",GST_PAD_SINK,GST_PAD_ALWAYS,linear_caps);
+ alawenc_src_template =
+ gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, alaw_caps);
+ alawenc_sink_template =
+ gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, linear_caps);
- alawdec_src_template = gst_pad_template_new ("src",GST_PAD_SRC,GST_PAD_ALWAYS,linear_caps);
- alawdec_sink_template = gst_pad_template_new ("sink",GST_PAD_SINK,GST_PAD_ALWAYS,alaw_caps);
+ alawdec_src_template =
+ gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, linear_caps);
+ alawdec_sink_template =
+ gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, alaw_caps);
if (!gst_element_register (plugin, "alawenc",
- GST_RANK_NONE, GST_TYPE_ALAWENC) ||
+ GST_RANK_NONE, GST_TYPE_ALAWENC) ||
!gst_element_register (plugin, "alawdec",
- GST_RANK_PRIMARY, GST_TYPE_ALAWENC))
+ GST_RANK_PRIMARY, GST_TYPE_ALAWENC))
return FALSE;
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "alaw",
- "ALaw audio conversion routines",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "alaw",
+ "ALaw audio conversion routines",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/law/mulaw-conversion.c b/gst/law/mulaw-conversion.c
index e921fb88..fa4db3cb 100644
--- a/gst/law/mulaw-conversion.c
+++ b/gst/law/mulaw-conversion.c
@@ -25,49 +25,53 @@
#include <glib.h>
-#define ZEROTRAP /* turn on the trap as per the MIL-STD */
-#define BIAS 0x84 /* define the add-in bias for 16 bit samples */
+#define ZEROTRAP /* turn on the trap as per the MIL-STD */
+#define BIAS 0x84 /* define the add-in bias for 16 bit samples */
#define CLIP 32635
void
-mulaw_encode(gint16* in, guint8* out, gint numsamples)
+mulaw_encode (gint16 * in, guint8 * out, gint numsamples)
{
- static gint16 exp_lut[256] = {0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,
- 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
- 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
- 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
- 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
- 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
- 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
- 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7};
- gint16 sign, exponent, mantissa,i;
- gint16 sample;
- guint8 ulawbyte;
+ static gint16 exp_lut[256] = { 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
+ };
+ gint16 sign, exponent, mantissa, i;
+ gint16 sample;
+ guint8 ulawbyte;
- for(i=0;i<numsamples;i++) {
- sample=in[i];
+ for (i = 0; i < numsamples; i++) {
+ sample = in[i];
/** get the sample into sign-magnitude **/
- sign = (sample >> 8) & 0x80; /* set aside the sign */
- if (sign != 0) sample = -sample; /* get magnitude */
- if (sample > CLIP) sample = CLIP; /* clip the magnitude */
+ sign = (sample >> 8) & 0x80; /* set aside the sign */
+ if (sign != 0)
+ sample = -sample; /* get magnitude */
+ if (sample > CLIP)
+ sample = CLIP; /* clip the magnitude */
/** convert from 16 bit linear to ulaw **/
- sample = sample + BIAS;
- exponent = exp_lut[(sample>>7) & 0xFF];
- mantissa = (sample >> (exponent+3)) & 0x0F;
- ulawbyte = ~(sign | (exponent << 4) | mantissa);
+ sample = sample + BIAS;
+ exponent = exp_lut[(sample >> 7) & 0xFF];
+ mantissa = (sample >> (exponent + 3)) & 0x0F;
+ ulawbyte = ~(sign | (exponent << 4) | mantissa);
#ifdef ZEROTRAP
- if (ulawbyte == 0 ) ulawbyte = 0x02; /* optional CCITT trap */
+ if (ulawbyte == 0)
+ ulawbyte = 0x02; /* optional CCITT trap */
#endif
- out[i]=ulawbyte;
- }
+ out[i] = ulawbyte;
+ }
}
/*
@@ -87,20 +91,22 @@ mulaw_encode(gint16* in, guint8* out, gint numsamples)
*/
void
-mulaw_decode(guint8* in,gint16* out,gint numsamples)
+mulaw_decode (guint8 * in, gint16 * out, gint numsamples)
{
- static gint16 exp_lut[8]={0,132,396,924,1980,4092,8316,16764};
- gint16 sign, exponent, mantissa;
- guint8 ulawbyte;
- gint16 linear,i;
- for(i=0;i<numsamples;i++) {
- ulawbyte=in[i];
- ulawbyte = ~ulawbyte;
- sign = (ulawbyte & 0x80);
- exponent = (ulawbyte >> 4) & 0x07;
- mantissa = ulawbyte & 0x0F;
- linear = exp_lut[exponent] + (mantissa << (exponent+3));
- if (sign != 0) linear = -linear;
- out[i]=linear;
- }
+ static gint16 exp_lut[8] = { 0, 132, 396, 924, 1980, 4092, 8316, 16764 };
+ gint16 sign, exponent, mantissa;
+ guint8 ulawbyte;
+ gint16 linear, i;
+
+ for (i = 0; i < numsamples; i++) {
+ ulawbyte = in[i];
+ ulawbyte = ~ulawbyte;
+ sign = (ulawbyte & 0x80);
+ exponent = (ulawbyte >> 4) & 0x07;
+ mantissa = ulawbyte & 0x0F;
+ linear = exp_lut[exponent] + (mantissa << (exponent + 3));
+ if (sign != 0)
+ linear = -linear;
+ out[i] = linear;
+ }
}
diff --git a/gst/law/mulaw-conversion.h b/gst/law/mulaw-conversion.h
index 55180121..db07789d 100644
--- a/gst/law/mulaw-conversion.h
+++ b/gst/law/mulaw-conversion.h
@@ -3,8 +3,6 @@
#include <glib.h>
-void
-mulaw_encode(gint16* in, guint8* out, gint numsamples);
-void
-mulaw_decode(guint8* in,gint16* out,gint numsamples);
+void mulaw_encode (gint16 * in, guint8 * out, gint numsamples);
+void mulaw_decode (guint8 * in, gint16 * out, gint numsamples);
#endif
diff --git a/gst/law/mulaw-decode.c b/gst/law/mulaw-decode.c
index fcf023c1..6a8f9e81 100644
--- a/gst/law/mulaw-decode.c
+++ b/gst/law/mulaw-decode.c
@@ -35,79 +35,86 @@ static GstElementDetails mulawdec_details = {
};
/* Stereo signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0
};
-static void gst_mulawdec_class_init (GstMuLawDecClass *klass);
-static void gst_mulawdec_base_init (GstMuLawDecClass *klass);
-static void gst_mulawdec_init (GstMuLawDec *mulawdec);
+static void gst_mulawdec_class_init (GstMuLawDecClass * klass);
+static void gst_mulawdec_base_init (GstMuLawDecClass * klass);
+static void gst_mulawdec_init (GstMuLawDec * mulawdec);
-static void gst_mulawdec_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_mulawdec_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_mulawdec_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_mulawdec_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_mulawdec_chain (GstPad *pad, GstData *_data);
+static void gst_mulawdec_chain (GstPad * pad, GstData * _data);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_stereo_signals[LAST_SIGNAL] = { 0 };*/
static GstPadLinkReturn
-mulawdec_link (GstPad *pad, const GstCaps *caps)
+mulawdec_link (GstPad * pad, const GstCaps * caps)
{
- GstCaps* tempcaps;
+ GstCaps *tempcaps;
gint rate, channels;
GstStructure *structure;
gboolean ret;
-
- GstMuLawDec* mulawdec = GST_MULAWDEC (GST_OBJECT_PARENT (pad));
-
+
+ GstMuLawDec *mulawdec = GST_MULAWDEC (GST_OBJECT_PARENT (pad));
+
structure = gst_caps_get_structure (caps, 0);
ret = gst_structure_get_int (structure, "rate", &rate);
ret = gst_structure_get_int (structure, "channels", &channels);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
tempcaps = gst_caps_new_simple ("audio/x-raw-int",
- "depth", G_TYPE_INT, 16,
- "width", G_TYPE_INT, 16,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "rate", G_TYPE_INT, rate,
- "channels", G_TYPE_INT, channels,
- NULL);
+ "depth", G_TYPE_INT, 16,
+ "width", G_TYPE_INT, 16,
+ "signed", G_TYPE_BOOLEAN, TRUE,
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, channels, NULL);
return gst_pad_try_set_caps (mulawdec->srcpad, tempcaps);
}
GType
-gst_mulawdec_get_type(void) {
+gst_mulawdec_get_type (void)
+{
static GType mulawdec_type = 0;
if (!mulawdec_type) {
static const GTypeInfo mulawdec_info = {
- sizeof(GstMuLawDecClass),
- (GBaseInitFunc)gst_mulawdec_base_init,
+ sizeof (GstMuLawDecClass),
+ (GBaseInitFunc) gst_mulawdec_base_init,
NULL,
- (GClassInitFunc)gst_mulawdec_class_init,
+ (GClassInitFunc) gst_mulawdec_class_init,
NULL,
NULL,
- sizeof(GstMuLawDec),
+ sizeof (GstMuLawDec),
0,
- (GInstanceInitFunc)gst_mulawdec_init,
+ (GInstanceInitFunc) gst_mulawdec_init,
};
- mulawdec_type = g_type_register_static(GST_TYPE_ELEMENT, "GstMuLawDec", &mulawdec_info, 0);
+ mulawdec_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstMuLawDec", &mulawdec_info,
+ 0);
}
return mulawdec_type;
}
static void
-gst_mulawdec_base_init (GstMuLawDecClass *klass)
+gst_mulawdec_base_init (GstMuLawDecClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
@@ -117,69 +124,71 @@ gst_mulawdec_base_init (GstMuLawDecClass *klass)
}
static void
-gst_mulawdec_class_init (GstMuLawDecClass *klass)
+gst_mulawdec_class_init (GstMuLawDecClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gobject_class->set_property = gst_mulawdec_set_property;
gobject_class->get_property = gst_mulawdec_get_property;
}
static void
-gst_mulawdec_init (GstMuLawDec *mulawdec)
+gst_mulawdec_init (GstMuLawDec * mulawdec)
{
- mulawdec->sinkpad = gst_pad_new_from_template(mulawdec_sink_template,"sink");
- mulawdec->srcpad = gst_pad_new_from_template(mulawdec_src_template,"src");
- gst_pad_set_link_function(mulawdec->sinkpad, mulawdec_link);
-
- gst_element_add_pad(GST_ELEMENT(mulawdec),mulawdec->sinkpad);
- gst_pad_set_chain_function(mulawdec->sinkpad,gst_mulawdec_chain);
- gst_element_add_pad(GST_ELEMENT(mulawdec),mulawdec->srcpad);
+ mulawdec->sinkpad =
+ gst_pad_new_from_template (mulawdec_sink_template, "sink");
+ mulawdec->srcpad = gst_pad_new_from_template (mulawdec_src_template, "src");
+ gst_pad_set_link_function (mulawdec->sinkpad, mulawdec_link);
+
+ gst_element_add_pad (GST_ELEMENT (mulawdec), mulawdec->sinkpad);
+ gst_pad_set_chain_function (mulawdec->sinkpad, gst_mulawdec_chain);
+ gst_element_add_pad (GST_ELEMENT (mulawdec), mulawdec->srcpad);
}
static void
-gst_mulawdec_chain (GstPad *pad,GstData *_data)
+gst_mulawdec_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstMuLawDec *mulawdec;
gint16 *linear_data;
guint8 *mulaw_data;
- GstBuffer* outbuf;
+ GstBuffer *outbuf;
- g_return_if_fail(pad != NULL);
- g_return_if_fail(GST_IS_PAD(pad));
- g_return_if_fail(buf != NULL);
+ g_return_if_fail (pad != NULL);
+ g_return_if_fail (GST_IS_PAD (pad));
+ g_return_if_fail (buf != NULL);
- mulawdec = GST_MULAWDEC(GST_OBJECT_PARENT (pad));
- g_return_if_fail(mulawdec != NULL);
- g_return_if_fail(GST_IS_MULAWDEC(mulawdec));
+ mulawdec = GST_MULAWDEC (GST_OBJECT_PARENT (pad));
+ g_return_if_fail (mulawdec != NULL);
+ g_return_if_fail (GST_IS_MULAWDEC (mulawdec));
- mulaw_data = (guint8 *)GST_BUFFER_DATA(buf);
- outbuf=gst_buffer_new();
- GST_BUFFER_DATA(outbuf) = (gchar*)g_new(gint16,GST_BUFFER_SIZE(buf));
- GST_BUFFER_SIZE(outbuf) = GST_BUFFER_SIZE(buf)*2;
+ mulaw_data = (guint8 *) GST_BUFFER_DATA (buf);
+ outbuf = gst_buffer_new ();
+ GST_BUFFER_DATA (outbuf) = (gchar *) g_new (gint16, GST_BUFFER_SIZE (buf));
+ GST_BUFFER_SIZE (outbuf) = GST_BUFFER_SIZE (buf) * 2;
- linear_data = (gint16*)GST_BUFFER_DATA(outbuf);
- mulaw_decode(mulaw_data,linear_data,GST_BUFFER_SIZE(buf));
+ linear_data = (gint16 *) GST_BUFFER_DATA (outbuf);
+ mulaw_decode (mulaw_data, linear_data, GST_BUFFER_SIZE (buf));
- gst_buffer_unref(buf);
- gst_pad_push(mulawdec->srcpad,GST_DATA (outbuf));
+ gst_buffer_unref (buf);
+ gst_pad_push (mulawdec->srcpad, GST_DATA (outbuf));
}
static void
-gst_mulawdec_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_mulawdec_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstMuLawDec *mulawdec;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_MULAWDEC(object));
- mulawdec = GST_MULAWDEC(object);
+ g_return_if_fail (GST_IS_MULAWDEC (object));
+ mulawdec = GST_MULAWDEC (object);
switch (prop_id) {
default:
@@ -188,13 +197,14 @@ gst_mulawdec_set_property (GObject *object, guint prop_id, const GValue *value,
}
static void
-gst_mulawdec_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_mulawdec_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstMuLawDec *mulawdec;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_MULAWDEC(object));
- mulawdec = GST_MULAWDEC(object);
+ g_return_if_fail (GST_IS_MULAWDEC (object));
+ mulawdec = GST_MULAWDEC (object);
switch (prop_id) {
default:
diff --git a/gst/law/mulaw-decode.h b/gst/law/mulaw-decode.h
index d34c8c06..9fb32267 100644
--- a/gst/law/mulaw-decode.h
+++ b/gst/law/mulaw-decode.h
@@ -27,8 +27,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_MULAWDEC \
@@ -42,27 +43,29 @@ extern "C" {
#define GST_IS_MULAWDEC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MULAWDEC))
-typedef struct _GstMuLawDec GstMuLawDec;
-typedef struct _GstMuLawDecClass GstMuLawDecClass;
+ typedef struct _GstMuLawDec GstMuLawDec;
+ typedef struct _GstMuLawDecClass GstMuLawDecClass;
-struct _GstMuLawDec {
- GstElement element;
+ struct _GstMuLawDec
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- /*MetaAudioRaw meta; */
+ /*MetaAudioRaw meta; */
-};
+ };
-struct _GstMuLawDecClass {
- GstElementClass parent_class;
-};
+ struct _GstMuLawDecClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_mulawdec_get_type(void);
+ GType gst_mulawdec_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_STEREO_H__ */
+#endif /* __GST_STEREO_H__ */
diff --git a/gst/law/mulaw-encode.c b/gst/law/mulaw-encode.c
index b15815a1..db65e169 100644
--- a/gst/law/mulaw-encode.c
+++ b/gst/law/mulaw-encode.c
@@ -35,77 +35,84 @@ static GstElementDetails mulawenc_details = {
};
/* Stereo signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0
};
-static void gst_mulawenc_class_init (GstMuLawEncClass *klass);
-static void gst_mulawenc_base_init (GstMuLawEncClass *klass);
-static void gst_mulawenc_init (GstMuLawEnc *mulawenc);
+static void gst_mulawenc_class_init (GstMuLawEncClass * klass);
+static void gst_mulawenc_base_init (GstMuLawEncClass * klass);
+static void gst_mulawenc_init (GstMuLawEnc * mulawenc);
-static void gst_mulawenc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_mulawenc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_mulawenc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_mulawenc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_mulawenc_chain (GstPad *pad, GstData *_data);
+static void gst_mulawenc_chain (GstPad * pad, GstData * _data);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_stereo_signals[LAST_SIGNAL] = { 0 }; */
static GstPadLinkReturn
-mulawenc_link (GstPad *pad, const GstCaps *caps)
+mulawenc_link (GstPad * pad, const GstCaps * caps)
{
- GstCaps* tempcaps;
+ GstCaps *tempcaps;
gint rate, channels;
GstStructure *structure;
gboolean ret;
-
- GstMuLawEnc* mulawenc = GST_MULAWENC (GST_OBJECT_PARENT (pad));
-
+
+ GstMuLawEnc *mulawenc = GST_MULAWENC (GST_OBJECT_PARENT (pad));
+
structure = gst_caps_get_structure (caps, 0);
ret = gst_structure_get_int (structure, "rate", &rate);
ret = gst_structure_get_int (structure, "channels", &channels);
- if (!ret) return GST_PAD_LINK_REFUSED;
-
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
+
tempcaps = gst_caps_new_simple ("audio/x-mulaw",
- "depth", G_TYPE_INT, 8,
- "width", G_TYPE_INT, 8,
- "signed", G_TYPE_BOOLEAN, FALSE,
- "rate", G_TYPE_INT, rate,
- "channels", G_TYPE_INT, channels,
- NULL);
-
+ "depth", G_TYPE_INT, 8,
+ "width", G_TYPE_INT, 8,
+ "signed", G_TYPE_BOOLEAN, FALSE,
+ "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, channels, NULL);
+
return gst_pad_try_set_caps (mulawenc->srcpad, tempcaps);
}
GType
-gst_mulawenc_get_type(void) {
+gst_mulawenc_get_type (void)
+{
static GType mulawenc_type = 0;
if (!mulawenc_type) {
static const GTypeInfo mulawenc_info = {
- sizeof(GstMuLawEncClass),
- (GBaseInitFunc)gst_mulawenc_base_init,
+ sizeof (GstMuLawEncClass),
+ (GBaseInitFunc) gst_mulawenc_base_init,
NULL,
- (GClassInitFunc)gst_mulawenc_class_init,
+ (GClassInitFunc) gst_mulawenc_class_init,
NULL,
NULL,
- sizeof(GstMuLawEnc),
+ sizeof (GstMuLawEnc),
0,
- (GInstanceInitFunc)gst_mulawenc_init,
+ (GInstanceInitFunc) gst_mulawenc_init,
};
- mulawenc_type = g_type_register_static(GST_TYPE_ELEMENT, "GstMuLawEnc", &mulawenc_info, 0);
+ mulawenc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstMuLawEnc", &mulawenc_info,
+ 0);
}
return mulawenc_type;
}
static void
-gst_mulawenc_base_init (GstMuLawEncClass *klass)
+gst_mulawenc_base_init (GstMuLawEncClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
@@ -115,69 +122,72 @@ gst_mulawenc_base_init (GstMuLawEncClass *klass)
}
static void
-gst_mulawenc_class_init (GstMuLawEncClass *klass)
+gst_mulawenc_class_init (GstMuLawEncClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gobject_class->set_property = gst_mulawenc_set_property;
gobject_class->get_property = gst_mulawenc_get_property;
}
static void
-gst_mulawenc_init (GstMuLawEnc *mulawenc)
+gst_mulawenc_init (GstMuLawEnc * mulawenc)
{
- mulawenc->sinkpad = gst_pad_new_from_template(mulawenc_sink_template,"sink");
- mulawenc->srcpad = gst_pad_new_from_template(mulawenc_src_template,"src");
+ mulawenc->sinkpad =
+ gst_pad_new_from_template (mulawenc_sink_template, "sink");
+ mulawenc->srcpad = gst_pad_new_from_template (mulawenc_src_template, "src");
gst_pad_set_link_function (mulawenc->sinkpad, mulawenc_link);
- gst_element_add_pad(GST_ELEMENT(mulawenc),mulawenc->sinkpad);
- gst_pad_set_chain_function(mulawenc->sinkpad,gst_mulawenc_chain);
- gst_element_add_pad(GST_ELEMENT(mulawenc),mulawenc->srcpad);
+ gst_element_add_pad (GST_ELEMENT (mulawenc), mulawenc->sinkpad);
+ gst_pad_set_chain_function (mulawenc->sinkpad, gst_mulawenc_chain);
+ gst_element_add_pad (GST_ELEMENT (mulawenc), mulawenc->srcpad);
}
static void
-gst_mulawenc_chain (GstPad *pad,GstData *_data)
+gst_mulawenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstMuLawEnc *mulawenc;
gint16 *linear_data;
guint8 *mulaw_data;
- GstBuffer* outbuf;
+ GstBuffer *outbuf;
- g_return_if_fail(pad != NULL);
- g_return_if_fail(GST_IS_PAD(pad));
- g_return_if_fail(buf != NULL);
+ g_return_if_fail (pad != NULL);
+ g_return_if_fail (GST_IS_PAD (pad));
+ g_return_if_fail (buf != NULL);
- mulawenc = GST_MULAWENC(GST_OBJECT_PARENT (pad));
- g_return_if_fail(mulawenc != NULL);
- g_return_if_fail(GST_IS_MULAWENC(mulawenc));
+ mulawenc = GST_MULAWENC (GST_OBJECT_PARENT (pad));
+ g_return_if_fail (mulawenc != NULL);
+ g_return_if_fail (GST_IS_MULAWENC (mulawenc));
- linear_data = (gint16 *)GST_BUFFER_DATA(buf);
- outbuf=gst_buffer_new();
- GST_BUFFER_DATA(outbuf) = (gchar*)g_new(gint16,GST_BUFFER_SIZE(buf)/4);
- GST_BUFFER_SIZE(outbuf) = GST_BUFFER_SIZE(buf)/2;
+ linear_data = (gint16 *) GST_BUFFER_DATA (buf);
+ outbuf = gst_buffer_new ();
+ GST_BUFFER_DATA (outbuf) =
+ (gchar *) g_new (gint16, GST_BUFFER_SIZE (buf) / 4);
+ GST_BUFFER_SIZE (outbuf) = GST_BUFFER_SIZE (buf) / 2;
- mulaw_data = (gint8*)GST_BUFFER_DATA(outbuf);
- mulaw_encode(linear_data,mulaw_data,GST_BUFFER_SIZE(outbuf));
+ mulaw_data = (gint8 *) GST_BUFFER_DATA (outbuf);
+ mulaw_encode (linear_data, mulaw_data, GST_BUFFER_SIZE (outbuf));
- gst_buffer_unref(buf);
- gst_pad_push(mulawenc->srcpad,GST_DATA (outbuf));
+ gst_buffer_unref (buf);
+ gst_pad_push (mulawenc->srcpad, GST_DATA (outbuf));
}
static void
-gst_mulawenc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_mulawenc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstMuLawEnc *mulawenc;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_MULAWENC(object));
- mulawenc = GST_MULAWENC(object);
+ g_return_if_fail (GST_IS_MULAWENC (object));
+ mulawenc = GST_MULAWENC (object);
switch (prop_id) {
default:
@@ -186,13 +196,14 @@ gst_mulawenc_set_property (GObject *object, guint prop_id, const GValue *value,
}
static void
-gst_mulawenc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_mulawenc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstMuLawEnc *mulawenc;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_MULAWENC(object));
- mulawenc = GST_MULAWENC(object);
+ g_return_if_fail (GST_IS_MULAWENC (object));
+ mulawenc = GST_MULAWENC (object);
switch (prop_id) {
default:
diff --git a/gst/law/mulaw-encode.h b/gst/law/mulaw-encode.h
index 6d99759b..2ef39d23 100644
--- a/gst/law/mulaw-encode.h
+++ b/gst/law/mulaw-encode.h
@@ -27,8 +27,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_MULAWENC \
@@ -42,27 +43,29 @@ extern "C" {
#define GST_IS_MULAWENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MULAWENC))
-typedef struct _GstMuLawEnc GstMuLawEnc;
-typedef struct _GstMuLawEncClass GstMuLawEncClass;
+ typedef struct _GstMuLawEnc GstMuLawEnc;
+ typedef struct _GstMuLawEncClass GstMuLawEncClass;
-struct _GstMuLawEnc {
- GstElement element;
+ struct _GstMuLawEnc
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- /*MetaAudioRaw meta; */
+ /*MetaAudioRaw meta; */
-};
+ };
-struct _GstMuLawEncClass {
- GstElementClass parent_class;
-};
+ struct _GstMuLawEncClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_mulawenc_get_type(void);
+ GType gst_mulawenc_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_STEREO_H__ */
+#endif /* __GST_STEREO_H__ */
diff --git a/gst/law/mulaw.c b/gst/law/mulaw.c
index 632aa03f..3702aaa6 100644
--- a/gst/law/mulaw.c
+++ b/gst/law/mulaw.c
@@ -4,66 +4,58 @@
#include "mulaw-encode.h"
#include "mulaw-decode.h"
-static GstCaps*
+static GstCaps *
mulaw_factory (void)
{
return gst_caps_new_simple ("audio/x-mulaw",
- "rate", GST_TYPE_INT_RANGE, 8000, 192000,
- "channels", GST_TYPE_INT_RANGE, 1, 2,
- NULL);
+ "rate", GST_TYPE_INT_RANGE, 8000, 192000,
+ "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
}
-static GstCaps*
+static GstCaps *
linear_factory (void)
{
return gst_caps_new_simple ("audio/x-raw-int",
- "width", G_TYPE_INT, 16,
- "depth", G_TYPE_INT, 16,
+ "width", G_TYPE_INT, 16,
+ "depth", G_TYPE_INT, 16,
"endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "rate", GST_TYPE_INT_RANGE, 8000, 192000,
- "channels", GST_TYPE_INT_RANGE, 1, 2,
- NULL);
+ "signed", G_TYPE_BOOLEAN, TRUE,
+ "rate", GST_TYPE_INT_RANGE, 8000, 192000,
+ "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
}
GstPadTemplate *mulawenc_src_template, *mulawenc_sink_template;
GstPadTemplate *mulawdec_src_template, *mulawdec_sink_template;
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- GstCaps* mulaw_caps, *linear_caps;
+ GstCaps *mulaw_caps, *linear_caps;
mulaw_caps = mulaw_factory ();
linear_caps = linear_factory ();
- mulawenc_src_template = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
- mulaw_caps);
- mulawenc_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
- linear_caps);
+ mulawenc_src_template =
+ gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, mulaw_caps);
+ mulawenc_sink_template =
+ gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, linear_caps);
- mulawdec_src_template = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
- linear_caps);
- mulawdec_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
- mulaw_caps);
+ mulawdec_src_template =
+ gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, linear_caps);
+ mulawdec_sink_template =
+ gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, mulaw_caps);
if (!gst_element_register (plugin, "mulawenc",
- GST_RANK_NONE, GST_TYPE_MULAWENC) ||
+ GST_RANK_NONE, GST_TYPE_MULAWENC) ||
!gst_element_register (plugin, "mulawdec",
- GST_RANK_PRIMARY, GST_TYPE_MULAWDEC))
+ GST_RANK_PRIMARY, GST_TYPE_MULAWDEC))
return FALSE;
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "mulaw",
- "MuLaw audio conversion routines",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "mulaw",
+ "MuLaw audio conversion routines",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/level/demo.c b/gst/level/demo.c
index 98781b46..3d7bfc64 100644
--- a/gst/level/demo.c
+++ b/gst/level/demo.c
@@ -33,8 +33,8 @@ GtkWidget *elapsed;
GtkWidget *scale[2][3];
static void
-level_callback (GstElement *element, gdouble time, gint channel,
- gdouble rms, gdouble peak, gdouble decay)
+level_callback (GstElement * element, gdouble time, gint channel,
+ gdouble rms, gdouble peak, gdouble decay)
{
gchar *label;
@@ -50,6 +50,7 @@ static gboolean
idler (gpointer data)
{
GstElement *pipeline = GST_ELEMENT (data);
+
g_print ("+");
if (gst_bin_iterate (GST_BIN (pipeline)))
return TRUE;
@@ -79,8 +80,7 @@ setup_gui ()
gtk_container_add (GTK_CONTAINER (hbox), elapsed);
gtk_container_add (GTK_CONTAINER (vbox), hbox);
- for (c = 0; c < 2; ++c)
- {
+ for (c = 0; c < 2; ++c) {
/* RMS */
hbox = gtk_hbox_new (TRUE, 0);
label = gtk_label_new ("RMS");
@@ -110,8 +110,8 @@ setup_gui ()
gtk_widget_show_all (GTK_WIDGET (window));
}
-int main
-(int argc, char *argv[])
+int
+main (int argc, char *argv[])
{
GstElement *pipeline = NULL;
@@ -122,8 +122,7 @@ int main
gtk_init (&argc, &argv);
pipeline = gst_parse_launchv ((const gchar **) &argv[1], &error);
- if (error)
- {
+ if (error) {
g_print ("pipeline could not be constructed: %s\n", error->message);
g_print ("Please give a complete pipeline with a 'level' element.\n");
g_print ("Example: sinesrc ! level ! osssink\n");
@@ -132,8 +131,7 @@ int main
}
level = gst_bin_get_by_name (GST_BIN (pipeline), "level0");
- if (level == NULL)
- {
+ if (level == NULL) {
g_print ("Please give a pipeline with a 'level' element in it\n");
return 1;
}
@@ -141,7 +139,7 @@ int main
g_object_set (level, "signal", TRUE, NULL);
g_signal_connect (level, "level", G_CALLBACK (level_callback), NULL);
-
+
/* setup GUI */
setup_gui ();
@@ -155,4 +153,3 @@ int main
return 0;
}
-
diff --git a/gst/level/gstlevel.c b/gst/level/gstlevel.c
index e81828aa..9a822436 100644
--- a/gst/level/gstlevel.c
+++ b/gst/level/gstlevel.c
@@ -40,29 +40,29 @@ static GstElementDetails level_details = {
/* pad templates */
static GstStaticPadTemplate sink_template_factory =
-GST_STATIC_PAD_TEMPLATE (
- "level_sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS)
-);
+GST_STATIC_PAD_TEMPLATE ("level_sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS)
+ );
static GstStaticPadTemplate src_template_factory =
-GST_STATIC_PAD_TEMPLATE (
- "level_src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS)
-);
+GST_STATIC_PAD_TEMPLATE ("level_src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS)
+ );
/* Filter signals and args */
-enum {
+enum
+{
/* FILL ME */
SIGNAL_LEVEL,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_SIGNAL_LEVEL,
ARG_SIGNAL_INTERVAL,
@@ -70,42 +70,42 @@ enum {
ARG_PEAK_FALLOFF
};
-static void gst_level_class_init (GstLevelClass *klass);
-static void gst_level_base_init (GstLevelClass *klass);
-static void gst_level_init (GstLevel *filter);
+static void gst_level_class_init (GstLevelClass * klass);
+static void gst_level_base_init (GstLevelClass * klass);
+static void gst_level_init (GstLevel * filter);
-static GstElementStateReturn gst_level_change_state (GstElement *element);
-static void gst_level_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_level_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static GstElementStateReturn gst_level_change_state (GstElement * element);
+static void gst_level_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_level_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_level_chain (GstPad *pad, GstData *_data);
+static void gst_level_chain (GstPad * pad, GstData * _data);
static GstElementClass *parent_class = NULL;
static guint gst_filter_signals[LAST_SIGNAL] = { 0 };
GType
-gst_level_get_type (void)
+gst_level_get_type (void)
{
static GType level_type = 0;
- if (!level_type)
- {
- static const GTypeInfo level_info =
- {
+ if (!level_type) {
+ static const GTypeInfo level_info = {
sizeof (GstLevelClass),
(GBaseInitFunc) gst_level_base_init, NULL,
(GClassInitFunc) gst_level_class_init, NULL, NULL,
sizeof (GstLevel), 0,
(GInstanceInitFunc) gst_level_init
};
- level_type = g_type_register_static (GST_TYPE_ELEMENT, "GstLevel",
- &level_info, 0);
+ level_type = g_type_register_static (GST_TYPE_ELEMENT, "GstLevel",
+ &level_info, 0);
}
return level_type;
}
static GstPadLinkReturn
-gst_level_link (GstPad *pad, const GstCaps *caps)
+gst_level_link (GstPad * pad, const GstCaps * caps)
{
GstLevel *filter;
GstPad *otherpad;
@@ -118,7 +118,7 @@ gst_level_link (GstPad *pad, const GstCaps *caps)
g_return_val_if_fail (filter != NULL, GST_PAD_LINK_REFUSED);
g_return_val_if_fail (GST_IS_LEVEL (filter), GST_PAD_LINK_REFUSED);
otherpad = (pad == filter->srcpad ? filter->sinkpad : filter->srcpad);
-
+
res = gst_pad_try_set_caps (otherpad, caps);
/* if ok, set filter */
if (res != GST_PAD_LINK_OK && res != GST_PAD_LINK_DONE) {
@@ -126,22 +126,30 @@ gst_level_link (GstPad *pad, const GstCaps *caps)
}
filter->num_samples = 0;
-
+
structure = gst_caps_get_structure (caps, 0);
ret = gst_structure_get_int (structure, "rate", &filter->rate);
ret &= gst_structure_get_int (structure, "width", &filter->width);
ret &= gst_structure_get_int (structure, "channels", &filter->channels);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
/* allocate channel variable arrays */
- if (filter->CS) g_free (filter->CS);
- if (filter->peak) g_free (filter->peak);
- if (filter->last_peak) g_free (filter->last_peak);
- if (filter->decay_peak) g_free (filter->decay_peak);
- if (filter->decay_peak_age) g_free (filter->decay_peak_age);
- if (filter->MS) g_free (filter->MS);
- if (filter->RMS_dB) g_free (filter->RMS_dB);
+ if (filter->CS)
+ g_free (filter->CS);
+ if (filter->peak)
+ g_free (filter->peak);
+ if (filter->last_peak)
+ g_free (filter->last_peak);
+ if (filter->decay_peak)
+ g_free (filter->decay_peak);
+ if (filter->decay_peak_age)
+ g_free (filter->decay_peak_age);
+ if (filter->MS)
+ g_free (filter->MS);
+ if (filter->RMS_dB)
+ g_free (filter->RMS_dB);
filter->CS = g_new (double, filter->channels);
filter->peak = g_new (double, filter->channels);
filter->last_peak = g_new (double, filter->channels);
@@ -149,10 +157,11 @@ gst_level_link (GstPad *pad, const GstCaps *caps)
filter->decay_peak_age = g_new (double, filter->channels);
filter->MS = g_new (double, filter->channels);
filter->RMS_dB = g_new (double, filter->channels);
+
for (i = 0; i < filter->channels; ++i) {
filter->CS[i] = filter->peak[i] = filter->last_peak[i] =
- filter->decay_peak[i] = filter->decay_peak_age[i] =
- filter->MS[i] = filter->RMS_dB[i] = 0.0;
+ filter->decay_peak[i] = filter->decay_peak_age[i] =
+ filter->MS[i] = filter->RMS_dB[i] = 0.0;
}
filter->inited = TRUE;
@@ -161,17 +170,14 @@ gst_level_link (GstPad *pad, const GstCaps *caps)
}
static void inline
-gst_level_fast_16bit_chain (gint16* in, guint num, gint channels,
- gint resolution, double *CS, double *peak)
+gst_level_fast_16bit_chain (gint16 * in, guint num, gint channels,
+ gint resolution, double *CS, double *peak)
#include "filter.func"
-
-static void inline
-gst_level_fast_8bit_chain (gint8* in, guint num, gint channels,
- gint resolution, double *CS, double *peak)
+ static void inline
+ gst_level_fast_8bit_chain (gint8 * in, guint num, gint channels,
+ gint resolution, double *CS, double *peak)
#include "filter.func"
-
-static void
-gst_level_chain (GstPad *pad, GstData *_data)
+ static void gst_level_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstLevel *filter;
@@ -191,27 +197,24 @@ gst_level_chain (GstPad *pad, GstData *_data)
for (i = 0; i < filter->channels; ++i)
filter->CS[i] = filter->peak[i] = filter->MS[i] = filter->RMS_dB[i] = 0.0;
-
+
in_data = (gint16 *) GST_BUFFER_DATA (buf);
-
+
num_samples = GST_BUFFER_SIZE (buf) / (filter->width / 8);
if (num_samples % filter->channels != 0)
- g_warning ("WARNING: level: programming error, data not properly interleaved");
+ g_warning
+ ("WARNING: level: programming error, data not properly interleaved");
- for (i = 0; i < filter->channels; ++i)
- {
- switch (filter->width)
- {
+ for (i = 0; i < filter->channels; ++i) {
+ switch (filter->width) {
case 16:
- gst_level_fast_16bit_chain (in_data + i, num_samples,
- filter->channels, filter->width - 1,
- &CS, &filter->peak[i]);
- break;
+ gst_level_fast_16bit_chain (in_data + i, num_samples,
+ filter->channels, filter->width - 1, &CS, &filter->peak[i]);
+ break;
case 8:
- gst_level_fast_8bit_chain (((gint8 *) in_data) + i, num_samples,
- filter->channels, filter->width - 1,
- &CS, &filter->peak[i]);
- break;
+ gst_level_fast_8bit_chain (((gint8 *) in_data) + i, num_samples,
+ filter->channels, filter->width - 1, &CS, &filter->peak[i]);
+ break;
}
/* g_print ("DEBUG: CS %f, peak %f\n", CS, filter->peak[i]); */
filter->CS[i] += CS;
@@ -221,91 +224,86 @@ gst_level_chain (GstPad *pad, GstData *_data)
filter->num_samples += num_samples;
- for (i = 0; i < filter->channels; ++i)
- {
+ for (i = 0; i < filter->channels; ++i) {
filter->decay_peak_age[i] += num_samples;
/* g_print ("filter peak info [%d]: peak %f, age %f\n", i,
- filter->last_peak[i], filter->decay_peak_age[i]); */
+ filter->last_peak[i], filter->decay_peak_age[i]); */
/* update running peak */
if (filter->peak[i] > filter->last_peak[i])
- filter->last_peak[i] = filter->peak[i];
+ filter->last_peak[i] = filter->peak[i];
/* update decay peak */
- if (filter->peak[i] >= filter->decay_peak[i])
- {
- /* g_print ("new peak, %f\n", filter->peak[i]); */
- filter->decay_peak[i] = filter->peak[i];
- filter->decay_peak_age[i] = 0;
- }
- else
- {
+ if (filter->peak[i] >= filter->decay_peak[i]) {
+ /* g_print ("new peak, %f\n", filter->peak[i]); */
+ filter->decay_peak[i] = filter->peak[i];
+ filter->decay_peak_age[i] = 0;
+ } else {
/* make decay peak fall off if too old */
- if (filter->decay_peak_age[i] > filter->rate * filter->decay_peak_ttl)
- {
- double falloff_dB;
- double falloff;
- double length; /* length of buffer in seconds */
-
-
- length = (double) num_samples / (filter->channels * filter->rate);
- falloff_dB = filter->decay_peak_falloff * length;
- falloff = pow (10, falloff_dB / -20.0);
-
- /* g_print ("falloff: length %f, dB falloff %f, falloff factor %e\n",
- length, falloff_dB, falloff); */
- filter->decay_peak[i] *= falloff;
- /* g_print ("peak is %f samples old, decayed with factor %e to %f\n",
- filter->decay_peak_age[i], falloff, filter->decay_peak[i]); */
+ if (filter->decay_peak_age[i] > filter->rate * filter->decay_peak_ttl) {
+ double falloff_dB;
+ double falloff;
+ double length; /* length of buffer in seconds */
+
+
+ length = (double) num_samples / (filter->channels * filter->rate);
+ falloff_dB = filter->decay_peak_falloff * length;
+ falloff = pow (10, falloff_dB / -20.0);
+
+ /* g_print ("falloff: length %f, dB falloff %f, falloff factor %e\n",
+ length, falloff_dB, falloff); */
+ filter->decay_peak[i] *= falloff;
+ /* g_print ("peak is %f samples old, decayed with factor %e to %f\n",
+ filter->decay_peak_age[i], falloff, filter->decay_peak[i]); */
}
}
}
/* do we need to emit ? */
-
- if (filter->num_samples >= filter->interval * (gdouble) filter->rate)
- {
- if (filter->signal)
- {
+
+ if (filter->num_samples >= filter->interval * (gdouble) filter->rate) {
+ if (filter->signal) {
gdouble RMS, peak, endtime;
- for (i = 0; i < filter->channels; ++i)
- {
- RMS = sqrt (filter->CS[i] / (filter->num_samples / filter->channels));
- peak = filter->last_peak[i];
- num_samples = GST_BUFFER_SIZE (buf) / (filter->width / 8);
- endtime = (double) GST_BUFFER_TIMESTAMP (buf) / GST_SECOND
- + (double) num_samples / (double) filter->rate;
-
- g_signal_emit (G_OBJECT (filter), gst_filter_signals[SIGNAL_LEVEL], 0,
- endtime, i,
- 20 * log10 (RMS), 20 * log10 (filter->last_peak[i]),
- 20 * log10 (filter->decay_peak[i]));
- /* we emitted, so reset cumulative and normal peak */
- filter->CS[i] = 0.0;
- filter->last_peak[i] = 0.0;
+
+ for (i = 0; i < filter->channels; ++i) {
+ RMS = sqrt (filter->CS[i] / (filter->num_samples / filter->channels));
+ peak = filter->last_peak[i];
+ num_samples = GST_BUFFER_SIZE (buf) / (filter->width / 8);
+ endtime = (double) GST_BUFFER_TIMESTAMP (buf) / GST_SECOND
+ + (double) num_samples / (double) filter->rate;
+
+ g_signal_emit (G_OBJECT (filter), gst_filter_signals[SIGNAL_LEVEL], 0,
+ endtime, i,
+ 20 * log10 (RMS), 20 * log10 (filter->last_peak[i]),
+ 20 * log10 (filter->decay_peak[i]));
+ /* we emitted, so reset cumulative and normal peak */
+ filter->CS[i] = 0.0;
+ filter->last_peak[i] = 0.0;
}
}
filter->num_samples = 0;
}
}
-static GstElementStateReturn gst_level_change_state (GstElement *element)
+static GstElementStateReturn
+gst_level_change_state (GstElement * element)
{
GstLevel *filter = GST_LEVEL (element);
- switch(GST_STATE_TRANSITION(element)){
+ switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_PAUSED_TO_PLAYING:
- if (!filter->inited) return GST_STATE_FAILURE;
+ if (!filter->inited)
+ return GST_STATE_FAILURE;
break;
default:
break;
}
- return GST_ELEMENT_CLASS(parent_class)->change_state(element);
+ return GST_ELEMENT_CLASS (parent_class)->change_state (element);
}
static void
-gst_level_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
+gst_level_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstLevel *filter;
@@ -332,8 +330,8 @@ gst_level_set_property (GObject *object, guint prop_id,
}
static void
-gst_level_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
+gst_level_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
{
GstLevel *filter;
@@ -345,7 +343,7 @@ gst_level_get_property (GObject *object, guint prop_id,
case ARG_SIGNAL_LEVEL:
g_value_set_boolean (value, filter->signal);
break;
- case ARG_SIGNAL_INTERVAL:
+ case ARG_SIGNAL_INTERVAL:
g_value_set_double (value, filter->interval);
break;
case ARG_PEAK_TTL:
@@ -354,71 +352,73 @@ gst_level_get_property (GObject *object, guint prop_id,
case ARG_PEAK_FALLOFF:
g_value_set_double (value, filter->decay_peak_falloff);
break;
- default:
+ default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
-gst_level_base_init (GstLevelClass *klass)
+gst_level_base_init (GstLevelClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template_factory));
+ gst_static_pad_template_get (&sink_template_factory));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template_factory));
+ gst_static_pad_template_get (&src_template_factory));
gst_element_class_set_details (element_class, &level_details);
element_class->change_state = gst_level_change_state;
}
static void
-gst_level_class_init (GstLevelClass *klass)
+gst_level_class_init (GstLevelClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*) klass;
- gstelement_class = (GstElementClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SIGNAL_LEVEL,
- g_param_spec_boolean ("signal", "Signal",
- "Emit level signals for each interval",
- TRUE, G_PARAM_READWRITE));
+ g_param_spec_boolean ("signal", "Signal",
+ "Emit level signals for each interval", TRUE, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SIGNAL_INTERVAL,
- g_param_spec_double ("interval", "Interval",
- "Interval between emissions (in seconds)",
- 0.01, 100.0, 0.1, G_PARAM_READWRITE));
+ g_param_spec_double ("interval", "Interval",
+ "Interval between emissions (in seconds)",
+ 0.01, 100.0, 0.1, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PEAK_TTL,
- g_param_spec_double ("peak_ttl", "Peak TTL",
- "Time To Live of decay peak before it falls back",
- 0, 100.0, 0.3, G_PARAM_READWRITE));
+ g_param_spec_double ("peak_ttl", "Peak TTL",
+ "Time To Live of decay peak before it falls back",
+ 0, 100.0, 0.3, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PEAK_FALLOFF,
- g_param_spec_double ("peak_falloff", "Peak Falloff",
- "Decay rate of decay peak after TTL (in dB/sec)",
- 0.0, G_MAXDOUBLE, 10.0, G_PARAM_READWRITE));
+ g_param_spec_double ("peak_falloff", "Peak Falloff",
+ "Decay rate of decay peak after TTL (in dB/sec)",
+ 0.0, G_MAXDOUBLE, 10.0, G_PARAM_READWRITE));
gobject_class->set_property = gst_level_set_property;
gobject_class->get_property = gst_level_get_property;
- gst_filter_signals[SIGNAL_LEVEL] =
- g_signal_new ("level", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstLevelClass, level), NULL, NULL,
- gstlevel_cclosure_marshal_VOID__DOUBLE_INT_DOUBLE_DOUBLE_DOUBLE,
- G_TYPE_NONE, 5,
- G_TYPE_DOUBLE, G_TYPE_INT,
- G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
+ gst_filter_signals[SIGNAL_LEVEL] =
+ g_signal_new ("level", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GstLevelClass, level), NULL, NULL,
+ gstlevel_cclosure_marshal_VOID__DOUBLE_INT_DOUBLE_DOUBLE_DOUBLE,
+ G_TYPE_NONE, 5,
+ G_TYPE_DOUBLE, G_TYPE_INT, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
}
static void
-gst_level_init (GstLevel *filter)
+gst_level_init (GstLevel * filter)
{
- filter->sinkpad = gst_pad_new_from_template (gst_static_pad_template_get (&sink_template_factory), "sink");
+ filter->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&sink_template_factory), "sink");
gst_pad_set_link_function (filter->sinkpad, gst_level_link);
- filter->srcpad = gst_pad_new_from_template (gst_static_pad_template_get (&src_template_factory), "src");
+ filter->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&src_template_factory), "src");
gst_pad_set_link_function (filter->srcpad, gst_level_link);
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
@@ -441,20 +441,13 @@ gst_level_init (GstLevel *filter)
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- return gst_element_register (plugin, "level",
- GST_RANK_NONE, GST_TYPE_LEVEL);
+ return gst_element_register (plugin, "level", GST_RANK_NONE, GST_TYPE_LEVEL);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "level",
- "Audio level plugin",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "level",
+ "Audio level plugin",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/level/gstlevel.h b/gst/level/gstlevel.h
index 7a853771..4158b9b0 100644
--- a/gst/level/gstlevel.h
+++ b/gst/level/gstlevel.h
@@ -31,8 +31,9 @@
#include "gstlevel-marshal.h"
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_LEVEL \
@@ -46,46 +47,48 @@ extern "C" {
#define GST_IS_LEVEL_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_LEVEL))
-typedef struct _GstLevel GstLevel;
-typedef struct _GstLevelClass GstLevelClass;
-
-struct _GstLevel {
- GstElement element;
-
- GstPad *sinkpad, *srcpad;
- gboolean signal; /* whether or not to emit signals */
- gboolean inited; /* whether or not the element is initialized */
- gdouble interval; /* how many seconds between emits */
-
- gint rate; /* caps variables */
- gint width;
- gint channels;
-
- gdouble decay_peak_ttl; /* time to live for peak in seconds */
- gdouble decay_peak_falloff; /* falloff in dB/sec */
- gdouble num_samples; /* cumulative sample count */
-
- /* per-channel arrays for intermediate values */
- gdouble *CS; /* normalized Cumulative Square */
- gdouble *peak; /* normalized Peak value over buffer */
- gdouble *last_peak; /* last normalized Peak value over interval */
- gdouble *decay_peak; /* running decaying normalized Peak */
- gdouble *MS; /* normalized Mean Square of buffer */
- gdouble *RMS_dB; /* RMS in dB to emit */
- gdouble *decay_peak_age; /* age of last peak */
-};
-
-struct _GstLevelClass {
- GstElementClass parent_class;
- void (*level) (GstElement *element, gdouble time, gint channel,
- gdouble RMS_dB, gdouble peak_dB, gdouble decay_peak_dB);
-};
-
-GType gst_level_get_type(void);
+ typedef struct _GstLevel GstLevel;
+ typedef struct _GstLevelClass GstLevelClass;
+
+ struct _GstLevel
+ {
+ GstElement element;
+
+ GstPad *sinkpad, *srcpad;
+ gboolean signal; /* whether or not to emit signals */
+ gboolean inited; /* whether or not the element is initialized */
+ gdouble interval; /* how many seconds between emits */
+
+ gint rate; /* caps variables */
+ gint width;
+ gint channels;
+
+ gdouble decay_peak_ttl; /* time to live for peak in seconds */
+ gdouble decay_peak_falloff; /* falloff in dB/sec */
+ gdouble num_samples; /* cumulative sample count */
+
+ /* per-channel arrays for intermediate values */
+ gdouble *CS; /* normalized Cumulative Square */
+ gdouble *peak; /* normalized Peak value over buffer */
+ gdouble *last_peak; /* last normalized Peak value over interval */
+ gdouble *decay_peak; /* running decaying normalized Peak */
+ gdouble *MS; /* normalized Mean Square of buffer */
+ gdouble *RMS_dB; /* RMS in dB to emit */
+ gdouble *decay_peak_age; /* age of last peak */
+ };
+
+ struct _GstLevelClass
+ {
+ GstElementClass parent_class;
+ void (*level) (GstElement * element, gdouble time, gint channel,
+ gdouble RMS_dB, gdouble peak_dB, gdouble decay_peak_dB);
+ };
+
+ GType gst_level_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_STEREO_H__ */
+#endif /* __GST_STEREO_H__ */
diff --git a/gst/level/plot.c b/gst/level/plot.c
index 27ecd01a..ad6d70d7 100644
--- a/gst/level/plot.c
+++ b/gst/level/plot.c
@@ -28,24 +28,25 @@
#include <gst/gst.h>
#include <gtk/gtk.h>
-gboolean got_channel[2] = { FALSE, FALSE}; /* to see if we got the signal for this one yet */
-gint channels = 0 ; /* guess at how many channels there are */
-gdouble last_time = 0.0; /* time of last signal */
-gdouble values[2][3]; /* array of levels from which to print */
+gboolean got_channel[2] = { FALSE, FALSE }; /* to see if we got the signal for this one yet */
+gint channels = 0; /* guess at how many channels there are */
+gdouble last_time = 0.0; /* time of last signal */
+gdouble values[2][3]; /* array of levels from which to print */
static void
-level_callback (GstElement *element, gdouble time, gint channel,
- gdouble rms, gdouble peak, gdouble decay)
+level_callback (GstElement * element, gdouble time, gint channel,
+ gdouble rms, gdouble peak, gdouble decay)
{
int i = 0, j = 0;
gboolean got_all = FALSE;
- if (channel + 1> channels) channels = channel + 1;
+ if (channel + 1 > channels)
+ channels = channel + 1;
/* reset got_channel if this is a new time point */
- if (time > last_time)
- {
- for (i = 0; i < channels; ++i) got_channel[i] = FALSE;
+ if (time > last_time) {
+ for (i = 0; i < channels; ++i)
+ got_channel[i] = FALSE;
last_time = time;
}
@@ -59,13 +60,13 @@ level_callback (GstElement *element, gdouble time, gint channel,
/* FIXME: this fails on the first, no ? */
got_all = TRUE;
for (i = 0; i < channels; ++i)
- if (!got_channel[i]) got_all = FALSE;
- if (got_all)
- {
+ if (!got_channel[i])
+ got_all = FALSE;
+ if (got_all) {
g_print ("%f ", time);
for (i = 0; i < channels; ++i)
for (j = 0; j < 3; ++j)
- g_print ("%f ", values[i][j]);
+ g_print ("%f ", values[i][j]);
g_print ("\n");
}
}
@@ -74,6 +75,7 @@ static gboolean
idler (gpointer data)
{
GstElement *pipeline = GST_ELEMENT (data);
+
if (gst_bin_iterate (GST_BIN (pipeline)))
return TRUE;
@@ -81,8 +83,8 @@ idler (gpointer data)
return FALSE;
}
-int main
-(int argc, char *argv[])
+int
+main (int argc, char *argv[])
{
GstElement *pipeline = NULL;
@@ -93,8 +95,7 @@ int main
gtk_init (&argc, &argv);
pipeline = gst_parse_launchv ((const gchar **) &argv[1], &error);
- if (error)
- {
+ if (error) {
g_print ("pipeline could not be constructed: %s\n", error->message);
g_print ("Please give a complete pipeline with a 'level' element.\n");
g_print ("Example: sinesrc ! level ! osssink\n");
@@ -103,8 +104,7 @@ int main
}
level = gst_bin_get_by_name (GST_BIN (pipeline), "level0");
- if (level == NULL)
- {
+ if (level == NULL) {
g_print ("Please give a pipeline with a 'level' element in it\n");
return 1;
}
@@ -112,7 +112,7 @@ int main
g_object_set (level, "signal", TRUE, NULL);
g_signal_connect (level, "level", G_CALLBACK (level_callback), NULL);
-
+
/* go to main loop */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
g_idle_add (idler, pipeline);
@@ -121,4 +121,3 @@ int main
return 0;
}
-
diff --git a/gst/matroska/ebml-ids.h b/gst/matroska/ebml-ids.h
index 329f036c..eb396b23 100644
--- a/gst/matroska/ebml-ids.h
+++ b/gst/matroska/ebml-ids.h
@@ -23,13 +23,10 @@
#define __GST_EBML_IDS_H__
G_BEGIN_DECLS
-
/* EBML version supported */
#define GST_EBML_VERSION 1
-
/* top-level master-IDs */
#define GST_EBML_ID_HEADER 0x1A45DFA3
-
/* IDs in the HEADER master */
#define GST_EBML_ID_EBMLVERSION 0x4286
#define GST_EBML_ID_EBMLREADVERSION 0x42F7
@@ -38,10 +35,7 @@ G_BEGIN_DECLS
#define GST_EBML_ID_DOCTYPE 0x4282
#define GST_EBML_ID_DOCTYPEVERSION 0x4287
#define GST_EBML_ID_DOCTYPEREADVERSION 0x4285
-
/* general EBML types */
#define GST_EBML_ID_VOID 0xEC
-
-G_END_DECLS
-
+ G_END_DECLS
#endif /* __GST_EBML_IDS_H__ */
diff --git a/gst/matroska/ebml-read.c b/gst/matroska/ebml-read.c
index 4661ef80..6fa53565 100644
--- a/gst/matroska/ebml-read.c
+++ b/gst/matroska/ebml-read.c
@@ -28,26 +28,26 @@
#include "ebml-read.h"
#include "ebml-ids.h"
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-static void gst_ebml_read_class_init (GstEbmlReadClass *klass);
-static void gst_ebml_read_init (GstEbmlRead *ebml);
-static GstElementStateReturn
- gst_ebml_read_change_state (GstElement *element);
+static void gst_ebml_read_class_init (GstEbmlReadClass * klass);
+static void gst_ebml_read_init (GstEbmlRead * ebml);
+static GstElementStateReturn gst_ebml_read_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
GType
-gst_ebml_read_get_type (void)
+gst_ebml_read_get_type (void)
{
static GType gst_ebml_read_type = 0;
if (!gst_ebml_read_type) {
static const GTypeInfo gst_ebml_read_info = {
- sizeof (GstEbmlReadClass),
+ sizeof (GstEbmlReadClass),
NULL,
NULL,
(GClassInitFunc) gst_ebml_read_class_init,
@@ -60,14 +60,14 @@ gst_ebml_read_get_type (void)
gst_ebml_read_type =
g_type_register_static (GST_TYPE_ELEMENT, "GstEbmlRead",
- &gst_ebml_read_info, 0);
+ &gst_ebml_read_info, 0);
}
return gst_ebml_read_type;
}
static void
-gst_ebml_read_class_init (GstEbmlReadClass *klass)
+gst_ebml_read_class_init (GstEbmlReadClass * klass)
{
GstElementClass *gstelement_class = (GstElementClass *) klass;
@@ -77,7 +77,7 @@ gst_ebml_read_class_init (GstEbmlReadClass *klass)
}
static void
-gst_ebml_read_init (GstEbmlRead *ebml)
+gst_ebml_read_init (GstEbmlRead * ebml)
{
ebml->sinkpad = NULL;
ebml->bs = NULL;
@@ -85,23 +85,23 @@ gst_ebml_read_init (GstEbmlRead *ebml)
}
static GstElementStateReturn
-gst_ebml_read_change_state (GstElement *element)
+gst_ebml_read_change_state (GstElement * element)
{
GstEbmlRead *ebml = GST_EBML_READ (element);
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_READY_TO_PAUSED:
if (!ebml->sinkpad)
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
ebml->bs = gst_bytestream_new (ebml->sinkpad);
break;
case GST_STATE_PAUSED_TO_READY:
gst_bytestream_destroy (ebml->bs);
while (ebml->level) {
- GstEbmlLevel *level = ebml->level->data;
+ GstEbmlLevel *level = ebml->level->data;
- ebml->level = g_list_remove (ebml->level, level);
- g_free (level);
+ ebml->level = g_list_remove (ebml->level, level);
+ g_free (level);
}
break;
default:
@@ -122,7 +122,7 @@ gst_ebml_read_change_state (GstElement *element)
*/
static guint
-gst_ebml_read_element_level_up (GstEbmlRead *ebml)
+gst_ebml_read_element_level_up (GstEbmlRead * ebml)
{
guint num = 0;
guint64 pos = gst_bytestream_tell (ebml->bs);
@@ -148,9 +148,7 @@ gst_ebml_read_element_level_up (GstEbmlRead *ebml)
*/
static gint
-gst_ebml_read_element_id (GstEbmlRead *ebml,
- guint32 *id,
- guint *level_up)
+gst_ebml_read_element_id (GstEbmlRead * ebml, guint32 * id, guint * level_up)
{
guint8 *data;
gint len_mask = 0x80, read = 1, n = 1;
@@ -166,10 +164,10 @@ gst_ebml_read_element_id (GstEbmlRead *ebml,
gst_pad_event_default (ebml->sinkpad, event);
} else {
guint64 pos = gst_bytestream_tell (ebml->bs);
+
gst_event_unref (event);
GST_ELEMENT_ERROR (ebml, RESOURCE, READ, (NULL),
- ("Read error at position %llu (0x%llx)",
- pos, pos));
+ ("Read error at position %llu (0x%llx)", pos, pos));
return -1;
}
}
@@ -180,16 +178,18 @@ gst_ebml_read_element_id (GstEbmlRead *ebml,
}
if (read > 4) {
guint64 pos = gst_bytestream_tell (ebml->bs);
+
GST_ELEMENT_ERROR (ebml, STREAM, DEMUX, (NULL),
- ("Invalid EBML ID size tag (0x%x) at position %llu (0x%llx)",
- data[0], pos, pos));
+ ("Invalid EBML ID size tag (0x%x) at position %llu (0x%llx)",
+ data[0], pos, pos));
return -1;
}
if (gst_bytestream_peek_bytes (ebml->bs, &data, read) != read) {
guint64 pos = gst_bytestream_tell (ebml->bs);
+
GST_ELEMENT_ERROR (ebml, RESOURCE, READ, (NULL),
- ("Read error at position %llu (0x%llx)", pos, pos));
+ ("Read error at position %llu (0x%llx)", pos, pos));
return -1;
}
while (n < read)
@@ -210,8 +210,7 @@ gst_ebml_read_element_id (GstEbmlRead *ebml,
*/
static gint
-gst_ebml_read_element_length (GstEbmlRead *ebml,
- guint64 *length)
+gst_ebml_read_element_length (GstEbmlRead * ebml, guint64 * length)
{
guint8 *data;
gint len_mask = 0x80, read = 1, n = 1, num_ffs = 0;
@@ -219,8 +218,9 @@ gst_ebml_read_element_length (GstEbmlRead *ebml,
if (gst_bytestream_peek_bytes (ebml->bs, &data, 1) != 1) {
guint64 pos = gst_bytestream_tell (ebml->bs);
+
GST_ELEMENT_ERROR (ebml, RESOURCE, READ, (NULL),
- ("Read error at position %llu (0x%llx)", pos, pos));
+ ("Read error at position %llu (0x%llx)", pos, pos));
return -1;
}
total = data[0];
@@ -230,9 +230,10 @@ gst_ebml_read_element_length (GstEbmlRead *ebml,
}
if (read > 8) {
guint64 pos = gst_bytestream_tell (ebml->bs);
+
GST_ELEMENT_ERROR (ebml, STREAM, DEMUX, (NULL),
- ("Invalid EBML length size tag (0x%x) at position %llu (0x%llx)",
- data[0], pos, pos));
+ ("Invalid EBML length size tag (0x%x) at position %llu (0x%llx)",
+ data[0], pos, pos));
return -1;
}
@@ -240,8 +241,9 @@ gst_ebml_read_element_length (GstEbmlRead *ebml,
num_ffs++;
if (gst_bytestream_peek_bytes (ebml->bs, &data, read) != read) {
guint64 pos = gst_bytestream_tell (ebml->bs);
+
GST_ELEMENT_ERROR (ebml, RESOURCE, READ, (NULL),
- ("Read error at position %llu (0x%llx)", pos, pos));
+ ("Read error at position %llu (0x%llx)", pos, pos));
return -1;
}
while (n < read) {
@@ -265,15 +267,15 @@ gst_ebml_read_element_length (GstEbmlRead *ebml,
*/
static GstBuffer *
-gst_ebml_read_element_data (GstEbmlRead *ebml,
- guint64 length)
+gst_ebml_read_element_data (GstEbmlRead * ebml, guint64 length)
{
GstBuffer *buf = NULL;
if (gst_bytestream_peek (ebml->bs, &buf, length) != length) {
guint64 pos = gst_bytestream_tell (ebml->bs);
+
GST_ELEMENT_ERROR (ebml, RESOURCE, READ, (NULL),
- ("Read error at position %llu (0x%llx)", pos, pos));
+ ("Read error at position %llu (0x%llx)", pos, pos));
if (buf)
gst_buffer_unref (buf);
return NULL;
@@ -291,8 +293,7 @@ gst_ebml_read_element_data (GstEbmlRead *ebml,
*/
guint32
-gst_ebml_peek_id (GstEbmlRead *ebml,
- guint *level_up)
+gst_ebml_peek_id (GstEbmlRead * ebml, guint * level_up)
{
guint32 id;
@@ -309,8 +310,7 @@ gst_ebml_peek_id (GstEbmlRead *ebml,
*/
GstEvent *
-gst_ebml_read_seek (GstEbmlRead *ebml,
- guint64 offset)
+gst_ebml_read_seek (GstEbmlRead * ebml, guint64 offset)
{
guint32 remaining;
GstEvent *event = NULL;
@@ -328,7 +328,7 @@ gst_ebml_read_seek (GstEbmlRead *ebml,
/* now seek */
if (!gst_bytestream_seek (ebml->bs, offset, GST_SEEK_METHOD_SET)) {
GST_ELEMENT_ERROR (ebml, RESOURCE, SEEK, (NULL),
- ("Seek to position %llu (0x%llx) failed", offset, offset));
+ ("Seek to position %llu (0x%llx) failed", offset, offset));
return NULL;
}
@@ -359,7 +359,7 @@ gst_ebml_read_seek (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_skip (GstEbmlRead *ebml)
+gst_ebml_read_skip (GstEbmlRead * ebml)
{
gint bytes;
guint32 id, remaining;
@@ -385,7 +385,7 @@ gst_ebml_read_skip (GstEbmlRead *ebml)
return gst_bytestream_flush (ebml->bs, length);
if (!(event = gst_ebml_read_seek (ebml,
- gst_bytestream_tell (ebml->bs) + length)))
+ gst_bytestream_tell (ebml->bs) + length)))
return FALSE;
gst_event_unref (event);
@@ -398,9 +398,7 @@ gst_ebml_read_skip (GstEbmlRead *ebml)
*/
gboolean
-gst_ebml_read_buffer (GstEbmlRead *ebml,
- guint32 *id,
- GstBuffer **buf)
+gst_ebml_read_buffer (GstEbmlRead * ebml, guint32 * id, GstBuffer ** buf)
{
gint bytes;
guint64 length;
@@ -421,9 +419,7 @@ gst_ebml_read_buffer (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_uint (GstEbmlRead *ebml,
- guint32 *id,
- guint64 *num)
+gst_ebml_read_uint (GstEbmlRead * ebml, guint32 * id, guint64 * num)
{
GstBuffer *buf;
guint8 *data;
@@ -436,8 +432,8 @@ gst_ebml_read_uint (GstEbmlRead *ebml,
size = GST_BUFFER_SIZE (buf);
if (size < 1 || size > 8) {
GST_ELEMENT_ERROR (ebml, STREAM, DEMUX, (NULL),
- ("Invalid integer element size %d at position %llu (0x%llu)",
- size, GST_BUFFER_OFFSET (buf), GST_BUFFER_OFFSET (buf)));
+ ("Invalid integer element size %d at position %llu (0x%llu)",
+ size, GST_BUFFER_OFFSET (buf), GST_BUFFER_OFFSET (buf)));
gst_buffer_unref (buf);
return FALSE;
}
@@ -457,9 +453,7 @@ gst_ebml_read_uint (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_sint (GstEbmlRead *ebml,
- guint32 *id,
- gint64 *num)
+gst_ebml_read_sint (GstEbmlRead * ebml, guint32 * id, gint64 * num)
{
GstBuffer *buf;
guint8 *data;
@@ -472,8 +466,8 @@ gst_ebml_read_sint (GstEbmlRead *ebml,
size = GST_BUFFER_SIZE (buf);
if (size < 1 || size > 8) {
GST_ELEMENT_ERROR (ebml, STREAM, DEMUX, (NULL),
- ("Invalid integer element size %d at position %llu (0x%llx)",
- size, GST_BUFFER_OFFSET (buf), GST_BUFFER_OFFSET (buf)));
+ ("Invalid integer element size %d at position %llu (0x%llx)",
+ size, GST_BUFFER_OFFSET (buf), GST_BUFFER_OFFSET (buf)));
gst_buffer_unref (buf);
return FALSE;
}
@@ -501,9 +495,7 @@ gst_ebml_read_sint (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_float (GstEbmlRead *ebml,
- guint32 *id,
- gdouble *num)
+gst_ebml_read_float (GstEbmlRead * ebml, guint32 * id, gdouble * num)
{
GstBuffer *buf;
guint8 *data;
@@ -517,15 +509,15 @@ gst_ebml_read_float (GstEbmlRead *ebml,
if (size != 4 && size != 8 && size != 10) {
GST_ELEMENT_ERROR (ebml, STREAM, DEMUX, (NULL),
- ("Invalid float element size %d at position %llu (0x%llx)",
- size, GST_BUFFER_OFFSET (buf), GST_BUFFER_OFFSET (buf)));
+ ("Invalid float element size %d at position %llu (0x%llx)",
+ size, GST_BUFFER_OFFSET (buf), GST_BUFFER_OFFSET (buf)));
gst_buffer_unref (buf);
return FALSE;
}
if (size == 10) {
GST_ELEMENT_ERROR (ebml, CORE, NOT_IMPLEMENTED, (NULL),
- ("FIXME! 10-byte floats unimplemented"));
+ ("FIXME! 10-byte floats unimplemented"));
gst_buffer_unref (buf);
return FALSE;
}
@@ -534,10 +526,10 @@ gst_ebml_read_float (GstEbmlRead *ebml,
gfloat f;
#if (G_BYTE_ORDER == G_BIG_ENDIAN)
- f = * (gfloat *) data;
+ f = *(gfloat *) data;
#else
while (size > 0) {
- ((guint8 *) &f)[size - 1] = data[4 - size];
+ ((guint8 *) & f)[size - 1] = data[4 - size];
size--;
}
#endif
@@ -547,10 +539,10 @@ gst_ebml_read_float (GstEbmlRead *ebml,
gdouble d;
#if (G_BYTE_ORDER == G_BIG_ENDIAN)
- d = * (gdouble *) data;
+ d = *(gdouble *) data;
#else
while (size > 0) {
- ((guint8 *) &d)[size - 1] = data[8 - size];
+ ((guint8 *) & d)[size - 1] = data[8 - size];
size--;
}
#endif
@@ -568,9 +560,7 @@ gst_ebml_read_float (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_ascii (GstEbmlRead *ebml,
- guint32 *id,
- gchar **str)
+gst_ebml_read_ascii (GstEbmlRead * ebml, guint32 * id, gchar ** str)
{
GstBuffer *buf;
@@ -591,9 +581,7 @@ gst_ebml_read_ascii (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_utf8 (GstEbmlRead *ebml,
- guint32 *id,
- gchar **str)
+gst_ebml_read_utf8 (GstEbmlRead * ebml, guint32 * id, gchar ** str)
{
return gst_ebml_read_ascii (ebml, id, str);
}
@@ -603,9 +591,7 @@ gst_ebml_read_utf8 (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_date (GstEbmlRead *ebml,
- guint32 *id,
- gint64 *date)
+gst_ebml_read_date (GstEbmlRead * ebml, guint32 * id, gint64 * date)
{
return gst_ebml_read_sint (ebml, id, date);
}
@@ -616,8 +602,7 @@ gst_ebml_read_date (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_master (GstEbmlRead *ebml,
- guint32 *id)
+gst_ebml_read_master (GstEbmlRead * ebml, guint32 * id)
{
gint bytes;
guint64 length;
@@ -645,10 +630,8 @@ gst_ebml_read_master (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_binary (GstEbmlRead *ebml,
- guint32 *id,
- guint8 **binary,
- guint64 *length)
+gst_ebml_read_binary (GstEbmlRead * ebml,
+ guint32 * id, guint8 ** binary, guint64 * length)
{
GstBuffer *buf;
@@ -668,9 +651,7 @@ gst_ebml_read_binary (GstEbmlRead *ebml,
*/
gboolean
-gst_ebml_read_header (GstEbmlRead *ebml,
- gchar **doctype,
- guint *version)
+gst_ebml_read_header (GstEbmlRead * ebml, gchar ** doctype, guint * version)
{
/* this function is the first to be called */
guint32 id;
@@ -701,79 +682,79 @@ gst_ebml_read_header (GstEbmlRead *ebml,
break;
switch (id) {
- /* is our read version uptodate? */
- case GST_EBML_ID_EBMLREADVERSION: {
- guint64 num;
-
- if (!gst_ebml_read_uint (ebml, &id, &num))
- return FALSE;
- g_assert (id == GST_EBML_ID_EBMLREADVERSION);
- if (num != GST_EBML_VERSION)
- return FALSE;
- break;
+ /* is our read version uptodate? */
+ case GST_EBML_ID_EBMLREADVERSION:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num))
+ return FALSE;
+ g_assert (id == GST_EBML_ID_EBMLREADVERSION);
+ if (num != GST_EBML_VERSION)
+ return FALSE;
+ break;
}
- /* we only handle 8 byte lengths at max */
- case GST_EBML_ID_EBMLMAXSIZELENGTH: {
- guint64 num;
+ /* we only handle 8 byte lengths at max */
+ case GST_EBML_ID_EBMLMAXSIZELENGTH:{
+ guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num))
- return FALSE;
- g_assert (id == GST_EBML_ID_EBMLMAXSIZELENGTH);
- if (num != sizeof (guint64))
- return FALSE;
- break;
+ if (!gst_ebml_read_uint (ebml, &id, &num))
+ return FALSE;
+ g_assert (id == GST_EBML_ID_EBMLMAXSIZELENGTH);
+ if (num != sizeof (guint64))
+ return FALSE;
+ break;
}
- /* we handle 4 byte IDs at max */
- case GST_EBML_ID_EBMLMAXIDLENGTH: {
- guint64 num;
+ /* we handle 4 byte IDs at max */
+ case GST_EBML_ID_EBMLMAXIDLENGTH:{
+ guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num))
- return FALSE;
- g_assert (id == GST_EBML_ID_EBMLMAXIDLENGTH);
- if (num != sizeof (guint32))
- return FALSE;
- break;
+ if (!gst_ebml_read_uint (ebml, &id, &num))
+ return FALSE;
+ g_assert (id == GST_EBML_ID_EBMLMAXIDLENGTH);
+ if (num != sizeof (guint32))
+ return FALSE;
+ break;
}
- case GST_EBML_ID_DOCTYPE: {
- gchar *text;
-
- if (!gst_ebml_read_ascii (ebml, &id, &text))
- return FALSE;
- g_assert (id == GST_EBML_ID_DOCTYPE);
- if (doctype) {
- if (doctype)
- g_free (*doctype);
- *doctype = text;
- } else
- g_free (text);
- break;
+ case GST_EBML_ID_DOCTYPE:{
+ gchar *text;
+
+ if (!gst_ebml_read_ascii (ebml, &id, &text))
+ return FALSE;
+ g_assert (id == GST_EBML_ID_DOCTYPE);
+ if (doctype) {
+ if (doctype)
+ g_free (*doctype);
+ *doctype = text;
+ } else
+ g_free (text);
+ break;
}
- case GST_EBML_ID_DOCTYPEREADVERSION: {
- guint64 num;
+ case GST_EBML_ID_DOCTYPEREADVERSION:{
+ guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num))
- return FALSE;
- g_assert (id == GST_EBML_ID_DOCTYPEREADVERSION);
- if (version)
- *version = num;
- break;
+ if (!gst_ebml_read_uint (ebml, &id, &num))
+ return FALSE;
+ g_assert (id == GST_EBML_ID_DOCTYPEREADVERSION);
+ if (version)
+ *version = num;
+ break;
}
default:
- GST_WARNING ("Unknown data type 0x%x in EBML header (ignored)", id);
- /* pass-through */
+ GST_WARNING ("Unknown data type 0x%x in EBML header (ignored)", id);
+ /* pass-through */
- /* we ignore these two, as they don't tell us anything we care about */
+ /* we ignore these two, as they don't tell us anything we care about */
case GST_EBML_ID_VOID:
case GST_EBML_ID_EBMLVERSION:
case GST_EBML_ID_DOCTYPEVERSION:
- if (!gst_ebml_read_skip (ebml))
- return FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ return FALSE;
+ break;
}
}
diff --git a/gst/matroska/ebml-read.h b/gst/matroska/ebml-read.h
index d78d13ce..c7a981dc 100644
--- a/gst/matroska/ebml-read.h
+++ b/gst/matroska/ebml-read.h
@@ -27,7 +27,6 @@
#include <gst/bytestream/bytestream.h>
G_BEGIN_DECLS
-
#define GST_TYPE_EBML_READ \
(gst_ebml_read_get_type ())
#define GST_EBML_READ(obj) \
@@ -40,13 +39,13 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_EBML_READ))
#define GST_EBML_READ_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_EBML_READ, GstEbmlReadClass))
-
-typedef struct _GstEbmlLevel {
- guint64 start,
- length;
+ typedef struct _GstEbmlLevel
+{
+ guint64 start, length;
} GstEbmlLevel;
-typedef struct _GstEbmlRead {
+typedef struct _GstEbmlRead
+{
GstElement parent;
GstPad *sinkpad;
@@ -55,48 +54,29 @@ typedef struct _GstEbmlRead {
GList *level;
} GstEbmlRead;
-typedef struct _GstEbmlReadClass {
+typedef struct _GstEbmlReadClass
+{
GstElementClass parent;
} GstEbmlReadClass;
-GType gst_ebml_read_get_type (void);
+GType gst_ebml_read_get_type (void);
-guint32 gst_ebml_peek_id (GstEbmlRead *ebml,
- guint *level_up);
-GstEvent *gst_ebml_read_seek (GstEbmlRead *ebml,
- guint64 offset);
-gboolean gst_ebml_read_skip (GstEbmlRead *ebml);
-gboolean gst_ebml_read_buffer (GstEbmlRead *ebml,
- guint32 *id,
- GstBuffer **buf);
-gboolean gst_ebml_read_uint (GstEbmlRead *ebml,
- guint32 *id,
- guint64 *num);
-gboolean gst_ebml_read_sint (GstEbmlRead *ebml,
- guint32 *id,
- gint64 *num);
-gboolean gst_ebml_read_float (GstEbmlRead *ebml,
- guint32 *id,
- gdouble *num);
-gboolean gst_ebml_read_ascii (GstEbmlRead *ebml,
- guint32 *id,
- gchar **str);
-gboolean gst_ebml_read_utf8 (GstEbmlRead *ebml,
- guint32 *id,
- gchar **str);
-gboolean gst_ebml_read_date (GstEbmlRead *ebml,
- guint32 *id,
- gint64 *date);
-gboolean gst_ebml_read_master (GstEbmlRead *ebml,
- guint32 *id);
-gboolean gst_ebml_read_binary (GstEbmlRead *ebml,
- guint32 *id,
- guint8 **binary,
- guint64 *length);
-gboolean gst_ebml_read_header (GstEbmlRead *read,
- gchar **doctype,
- guint *version);
+guint32 gst_ebml_peek_id (GstEbmlRead * ebml, guint * level_up);
+GstEvent *gst_ebml_read_seek (GstEbmlRead * ebml, guint64 offset);
+gboolean gst_ebml_read_skip (GstEbmlRead * ebml);
+gboolean gst_ebml_read_buffer (GstEbmlRead * ebml,
+ guint32 * id, GstBuffer ** buf);
+gboolean gst_ebml_read_uint (GstEbmlRead * ebml, guint32 * id, guint64 * num);
+gboolean gst_ebml_read_sint (GstEbmlRead * ebml, guint32 * id, gint64 * num);
+gboolean gst_ebml_read_float (GstEbmlRead * ebml, guint32 * id, gdouble * num);
+gboolean gst_ebml_read_ascii (GstEbmlRead * ebml, guint32 * id, gchar ** str);
+gboolean gst_ebml_read_utf8 (GstEbmlRead * ebml, guint32 * id, gchar ** str);
+gboolean gst_ebml_read_date (GstEbmlRead * ebml, guint32 * id, gint64 * date);
+gboolean gst_ebml_read_master (GstEbmlRead * ebml, guint32 * id);
+gboolean gst_ebml_read_binary (GstEbmlRead * ebml,
+ guint32 * id, guint8 ** binary, guint64 * length);
+gboolean gst_ebml_read_header (GstEbmlRead * read,
+ gchar ** doctype, guint * version);
G_END_DECLS
-
#endif /* __GST_EBML_READ_H__ */
diff --git a/gst/matroska/ebml-write.c b/gst/matroska/ebml-write.c
index b6504867..d136a8d4 100644
--- a/gst/matroska/ebml-write.c
+++ b/gst/matroska/ebml-write.c
@@ -28,26 +28,26 @@
#include "ebml-write.h"
#include "ebml-ids.h"
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-static void gst_ebml_write_class_init (GstEbmlWriteClass *klass);
-static void gst_ebml_write_init (GstEbmlWrite *ebml);
-static GstElementStateReturn
- gst_ebml_write_change_state (GstElement *element);
+static void gst_ebml_write_class_init (GstEbmlWriteClass * klass);
+static void gst_ebml_write_init (GstEbmlWrite * ebml);
+static GstElementStateReturn gst_ebml_write_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
GType
-gst_ebml_write_get_type (void)
+gst_ebml_write_get_type (void)
{
static GType gst_ebml_write_type = 0;
if (!gst_ebml_write_type) {
static const GTypeInfo gst_ebml_write_info = {
- sizeof (GstEbmlWriteClass),
+ sizeof (GstEbmlWriteClass),
NULL,
NULL,
(GClassInitFunc) gst_ebml_write_class_init,
@@ -60,14 +60,14 @@ gst_ebml_write_get_type (void)
gst_ebml_write_type =
g_type_register_static (GST_TYPE_ELEMENT, "GstEbmlWrite",
- &gst_ebml_write_info, 0);
+ &gst_ebml_write_info, 0);
}
return gst_ebml_write_type;
}
static void
-gst_ebml_write_class_init (GstEbmlWriteClass *klass)
+gst_ebml_write_class_init (GstEbmlWriteClass * klass)
{
GstElementClass *gstelement_class = (GstElementClass *) klass;
@@ -77,7 +77,7 @@ gst_ebml_write_class_init (GstEbmlWriteClass *klass)
}
static void
-gst_ebml_write_init (GstEbmlWrite *ebml)
+gst_ebml_write_init (GstEbmlWrite * ebml)
{
ebml->srcpad = NULL;
ebml->pos = 0;
@@ -86,7 +86,7 @@ gst_ebml_write_init (GstEbmlWrite *ebml)
}
static GstElementStateReturn
-gst_ebml_write_change_state (GstElement *element)
+gst_ebml_write_change_state (GstElement * element)
{
GstEbmlWrite *ebml = GST_EBML_WRITE (element);
@@ -115,8 +115,7 @@ gst_ebml_write_change_state (GstElement *element)
*/
void
-gst_ebml_write_set_cache (GstEbmlWrite *ebml,
- guint size)
+gst_ebml_write_set_cache (GstEbmlWrite * ebml, guint size)
{
/* This is currently broken. I don't know why yet. */
return;
@@ -130,7 +129,7 @@ gst_ebml_write_set_cache (GstEbmlWrite *ebml,
}
void
-gst_ebml_write_flush_cache (GstEbmlWrite *ebml)
+gst_ebml_write_flush_cache (GstEbmlWrite * ebml)
{
if (!ebml->cache)
return;
@@ -139,7 +138,7 @@ gst_ebml_write_flush_cache (GstEbmlWrite *ebml)
* programmer didn't use the cache somewhere. That's fatal. */
g_assert (ebml->handled == GST_BUFFER_SIZE (ebml->cache));
g_assert (GST_BUFFER_SIZE (ebml->cache) +
- GST_BUFFER_OFFSET (ebml->cache) == ebml->pos);
+ GST_BUFFER_OFFSET (ebml->cache) == ebml->pos);
gst_pad_push (ebml->srcpad, GST_DATA (ebml->cache));
ebml->cache = NULL;
@@ -152,8 +151,7 @@ gst_ebml_write_flush_cache (GstEbmlWrite *ebml)
*/
static GstBuffer *
-gst_ebml_write_element_new (GstEbmlWrite *ebml,
- guint size)
+gst_ebml_write_element_new (GstEbmlWrite * ebml, guint size)
{
/* Create new buffer of size + ID + length */
GstBuffer *buf;
@@ -163,8 +161,7 @@ gst_ebml_write_element_new (GstEbmlWrite *ebml,
/* prefer cache */
if (ebml->cache) {
- if (GST_BUFFER_MAXSIZE (ebml->cache) -
- GST_BUFFER_SIZE (ebml->cache) < size) {
+ if (GST_BUFFER_MAXSIZE (ebml->cache) - GST_BUFFER_SIZE (ebml->cache) < size) {
GST_LOG ("Cache available, but too small. Clearing...");
gst_ebml_write_flush_cache (ebml);
} else {
@@ -184,8 +181,7 @@ gst_ebml_write_element_new (GstEbmlWrite *ebml,
*/
static void
-gst_ebml_write_element_id (GstBuffer *buf,
- guint32 id)
+gst_ebml_write_element_id (GstBuffer * buf, guint32 id)
{
guint8 *data = GST_BUFFER_DATA (buf) + GST_BUFFER_SIZE (buf);
guint bytes = 4, mask = 0x10;
@@ -216,8 +212,7 @@ gst_ebml_write_element_id (GstBuffer *buf,
*/
static void
-gst_ebml_write_element_size (GstBuffer *buf,
- guint64 size)
+gst_ebml_write_element_size (GstBuffer * buf, guint64 size)
{
guint8 *data = GST_BUFFER_DATA (buf) + GST_BUFFER_SIZE (buf);
guint bytes = 1, mask = 0x80;
@@ -252,9 +247,7 @@ gst_ebml_write_element_size (GstBuffer *buf,
*/
static void
-gst_ebml_write_element_data (GstBuffer *buf,
- guint8 *write,
- guint64 length)
+gst_ebml_write_element_data (GstBuffer * buf, guint8 * write, guint64 length)
{
guint8 *data = GST_BUFFER_DATA (buf) + GST_BUFFER_SIZE (buf);
@@ -267,8 +260,7 @@ gst_ebml_write_element_data (GstBuffer *buf,
*/
static void
-gst_ebml_write_element_push (GstEbmlWrite *ebml,
- GstBuffer *buf)
+gst_ebml_write_element_push (GstEbmlWrite * ebml, GstBuffer * buf)
{
guint data_size = GST_BUFFER_SIZE (buf) - ebml->handled;
@@ -291,8 +283,7 @@ gst_ebml_write_element_push (GstEbmlWrite *ebml,
*/
void
-gst_ebml_write_seek (GstEbmlWrite *ebml,
- guint64 pos)
+gst_ebml_write_seek (GstEbmlWrite * ebml, guint64 pos)
{
GstEvent *seek;
@@ -301,12 +292,13 @@ gst_ebml_write_seek (GstEbmlWrite *ebml,
if (ebml->cache) {
/* within bounds? */
if (pos >= GST_BUFFER_OFFSET (ebml->cache) &&
- pos < GST_BUFFER_OFFSET (ebml->cache) + GST_BUFFER_MAXSIZE (ebml->cache)) {
+ pos <
+ GST_BUFFER_OFFSET (ebml->cache) + GST_BUFFER_MAXSIZE (ebml->cache)) {
GST_BUFFER_SIZE (ebml->cache) = pos - GST_BUFFER_OFFSET (ebml->cache);
if (ebml->pos > pos)
- ebml->handled -= ebml->pos - pos;
+ ebml->handled -= ebml->pos - pos;
else
- ebml->handled += pos - ebml->pos;
+ ebml->handled += pos - ebml->pos;
ebml->pos = pos;
} else {
GST_LOG ("Seek outside cache range. Clearing...");
@@ -314,9 +306,7 @@ gst_ebml_write_seek (GstEbmlWrite *ebml,
}
}
- seek = gst_event_new_seek (GST_FORMAT_BYTES |
- GST_SEEK_METHOD_SET,
- pos);
+ seek = gst_event_new_seek (GST_FORMAT_BYTES | GST_SEEK_METHOD_SET, pos);
gst_pad_push (ebml->srcpad, GST_DATA (seek));
ebml->pos = pos;
}
@@ -344,9 +334,7 @@ gst_ebml_write_get_uint_size (guint64 num)
*/
static void
-gst_ebml_write_set_uint (GstBuffer *buf,
- guint64 num,
- guint size)
+gst_ebml_write_set_uint (GstBuffer * buf, guint64 num, guint size)
{
guint8 *data;
@@ -363,9 +351,7 @@ gst_ebml_write_set_uint (GstBuffer *buf,
*/
void
-gst_ebml_write_uint (GstEbmlWrite *ebml,
- guint32 id,
- guint64 num)
+gst_ebml_write_uint (GstEbmlWrite * ebml, guint32 id, guint64 num)
{
GstBuffer *buf = gst_ebml_write_element_new (ebml, sizeof (num));
guint size = gst_ebml_write_get_uint_size (num);
@@ -378,11 +364,10 @@ gst_ebml_write_uint (GstEbmlWrite *ebml,
}
void
-gst_ebml_write_sint (GstEbmlWrite *ebml,
- guint32 id,
- gint64 num)
+gst_ebml_write_sint (GstEbmlWrite * ebml, guint32 id, gint64 num)
{
GstBuffer *buf = gst_ebml_write_element_new (ebml, sizeof (num));
+
/* if the signed number is on the edge of a extra-byte,
* then we'll fall over when detecting it. Example: if I
* have a number (-)0x8000 (G_MINSHORT), then my abs()<<1
@@ -407,9 +392,7 @@ gst_ebml_write_sint (GstEbmlWrite *ebml,
}
void
-gst_ebml_write_float (GstEbmlWrite *ebml,
- guint32 id,
- gdouble num)
+gst_ebml_write_float (GstEbmlWrite * ebml, guint32 id, gdouble num)
{
#if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
gint n;
@@ -420,20 +403,18 @@ gst_ebml_write_float (GstEbmlWrite *ebml,
gst_ebml_write_element_size (buf, 8);
#if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
for (n = 0; n < 8; n++)
- GST_BUFFER_DATA (buf)[GST_BUFFER_SIZE (buf)] = ((guint8 *) &num)[7-n];
+ GST_BUFFER_DATA (buf)[GST_BUFFER_SIZE (buf)] = ((guint8 *) & num)[7 - n];
GST_BUFFER_SIZE (buf) += 8;
#else
- gst_ebml_write_element_data (buf, (guint8 *) &num, 8);
+ gst_ebml_write_element_data (buf, (guint8 *) & num, 8);
#endif
gst_ebml_write_element_push (ebml, buf);
}
void
-gst_ebml_write_ascii (GstEbmlWrite *ebml,
- guint32 id,
- const gchar *str)
+gst_ebml_write_ascii (GstEbmlWrite * ebml, guint32 id, const gchar * str)
{
- gint len = strlen (str) + 1; /* add trailing '\0' */
+ gint len = strlen (str) + 1; /* add trailing '\0' */
GstBuffer *buf = gst_ebml_write_element_new (ebml, len);
gst_ebml_write_element_id (buf, id);
@@ -443,17 +424,13 @@ gst_ebml_write_ascii (GstEbmlWrite *ebml,
}
void
-gst_ebml_write_utf8 (GstEbmlWrite *ebml,
- guint32 id,
- const gchar *str)
+gst_ebml_write_utf8 (GstEbmlWrite * ebml, guint32 id, const gchar * str)
{
gst_ebml_write_ascii (ebml, id, str);
}
void
-gst_ebml_write_date (GstEbmlWrite *ebml,
- guint32 id,
- gint64 date)
+gst_ebml_write_date (GstEbmlWrite * ebml, guint32 id, gint64 date)
{
gst_ebml_write_sint (ebml, id, date);
}
@@ -465,8 +442,7 @@ gst_ebml_write_date (GstEbmlWrite *ebml,
*/
guint64
-gst_ebml_write_master_start (GstEbmlWrite *ebml,
- guint32 id)
+gst_ebml_write_master_start (GstEbmlWrite * ebml, guint32 id)
{
guint64 pos = ebml->pos, t;
GstBuffer *buf = gst_ebml_write_element_new (ebml, 0);
@@ -481,8 +457,7 @@ gst_ebml_write_master_start (GstEbmlWrite *ebml,
}
void
-gst_ebml_write_master_finish (GstEbmlWrite *ebml,
- guint64 startpos)
+gst_ebml_write_master_finish (GstEbmlWrite * ebml, guint64 startpos)
{
guint64 pos = ebml->pos;
GstBuffer *buf;
@@ -491,17 +466,15 @@ gst_ebml_write_master_finish (GstEbmlWrite *ebml,
buf = gst_ebml_write_element_new (ebml, 0);
startpos = GUINT64_TO_BE ((1LLU << 56) | (pos - startpos - 8));
memcpy (GST_BUFFER_DATA (buf) + GST_BUFFER_SIZE (buf),
- (guint8 *) &startpos, 8);
+ (guint8 *) & startpos, 8);
GST_BUFFER_SIZE (buf) += 8;
gst_ebml_write_element_push (ebml, buf);
gst_ebml_write_seek (ebml, pos);
}
void
-gst_ebml_write_binary (GstEbmlWrite *ebml,
- guint32 id,
- guint8 *binary,
- guint64 length)
+gst_ebml_write_binary (GstEbmlWrite * ebml,
+ guint32 id, guint8 * binary, guint64 length)
{
GstBuffer *buf = gst_ebml_write_element_new (ebml, length);
@@ -519,9 +492,7 @@ gst_ebml_write_binary (GstEbmlWrite *ebml,
*/
void
-gst_ebml_write_buffer_header (GstEbmlWrite *ebml,
- guint32 id,
- guint64 length)
+gst_ebml_write_buffer_header (GstEbmlWrite * ebml, guint32 id, guint64 length)
{
GstBuffer *buf = gst_ebml_write_element_new (ebml, 0);
@@ -531,8 +502,7 @@ gst_ebml_write_buffer_header (GstEbmlWrite *ebml,
}
void
-gst_ebml_write_buffer (GstEbmlWrite *ebml,
- GstBuffer *data)
+gst_ebml_write_buffer (GstEbmlWrite * ebml, GstBuffer * data)
{
gst_ebml_write_element_push (ebml, data);
}
@@ -547,9 +517,7 @@ gst_ebml_write_buffer (GstEbmlWrite *ebml,
*/
void
-gst_ebml_replace_uint (GstEbmlWrite *ebml,
- guint64 pos,
- guint64 num)
+gst_ebml_replace_uint (GstEbmlWrite * ebml, guint64 pos, guint64 num)
{
guint64 oldpos = ebml->pos;
GstBuffer *buf = gst_buffer_new_and_alloc (8);
@@ -566,9 +534,7 @@ gst_ebml_replace_uint (GstEbmlWrite *ebml,
*/
void
-gst_ebml_write_header (GstEbmlWrite *ebml,
- gchar *doctype,
- guint version)
+gst_ebml_write_header (GstEbmlWrite * ebml, gchar * doctype, guint version)
{
guint64 pos;
diff --git a/gst/matroska/ebml-write.h b/gst/matroska/ebml-write.h
index 43d2f8b2..8974ecbe 100644
--- a/gst/matroska/ebml-write.h
+++ b/gst/matroska/ebml-write.h
@@ -26,7 +26,6 @@
#include <gst/gst.h>
G_BEGIN_DECLS
-
#define GST_TYPE_EBML_WRITE \
(gst_ebml_write_get_type ())
#define GST_EBML_WRITE(obj) \
@@ -39,8 +38,8 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_EBML_WRITE))
#define GST_EBML_WRITE_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_EBML_WRITE, GstEbmlWriteClass))
-
-typedef struct _GstEbmlWrite {
+ typedef struct _GstEbmlWrite
+{
GstElement parent;
GstPad *srcpad;
@@ -50,77 +49,54 @@ typedef struct _GstEbmlWrite {
guint handled;
} GstEbmlWrite;
-typedef struct _GstEbmlWriteClass {
+typedef struct _GstEbmlWriteClass
+{
GstElementClass parent;
} GstEbmlWriteClass;
-GType gst_ebml_write_get_type (void);
+GType gst_ebml_write_get_type (void);
/*
* Caching means that we do not push one buffer for
* each element, but fill this one until a flush.
*/
-void gst_ebml_write_set_cache (GstEbmlWrite *ebml,
- guint size);
-void gst_ebml_write_flush_cache (GstEbmlWrite *ebml);
+void gst_ebml_write_set_cache (GstEbmlWrite * ebml, guint size);
+void gst_ebml_write_flush_cache (GstEbmlWrite * ebml);
/*
* Seeking.
*/
-void gst_ebml_write_seek (GstEbmlWrite *ebml,
- guint64 pos);
+void gst_ebml_write_seek (GstEbmlWrite * ebml, guint64 pos);
/*
* Data writing.
*/
-void gst_ebml_write_uint (GstEbmlWrite *ebml,
- guint32 id,
- guint64 num);
-void gst_ebml_write_sint (GstEbmlWrite *ebml,
- guint32 id,
- gint64 num);
-void gst_ebml_write_float (GstEbmlWrite *ebml,
- guint32 id,
- gdouble num);
-void gst_ebml_write_ascii (GstEbmlWrite *ebml,
- guint32 id,
- const gchar *str);
-void gst_ebml_write_utf8 (GstEbmlWrite *ebml,
- guint32 id,
- const gchar *str);
-void gst_ebml_write_date (GstEbmlWrite *ebml,
- guint32 id,
- gint64 date);
-guint64 gst_ebml_write_master_start (GstEbmlWrite *ebml,
- guint32 id);
-void gst_ebml_write_master_finish (GstEbmlWrite *ebml,
- guint64 startpos);
-void gst_ebml_write_binary (GstEbmlWrite *ebml,
- guint32 id,
- guchar *binary,
- guint64 length);
-void gst_ebml_write_header (GstEbmlWrite *ebml,
- gchar *doctype,
- guint version);
+void gst_ebml_write_uint (GstEbmlWrite * ebml, guint32 id, guint64 num);
+void gst_ebml_write_sint (GstEbmlWrite * ebml, guint32 id, gint64 num);
+void gst_ebml_write_float (GstEbmlWrite * ebml, guint32 id, gdouble num);
+void gst_ebml_write_ascii (GstEbmlWrite * ebml, guint32 id, const gchar * str);
+void gst_ebml_write_utf8 (GstEbmlWrite * ebml, guint32 id, const gchar * str);
+void gst_ebml_write_date (GstEbmlWrite * ebml, guint32 id, gint64 date);
+guint64 gst_ebml_write_master_start (GstEbmlWrite * ebml, guint32 id);
+void gst_ebml_write_master_finish (GstEbmlWrite * ebml, guint64 startpos);
+void gst_ebml_write_binary (GstEbmlWrite * ebml,
+ guint32 id, guchar * binary, guint64 length);
+void gst_ebml_write_header (GstEbmlWrite * ebml,
+ gchar * doctype, guint version);
/*
* Note: this is supposed to be used only for media data.
*/
-void gst_ebml_write_buffer_header (GstEbmlWrite *ebml,
- guint32 id,
- guint64 length);
-void gst_ebml_write_buffer (GstEbmlWrite *ebml,
- GstBuffer *data);
+void gst_ebml_write_buffer_header (GstEbmlWrite * ebml,
+ guint32 id, guint64 length);
+void gst_ebml_write_buffer (GstEbmlWrite * ebml, GstBuffer * data);
/*
* A hack, basically... See matroska-mux.c. I should actually
* make a nice _replace_element_with_size() or so, but this
* works for now.
*/
-void gst_ebml_replace_uint (GstEbmlWrite *ebml,
- guint64 pos,
- guint64 num);
+void gst_ebml_replace_uint (GstEbmlWrite * ebml, guint64 pos, guint64 num);
G_END_DECLS
-
#endif /* __GST_EBML_WRITE_H__ */
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
index 66537966..383ec020 100644
--- a/gst/matroska/matroska-demux.c
+++ b/gst/matroska/matroska-demux.c
@@ -33,101 +33,87 @@
#include "matroska-demux.h"
#include "matroska-ids.h"
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_METADATA,
ARG_STREAMINFO,
/* FILL ME */
};
-static GstStaticPadTemplate sink_templ =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "video/x-matroska" )
-);
+static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("video/x-matroska")
+ );
/* gobject magic foo */
-static void gst_matroska_demux_base_init (GstMatroskaDemuxClass *klass);
-static void gst_matroska_demux_class_init (GstMatroskaDemuxClass *klass);
-static void gst_matroska_demux_init (GstMatroskaDemux *demux);
+static void gst_matroska_demux_base_init (GstMatroskaDemuxClass * klass);
+static void gst_matroska_demux_class_init (GstMatroskaDemuxClass * klass);
+static void gst_matroska_demux_init (GstMatroskaDemux * demux);
/* element functions */
-static void gst_matroska_demux_loop (GstElement *element);
-static gboolean gst_matroska_demux_send_event (GstElement *element,
- GstEvent *event);
+static void gst_matroska_demux_loop (GstElement * element);
+static gboolean gst_matroska_demux_send_event (GstElement * element,
+ GstEvent * event);
/* pad functions */
-static const GstEventMask *
- gst_matroska_demux_get_event_mask (GstPad *pad);
-static gboolean gst_matroska_demux_handle_src_event (GstPad *pad,
- GstEvent *event);
-static const GstFormat *
- gst_matroska_demux_get_src_formats (GstPad *pad);
-static const GstQueryType*
- gst_matroska_demux_get_src_query_types(GstPad *pad);
-static gboolean gst_matroska_demux_handle_src_query (GstPad *pad,
- GstQueryType type,
- GstFormat *format,
- gint64 *value);
+static const GstEventMask *gst_matroska_demux_get_event_mask (GstPad * pad);
+static gboolean gst_matroska_demux_handle_src_event (GstPad * pad,
+ GstEvent * event);
+static const GstFormat *gst_matroska_demux_get_src_formats (GstPad * pad);
+static const GstQueryType *gst_matroska_demux_get_src_query_types (GstPad *
+ pad);
+static gboolean gst_matroska_demux_handle_src_query (GstPad * pad,
+ GstQueryType type, GstFormat * format, gint64 * value);
/* gst internal change state handler */
static GstElementStateReturn
- gst_matroska_demux_change_state (GstElement *element);
-static void gst_matroska_demux_set_clock (GstElement *element,
- GstClock *clock);
+gst_matroska_demux_change_state (GstElement * element);
+static void gst_matroska_demux_set_clock (GstElement * element,
+ GstClock * clock);
/* gobject bla bla */
-static void gst_matroska_demux_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
+static void gst_matroska_demux_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
/* caps functions */
-static GstCaps *gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext
- *videocontext,
- const gchar *codec_id,
- gpointer data,
- guint size,
- GstMatroskaDemux *demux);
-static GstCaps *gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext
- *audiocontext,
- const gchar *codec_id,
- gpointer data,
- guint size,
- GstMatroskaDemux *demux);
-static GstCaps *gst_matroska_demux_complex_caps (GstMatroskaTrackComplexContext
- *complexcontext,
- const gchar *codec_id,
- gpointer data,
- guint size);
-static GstCaps *gst_matroska_demux_subtitle_caps (GstMatroskaTrackSubtitleContext
- *subtitlecontext,
- const gchar *codec_id,
- gpointer data,
- guint size);
+static GstCaps *gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext
+ * videocontext,
+ const gchar * codec_id,
+ gpointer data, guint size, GstMatroskaDemux * demux);
+static GstCaps *gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext
+ * audiocontext,
+ const gchar * codec_id,
+ gpointer data, guint size, GstMatroskaDemux * demux);
+static GstCaps *gst_matroska_demux_complex_caps (GstMatroskaTrackComplexContext
+ * complexcontext, const gchar * codec_id, gpointer data, guint size);
+static GstCaps
+ * gst_matroska_demux_subtitle_caps (GstMatroskaTrackSubtitleContext *
+ subtitlecontext, const gchar * codec_id, gpointer data, guint size);
/* stream methods */
-static void gst_matroska_demux_reset (GstElement *element);
+static void gst_matroska_demux_reset (GstElement * element);
static GstEbmlReadClass *parent_class = NULL;
static GstPadTemplate *videosrctempl, *audiosrctempl, *subtitlesrctempl;
+
/*static guint gst_matroska_demux_signals[LAST_SIGNAL] = { 0 };*/
GType
-gst_matroska_demux_get_type (void)
+gst_matroska_demux_get_type (void)
{
static GType gst_matroska_demux_type = 0;
if (!gst_matroska_demux_type) {
static const GTypeInfo gst_matroska_demux_info = {
- sizeof (GstMatroskaDemuxClass),
+ sizeof (GstMatroskaDemuxClass),
(GBaseInitFunc) gst_matroska_demux_base_init,
NULL,
(GClassInitFunc) gst_matroska_demux_class_init,
@@ -140,15 +126,14 @@ gst_matroska_demux_get_type (void)
gst_matroska_demux_type =
g_type_register_static (GST_TYPE_EBML_READ,
- "GstMatroskaDemux",
- &gst_matroska_demux_info, 0);
+ "GstMatroskaDemux", &gst_matroska_demux_info, 0);
}
return gst_matroska_demux_type;
}
static void
-gst_matroska_demux_base_init (GstMatroskaDemuxClass *klass)
+gst_matroska_demux_base_init (GstMatroskaDemuxClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
static GstElementDetails gst_matroska_demux_details = {
@@ -162,13 +147,12 @@ gst_matroska_demux_base_init (GstMatroskaDemuxClass *klass)
gst_element_class_add_pad_template (element_class, audiosrctempl);
gst_element_class_add_pad_template (element_class, subtitlesrctempl);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_templ));
- gst_element_class_set_details (element_class,
- &gst_matroska_demux_details);
+ gst_static_pad_template_get (&sink_templ));
+ gst_element_class_set_details (element_class, &gst_matroska_demux_details);
}
static void
-gst_matroska_demux_class_init (GstMatroskaDemuxClass *klass)
+gst_matroska_demux_class_init (GstMatroskaDemuxClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
@@ -177,11 +161,11 @@ gst_matroska_demux_class_init (GstMatroskaDemuxClass *klass)
gstelement_class = (GstElementClass *) klass;
g_object_class_install_property (gobject_class, ARG_METADATA,
- g_param_spec_boxed ("metadata", "Metadata", "Metadata",
- GST_TYPE_STRUCTURE, G_PARAM_READABLE));
+ g_param_spec_boxed ("metadata", "Metadata", "Metadata",
+ GST_TYPE_STRUCTURE, G_PARAM_READABLE));
g_object_class_install_property (gobject_class, ARG_STREAMINFO,
- g_param_spec_boxed ("streaminfo", "Streaminfo", "Streaminfo",
- GST_TYPE_STRUCTURE, G_PARAM_READABLE));
+ g_param_spec_boxed ("streaminfo", "Streaminfo", "Streaminfo",
+ GST_TYPE_STRUCTURE, G_PARAM_READABLE));
parent_class = g_type_class_ref (GST_TYPE_EBML_READ);
@@ -192,21 +176,21 @@ gst_matroska_demux_class_init (GstMatroskaDemuxClass *klass)
gstelement_class->set_clock = gst_matroska_demux_set_clock;
}
-static void
-gst_matroska_demux_init (GstMatroskaDemux *demux)
+static void
+gst_matroska_demux_init (GstMatroskaDemux * demux)
{
GstElementClass *klass = GST_ELEMENT_GET_CLASS (demux);
gint i;
GST_FLAG_SET (GST_OBJECT (demux), GST_ELEMENT_EVENT_AWARE);
- demux->sinkpad = gst_pad_new_from_template (
- gst_element_class_get_pad_template (klass, "sink"), "sink");
+ demux->sinkpad =
+ gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
+ "sink"), "sink");
gst_element_add_pad (GST_ELEMENT (demux), demux->sinkpad);
GST_EBML_READ (demux)->sinkpad = demux->sinkpad;
- gst_element_set_loop_function (GST_ELEMENT (demux),
- gst_matroska_demux_loop);
+ gst_element_set_loop_function (GST_ELEMENT (demux), gst_matroska_demux_loop);
/* initial stream no. */
for (i = 0; i < GST_MATROSKA_DEMUX_MAX_STREAMS; i++) {
@@ -221,7 +205,7 @@ gst_matroska_demux_init (GstMatroskaDemux *demux)
}
static void
-gst_matroska_demux_reset (GstElement *element)
+gst_matroska_demux_reset (GstElement * element)
{
GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (element);
guint i;
@@ -233,7 +217,7 @@ gst_matroska_demux_reset (GstElement *element)
for (i = 0; i < GST_MATROSKA_DEMUX_MAX_STREAMS; i++) {
if (demux->src[i] != NULL) {
if (demux->src[i]->pad != NULL) {
- gst_element_remove_pad (GST_ELEMENT (demux), demux->src[i]->pad);
+ gst_element_remove_pad (GST_ELEMENT (demux), demux->src[i]->pad);
}
g_free (demux->src[i]->codec_id);
g_free (demux->src[i]->codec_name);
@@ -277,39 +261,35 @@ gst_matroska_demux_reset (GstElement *element)
}
static void
-gst_matroska_demux_set_clock (GstElement *element,
- GstClock *clock)
+gst_matroska_demux_set_clock (GstElement * element, GstClock * clock)
{
GST_MATROSKA_DEMUX (element)->clock = clock;
}
static gint
-gst_matroska_demux_stream_from_num (GstMatroskaDemux *demux,
- guint track_num)
+gst_matroska_demux_stream_from_num (GstMatroskaDemux * demux, guint track_num)
{
guint n;
for (n = 0; n < demux->num_streams; n++) {
- if (demux->src[n] != NULL &&
- demux->src[n]->num == track_num) {
+ if (demux->src[n] != NULL && demux->src[n]->num == track_num) {
return n;
}
}
if (n == demux->num_streams) {
- GST_WARNING ("Failed to find corresponding pad for tracknum %d",
- track_num);
+ GST_WARNING ("Failed to find corresponding pad for tracknum %d", track_num);
}
return -1;
}
static GstCaps *
-gst_matroska_demux_src_getcaps (GstPad *pad)
+gst_matroska_demux_src_getcaps (GstPad * pad)
{
GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (gst_pad_get_parent (pad));
guint n;
-
+
for (n = 0; n < demux->num_streams; n++) {
if (demux->src[n] != NULL && demux->src[n]->pad == pad) {
break;
@@ -317,13 +297,13 @@ gst_matroska_demux_src_getcaps (GstPad *pad)
}
if (n == demux->num_streams)
- return gst_caps_new_empty();
+ return gst_caps_new_empty ();
return gst_caps_copy (demux->src[n]->caps);
}
static gboolean
-gst_matroska_demux_add_stream (GstMatroskaDemux *demux)
+gst_matroska_demux_add_stream (GstMatroskaDemux * demux)
{
GstElementClass *klass = GST_ELEMENT_GET_CLASS (demux);
GstEbmlRead *ebml = GST_EBML_READ (demux);
@@ -336,8 +316,8 @@ gst_matroska_demux_add_stream (GstMatroskaDemux *demux)
if (demux->num_streams >= GST_MATROSKA_DEMUX_MAX_STREAMS) {
GST_WARNING ("Maximum number of streams (%d) exceeded, skipping",
- GST_MATROSKA_DEMUX_MAX_STREAMS);
- return gst_ebml_read_skip (ebml); /* skip-and-continue */
+ GST_MATROSKA_DEMUX_MAX_STREAMS);
+ return gst_ebml_read_skip (ebml); /* skip-and-continue */
}
/* allocate generic... if we know the type, we'll g_renew()
@@ -345,7 +325,7 @@ gst_matroska_demux_add_stream (GstMatroskaDemux *demux)
context = g_new0 (GstMatroskaTrackContext, 1);
demux->src[demux->num_streams] = context;
context->index = demux->num_streams;
- context->type = 0; /* no type yet */
+ context->type = 0; /* no type yet */
demux->num_streams++;
/* start with the master */
@@ -363,445 +343,474 @@ gst_matroska_demux_add_stream (GstMatroskaDemux *demux)
}
switch (id) {
- /* track number (unique stream ID) */
- case GST_MATROSKA_ID_TRACKNUMBER: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- context->num = num;
- break;
+ /* track number (unique stream ID) */
+ case GST_MATROSKA_ID_TRACKNUMBER:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ context->num = num;
+ break;
}
- /* track UID (unique identifier) */
- case GST_MATROSKA_ID_TRACKUID: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- context->uid = num;
- break;
+ /* track UID (unique identifier) */
+ case GST_MATROSKA_ID_TRACKUID:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ context->uid = num;
+ break;
}
- /* track type (video, audio, combined, subtitle, etc.) */
- case GST_MATROSKA_ID_TRACKTYPE: {
- guint64 num;
- if (context->type != 0) {
- GST_WARNING ("More than one tracktype defined in a trackentry - skipping");
- break;
- }
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- context->type = num;
-
- /* ok, so we're actually going to reallocate this thing */
- switch (context->type) {
- case GST_MATROSKA_TRACK_TYPE_VIDEO:
- context = (GstMatroskaTrackContext *)
- g_renew (GstMatroskaTrackVideoContext, context, 1);
- break;
- case GST_MATROSKA_TRACK_TYPE_AUDIO:
- context = (GstMatroskaTrackContext *)
- g_renew (GstMatroskaTrackAudioContext, context, 1);
- /* defaults */
- ((GstMatroskaTrackAudioContext *) context)->channels = 1;
- ((GstMatroskaTrackAudioContext *) context)->samplerate = 8000;
- break;
- case GST_MATROSKA_TRACK_TYPE_COMPLEX:
- context = (GstMatroskaTrackContext *)
- g_renew (GstMatroskaTrackComplexContext, context, 1);
- break;
- case GST_MATROSKA_TRACK_TYPE_SUBTITLE:
- context = (GstMatroskaTrackContext *)
- g_renew (GstMatroskaTrackSubtitleContext, context, 1);
- break;
- case GST_MATROSKA_TRACK_TYPE_LOGO:
- case GST_MATROSKA_TRACK_TYPE_CONTROL:
- default:
- GST_WARNING ("Unknown or unsupported track type 0x%x",
- context->type);
- context->type = 0;
- break;
- }
- demux->src[demux->num_streams-1] = context;
- break;
+ /* track type (video, audio, combined, subtitle, etc.) */
+ case GST_MATROSKA_ID_TRACKTYPE:{
+ guint64 num;
+
+ if (context->type != 0) {
+ GST_WARNING
+ ("More than one tracktype defined in a trackentry - skipping");
+ break;
+ }
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ context->type = num;
+
+ /* ok, so we're actually going to reallocate this thing */
+ switch (context->type) {
+ case GST_MATROSKA_TRACK_TYPE_VIDEO:
+ context = (GstMatroskaTrackContext *)
+ g_renew (GstMatroskaTrackVideoContext, context, 1);
+ break;
+ case GST_MATROSKA_TRACK_TYPE_AUDIO:
+ context = (GstMatroskaTrackContext *)
+ g_renew (GstMatroskaTrackAudioContext, context, 1);
+ /* defaults */
+ ((GstMatroskaTrackAudioContext *) context)->channels = 1;
+ ((GstMatroskaTrackAudioContext *) context)->samplerate = 8000;
+ break;
+ case GST_MATROSKA_TRACK_TYPE_COMPLEX:
+ context = (GstMatroskaTrackContext *)
+ g_renew (GstMatroskaTrackComplexContext, context, 1);
+ break;
+ case GST_MATROSKA_TRACK_TYPE_SUBTITLE:
+ context = (GstMatroskaTrackContext *)
+ g_renew (GstMatroskaTrackSubtitleContext, context, 1);
+ break;
+ case GST_MATROSKA_TRACK_TYPE_LOGO:
+ case GST_MATROSKA_TRACK_TYPE_CONTROL:
+ default:
+ GST_WARNING ("Unknown or unsupported track type 0x%x",
+ context->type);
+ context->type = 0;
+ break;
+ }
+ demux->src[demux->num_streams - 1] = context;
+ break;
}
- /* tracktype specific stuff for video */
- case GST_MATROSKA_ID_TRACKVIDEO: {
- GstMatroskaTrackVideoContext *videocontext;
- if (context->type != GST_MATROSKA_TRACK_TYPE_VIDEO) {
- GST_WARNING ("trackvideo EBML entry in non-video track - ignoring track");
- res = FALSE;
- break;
- } else if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
- videocontext = (GstMatroskaTrackVideoContext *) context;
-
- while (res) {
- if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
- res = FALSE;
- break;
- } else if (demux->level_up > 0) {
- demux->level_up--;
- break;
- }
-
- switch (id) {
- /* fixme, this should be one-up, but I get it here (?) */
- case GST_MATROSKA_ID_TRACKDEFAULTDURATION: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- context->default_duration = num;
- break;
- }
-
- /* video framerate */
- case GST_MATROSKA_ID_VIDEOFRAMERATE: {
- gdouble num;
- if (!gst_ebml_read_float (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- context->default_duration = GST_SECOND * (1. / num);
- break;
- }
-
- /* width of the size to display the video at */
- case GST_MATROSKA_ID_VIDEODISPLAYWIDTH: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- videocontext->display_width = num;
- break;
- }
-
- /* height of the size to display the video at */
- case GST_MATROSKA_ID_VIDEODISPLAYHEIGHT: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- videocontext->display_height = num;
- break;
- }
-
- /* width of the video in the file */
- case GST_MATROSKA_ID_VIDEOPIXELWIDTH: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- videocontext->pixel_width = num;
- break;
- }
-
- /* height of the video in the file */
- case GST_MATROSKA_ID_VIDEOPIXELHEIGHT: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- videocontext->pixel_height = num;
- break;
- }
-
- /* whether the video is interlaced */
- case GST_MATROSKA_ID_VIDEOFLAGINTERLACED: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- if (num)
- context->flags |= GST_MATROSKA_VIDEOTRACK_INTERLACED;
- else
- context->flags &= ~GST_MATROSKA_VIDEOTRACK_INTERLACED;
- break;
- }
-
- /* stereo mode (whether the video has two streams, where
- * one is for the left eye and the other for the right eye,
- * which creates a 3D-like effect) */
- case GST_MATROSKA_ID_VIDEOSTEREOMODE: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- if (num != GST_MATROSKA_EYE_MODE_MONO &&
- num != GST_MATROSKA_EYE_MODE_LEFT &&
- num != GST_MATROSKA_EYE_MODE_RIGHT &&
- num != GST_MATROSKA_EYE_MODE_BOTH) {
- GST_WARNING ("Unknown eye mode 0x%x - ignoring",
- (guint) num);
- break;
- }
- videocontext->eye_mode = num;
- break;
- }
-
- /* aspect ratio behaviour */
- case GST_MATROSKA_ID_VIDEOASPECTRATIO: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- if (num != GST_MATROSKA_ASPECT_RATIO_MODE_FREE &&
- num != GST_MATROSKA_ASPECT_RATIO_MODE_KEEP &&
- num != GST_MATROSKA_ASPECT_RATIO_MODE_FIXED) {
- GST_WARNING ("Unknown aspect ratio mode 0x%x - ignoring",
- (guint) num);
- break;
- }
- videocontext->asr_mode = num;
- break;
- }
-
- /* colourspace (only matters for raw video) fourcc */
- case GST_MATROSKA_ID_VIDEOCOLOURSPACE: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- videocontext->fourcc = num;
- break;
- }
-
- default:
- GST_WARNING ("Unknown video track header entry 0x%x - ignoring",
- id);
- /* pass-through */
-
- case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
- }
-
- if (demux->level_up) {
- demux->level_up--;
- break;
- }
- }
- break;
+ /* tracktype specific stuff for video */
+ case GST_MATROSKA_ID_TRACKVIDEO:{
+ GstMatroskaTrackVideoContext *videocontext;
+
+ if (context->type != GST_MATROSKA_TRACK_TYPE_VIDEO) {
+ GST_WARNING
+ ("trackvideo EBML entry in non-video track - ignoring track");
+ res = FALSE;
+ break;
+ } else if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+ videocontext = (GstMatroskaTrackVideoContext *) context;
+
+ while (res) {
+ if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
+ res = FALSE;
+ break;
+ } else if (demux->level_up > 0) {
+ demux->level_up--;
+ break;
+ }
+
+ switch (id) {
+ /* fixme, this should be one-up, but I get it here (?) */
+ case GST_MATROSKA_ID_TRACKDEFAULTDURATION:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ context->default_duration = num;
+ break;
+ }
+
+ /* video framerate */
+ case GST_MATROSKA_ID_VIDEOFRAMERATE:{
+ gdouble num;
+
+ if (!gst_ebml_read_float (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ context->default_duration = GST_SECOND * (1. / num);
+ break;
+ }
+
+ /* width of the size to display the video at */
+ case GST_MATROSKA_ID_VIDEODISPLAYWIDTH:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ videocontext->display_width = num;
+ break;
+ }
+
+ /* height of the size to display the video at */
+ case GST_MATROSKA_ID_VIDEODISPLAYHEIGHT:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ videocontext->display_height = num;
+ break;
+ }
+
+ /* width of the video in the file */
+ case GST_MATROSKA_ID_VIDEOPIXELWIDTH:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ videocontext->pixel_width = num;
+ break;
+ }
+
+ /* height of the video in the file */
+ case GST_MATROSKA_ID_VIDEOPIXELHEIGHT:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ videocontext->pixel_height = num;
+ break;
+ }
+
+ /* whether the video is interlaced */
+ case GST_MATROSKA_ID_VIDEOFLAGINTERLACED:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ if (num)
+ context->flags |= GST_MATROSKA_VIDEOTRACK_INTERLACED;
+ else
+ context->flags &= ~GST_MATROSKA_VIDEOTRACK_INTERLACED;
+ break;
+ }
+
+ /* stereo mode (whether the video has two streams, where
+ * one is for the left eye and the other for the right eye,
+ * which creates a 3D-like effect) */
+ case GST_MATROSKA_ID_VIDEOSTEREOMODE:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ if (num != GST_MATROSKA_EYE_MODE_MONO &&
+ num != GST_MATROSKA_EYE_MODE_LEFT &&
+ num != GST_MATROSKA_EYE_MODE_RIGHT &&
+ num != GST_MATROSKA_EYE_MODE_BOTH) {
+ GST_WARNING ("Unknown eye mode 0x%x - ignoring", (guint) num);
+ break;
+ }
+ videocontext->eye_mode = num;
+ break;
+ }
+
+ /* aspect ratio behaviour */
+ case GST_MATROSKA_ID_VIDEOASPECTRATIO:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ if (num != GST_MATROSKA_ASPECT_RATIO_MODE_FREE &&
+ num != GST_MATROSKA_ASPECT_RATIO_MODE_KEEP &&
+ num != GST_MATROSKA_ASPECT_RATIO_MODE_FIXED) {
+ GST_WARNING ("Unknown aspect ratio mode 0x%x - ignoring",
+ (guint) num);
+ break;
+ }
+ videocontext->asr_mode = num;
+ break;
+ }
+
+ /* colourspace (only matters for raw video) fourcc */
+ case GST_MATROSKA_ID_VIDEOCOLOURSPACE:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ videocontext->fourcc = num;
+ break;
+ }
+
+ default:
+ GST_WARNING ("Unknown video track header entry 0x%x - ignoring",
+ id);
+ /* pass-through */
+
+ case GST_EBML_ID_VOID:
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
+ }
+
+ if (demux->level_up) {
+ demux->level_up--;
+ break;
+ }
+ }
+ break;
}
- /* tracktype specific stuff for audio */
- case GST_MATROSKA_ID_TRACKAUDIO: {
- GstMatroskaTrackAudioContext *audiocontext;
- if (context->type != GST_MATROSKA_TRACK_TYPE_AUDIO) {
- GST_WARNING ("trackaudio EBML entry in non-audio track - ignoring track");
- res = FALSE;
- break;
- } else if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
- audiocontext = (GstMatroskaTrackAudioContext *) context;
-
- while (res) {
- if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
- res = FALSE;
- break;
- } else if (demux->level_up > 0) {
- demux->level_up--;
- break;
- }
-
- switch (id) {
- /* samplerate */
- case GST_MATROSKA_ID_AUDIOSAMPLINGFREQ: {
- gdouble num;
- if (!gst_ebml_read_float (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- audiocontext->samplerate = num;
- break;
- }
-
- /* bitdepth */
- case GST_MATROSKA_ID_AUDIOBITDEPTH: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- audiocontext->bitdepth = num;
- break;
- }
-
- /* channels */
- case GST_MATROSKA_ID_AUDIOCHANNELS: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- audiocontext->channels = num;
- break;
- }
-
- default:
- GST_WARNING ("Unknown audio track header entry 0x%x - ignoring",
- id);
- /* pass-through */
-
- case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
- }
-
- if (demux->level_up) {
- demux->level_up--;
- break;
- }
- }
- break;
+ /* tracktype specific stuff for audio */
+ case GST_MATROSKA_ID_TRACKAUDIO:{
+ GstMatroskaTrackAudioContext *audiocontext;
+
+ if (context->type != GST_MATROSKA_TRACK_TYPE_AUDIO) {
+ GST_WARNING
+ ("trackaudio EBML entry in non-audio track - ignoring track");
+ res = FALSE;
+ break;
+ } else if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+ audiocontext = (GstMatroskaTrackAudioContext *) context;
+
+ while (res) {
+ if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
+ res = FALSE;
+ break;
+ } else if (demux->level_up > 0) {
+ demux->level_up--;
+ break;
+ }
+
+ switch (id) {
+ /* samplerate */
+ case GST_MATROSKA_ID_AUDIOSAMPLINGFREQ:{
+ gdouble num;
+
+ if (!gst_ebml_read_float (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ audiocontext->samplerate = num;
+ break;
+ }
+
+ /* bitdepth */
+ case GST_MATROSKA_ID_AUDIOBITDEPTH:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ audiocontext->bitdepth = num;
+ break;
+ }
+
+ /* channels */
+ case GST_MATROSKA_ID_AUDIOCHANNELS:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ audiocontext->channels = num;
+ break;
+ }
+
+ default:
+ GST_WARNING ("Unknown audio track header entry 0x%x - ignoring",
+ id);
+ /* pass-through */
+
+ case GST_EBML_ID_VOID:
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
+ }
+
+ if (demux->level_up) {
+ demux->level_up--;
+ break;
+ }
+ }
+ break;
}
- /* codec identifier */
- case GST_MATROSKA_ID_CODECID: {
- gchar *text;
- if (!gst_ebml_read_ascii (ebml, &id, &text)) {
- res = FALSE;
- break;
- }
- context->codec_id = text;
- break;
+ /* codec identifier */
+ case GST_MATROSKA_ID_CODECID:{
+ gchar *text;
+
+ if (!gst_ebml_read_ascii (ebml, &id, &text)) {
+ res = FALSE;
+ break;
+ }
+ context->codec_id = text;
+ break;
}
- /* codec private data */
- case GST_MATROSKA_ID_CODECPRIVATE: {
- guint8 *data;
- guint64 size;
- if (!gst_ebml_read_binary (ebml, &id, &data, &size)) {
- res = FALSE;
- break;
- }
- context->codec_priv = data;
- context->codec_priv_size = size;
- break;
+ /* codec private data */
+ case GST_MATROSKA_ID_CODECPRIVATE:{
+ guint8 *data;
+ guint64 size;
+
+ if (!gst_ebml_read_binary (ebml, &id, &data, &size)) {
+ res = FALSE;
+ break;
+ }
+ context->codec_priv = data;
+ context->codec_priv_size = size;
+ break;
}
- /* name of the codec */
- case GST_MATROSKA_ID_CODECNAME: {
- gchar *text;
- if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
- res = FALSE;
- break;
- }
- context->codec_name = text;
- break;
+ /* name of the codec */
+ case GST_MATROSKA_ID_CODECNAME:{
+ gchar *text;
+
+ if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
+ res = FALSE;
+ break;
+ }
+ context->codec_name = text;
+ break;
}
- /* name of this track */
- case GST_MATROSKA_ID_TRACKNAME: {
- gchar *text;
- if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
- res = FALSE;
- break;
- }
- context->name = text;
- break;
+ /* name of this track */
+ case GST_MATROSKA_ID_TRACKNAME:{
+ gchar *text;
+
+ if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
+ res = FALSE;
+ break;
+ }
+ context->name = text;
+ break;
}
- /* language (matters for audio/subtitles, mostly) */
- case GST_MATROSKA_ID_TRACKLANGUAGE: {
- gchar *text;
- if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
- res = FALSE;
- break;
- }
- context->language = text;
- break;
+ /* language (matters for audio/subtitles, mostly) */
+ case GST_MATROSKA_ID_TRACKLANGUAGE:{
+ gchar *text;
+
+ if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
+ res = FALSE;
+ break;
+ }
+ context->language = text;
+ break;
}
- /* whether this is actually used */
- case GST_MATROSKA_ID_TRACKFLAGENABLED: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- if (num)
- context->flags |= GST_MATROSKA_TRACK_ENABLED;
- else
- context->flags &= ~GST_MATROSKA_TRACK_ENABLED;
- break;
+ /* whether this is actually used */
+ case GST_MATROSKA_ID_TRACKFLAGENABLED:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ if (num)
+ context->flags |= GST_MATROSKA_TRACK_ENABLED;
+ else
+ context->flags &= ~GST_MATROSKA_TRACK_ENABLED;
+ break;
}
- /* whether it's the default for this track type */
- case GST_MATROSKA_ID_TRACKFLAGDEFAULT: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- if (num)
- context->flags |= GST_MATROSKA_TRACK_DEFAULT;
- else
- context->flags &= ~GST_MATROSKA_TRACK_DEFAULT;
- break;
+ /* whether it's the default for this track type */
+ case GST_MATROSKA_ID_TRACKFLAGDEFAULT:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ if (num)
+ context->flags |= GST_MATROSKA_TRACK_DEFAULT;
+ else
+ context->flags &= ~GST_MATROSKA_TRACK_DEFAULT;
+ break;
}
- /* lacing (like MPEG, where blocks don't end/start on frame
- * boundaries) */
- case GST_MATROSKA_ID_TRACKFLAGLACING: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- if (num)
- context->flags |= GST_MATROSKA_TRACK_LACING;
- else
- context->flags &= ~GST_MATROSKA_TRACK_LACING;
- break;
+ /* lacing (like MPEG, where blocks don't end/start on frame
+ * boundaries) */
+ case GST_MATROSKA_ID_TRACKFLAGLACING:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ if (num)
+ context->flags |= GST_MATROSKA_TRACK_LACING;
+ else
+ context->flags &= ~GST_MATROSKA_TRACK_LACING;
+ break;
}
- /* default length (in time) of one data block in this track */
- case GST_MATROSKA_ID_TRACKDEFAULTDURATION: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- context->default_duration = num;
- break;
+ /* default length (in time) of one data block in this track */
+ case GST_MATROSKA_ID_TRACKDEFAULTDURATION:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ context->default_duration = num;
+ break;
}
default:
- GST_WARNING ("Unknown track header entry 0x%x - ignoring", id);
- /* pass-through */
+ GST_WARNING ("Unknown track header entry 0x%x - ignoring", id);
+ /* pass-through */
- /* we ignore these because they're nothing useful (i.e. crap). */
+ /* we ignore these because they're nothing useful (i.e. crap). */
case GST_MATROSKA_ID_CODECINFOURL:
case GST_MATROSKA_ID_CODECDOWNLOADURL:
case GST_MATROSKA_ID_TRACKMINCACHE:
case GST_MATROSKA_ID_TRACKMAXCACHE:
case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
}
if (demux->level_up) {
@@ -830,53 +839,45 @@ gst_matroska_demux_add_stream (GstMatroskaDemux *demux)
/* now create the GStreamer connectivity */
switch (context->type) {
- case GST_MATROSKA_TRACK_TYPE_VIDEO: {
+ case GST_MATROSKA_TRACK_TYPE_VIDEO:{
GstMatroskaTrackVideoContext *videocontext =
- (GstMatroskaTrackVideoContext *) context;
+ (GstMatroskaTrackVideoContext *) context;
padname = g_strdup_printf ("video_%02d", demux->num_v_streams++);
templ = gst_element_class_get_pad_template (klass, "video_%02d");
caps = gst_matroska_demux_video_caps (videocontext,
- context->codec_id,
- context->codec_priv,
- context->codec_priv_size,
- demux);
+ context->codec_id,
+ context->codec_priv, context->codec_priv_size, demux);
break;
}
- case GST_MATROSKA_TRACK_TYPE_AUDIO: {
+ case GST_MATROSKA_TRACK_TYPE_AUDIO:{
GstMatroskaTrackAudioContext *audiocontext =
- (GstMatroskaTrackAudioContext *) context;
+ (GstMatroskaTrackAudioContext *) context;
padname = g_strdup_printf ("audio_%02d", demux->num_a_streams++);
templ = gst_element_class_get_pad_template (klass, "audio_%02d");
caps = gst_matroska_demux_audio_caps (audiocontext,
- context->codec_id,
- context->codec_priv,
- context->codec_priv_size,
- demux);
+ context->codec_id,
+ context->codec_priv, context->codec_priv_size, demux);
break;
}
- case GST_MATROSKA_TRACK_TYPE_COMPLEX: {
+ case GST_MATROSKA_TRACK_TYPE_COMPLEX:{
GstMatroskaTrackComplexContext *complexcontext =
- (GstMatroskaTrackComplexContext *) context;
+ (GstMatroskaTrackComplexContext *) context;
padname = g_strdup_printf ("video_%02d", demux->num_v_streams++);
templ = gst_element_class_get_pad_template (klass, "video_%02d");
caps = gst_matroska_demux_complex_caps (complexcontext,
- context->codec_id,
- context->codec_priv,
- context->codec_priv_size);
+ context->codec_id, context->codec_priv, context->codec_priv_size);
break;
}
- case GST_MATROSKA_TRACK_TYPE_SUBTITLE: {
+ case GST_MATROSKA_TRACK_TYPE_SUBTITLE:{
GstMatroskaTrackSubtitleContext *subtitlecontext =
- (GstMatroskaTrackSubtitleContext *) context;
+ (GstMatroskaTrackSubtitleContext *) context;
padname = g_strdup_printf ("subtitle_%02d", demux->num_t_streams++);
templ = gst_element_class_get_pad_template (klass, "subtitle_%02d");
caps = gst_matroska_demux_subtitle_caps (subtitlecontext,
- context->codec_id,
- context->codec_priv,
- context->codec_priv_size);
+ context->codec_id, context->codec_priv, context->codec_priv_size);
break;
}
@@ -888,24 +889,23 @@ gst_matroska_demux_add_stream (GstMatroskaDemux *demux)
}
/* the pad in here */
- context->pad = gst_pad_new_from_template (templ, padname);
+ context->pad = gst_pad_new_from_template (templ, padname);
context->caps = caps ? caps : gst_caps_new_empty ();
g_free (padname);
/* set some functions */
gst_pad_set_formats_function (context->pad,
- gst_matroska_demux_get_src_formats);
+ gst_matroska_demux_get_src_formats);
gst_pad_set_event_mask_function (context->pad,
- gst_matroska_demux_get_event_mask);
+ gst_matroska_demux_get_event_mask);
gst_pad_set_event_function (context->pad,
- gst_matroska_demux_handle_src_event);
+ gst_matroska_demux_handle_src_event);
gst_pad_set_query_type_function (context->pad,
- gst_matroska_demux_get_src_query_types);
+ gst_matroska_demux_get_src_query_types);
gst_pad_set_query_function (context->pad,
- gst_matroska_demux_handle_src_query);
- gst_pad_set_getcaps_function (context->pad,
- gst_matroska_demux_src_getcaps);
+ gst_matroska_demux_handle_src_query);
+ gst_pad_set_getcaps_function (context->pad, gst_matroska_demux_src_getcaps);
gst_element_add_pad (GST_ELEMENT (demux), context->pad);
@@ -914,9 +914,9 @@ gst_matroska_demux_add_stream (GstMatroskaDemux *demux)
}
static const GstFormat *
-gst_matroska_demux_get_src_formats (GstPad *pad)
+gst_matroska_demux_get_src_formats (GstPad * pad)
{
- /*GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (gst_pad_get_parent (pad));*/
+ /*GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (gst_pad_get_parent (pad)); */
/* we could try to look for units (i.e. samples) in audio streams
* or video streams, but both samplerate and framerate are not
@@ -932,7 +932,7 @@ gst_matroska_demux_get_src_formats (GstPad *pad)
}
static const GstQueryType *
-gst_matroska_demux_get_src_query_types (GstPad *pad)
+gst_matroska_demux_get_src_query_types (GstPad * pad)
{
static const GstQueryType src_types[] = {
GST_QUERY_TOTAL,
@@ -944,10 +944,8 @@ gst_matroska_demux_get_src_query_types (GstPad *pad)
}
static gboolean
-gst_matroska_demux_handle_src_query (GstPad *pad,
- GstQueryType type,
- GstFormat *format,
- gint64 *value)
+gst_matroska_demux_handle_src_query (GstPad * pad,
+ GstQueryType type, GstFormat * format, gint64 * value)
{
gboolean res = TRUE;
GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (gst_pad_get_parent (pad));
@@ -955,28 +953,28 @@ gst_matroska_demux_handle_src_query (GstPad *pad,
switch (type) {
case GST_QUERY_TOTAL:
switch (*format) {
- case GST_FORMAT_DEFAULT:
- *format = GST_FORMAT_TIME;
- /* fall through */
- case GST_FORMAT_TIME:
- *value = demux->duration;
+ case GST_FORMAT_DEFAULT:
+ *format = GST_FORMAT_TIME;
+ /* fall through */
+ case GST_FORMAT_TIME:
+ *value = demux->duration;
break;
default:
- res = FALSE;
+ res = FALSE;
break;
}
break;
case GST_QUERY_POSITION:
switch (*format) {
- case GST_FORMAT_DEFAULT:
- *format = GST_FORMAT_TIME;
- /* fall through */
- case GST_FORMAT_TIME:
- *value = demux->pos;
+ case GST_FORMAT_DEFAULT:
+ *format = GST_FORMAT_TIME;
+ /* fall through */
+ case GST_FORMAT_TIME:
+ *value = demux->pos;
break;
default:
- res = FALSE;
+ res = FALSE;
break;
}
break;
@@ -990,9 +988,9 @@ gst_matroska_demux_handle_src_query (GstPad *pad,
}
static GstMatroskaIndex *
-gst_matroskademux_seek (GstMatroskaDemux *demux)
+gst_matroskademux_seek (GstMatroskaDemux * demux)
{
- guint entry = (guint) -1;
+ guint entry = (guint) - 1;
guint64 offset = demux->seek_pending;
guint n;
@@ -1000,19 +998,19 @@ gst_matroskademux_seek (GstMatroskaDemux *demux)
demux->seek_pending = GST_CLOCK_TIME_NONE;
for (n = 0; n < demux->num_indexes; n++) {
- if (entry == (guint) -1) {
+ if (entry == (guint) - 1) {
entry = n;
} else {
gfloat diff_old = fabs (1. * (demux->index[entry].time - offset)),
- diff_new = fabs (1. * (demux->index[n].time - offset));
+ diff_new = fabs (1. * (demux->index[n].time - offset));
if (diff_new < diff_old) {
- entry = n;
+ entry = n;
}
}
}
- if (entry != (guint) -1) {
+ if (entry != (guint) - 1) {
return &demux->index[entry];
}
@@ -1020,8 +1018,7 @@ gst_matroskademux_seek (GstMatroskaDemux *demux)
}
static gboolean
-gst_matroska_demux_send_event (GstElement *element,
- GstEvent *event)
+gst_matroska_demux_send_event (GstElement * element, GstEvent * event)
{
GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (element);
gboolean res = TRUE;
@@ -1029,20 +1026,19 @@ gst_matroska_demux_send_event (GstElement *element,
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEEK:
switch (GST_EVENT_SEEK_FORMAT (event)) {
- case GST_FORMAT_TIME:
- demux->seek_pending = GST_EVENT_SEEK_OFFSET (event);
- break;
-
- default:
- GST_WARNING ("Only time seek is supported");
- res = FALSE;
- break;
+ case GST_FORMAT_TIME:
+ demux->seek_pending = GST_EVENT_SEEK_OFFSET (event);
+ break;
+
+ default:
+ GST_WARNING ("Only time seek is supported");
+ res = FALSE;
+ break;
}
break;
default:
- GST_WARNING ("Unhandled event of type %d",
- GST_EVENT_TYPE (event));
+ GST_WARNING ("Unhandled event of type %d", GST_EVENT_TYPE (event));
res = FALSE;
break;
}
@@ -1053,34 +1049,32 @@ gst_matroska_demux_send_event (GstElement *element,
}
static const GstEventMask *
-gst_matroska_demux_get_event_mask (GstPad *pad)
+gst_matroska_demux_get_event_mask (GstPad * pad)
{
static const GstEventMask masks[] = {
- { GST_EVENT_SEEK, (GstEventFlag) ((gint) GST_SEEK_METHOD_SET |
- (gint) GST_SEEK_FLAG_KEY_UNIT) },
- { GST_EVENT_SEEK_SEGMENT, (GstEventFlag) ((gint) GST_SEEK_METHOD_SET |
- (gint) GST_SEEK_FLAG_KEY_UNIT) },
- { (GstEventType) 0, (GstEventFlag) 0 }
+ {GST_EVENT_SEEK, (GstEventFlag) ((gint) GST_SEEK_METHOD_SET |
+ (gint) GST_SEEK_FLAG_KEY_UNIT)},
+ {GST_EVENT_SEEK_SEGMENT, (GstEventFlag) ((gint) GST_SEEK_METHOD_SET |
+ (gint) GST_SEEK_FLAG_KEY_UNIT)},
+ {(GstEventType) 0, (GstEventFlag) 0}
};
return masks;
}
-
+
static gboolean
-gst_matroska_demux_handle_src_event (GstPad *pad,
- GstEvent *event)
+gst_matroska_demux_handle_src_event (GstPad * pad, GstEvent * event)
{
GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (gst_pad_get_parent (pad));
gboolean res = TRUE;
-
+
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEEK_SEGMENT:
case GST_EVENT_SEEK:
return gst_matroska_demux_send_event (GST_ELEMENT (demux), event);
default:
- GST_WARNING ("Unhandled event of type %d",
- GST_EVENT_TYPE (event));
+ GST_WARNING ("Unhandled event of type %d", GST_EVENT_TYPE (event));
res = FALSE;
break;
}
@@ -1091,7 +1085,7 @@ gst_matroska_demux_handle_src_event (GstPad *pad,
}
static gboolean
-gst_matroska_demux_handle_seek_event (GstMatroskaDemux *demux)
+gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
GstMatroskaIndex *entry = gst_matroskademux_seek (demux);
@@ -1102,12 +1096,10 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux *demux)
return FALSE;
/* seek (relative to segment) */
- if (!(event = gst_ebml_read_seek (ebml,
- entry->pos + demux->segment_start)))
+ if (!(event = gst_ebml_read_seek (ebml, entry->pos + demux->segment_start)))
return FALSE;
- gst_event_unref (event); /* byte - we want time */
- event = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME,
- entry->time);
+ gst_event_unref (event); /* byte - we want time */
+ event = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME, entry->time);
/* forward to all src pads */
for (i = 0; i < demux->num_streams; i++) {
@@ -1123,7 +1115,7 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux *demux)
}
static gboolean
-gst_matroska_demux_init_stream (GstMatroskaDemux *demux)
+gst_matroska_demux_init_stream (GstMatroskaDemux * demux)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
guint32 id;
@@ -1135,16 +1127,15 @@ gst_matroska_demux_init_stream (GstMatroskaDemux *demux)
if (!doctype || strcmp (doctype, "matroska") != 0) {
GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE, (NULL),
- ("Input is not a matroska stream (doctype=%s)",
- doctype ? doctype : "none"));
+ ("Input is not a matroska stream (doctype=%s)",
+ doctype ? doctype : "none"));
g_free (doctype);
return FALSE;
}
g_free (doctype);
if (version > 1) {
GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
- ("Demuxer version (1) is too old to read stream version %d",
- version));
+ ("Demuxer version (1) is too old to read stream version %d", version));
return FALSE;
}
@@ -1160,7 +1151,7 @@ gst_matroska_demux_init_stream (GstMatroskaDemux *demux)
/* oi! */
GST_WARNING ("Expected a Segment ID (0x%x), but received 0x%x!",
- GST_MATROSKA_ID_SEGMENT, id);
+ GST_MATROSKA_ID_SEGMENT, id);
if (!gst_ebml_read_skip (ebml))
return FALSE;
}
@@ -1176,7 +1167,7 @@ gst_matroska_demux_init_stream (GstMatroskaDemux *demux)
}
static gboolean
-gst_matroska_demux_parse_tracks (GstMatroskaDemux *demux)
+gst_matroska_demux_parse_tracks (GstMatroskaDemux * demux)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
gboolean res = TRUE;
@@ -1192,20 +1183,20 @@ gst_matroska_demux_parse_tracks (GstMatroskaDemux *demux)
}
switch (id) {
- /* one track within the "all-tracks" header */
+ /* one track within the "all-tracks" header */
case GST_MATROSKA_ID_TRACKENTRY:
- if (!gst_matroska_demux_add_stream (demux))
- res = FALSE;
- break;
+ if (!gst_matroska_demux_add_stream (demux))
+ res = FALSE;
+ break;
default:
- GST_WARNING ("Unknown entry 0x%x in track header", id);
- /* fall-through */
+ GST_WARNING ("Unknown entry 0x%x in track header", id);
+ /* fall-through */
case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
}
if (demux->level_up) {
@@ -1218,8 +1209,7 @@ gst_matroska_demux_parse_tracks (GstMatroskaDemux *demux)
}
static gboolean
-gst_matroska_demux_parse_index (GstMatroskaDemux *demux,
- gboolean prevent_eos)
+gst_matroska_demux_parse_index (GstMatroskaDemux * demux, gboolean prevent_eos)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
gboolean res = TRUE;
@@ -1247,145 +1237,147 @@ gst_matroska_demux_parse_index (GstMatroskaDemux *demux,
}
switch (id) {
- /* one single index entry ('point') */
+ /* one single index entry ('point') */
case GST_MATROSKA_ID_POINTENTRY:
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
- /* in the end, we hope to fill one entry with a
+ /* in the end, we hope to fill one entry with a
* timestamp, a file position and a tracknum */
- idx.pos = (guint64) -1;
- idx.time = (guint64) -1;
- idx.track = (guint16) -1;
-
- while (res) {
- if (prevent_eos && length == gst_bytestream_tell (ebml->bs)) {
- res = FALSE;
- break;
- } else if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
- res = FALSE;
- break;
- } else if (demux->level_up) {
- demux->level_up--;
- break;
- }
-
- switch (id) {
- /* one single index entry ('point') */
- case GST_MATROSKA_ID_CUETIME: {
- gint64 time;
- if (!gst_ebml_read_uint (ebml, &id, &time)) {
- res = FALSE;
- break;
- }
- idx.time = time * demux->time_scale;
- break;
- }
-
- /* position in the file + track to which it belongs */
- case GST_MATROSKA_ID_CUETRACKPOSITION:
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
-
- while (res) {
- if (prevent_eos && length == gst_bytestream_tell (ebml->bs)) {
- res = FALSE;
- break;
- } else if (!(id = gst_ebml_peek_id (ebml,
- &demux->level_up))) {
- res = FALSE;
- break;
- } else if (demux->level_up) {
- demux->level_up--;
- break;
- }
-
- switch (id) {
- /* track number */
- case GST_MATROSKA_ID_CUETRACK: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- idx.track = num;
- break;
- }
-
- /* position in file */
- case GST_MATROSKA_ID_CUECLUSTERPOSITION: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- idx.pos = num;
- break;
- }
-
- default:
- GST_WARNING ("Unknown entry 0x%x in CuesTrackPositions", id);
- /* fall-through */
-
- case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
- }
-
- if (demux->level_up) {
- demux->level_up--;
- break;
- }
- }
-
- break;
-
- default:
- GST_WARNING ("Unknown entry 0x%x in cuespoint index", id);
- /* fall-through */
-
- case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
- }
-
- if (demux->level_up) {
- demux->level_up--;
- break;
- }
- }
-
- /* so let's see if we got what we wanted */
- if (idx.pos != (guint64) -1 &&
- idx.time != (guint64) -1 &&
- idx.track != (guint16) -1) {
- if (demux->num_indexes % 32 == 0) {
- /* re-allocate bigger index */
- demux->index = g_renew (GstMatroskaIndex, demux->index,
- demux->num_indexes + 32);
- }
- demux->index[demux->num_indexes].pos = idx.pos;
- demux->index[demux->num_indexes].time = idx.time;
- demux->index[demux->num_indexes].track = idx.track;
- demux->num_indexes++;
- }
-
- break;
+ idx.pos = (guint64) - 1;
+ idx.time = (guint64) - 1;
+ idx.track = (guint16) - 1;
+
+ while (res) {
+ if (prevent_eos && length == gst_bytestream_tell (ebml->bs)) {
+ res = FALSE;
+ break;
+ } else if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
+ res = FALSE;
+ break;
+ } else if (demux->level_up) {
+ demux->level_up--;
+ break;
+ }
+
+ switch (id) {
+ /* one single index entry ('point') */
+ case GST_MATROSKA_ID_CUETIME:{
+ gint64 time;
+
+ if (!gst_ebml_read_uint (ebml, &id, &time)) {
+ res = FALSE;
+ break;
+ }
+ idx.time = time * demux->time_scale;
+ break;
+ }
+
+ /* position in the file + track to which it belongs */
+ case GST_MATROSKA_ID_CUETRACKPOSITION:
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+
+ while (res) {
+ if (prevent_eos && length == gst_bytestream_tell (ebml->bs)) {
+ res = FALSE;
+ break;
+ } else if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
+ res = FALSE;
+ break;
+ } else if (demux->level_up) {
+ demux->level_up--;
+ break;
+ }
+
+ switch (id) {
+ /* track number */
+ case GST_MATROSKA_ID_CUETRACK:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ idx.track = num;
+ break;
+ }
+
+ /* position in file */
+ case GST_MATROSKA_ID_CUECLUSTERPOSITION:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ idx.pos = num;
+ break;
+ }
+
+ default:
+ GST_WARNING ("Unknown entry 0x%x in CuesTrackPositions",
+ id);
+ /* fall-through */
+
+ case GST_EBML_ID_VOID:
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
+ }
+
+ if (demux->level_up) {
+ demux->level_up--;
+ break;
+ }
+ }
+
+ break;
+
+ default:
+ GST_WARNING ("Unknown entry 0x%x in cuespoint index", id);
+ /* fall-through */
+
+ case GST_EBML_ID_VOID:
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
+ }
+
+ if (demux->level_up) {
+ demux->level_up--;
+ break;
+ }
+ }
+
+ /* so let's see if we got what we wanted */
+ if (idx.pos != (guint64) - 1 &&
+ idx.time != (guint64) - 1 && idx.track != (guint16) - 1) {
+ if (demux->num_indexes % 32 == 0) {
+ /* re-allocate bigger index */
+ demux->index = g_renew (GstMatroskaIndex, demux->index,
+ demux->num_indexes + 32);
+ }
+ demux->index[demux->num_indexes].pos = idx.pos;
+ demux->index[demux->num_indexes].time = idx.time;
+ demux->index[demux->num_indexes].track = idx.track;
+ demux->num_indexes++;
+ }
+
+ break;
default:
- GST_WARNING ("Unknown entry 0x%x in cues header", id);
- /* fall-through */
+ GST_WARNING ("Unknown entry 0x%x in cues header", id);
+ /* fall-through */
case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
}
if (demux->level_up) {
@@ -1398,7 +1390,7 @@ gst_matroska_demux_parse_index (GstMatroskaDemux *demux,
}
static gboolean
-gst_matroska_demux_parse_info (GstMatroskaDemux *demux)
+gst_matroska_demux_parse_info (GstMatroskaDemux * demux)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
gboolean res = TRUE;
@@ -1414,65 +1406,70 @@ gst_matroska_demux_parse_info (GstMatroskaDemux *demux)
}
switch (id) {
- /* cluster timecode */
- case GST_MATROSKA_ID_TIMECODESCALE: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- demux->time_scale = num;
- break;
+ /* cluster timecode */
+ case GST_MATROSKA_ID_TIMECODESCALE:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ demux->time_scale = num;
+ break;
}
- case GST_MATROSKA_ID_DURATION: {
- gdouble num;
- if (!gst_ebml_read_float (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- demux->duration = num * demux->time_scale;
- break;
+ case GST_MATROSKA_ID_DURATION:{
+ gdouble num;
+
+ if (!gst_ebml_read_float (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ demux->duration = num * demux->time_scale;
+ break;
}
- case GST_MATROSKA_ID_WRITINGAPP: {
- gchar *text;
- if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
- res = FALSE;
- break;
- }
- demux->writing_app = text;
- break;
+ case GST_MATROSKA_ID_WRITINGAPP:{
+ gchar *text;
+
+ if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
+ res = FALSE;
+ break;
+ }
+ demux->writing_app = text;
+ break;
}
- case GST_MATROSKA_ID_MUXINGAPP: {
- gchar *text;
- if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
- res = FALSE;
- break;
- }
- demux->muxing_app = text;
- break;
+ case GST_MATROSKA_ID_MUXINGAPP:{
+ gchar *text;
+
+ if (!gst_ebml_read_utf8 (ebml, &id, &text)) {
+ res = FALSE;
+ break;
+ }
+ demux->muxing_app = text;
+ break;
}
- case GST_MATROSKA_ID_DATEUTC: {
- gint64 time;
- if (!gst_ebml_read_date (ebml, &id, &time)) {
- res = FALSE;
- break;
- }
- demux->created = time;
- break;
+ case GST_MATROSKA_ID_DATEUTC:{
+ gint64 time;
+
+ if (!gst_ebml_read_date (ebml, &id, &time)) {
+ res = FALSE;
+ break;
+ }
+ demux->created = time;
+ break;
}
default:
- GST_WARNING ("Unknown entry 0x%x in info header", id);
- /* fall-through */
+ GST_WARNING ("Unknown entry 0x%x in info header", id);
+ /* fall-through */
case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
}
if (demux->level_up) {
@@ -1485,8 +1482,8 @@ gst_matroska_demux_parse_info (GstMatroskaDemux *demux)
}
static gboolean
-gst_matroska_demux_parse_metadata (GstMatroskaDemux *demux,
- gboolean prevent_eos)
+gst_matroska_demux_parse_metadata (GstMatroskaDemux * demux,
+ gboolean prevent_eos)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
gboolean res = TRUE;
@@ -1514,13 +1511,13 @@ gst_matroska_demux_parse_metadata (GstMatroskaDemux *demux,
switch (id) {
default:
- GST_WARNING ("metadata unimplemented");
- /* fall-through */
+ GST_WARNING ("metadata unimplemented");
+ /* fall-through */
case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
}
if (demux->level_up) {
@@ -1538,9 +1535,7 @@ gst_matroska_demux_parse_metadata (GstMatroskaDemux *demux,
*/
static gint
-gst_matroska_ebmlnum_uint (guint8 *data,
- guint size,
- guint64 *num)
+gst_matroska_ebmlnum_uint (guint8 * data, guint size, guint64 * num)
{
gint len_mask = 0x80, read = 1, n = 1, num_ffs = 0;
guint64 total;
@@ -1548,7 +1543,7 @@ gst_matroska_ebmlnum_uint (guint8 *data,
if (size <= 0) {
return -1;
}
-
+
total = data[0];
while (read <= 8 && !(total & len_mask)) {
read++;
@@ -1556,7 +1551,7 @@ gst_matroska_ebmlnum_uint (guint8 *data,
}
if (read > 8)
return -1;
-
+
if ((total &= (len_mask - 1)) == len_mask - 1)
num_ffs++;
if (size < read)
@@ -1580,9 +1575,7 @@ gst_matroska_ebmlnum_uint (guint8 *data,
}
static gint
-gst_matroska_ebmlnum_sint (guint8 *data,
- guint size,
- gint64 *num)
+gst_matroska_ebmlnum_sint (guint8 * data, guint size, gint64 * num)
{
guint64 unum;
gint res;
@@ -1601,8 +1594,8 @@ gst_matroska_ebmlnum_sint (guint8 *data,
}
static gboolean
-gst_matroska_demux_parse_blockgroup (GstMatroskaDemux *demux,
- guint64 cluster_time)
+gst_matroska_demux_parse_blockgroup (GstMatroskaDemux * demux,
+ guint64 cluster_time)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
gboolean res = TRUE;
@@ -1618,165 +1611,178 @@ gst_matroska_demux_parse_blockgroup (GstMatroskaDemux *demux,
}
switch (id) {
- /* one block inside the group. Note, block parsing is one
- * of the harder things, so this code is a bit complicated.
- * See http://www.matroska.org/ for documentation. */
- case GST_MATROSKA_ID_BLOCK: {
- GstBuffer *buf;
- guint8 *data;
- gint64 time;
- guint size, *lace_size = NULL;
- gint n, stream, flags, laces = 0;
- guint64 num;
-
- if (!gst_ebml_read_buffer (ebml, &id, &buf)) {
- res = FALSE;
- break;
- }
- data = GST_BUFFER_DATA (buf);
- size = GST_BUFFER_SIZE (buf);
-
- /* first byte(s): blocknum */
- if ((n = gst_matroska_ebmlnum_uint (data, size, &num)) < 0) {
- GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), ("Data error"));
- gst_buffer_unref (buf);
- res = FALSE;
- break;
- }
- data += n; size -= n;
-
- /* fetch stream from num */
- stream = gst_matroska_demux_stream_from_num (demux, num);
- if (size <= 3 || stream < 0 || stream >= demux->num_streams) {
- gst_buffer_unref (buf);
- GST_WARNING ("Invalid stream %d or size %u", stream, size);
- break;
- }
- if (!GST_PAD_IS_USABLE (demux->src[stream]->pad)) {
- gst_buffer_unref (buf);
- break;
- }
-
- /* time (relative to cluster time) */
- time = (GINT16_FROM_BE (* (gint16 *) data)) * demux->time_scale;
- data += 2; size -= 2;
- flags = * (guint8 *) data;
- data += 1; size -= 1;
- switch ((flags & 0x06) >> 1) {
- case 0x0: /* no lacing */
- laces = 1;
- lace_size = g_new (gint, 1);
- lace_size[0] = size;
- break;
-
- case 0x1: /* xiph lacing */
- case 0x2: /* fixed-size lacing */
- case 0x3: /* EBML lacing */
- if (size == 0) {
- res = FALSE;
- break;
- }
- laces = (* (guint8 *) data) + 1;
- data += 1; size -= 1;
- lace_size = g_new0 (gint, laces);
-
- switch ((flags & 0x06) >> 1) {
- case 0x1: /* xiph lacing */ {
- guint temp, total = 0;
- for (n = 0; res && n < laces - 1; n++) {
- while (1) {
- if (size == 0) {
- res = FALSE;
- break;
- }
- temp = * (guint8 *) data;
- lace_size[n] += temp;
- data += 1; size -= 1;
- if (temp != 0xff)
- break;
- }
- total += lace_size[n];
- }
- lace_size[n] = size - total;
- break;
- }
-
- case 0x2: /* fixed-size lacing */
- for (n = 0; n < laces; n++)
- lace_size[n] = size / laces;
- break;
-
- case 0x3: /* EBML lacing */ {
- guint total;
- if ((n = gst_matroska_ebmlnum_uint (data, size, &num)) < 0) {
- GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), ("Data error"));
- res = FALSE;
- break;
- }
- data += n; size -= n;
- total = lace_size[0] = num;
- for (n = 1; res && n < laces - 1; n++) {
- gint64 snum;
- gint r;
- if ((r = gst_matroska_ebmlnum_sint (data, size, &snum)) < 0) {
- GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), ("Data error"));
- res = FALSE;
- break;
- }
- data += r; size -= r;
- lace_size[n] = lace_size[n - 1] + snum;
- total += lace_size[n];
- }
- lace_size[n] = size - total;
- break;
- }
- }
- break;
- }
-
- if (res) {
- for (n = 0; n < laces; n++) {
- GstBuffer *sub = gst_buffer_create_sub (buf,
- GST_BUFFER_SIZE (buf) - size,
- lace_size[n]);
-
- if (cluster_time != GST_CLOCK_TIME_NONE) {
- if (time < 0 && (-time) > cluster_time)
- GST_BUFFER_TIMESTAMP (sub) = cluster_time;
- else
- GST_BUFFER_TIMESTAMP (sub) = cluster_time + time;
- }
- /* FIXME: duration */
-
- gst_pad_push (demux->src[stream]->pad, GST_DATA (sub));
-
- size -= lace_size[n];
- }
- }
-
- g_free (lace_size);
- gst_buffer_unref (buf);
- break;
+ /* one block inside the group. Note, block parsing is one
+ * of the harder things, so this code is a bit complicated.
+ * See http://www.matroska.org/ for documentation. */
+ case GST_MATROSKA_ID_BLOCK:{
+ GstBuffer *buf;
+ guint8 *data;
+ gint64 time;
+ guint size, *lace_size = NULL;
+ gint n, stream, flags, laces = 0;
+ guint64 num;
+
+ if (!gst_ebml_read_buffer (ebml, &id, &buf)) {
+ res = FALSE;
+ break;
+ }
+ data = GST_BUFFER_DATA (buf);
+ size = GST_BUFFER_SIZE (buf);
+
+ /* first byte(s): blocknum */
+ if ((n = gst_matroska_ebmlnum_uint (data, size, &num)) < 0) {
+ GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), ("Data error"));
+ gst_buffer_unref (buf);
+ res = FALSE;
+ break;
+ }
+ data += n;
+ size -= n;
+
+ /* fetch stream from num */
+ stream = gst_matroska_demux_stream_from_num (demux, num);
+ if (size <= 3 || stream < 0 || stream >= demux->num_streams) {
+ gst_buffer_unref (buf);
+ GST_WARNING ("Invalid stream %d or size %u", stream, size);
+ break;
+ }
+ if (!GST_PAD_IS_USABLE (demux->src[stream]->pad)) {
+ gst_buffer_unref (buf);
+ break;
+ }
+
+ /* time (relative to cluster time) */
+ time = (GINT16_FROM_BE (*(gint16 *) data)) * demux->time_scale;
+ data += 2;
+ size -= 2;
+ flags = *(guint8 *) data;
+ data += 1;
+ size -= 1;
+ switch ((flags & 0x06) >> 1) {
+ case 0x0: /* no lacing */
+ laces = 1;
+ lace_size = g_new (gint, 1);
+ lace_size[0] = size;
+ break;
+
+ case 0x1: /* xiph lacing */
+ case 0x2: /* fixed-size lacing */
+ case 0x3: /* EBML lacing */
+ if (size == 0) {
+ res = FALSE;
+ break;
+ }
+ laces = (*(guint8 *) data) + 1;
+ data += 1;
+ size -= 1;
+ lace_size = g_new0 (gint, laces);
+
+ switch ((flags & 0x06) >> 1) {
+ case 0x1: /* xiph lacing */ {
+ guint temp, total = 0;
+
+ for (n = 0; res && n < laces - 1; n++) {
+ while (1) {
+ if (size == 0) {
+ res = FALSE;
+ break;
+ }
+ temp = *(guint8 *) data;
+ lace_size[n] += temp;
+ data += 1;
+ size -= 1;
+ if (temp != 0xff)
+ break;
+ }
+ total += lace_size[n];
+ }
+ lace_size[n] = size - total;
+ break;
+ }
+
+ case 0x2: /* fixed-size lacing */
+ for (n = 0; n < laces; n++)
+ lace_size[n] = size / laces;
+ break;
+
+ case 0x3: /* EBML lacing */ {
+ guint total;
+
+ if ((n = gst_matroska_ebmlnum_uint (data, size, &num)) < 0) {
+ GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+ ("Data error"));
+ res = FALSE;
+ break;
+ }
+ data += n;
+ size -= n;
+ total = lace_size[0] = num;
+ for (n = 1; res && n < laces - 1; n++) {
+ gint64 snum;
+ gint r;
+
+ if ((r = gst_matroska_ebmlnum_sint (data, size, &snum)) < 0) {
+ GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+ ("Data error"));
+ res = FALSE;
+ break;
+ }
+ data += r;
+ size -= r;
+ lace_size[n] = lace_size[n - 1] + snum;
+ total += lace_size[n];
+ }
+ lace_size[n] = size - total;
+ break;
+ }
+ }
+ break;
+ }
+
+ if (res) {
+ for (n = 0; n < laces; n++) {
+ GstBuffer *sub = gst_buffer_create_sub (buf,
+ GST_BUFFER_SIZE (buf) - size,
+ lace_size[n]);
+
+ if (cluster_time != GST_CLOCK_TIME_NONE) {
+ if (time < 0 && (-time) > cluster_time)
+ GST_BUFFER_TIMESTAMP (sub) = cluster_time;
+ else
+ GST_BUFFER_TIMESTAMP (sub) = cluster_time + time;
+ }
+ /* FIXME: duration */
+
+ gst_pad_push (demux->src[stream]->pad, GST_DATA (sub));
+
+ size -= lace_size[n];
+ }
+ }
+
+ g_free (lace_size);
+ gst_buffer_unref (buf);
+ break;
}
- case GST_MATROSKA_ID_BLOCKDURATION: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- GST_WARNING ("FIXME: implement support for BlockDuration");
- break;
+ case GST_MATROSKA_ID_BLOCKDURATION:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ GST_WARNING ("FIXME: implement support for BlockDuration");
+ break;
}
default:
- GST_WARNING ("Unknown entry 0x%x in blockgroup data", id);
- /* fall-through */
+ GST_WARNING ("Unknown entry 0x%x in blockgroup data", id);
+ /* fall-through */
case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
}
if (demux->level_up) {
@@ -1789,7 +1795,7 @@ gst_matroska_demux_parse_blockgroup (GstMatroskaDemux *demux,
}
static gboolean
-gst_matroska_demux_parse_cluster (GstMatroskaDemux *demux)
+gst_matroska_demux_parse_cluster (GstMatroskaDemux * demux)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
gboolean res = TRUE;
@@ -1814,34 +1820,35 @@ gst_matroska_demux_parse_cluster (GstMatroskaDemux *demux)
}
switch (id) {
- /* cluster timecode */
- case GST_MATROSKA_ID_CLUSTERTIMECODE: {
- guint64 num;
- if (!gst_ebml_read_uint (ebml, &id, &num)) {
- res = FALSE;
- break;
- }
- cluster_time = num * demux->time_scale;
- break;
+ /* cluster timecode */
+ case GST_MATROSKA_ID_CLUSTERTIMECODE:{
+ guint64 num;
+
+ if (!gst_ebml_read_uint (ebml, &id, &num)) {
+ res = FALSE;
+ break;
+ }
+ cluster_time = num * demux->time_scale;
+ break;
}
- /* a group of blocks inside a cluster */
+ /* a group of blocks inside a cluster */
case GST_MATROSKA_ID_BLOCKGROUP:
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
- res = gst_matroska_demux_parse_blockgroup (demux, cluster_time);
- break;
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+ res = gst_matroska_demux_parse_blockgroup (demux, cluster_time);
+ break;
default:
- GST_WARNING ("Unknown entry 0x%x in cluster data", id);
- /* fall-through */
+ GST_WARNING ("Unknown entry 0x%x in cluster data", id);
+ /* fall-through */
case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
}
if (demux->level_up) {
@@ -1854,7 +1861,7 @@ gst_matroska_demux_parse_cluster (GstMatroskaDemux *demux)
}
static gboolean
-gst_matroska_demux_parse_contents (GstMatroskaDemux *demux)
+gst_matroska_demux_parse_contents (GstMatroskaDemux * demux)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
gboolean res = TRUE;
@@ -1870,162 +1877,163 @@ gst_matroska_demux_parse_contents (GstMatroskaDemux *demux)
}
switch (id) {
- case GST_MATROSKA_ID_SEEKENTRY: {
- guint32 seek_id = 0;
- guint64 seek_pos = (guint64) -1, t;
-
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
-
- while (res) {
- if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
- res = FALSE;
- break;
- } else if (demux->level_up) {
- demux->level_up--;
- break;
- }
-
- switch (id) {
- case GST_MATROSKA_ID_SEEKID:
- if (!gst_ebml_read_uint (ebml, &id, &t))
- res = FALSE;
- seek_id = t;
- break;
-
- case GST_MATROSKA_ID_SEEKPOSITION:
- if (!gst_ebml_read_uint (ebml, &id, &seek_pos))
- res = FALSE;
- break;
-
- default:
- GST_WARNING ("Unknown seekhead ID 0x%x", id);
- /* fall-through */
-
- case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
- }
-
- if (demux->level_up) {
- demux->level_up--;
- break;
- }
- }
-
- if (!seek_id || seek_pos == (guint64) -1) {
- GST_WARNING ("Incomplete seekhead entry (0x%x/%"
- G_GUINT64_FORMAT ")", seek_id, seek_pos);
- break;
- }
-
- switch (seek_id) {
- case GST_MATROSKA_ID_CUES:
- case GST_MATROSKA_ID_TAGS: {
- guint level_up = demux->level_up;
- guint64 before_pos, length;
- GstEbmlLevel *level;
- GstEvent *event;
-
- /* remember */
- length = gst_bytestream_length (ebml->bs);
- before_pos = gst_bytestream_tell (ebml->bs);
-
- /* check for validity */
- if (seek_pos + demux->segment_start + 12 >= length) {
- g_warning ("Seekhead reference lies outside file!");
- break;
- }
-
- /* seek */
- if (!(event = gst_ebml_read_seek (ebml,
- seek_pos + demux->segment_start)))
- return FALSE;
- gst_event_unref (event);
-
- /* we don't want to lose our seekhead level, so we add
- * a dummy. This is a crude hack. */
- level = g_new (GstEbmlLevel, 1);
- level->start = 0;
- level->length = G_MAXUINT64;
- ebml->level = g_list_append (ebml->level, level);
-
- /* check ID */
- if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
- res = FALSE;
- break;
- }
- if (id != seek_id) {
- g_warning ("We looked for ID=0x%x but got ID=0x%x (pos=%llu)",
- seek_id, id, seek_pos + demux->segment_start);
- goto finish;
- }
-
- /* read master + parse */
- switch (id) {
- case GST_MATROSKA_ID_CUES:
- if (!gst_ebml_read_master (ebml, &id))
- res = FALSE;
- else if (!gst_matroska_demux_parse_index (demux, TRUE) &&
- gst_bytestream_length (ebml->bs) !=
- gst_bytestream_tell (ebml->bs))
- res = FALSE;
- else
- demux->index_parsed = TRUE;
- break;
- case GST_MATROSKA_ID_TAGS:
- if (!gst_ebml_read_master (ebml, &id))
- res = FALSE;
- else if (!gst_matroska_demux_parse_metadata (demux, TRUE) &&
- gst_bytestream_length (ebml->bs) !=
- gst_bytestream_tell (ebml->bs))
- res = FALSE;
- else
- demux->metadata_parsed = TRUE;
- break;
- }
- if (!res)
- break;
-
- finish:
- /* remove dummy level */
- while (ebml->level) {
- guint64 length;
- level = g_list_last (ebml->level)->data;
- ebml->level = g_list_remove (ebml->level, level);
- length = level->length;
- g_free (level);
- if (length == G_MAXUINT64)
- break;
- }
-
- /* seek back */
- if (!(event = gst_ebml_read_seek (ebml, before_pos)))
- return FALSE;
- gst_event_unref (event);
- demux->level_up = level_up;
- break;
- }
-
- default:
- GST_INFO ("Ignoring seekhead entry for ID=0x%x", seek_id);
- break;
- }
-
- break;
+ case GST_MATROSKA_ID_SEEKENTRY:{
+ guint32 seek_id = 0;
+ guint64 seek_pos = (guint64) - 1, t;
+
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+
+ while (res) {
+ if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
+ res = FALSE;
+ break;
+ } else if (demux->level_up) {
+ demux->level_up--;
+ break;
+ }
+
+ switch (id) {
+ case GST_MATROSKA_ID_SEEKID:
+ if (!gst_ebml_read_uint (ebml, &id, &t))
+ res = FALSE;
+ seek_id = t;
+ break;
+
+ case GST_MATROSKA_ID_SEEKPOSITION:
+ if (!gst_ebml_read_uint (ebml, &id, &seek_pos))
+ res = FALSE;
+ break;
+
+ default:
+ GST_WARNING ("Unknown seekhead ID 0x%x", id);
+ /* fall-through */
+
+ case GST_EBML_ID_VOID:
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
+ }
+
+ if (demux->level_up) {
+ demux->level_up--;
+ break;
+ }
+ }
+
+ if (!seek_id || seek_pos == (guint64) - 1) {
+ GST_WARNING ("Incomplete seekhead entry (0x%x/%"
+ G_GUINT64_FORMAT ")", seek_id, seek_pos);
+ break;
+ }
+
+ switch (seek_id) {
+ case GST_MATROSKA_ID_CUES:
+ case GST_MATROSKA_ID_TAGS:{
+ guint level_up = demux->level_up;
+ guint64 before_pos, length;
+ GstEbmlLevel *level;
+ GstEvent *event;
+
+ /* remember */
+ length = gst_bytestream_length (ebml->bs);
+ before_pos = gst_bytestream_tell (ebml->bs);
+
+ /* check for validity */
+ if (seek_pos + demux->segment_start + 12 >= length) {
+ g_warning ("Seekhead reference lies outside file!");
+ break;
+ }
+
+ /* seek */
+ if (!(event = gst_ebml_read_seek (ebml,
+ seek_pos + demux->segment_start)))
+ return FALSE;
+ gst_event_unref (event);
+
+ /* we don't want to lose our seekhead level, so we add
+ * a dummy. This is a crude hack. */
+ level = g_new (GstEbmlLevel, 1);
+ level->start = 0;
+ level->length = G_MAXUINT64;
+ ebml->level = g_list_append (ebml->level, level);
+
+ /* check ID */
+ if (!(id = gst_ebml_peek_id (ebml, &demux->level_up))) {
+ res = FALSE;
+ break;
+ }
+ if (id != seek_id) {
+ g_warning ("We looked for ID=0x%x but got ID=0x%x (pos=%llu)",
+ seek_id, id, seek_pos + demux->segment_start);
+ goto finish;
+ }
+
+ /* read master + parse */
+ switch (id) {
+ case GST_MATROSKA_ID_CUES:
+ if (!gst_ebml_read_master (ebml, &id))
+ res = FALSE;
+ else if (!gst_matroska_demux_parse_index (demux, TRUE) &&
+ gst_bytestream_length (ebml->bs) !=
+ gst_bytestream_tell (ebml->bs))
+ res = FALSE;
+ else
+ demux->index_parsed = TRUE;
+ break;
+ case GST_MATROSKA_ID_TAGS:
+ if (!gst_ebml_read_master (ebml, &id))
+ res = FALSE;
+ else if (!gst_matroska_demux_parse_metadata (demux, TRUE) &&
+ gst_bytestream_length (ebml->bs) !=
+ gst_bytestream_tell (ebml->bs))
+ res = FALSE;
+ else
+ demux->metadata_parsed = TRUE;
+ break;
+ }
+ if (!res)
+ break;
+
+ finish:
+ /* remove dummy level */
+ while (ebml->level) {
+ guint64 length;
+
+ level = g_list_last (ebml->level)->data;
+ ebml->level = g_list_remove (ebml->level, level);
+ length = level->length;
+ g_free (level);
+ if (length == G_MAXUINT64)
+ break;
+ }
+
+ /* seek back */
+ if (!(event = gst_ebml_read_seek (ebml, before_pos)))
+ return FALSE;
+ gst_event_unref (event);
+ demux->level_up = level_up;
+ break;
+ }
+
+ default:
+ GST_INFO ("Ignoring seekhead entry for ID=0x%x", seek_id);
+ break;
+ }
+
+ break;
}
default:
- GST_WARNING ("Unknown seekhead ID 0x%x", id);
- /* fall-through */
+ GST_WARNING ("Unknown seekhead ID 0x%x", id);
+ /* fall-through */
case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
}
if (demux->level_up) {
@@ -2038,7 +2046,7 @@ gst_matroska_demux_parse_contents (GstMatroskaDemux *demux)
}
static gboolean
-gst_matroska_demux_loop_stream (GstMatroskaDemux *demux)
+gst_matroska_demux_loop_stream (GstMatroskaDemux * demux)
{
GstEbmlRead *ebml = GST_EBML_READ (demux);
gboolean res = TRUE;
@@ -2055,88 +2063,88 @@ gst_matroska_demux_loop_stream (GstMatroskaDemux *demux)
}
switch (id) {
- /* stream info */
- case GST_MATROSKA_ID_INFO: {
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
- res = gst_matroska_demux_parse_info (demux);
- break;
+ /* stream info */
+ case GST_MATROSKA_ID_INFO:{
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+ res = gst_matroska_demux_parse_info (demux);
+ break;
}
- /* track info headers */
- case GST_MATROSKA_ID_TRACKS: {
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
- res = gst_matroska_demux_parse_tracks (demux);
- break;
+ /* track info headers */
+ case GST_MATROSKA_ID_TRACKS:{
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+ res = gst_matroska_demux_parse_tracks (demux);
+ break;
}
- /* stream index */
- case GST_MATROSKA_ID_CUES: {
- if (!demux->index_parsed) {
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
- res = gst_matroska_demux_parse_index (demux, FALSE);
- } else
- res = gst_ebml_read_skip (ebml);
- break;
+ /* stream index */
+ case GST_MATROSKA_ID_CUES:{
+ if (!demux->index_parsed) {
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+ res = gst_matroska_demux_parse_index (demux, FALSE);
+ } else
+ res = gst_ebml_read_skip (ebml);
+ break;
}
- /* metadata */
- case GST_MATROSKA_ID_TAGS: {
- if (!demux->index_parsed) {
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
- res = gst_matroska_demux_parse_metadata (demux, FALSE);
- } else
- res = gst_ebml_read_skip (ebml);
- break;
+ /* metadata */
+ case GST_MATROSKA_ID_TAGS:{
+ if (!demux->index_parsed) {
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+ res = gst_matroska_demux_parse_metadata (demux, FALSE);
+ } else
+ res = gst_ebml_read_skip (ebml);
+ break;
}
- /* file index (if seekable, seek to Cues/Tags to parse it) */
- case GST_MATROSKA_ID_SEEKHEAD: {
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
- res = gst_matroska_demux_parse_contents (demux);
- break;
+ /* file index (if seekable, seek to Cues/Tags to parse it) */
+ case GST_MATROSKA_ID_SEEKHEAD:{
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+ res = gst_matroska_demux_parse_contents (demux);
+ break;
}
- case GST_MATROSKA_ID_CLUSTER: {
- if (!gst_ebml_read_master (ebml, &id)) {
- res = FALSE;
- break;
- }
- /* The idea is that we parse one cluster per loop and
- * then break out of the loop here. In the next call
- * of the loopfunc, we will get back here with the
- * next cluster. If an error occurs, we didn't
- * actually push a buffer, but we still want to break
- * out of the loop to handle a possible error. We'll
- * get back here if it's recoverable. */
- gst_matroska_demux_parse_cluster (demux);
- demux->state = GST_MATROSKA_DEMUX_STATE_DATA;
- res = FALSE;
- break;
+ case GST_MATROSKA_ID_CLUSTER:{
+ if (!gst_ebml_read_master (ebml, &id)) {
+ res = FALSE;
+ break;
+ }
+ /* The idea is that we parse one cluster per loop and
+ * then break out of the loop here. In the next call
+ * of the loopfunc, we will get back here with the
+ * next cluster. If an error occurs, we didn't
+ * actually push a buffer, but we still want to break
+ * out of the loop to handle a possible error. We'll
+ * get back here if it's recoverable. */
+ gst_matroska_demux_parse_cluster (demux);
+ demux->state = GST_MATROSKA_DEMUX_STATE_DATA;
+ res = FALSE;
+ break;
}
default:
- GST_WARNING ("Unknown matroska file header ID 0x%x", id);
- /* fall-through */
+ GST_WARNING ("Unknown matroska file header ID 0x%x", id);
+ /* fall-through */
case GST_EBML_ID_VOID:
- if (!gst_ebml_read_skip (ebml))
- res = FALSE;
- break;
+ if (!gst_ebml_read_skip (ebml))
+ res = FALSE;
+ break;
}
if (demux->level_up) {
@@ -2149,7 +2157,7 @@ gst_matroska_demux_loop_stream (GstMatroskaDemux *demux)
}
static void
-gst_matroska_demux_loop (GstElement *element)
+gst_matroska_demux_loop (GstElement * element)
{
GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (element);
@@ -2165,14 +2173,10 @@ gst_matroska_demux_loop (GstElement *element)
}
static GstCaps *
-gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext *videocontext,
- const gchar *codec_id,
- gpointer data,
- guint size,
- GstMatroskaDemux *demux)
+gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext * videocontext,
+ const gchar * codec_id, gpointer data, guint size, GstMatroskaDemux * demux)
{
- GstMatroskaTrackContext *context =
- (GstMatroskaTrackContext *) videocontext;
+ GstMatroskaTrackContext *context = (GstMatroskaTrackContext *) videocontext;
GstCaps *caps = NULL;
if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_VFW_FOURCC)) {
@@ -2181,39 +2185,42 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext *videocontext,
if (data) {
char *codec_name = NULL;
GstTagList *list = gst_tag_list_new ();
-
+
vids = (gst_riff_strf_vids *) data;
/* assure size is big enough */
if (size < 24) {
- GST_WARNING ("Too small BITMAPINFOHEADER (%d bytes)", size);
- return NULL;
+ GST_WARNING ("Too small BITMAPINFOHEADER (%d bytes)", size);
+ return NULL;
}
if (size < sizeof (gst_riff_strf_vids)) {
- vids = (gst_riff_strf_vids *) g_realloc (vids, sizeof (gst_riff_strf_vids));
+ vids =
+ (gst_riff_strf_vids *) g_realloc (vids,
+ sizeof (gst_riff_strf_vids));
}
/* little-endian -> byte-order */
- vids->size = GUINT32_FROM_LE (vids->size);
- vids->width = GUINT32_FROM_LE (vids->width);
- vids->height = GUINT32_FROM_LE (vids->height);
- vids->planes = GUINT16_FROM_LE (vids->planes);
- vids->bit_cnt = GUINT16_FROM_LE (vids->bit_cnt);
+ vids->size = GUINT32_FROM_LE (vids->size);
+ vids->width = GUINT32_FROM_LE (vids->width);
+ vids->height = GUINT32_FROM_LE (vids->height);
+ vids->planes = GUINT16_FROM_LE (vids->planes);
+ vids->bit_cnt = GUINT16_FROM_LE (vids->bit_cnt);
vids->compression = GUINT32_FROM_LE (vids->compression);
- vids->image_size = GUINT32_FROM_LE (vids->image_size);
+ vids->image_size = GUINT32_FROM_LE (vids->image_size);
vids->xpels_meter = GUINT32_FROM_LE (vids->xpels_meter);
vids->ypels_meter = GUINT32_FROM_LE (vids->ypels_meter);
- vids->num_colors = GUINT32_FROM_LE (vids->num_colors);
- vids->imp_colors = GUINT32_FROM_LE (vids->imp_colors);
+ vids->num_colors = GUINT32_FROM_LE (vids->num_colors);
+ vids->imp_colors = GUINT32_FROM_LE (vids->imp_colors);
caps = gst_riff_create_video_caps (vids->compression, NULL, vids,
- &codec_name);
+ &codec_name);
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
- codec_name, NULL);
+ codec_name, NULL);
if (GST_IS_ELEMENT (demux))
- gst_element_found_tags (GST_ELEMENT (demux), list);
+ gst_element_found_tags (GST_ELEMENT (demux), list);
gst_tag_list_free (list);
- if (codec_name) g_free (codec_name);
+ if (codec_name)
+ g_free (codec_name);
} else {
caps = gst_riff_create_video_template_caps ();
}
@@ -2223,15 +2230,15 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext *videocontext,
guint32 fourcc = 0;
switch (videocontext->fourcc) {
- case GST_MAKE_FOURCC ('I','4','2','0'):
- case GST_MAKE_FOURCC ('Y','U','Y','2'):
- fourcc = videocontext->fourcc;
- break;
-
- default:
- GST_DEBUG ("Unknown fourcc " GST_FOURCC_FORMAT,
- GST_FOURCC_ARGS (videocontext->fourcc));
- return NULL;
+ case GST_MAKE_FOURCC ('I', '4', '2', '0'):
+ case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
+ fourcc = videocontext->fourcc;
+ break;
+
+ default:
+ GST_DEBUG ("Unknown fourcc " GST_FOURCC_FORMAT,
+ GST_FOURCC_ARGS (videocontext->fourcc));
+ return NULL;
}
caps = gst_caps_new_simple ("video/x-raw-yuv",
@@ -2244,24 +2251,20 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext *videocontext,
caps = gst_caps_new_simple ("video/x-divx",
"divxversion", G_TYPE_INT, 4, NULL);
} else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_ASP) ||
- !strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_AP)) {
- caps = gst_caps_new_full (
- gst_structure_new ("video/x-divx",
- "divxversion", G_TYPE_INT, 5, NULL),
+ !strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_AP)) {
+ caps = gst_caps_new_full (gst_structure_new ("video/x-divx",
+ "divxversion", G_TYPE_INT, 5, NULL),
gst_structure_new ("video/x-xvid", NULL),
gst_structure_new ("video/mpeg",
- "mpegversion", G_TYPE_INT, 4,
- "systemstream", G_TYPE_BOOLEAN, FALSE, NULL),
- NULL);
+ "mpegversion", G_TYPE_INT, 4,
+ "systemstream", G_TYPE_BOOLEAN, FALSE, NULL), NULL);
} else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MSMPEG4V3)) {
- caps = gst_caps_new_full (
- gst_structure_new ("video/x-divx",
- "divxversion", G_TYPE_INT, 3, NULL),
+ caps = gst_caps_new_full (gst_structure_new ("video/x-divx",
+ "divxversion", G_TYPE_INT, 3, NULL),
gst_structure_new ("video/x-msmpeg",
- "msmpegversion", G_TYPE_INT, 43, NULL),
- NULL);
+ "msmpegversion", G_TYPE_INT, 43, NULL), NULL);
} else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MPEG1) ||
- !strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MPEG2)) {
+ !strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MPEG2)) {
gint mpegversion = -1;
if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MPEG1))
@@ -2273,12 +2276,11 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext *videocontext,
caps = gst_caps_new_simple ("video/mpeg",
"systemstream", G_TYPE_BOOLEAN, FALSE,
- "mpegversion", G_TYPE_INT, mpegversion, NULL);
+ "mpegversion", G_TYPE_INT, mpegversion, NULL);
} else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MJPEG)) {
caps = gst_caps_new_simple ("video/x-jpeg", NULL);
} else {
- GST_WARNING ("Unknown codec '%s', cannot build Caps",
- codec_id);
+ GST_WARNING ("Unknown codec '%s', cannot build Caps", codec_id);
return NULL;
}
@@ -2286,54 +2288,49 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext *videocontext,
int i;
GstStructure *structure;
- for (i=0;i<gst_caps_get_size(caps);i++){
+ for (i = 0; i < gst_caps_get_size (caps); i++) {
structure = gst_caps_get_structure (caps, i);
if (videocontext != NULL) {
- if (videocontext->pixel_width > 0 &&
- videocontext->pixel_height > 0) {
- gint w = videocontext->pixel_width;
- gint h = videocontext->pixel_height;
+ if (videocontext->pixel_width > 0 && videocontext->pixel_height > 0) {
+ gint w = videocontext->pixel_width;
+ gint h = videocontext->pixel_height;
gst_structure_set (structure,
- "width", G_TYPE_INT, w,
- "height", G_TYPE_INT, h, NULL);
- } else {
+ "width", G_TYPE_INT, w, "height", G_TYPE_INT, h, NULL);
+ } else {
gst_structure_set (structure,
"width", GST_TYPE_INT_RANGE, 16, 4096,
- "height", GST_TYPE_INT_RANGE, 16, 4096,
- NULL);
- }
+ "height", GST_TYPE_INT_RANGE, 16, 4096, NULL);
+ }
#if 0
- if (videocontext->display_width > 0 &&
- videocontext->display_height > 0) {
- gint w = 100 * videocontext->display_width / videocontext->pixel_width;
- gint h = 100 * videocontext->display_height / videocontext->pixel_height;
+ if (videocontext->display_width > 0 && videocontext->display_height > 0) {
+ gint w =
+ 100 * videocontext->display_width / videocontext->pixel_width;
+ gint h =
+ 100 * videocontext->display_height / videocontext->pixel_height;
gst_structure_set (structure,
"pixel_width", G_TYPE_INT, w,
- "pixel_height", G_TYPE_INT, h,
- NULL);
- }
+ "pixel_height", G_TYPE_INT, h, NULL);
+ }
#endif
- if (context->default_duration > 0) {
- gfloat framerate = 1. * GST_SECOND / context->default_duration;
+ if (context->default_duration > 0) {
+ gfloat framerate = 1. * GST_SECOND / context->default_duration;
gst_structure_set (structure,
"framerate", G_TYPE_DOUBLE, framerate, NULL);
- } else {
- /* sort of a hack to get most codecs to support,
+ } else {
+ /* sort of a hack to get most codecs to support,
* even if the default_duration is missing */
- gst_structure_set (structure,
- "framerate", G_TYPE_DOUBLE, 25.0, NULL);
- }
+ gst_structure_set (structure, "framerate", G_TYPE_DOUBLE, 25.0, NULL);
+ }
} else {
gst_structure_set (structure,
"width", GST_TYPE_INT_RANGE, 16, 4096,
"height", GST_TYPE_INT_RANGE, 16, 4096,
"pixel_width", GST_TYPE_INT_RANGE, 0, 255,
"pixel_height", GST_TYPE_INT_RANGE, 0, 255,
- "framerate", GST_TYPE_DOUBLE_RANGE, 0.0, G_MAXDOUBLE,
- NULL);
+ "framerate", GST_TYPE_DOUBLE_RANGE, 0.0, G_MAXDOUBLE, NULL);
}
}
}
@@ -2342,14 +2339,10 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext *videocontext,
}
static GstCaps *
-gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext *audiocontext,
- const gchar *codec_id,
- gpointer data,
- guint size,
- GstMatroskaDemux *demux)
+gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext * audiocontext,
+ const gchar * codec_id, gpointer data, guint size, GstMatroskaDemux * demux)
{
- GstMatroskaTrackContext *context =
- (GstMatroskaTrackContext *) audiocontext;
+ GstMatroskaTrackContext *context = (GstMatroskaTrackContext *) audiocontext;
GstCaps *caps = NULL;
if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L1) ||
@@ -2367,10 +2360,9 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext *audiocontext,
g_assert (0);
caps = gst_caps_new_simple ("audio/mpeg",
- "mpegversion", G_TYPE_INT, 1,
- "layer", G_TYPE_INT, layer, NULL);
+ "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, layer, NULL);
} else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_BE) ||
- !strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_LE)) {
+ !strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_LE)) {
gint endianness = -1;
if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_BE))
@@ -2388,8 +2380,7 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext *audiocontext,
} else {
caps = gst_caps_from_string ("audio/x-raw-int, "
"signed = (boolean) { TRUE, FALSE }, "
- "depth = (int) { 8, 16 }, "
- "width = (int) { 8, 16 }");
+ "depth = (int) { 8, 16 }, " "width = (int) { 8, 16 }");
}
gst_caps_set_simple (caps, "endianness", G_TYPE_INT, endianness, NULL);
} else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_PCM_FLOAT)) {
@@ -2400,11 +2391,10 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext *audiocontext,
gst_caps_set_simple (caps,
"width", G_TYPE_INT, audiocontext->bitdepth, NULL);
} else {
- gst_caps_set_simple (caps,
- "width", GST_TYPE_INT_RANGE, 32, 64, NULL);
+ gst_caps_set_simple (caps, "width", GST_TYPE_INT_RANGE, 32, 64, NULL);
}
} else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_AC3) ||
- !strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_DTS)) {
+ !strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_DTS)) {
caps = gst_caps_new_simple ("audio/x-ac3", NULL);
} else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_VORBIS)) {
caps = gst_caps_new_simple ("audio/x-vorbis", NULL);
@@ -2414,47 +2404,47 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext *audiocontext,
if (data) {
char *codec_name = NULL;
GstTagList *list = gst_tag_list_new ();
-
+
auds = (gst_riff_strf_auds *) data;
/* little-endian -> byte-order */
- auds->format = GUINT16_FROM_LE (auds->format);
- auds->channels = GUINT16_FROM_LE (auds->channels);
- auds->rate = GUINT32_FROM_LE (auds->rate);
- auds->av_bps = GUINT32_FROM_LE (auds->av_bps);
+ auds->format = GUINT16_FROM_LE (auds->format);
+ auds->channels = GUINT16_FROM_LE (auds->channels);
+ auds->rate = GUINT32_FROM_LE (auds->rate);
+ auds->av_bps = GUINT32_FROM_LE (auds->av_bps);
auds->blockalign = GUINT16_FROM_LE (auds->blockalign);
- auds->size = GUINT16_FROM_LE (auds->size);
+ auds->size = GUINT16_FROM_LE (auds->size);
caps = gst_riff_create_audio_caps (auds->format, NULL, auds, &codec_name);
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_AUDIO_CODEC,
- codec_name, NULL);
+ codec_name, NULL);
if (GST_IS_ELEMENT (demux))
- gst_element_found_tags (GST_ELEMENT (demux), list);
+ gst_element_found_tags (GST_ELEMENT (demux), list);
gst_tag_list_free (list);
- if (codec_name) g_free (codec_name);
+ if (codec_name)
+ g_free (codec_name);
} else {
caps = gst_riff_create_audio_template_caps ();
}
} else if (!strncmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_MPEG2,
- strlen (GST_MATROSKA_CODEC_ID_AUDIO_MPEG2)) ||
- !strncmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_MPEG4,
- strlen (GST_MATROSKA_CODEC_ID_AUDIO_MPEG4))) {
+ strlen (GST_MATROSKA_CODEC_ID_AUDIO_MPEG2)) ||
+ !strncmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_MPEG4,
+ strlen (GST_MATROSKA_CODEC_ID_AUDIO_MPEG4))) {
gint mpegversion = -1;
if (!strncmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_MPEG2,
- strlen (GST_MATROSKA_CODEC_ID_AUDIO_MPEG2)))
+ strlen (GST_MATROSKA_CODEC_ID_AUDIO_MPEG2)))
mpegversion = 2;
else if (!strncmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_MPEG4,
- strlen (GST_MATROSKA_CODEC_ID_AUDIO_MPEG4)))
+ strlen (GST_MATROSKA_CODEC_ID_AUDIO_MPEG4)))
mpegversion = 4;
else
g_assert (0);
caps = gst_caps_new_simple ("audio/mpeg",
- "mpegversion", G_TYPE_INT, mpegversion, NULL);
+ "mpegversion", G_TYPE_INT, mpegversion, NULL);
} else {
- GST_WARNING ("Unknown codec '%s', cannot build Caps",
- codec_id);
+ GST_WARNING ("Unknown codec '%s', cannot build Caps", codec_id);
return NULL;
}
@@ -2462,21 +2452,18 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext *audiocontext,
GstStructure *structure;
int i;
- for (i=0; i<gst_caps_get_size(caps); i++){
+ for (i = 0; i < gst_caps_get_size (caps); i++) {
structure = gst_caps_get_structure (caps, i);
if (audiocontext != NULL) {
- if (audiocontext->samplerate > 0 &&
- audiocontext->channels > 0) {
+ if (audiocontext->samplerate > 0 && audiocontext->channels > 0) {
gst_structure_set (structure,
"channels", G_TYPE_INT, audiocontext->channels,
- "rate", G_TYPE_INT, audiocontext->samplerate,
- NULL);
- }
+ "rate", G_TYPE_INT, audiocontext->samplerate, NULL);
+ }
} else {
gst_structure_set (structure,
"channels", GST_TYPE_INT_RANGE, 1, 6,
- "rate", GST_TYPE_INT_RANGE, 4000, 96000,
- NULL);
+ "rate", GST_TYPE_INT_RANGE, 4000, 96000, NULL);
}
}
}
@@ -2485,10 +2472,8 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext *audiocontext,
}
static GstCaps *
-gst_matroska_demux_complex_caps (GstMatroskaTrackComplexContext *complexcontext,
- const gchar *codec_id,
- gpointer data,
- guint size)
+gst_matroska_demux_complex_caps (GstMatroskaTrackComplexContext *
+ complexcontext, const gchar * codec_id, gpointer data, guint size)
{
GstCaps *caps = NULL;
@@ -2498,10 +2483,8 @@ gst_matroska_demux_complex_caps (GstMatroskaTrackComplexContext *complexcontext,
}
static GstCaps *
-gst_matroska_demux_subtitle_caps (GstMatroskaTrackSubtitleContext *subtitlecontext,
- const gchar *codec_id,
- gpointer data,
- guint size)
+gst_matroska_demux_subtitle_caps (GstMatroskaTrackSubtitleContext *
+ subtitlecontext, const gchar * codec_id, gpointer data, guint size)
{
GstCaps *caps = NULL;
@@ -2511,7 +2494,7 @@ gst_matroska_demux_subtitle_caps (GstMatroskaTrackSubtitleContext *subtitleconte
}
static GstElementStateReturn
-gst_matroska_demux_change_state (GstElement *element)
+gst_matroska_demux_change_state (GstElement * element)
{
GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (element);
@@ -2530,10 +2513,8 @@ gst_matroska_demux_change_state (GstElement *element)
}
static void
-gst_matroska_demux_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+gst_matroska_demux_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
{
GstMatroskaDemux *demux;
@@ -2554,7 +2535,7 @@ gst_matroska_demux_get_property (GObject *object,
}
gboolean
-gst_matroska_demux_plugin_init (GstPlugin *plugin)
+gst_matroska_demux_plugin_init (GstPlugin * plugin)
{
gint i;
GstCaps *videosrccaps, *audiosrccaps, *subtitlesrccaps, *temp;
@@ -2572,30 +2553,25 @@ gst_matroska_demux_plugin_init (GstPlugin *plugin)
NULL,
}, *audio_id[] = {
GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L1,
- GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L2,
- GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L3,
- GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_BE,
- GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_LE,
- GST_MATROSKA_CODEC_ID_AUDIO_PCM_FLOAT,
- GST_MATROSKA_CODEC_ID_AUDIO_AC3,
- GST_MATROSKA_CODEC_ID_AUDIO_ACM,
- GST_MATROSKA_CODEC_ID_AUDIO_VORBIS,
- GST_MATROSKA_CODEC_ID_AUDIO_MPEG2,
- GST_MATROSKA_CODEC_ID_AUDIO_MPEG4,
- /* TODO: AC3-9/10, Real, Musepack, Quicktime */
+ GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L2,
+ GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L3,
+ GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_BE,
+ GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_LE,
+ GST_MATROSKA_CODEC_ID_AUDIO_PCM_FLOAT,
+ GST_MATROSKA_CODEC_ID_AUDIO_AC3,
+ GST_MATROSKA_CODEC_ID_AUDIO_ACM,
+ GST_MATROSKA_CODEC_ID_AUDIO_VORBIS,
+ GST_MATROSKA_CODEC_ID_AUDIO_MPEG2, GST_MATROSKA_CODEC_ID_AUDIO_MPEG4,
+ /* TODO: AC3-9/10, Real, Musepack, Quicktime */
+ /* FILLME */
+ NULL,}, *complex_id[] = {
/* FILLME */
- NULL,
- }, *complex_id[] = {
- /* FILLME */
- NULL,
- }, *subtitle_id[] = {
+ NULL,}, *subtitle_id[] = {
/* FILLME */
- NULL,
- };
+ NULL,};
/* this filter needs the riff parser */
- if (!gst_library_load ("gstbytestream") ||
- !gst_library_load ("riff")) /* for fourcc stuff */
+ if (!gst_library_load ("gstbytestream") || !gst_library_load ("riff")) /* for fourcc stuff */
return FALSE;
/* video src template */
@@ -2609,9 +2585,7 @@ gst_matroska_demux_plugin_init (GstPlugin *plugin)
gst_caps_append (videosrccaps, temp);
}
videosrctempl = gst_pad_template_new ("video_%02d",
- GST_PAD_SRC,
- GST_PAD_SOMETIMES,
- videosrccaps);
+ GST_PAD_SRC, GST_PAD_SOMETIMES, videosrccaps);
audiosrccaps = gst_caps_new_empty ();
/* audio src template */
@@ -2620,9 +2594,7 @@ gst_matroska_demux_plugin_init (GstPlugin *plugin)
gst_caps_append (audiosrccaps, temp);
}
audiosrctempl = gst_pad_template_new ("audio_%02d",
- GST_PAD_SRC,
- GST_PAD_SOMETIMES,
- audiosrccaps);
+ GST_PAD_SRC, GST_PAD_SOMETIMES, audiosrccaps);
subtitlesrccaps = gst_caps_new_empty ();
/* subtitle src template */
@@ -2631,13 +2603,11 @@ gst_matroska_demux_plugin_init (GstPlugin *plugin)
gst_caps_append (subtitlesrccaps, temp);
}
subtitlesrctempl = gst_pad_template_new ("subtitle_%02d",
- GST_PAD_SRC,
- GST_PAD_SOMETIMES,
- subtitlesrccaps);
+ GST_PAD_SRC, GST_PAD_SOMETIMES, subtitlesrccaps);
/* create an elementfactory for the matroska_demux element */
if (!gst_element_register (plugin, "matroskademux",
- GST_RANK_PRIMARY, GST_TYPE_MATROSKA_DEMUX))
+ GST_RANK_PRIMARY, GST_TYPE_MATROSKA_DEMUX))
return FALSE;
return TRUE;
diff --git a/gst/matroska/matroska-demux.h b/gst/matroska/matroska-demux.h
index e393a52a..7d55a223 100644
--- a/gst/matroska/matroska-demux.h
+++ b/gst/matroska/matroska-demux.h
@@ -29,7 +29,6 @@
#include "matroska-ids.h"
G_BEGIN_DECLS
-
#define GST_TYPE_MATROSKA_DEMUX \
(gst_matroska_demux_get_type ())
#define GST_MATROSKA_DEMUX(obj) \
@@ -40,71 +39,69 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MATROSKA_DEMUX))
#define GST_IS_MATROSKA_DEMUX_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MATROSKA_DEMUX))
-
-#define GST_MATROSKA_DEMUX_MAX_STREAMS 64
-
-typedef enum {
+#define GST_MATROSKA_DEMUX_MAX_STREAMS 64
+ typedef enum
+{
GST_MATROSKA_DEMUX_STATE_START,
GST_MATROSKA_DEMUX_STATE_HEADER,
GST_MATROSKA_DEMUX_STATE_DATA
} GstMatroskaDemuxState;
-typedef struct _GstMatroskaDemuxIndex {
- guint64 pos; /* of the corresponding *cluster*! */
- guint16 track; /* reference to 'num' */
- guint64 time; /* in nanoseconds */
+typedef struct _GstMatroskaDemuxIndex
+{
+ guint64 pos; /* of the corresponding *cluster*! */
+ guint16 track; /* reference to 'num' */
+ guint64 time; /* in nanoseconds */
} GstMatroskaDemuxIndex;
-typedef struct _GstMatroskaDemux {
- GstEbmlRead parent;
+typedef struct _GstMatroskaDemux
+{
+ GstEbmlRead parent;
/* pads */
- GstPad *sinkpad;
+ GstPad *sinkpad;
GstMatroskaTrackContext *src[GST_MATROSKA_DEMUX_MAX_STREAMS];
- guint num_streams,
- num_v_streams, num_a_streams, num_t_streams;
- GstClock *clock;
+ guint num_streams, num_v_streams, num_a_streams, num_t_streams;
+ GstClock *clock;
/* metadata */
- GstCaps *metadata;
- GstCaps *streaminfo;
- gchar *muxing_app, *writing_app;
- gint64 created;
+ GstCaps *metadata;
+ GstCaps *streaminfo;
+ gchar *muxing_app, *writing_app;
+ gint64 created;
/* state */
GstMatroskaDemuxState state;
- guint level_up;
+ guint level_up;
/* did we parse metadata/cues already? */
- gboolean metadata_parsed,
- index_parsed;
+ gboolean metadata_parsed, index_parsed;
/* start-of-segment */
- guint64 segment_start;
+ guint64 segment_start;
/* a cue (index) table */
GstMatroskaIndex *index;
- guint num_indexes;
+ guint num_indexes;
/* timescale in the file */
- guint64 time_scale;
+ guint64 time_scale;
/* length, position (time, ns) */
- guint64 duration,
- pos;
+ guint64 duration, pos;
/* a possible pending seek */
- guint64 seek_pending;
+ guint64 seek_pending;
} GstMatroskaDemux;
-typedef struct _GstMatroskaDemuxClass {
+typedef struct _GstMatroskaDemuxClass
+{
GstEbmlReadClass parent;
} GstMatroskaDemuxClass;
-GType gst_matroska_demux_get_type (void);
+GType gst_matroska_demux_get_type (void);
-gboolean gst_matroska_demux_plugin_init (GstPlugin *plugin);
+gboolean gst_matroska_demux_plugin_init (GstPlugin * plugin);
G_END_DECLS
-
#endif /* __GST_MATROSKA_DEMUX_H__ */
diff --git a/gst/matroska/matroska-ids.h b/gst/matroska/matroska-ids.h
index 64f25c0f..eb4fb315 100644
--- a/gst/matroska/matroska-ids.h
+++ b/gst/matroska/matroska-ids.h
@@ -148,25 +148,28 @@
* value to what it actually means).
*/
-typedef enum {
- GST_MATROSKA_TRACK_TYPE_VIDEO = 0x1,
- GST_MATROSKA_TRACK_TYPE_AUDIO = 0x2,
- GST_MATROSKA_TRACK_TYPE_COMPLEX = 0x3,
- GST_MATROSKA_TRACK_TYPE_LOGO = 0x10,
+typedef enum
+{
+ GST_MATROSKA_TRACK_TYPE_VIDEO = 0x1,
+ GST_MATROSKA_TRACK_TYPE_AUDIO = 0x2,
+ GST_MATROSKA_TRACK_TYPE_COMPLEX = 0x3,
+ GST_MATROSKA_TRACK_TYPE_LOGO = 0x10,
GST_MATROSKA_TRACK_TYPE_SUBTITLE = 0x11,
- GST_MATROSKA_TRACK_TYPE_CONTROL = 0x20,
+ GST_MATROSKA_TRACK_TYPE_CONTROL = 0x20,
} GstMatroskaTrackType;
-typedef enum {
- GST_MATROSKA_EYE_MODE_MONO = 0x0,
+typedef enum
+{
+ GST_MATROSKA_EYE_MODE_MONO = 0x0,
GST_MATROSKA_EYE_MODE_RIGHT = 0x1,
- GST_MATROSKA_EYE_MODE_LEFT = 0x2,
- GST_MATROSKA_EYE_MODE_BOTH = 0x3,
+ GST_MATROSKA_EYE_MODE_LEFT = 0x2,
+ GST_MATROSKA_EYE_MODE_BOTH = 0x3,
} GstMatroskaEyeMode;
-typedef enum {
- GST_MATROSKA_ASPECT_RATIO_MODE_FREE = 0x0,
- GST_MATROSKA_ASPECT_RATIO_MODE_KEEP = 0x1,
+typedef enum
+{
+ GST_MATROSKA_ASPECT_RATIO_MODE_FREE = 0x0,
+ GST_MATROSKA_ASPECT_RATIO_MODE_KEEP = 0x1,
GST_MATROSKA_ASPECT_RATIO_MODE_FIXED = 0x2,
} GstMatroskaAspectRatioMode;
@@ -175,64 +178,71 @@ typedef enum {
* it's just something I use in the muxer/demuxer.
*/
-typedef enum {
- GST_MATROSKA_TRACK_ENABLED = (1<<0),
- GST_MATROSKA_TRACK_DEFAULT = (1<<1),
- GST_MATROSKA_TRACK_LACING = (1<<2),
- GST_MATROSKA_TRACK_SHIFT = (1<<16)
+typedef enum
+{
+ GST_MATROSKA_TRACK_ENABLED = (1 << 0),
+ GST_MATROSKA_TRACK_DEFAULT = (1 << 1),
+ GST_MATROSKA_TRACK_LACING = (1 << 2),
+ GST_MATROSKA_TRACK_SHIFT = (1 << 16)
} GstMatroskaTrackFlags;
-typedef enum {
- GST_MATROSKA_VIDEOTRACK_INTERLACED = (GST_MATROSKA_TRACK_SHIFT<<0)
+typedef enum
+{
+ GST_MATROSKA_VIDEOTRACK_INTERLACED = (GST_MATROSKA_TRACK_SHIFT << 0)
} GstMatroskaVideoTrackFlags;
-typedef struct _GstMatroskaTrackContext {
- GstPad *pad;
- GstCaps *caps;
- guint index;
+typedef struct _GstMatroskaTrackContext
+{
+ GstPad *pad;
+ GstCaps *caps;
+ guint index;
/* some often-used info */
- gchar *codec_id, *codec_name, *name, *language;
- gpointer codec_priv;
- guint codec_priv_size;
+ gchar *codec_id, *codec_name, *name, *language;
+ gpointer codec_priv;
+ guint codec_priv_size;
GstMatroskaTrackType type;
- guint uid, num;
+ guint uid, num;
GstMatroskaTrackFlags flags;
- guint64 default_duration;
+ guint64 default_duration;
} GstMatroskaTrackContext;
-typedef struct _GstMatroskaTrackVideoContext {
+typedef struct _GstMatroskaTrackVideoContext
+{
GstMatroskaTrackContext parent;
- guint pixel_width, pixel_height,
- display_width, display_height;
+ guint pixel_width, pixel_height, display_width, display_height;
GstMatroskaEyeMode eye_mode;
GstMatroskaAspectRatioMode asr_mode;
- guint32 fourcc;
+ guint32 fourcc;
} GstMatroskaTrackVideoContext;
-typedef struct _GstMatroskaTrackAudioContext {
+typedef struct _GstMatroskaTrackAudioContext
+{
GstMatroskaTrackContext parent;
- guint samplerate, channels, bitdepth;
+ guint samplerate, channels, bitdepth;
} GstMatroskaTrackAudioContext;
-typedef struct _GstMatroskaTrackComplexContext {
+typedef struct _GstMatroskaTrackComplexContext
+{
GstMatroskaTrackContext parent;
/* nothing special goes here, apparently */
} GstMatroskaTrackComplexContext;
-typedef struct _GstMatroskaTrackSubtitleContext {
+typedef struct _GstMatroskaTrackSubtitleContext
+{
GstMatroskaTrackContext parent;
/* or here... */
} GstMatroskaTrackSubtitleContext;
-typedef struct _GstMatroskaIndex {
- guint64 pos; /* of the corresponding *cluster*! */
- guint16 track; /* reference to 'num' */
- guint64 time; /* in nanoseconds */
+typedef struct _GstMatroskaIndex
+{
+ guint64 pos; /* of the corresponding *cluster*! */
+ guint16 track; /* reference to 'num' */
+ guint64 time; /* in nanoseconds */
} GstMatroskaIndex;
#endif /* __GST_MATROSKA_IDS_H__ */
diff --git a/gst/matroska/matroska-mux.c b/gst/matroska/matroska-mux.c
index a80be303..ebaff887 100644
--- a/gst/matroska/matroska-mux.c
+++ b/gst/matroska/matroska-mux.c
@@ -29,24 +29,24 @@
#include "matroska-mux.h"
#include "matroska-ids.h"
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_METADATA,
/* FILL ME */
};
-static GstStaticPadTemplate src_templ =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("video/x-matroska")
-);
+static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("video/x-matroska")
+ );
#define COMMON_VIDEO_CAPS \
"width = (int) [ 16, 4096 ], " \
@@ -54,28 +54,24 @@ GST_STATIC_PAD_TEMPLATE (
"framerate = (double) [ 0, MAX ]"
static GstStaticPadTemplate videosink_templ =
-GST_STATIC_PAD_TEMPLATE (
- "video_%d",
- GST_PAD_SINK,
- GST_PAD_REQUEST,
- GST_STATIC_CAPS (
- "video/mpeg, "
- "mpegversion = (int) { 1, 2, 4 }, "
- "systemstream = (boolean) false, "
- COMMON_VIDEO_CAPS "; "
- "video/x-divx, "
- COMMON_VIDEO_CAPS "; "
- "video/x-xvid, "
- COMMON_VIDEO_CAPS "; "
- "video/x-msmpeg, "
- COMMON_VIDEO_CAPS "; "
- "video/x-jpeg, "
- COMMON_VIDEO_CAPS "; "
- "video/x-raw-yuv, "
- "format = (fourcc) { YUY2, I420 }, "
- COMMON_VIDEO_CAPS
- )
-);
+ GST_STATIC_PAD_TEMPLATE ("video_%d",
+ GST_PAD_SINK,
+ GST_PAD_REQUEST,
+ GST_STATIC_CAPS ("video/mpeg, "
+ "mpegversion = (int) { 1, 2, 4 }, "
+ "systemstream = (boolean) false, "
+ COMMON_VIDEO_CAPS "; "
+ "video/x-divx, "
+ COMMON_VIDEO_CAPS "; "
+ "video/x-xvid, "
+ COMMON_VIDEO_CAPS "; "
+ "video/x-msmpeg, "
+ COMMON_VIDEO_CAPS "; "
+ "video/x-jpeg, "
+ COMMON_VIDEO_CAPS "; "
+ "video/x-raw-yuv, "
+ "format = (fourcc) { YUY2, I420 }, " COMMON_VIDEO_CAPS)
+ );
#define COMMON_AUDIO_CAPS \
"channels = (int) [ 1, 8 ], " \
@@ -86,78 +82,68 @@ GST_STATIC_PAD_TEMPLATE (
* * audio/x-vorbis: private data setup needs work.
*/
static GstStaticPadTemplate audiosink_templ =
-GST_STATIC_PAD_TEMPLATE (
- "audio_%d",
- GST_PAD_SINK,
- GST_PAD_REQUEST,
- GST_STATIC_CAPS (
- "audio/mpeg, "
- "mpegversion = (int) 1, "
- "layer = (int) [ 1, 3 ], "
- COMMON_AUDIO_CAPS "; "
- "audio/mpeg, "
- "mpegversion = (int) { 2, 4 }, "
- COMMON_AUDIO_CAPS "; "
- "audio/x-ac3, "
- COMMON_AUDIO_CAPS "; "
- "audio/x-raw-int, "
- "width = (int) { 8, 16, 24 }, "
- "depth = (int) { 8, 16, 24 }, "
- "endianness = (int) { BIG_ENDIAN, LITTLE_ENDIAN }, "
- "signed = (boolean) { true, false }, "
- COMMON_AUDIO_CAPS
- )
-);
+ GST_STATIC_PAD_TEMPLATE ("audio_%d",
+ GST_PAD_SINK,
+ GST_PAD_REQUEST,
+ GST_STATIC_CAPS ("audio/mpeg, "
+ "mpegversion = (int) 1, "
+ "layer = (int) [ 1, 3 ], "
+ COMMON_AUDIO_CAPS "; "
+ "audio/mpeg, "
+ "mpegversion = (int) { 2, 4 }, "
+ COMMON_AUDIO_CAPS "; "
+ "audio/x-ac3, "
+ COMMON_AUDIO_CAPS "; "
+ "audio/x-raw-int, "
+ "width = (int) { 8, 16, 24 }, "
+ "depth = (int) { 8, 16, 24 }, "
+ "endianness = (int) { BIG_ENDIAN, LITTLE_ENDIAN }, "
+ "signed = (boolean) { true, false }, " COMMON_AUDIO_CAPS)
+ );
static GstStaticPadTemplate subtitlesink_templ =
-GST_STATIC_PAD_TEMPLATE (
- "subtitle_%d",
- GST_PAD_SINK,
- GST_PAD_REQUEST,
- GST_STATIC_CAPS_ANY
-);
+GST_STATIC_PAD_TEMPLATE ("subtitle_%d",
+ GST_PAD_SINK,
+ GST_PAD_REQUEST,
+ GST_STATIC_CAPS_ANY);
/* gobject magic foo */
-static void gst_matroska_mux_base_init (GstMatroskaMuxClass *klass);
-static void gst_matroska_mux_class_init (GstMatroskaMuxClass *klass);
-static void gst_matroska_mux_init (GstMatroskaMux *mux);
+static void gst_matroska_mux_base_init (GstMatroskaMuxClass * klass);
+static void gst_matroska_mux_class_init (GstMatroskaMuxClass * klass);
+static void gst_matroska_mux_init (GstMatroskaMux * mux);
/* element functions */
-static void gst_matroska_mux_loop (GstElement *element);
+static void gst_matroska_mux_loop (GstElement * element);
/* pad functions */
-static GstPad * gst_matroska_mux_request_new_pad (GstElement *element,
- GstPadTemplate *templ,
- const gchar *name);
+static GstPad *gst_matroska_mux_request_new_pad (GstElement * element,
+ GstPadTemplate * templ, const gchar * name);
/* gst internal change state handler */
static GstElementStateReturn
- gst_matroska_mux_change_state (GstElement *element);
+gst_matroska_mux_change_state (GstElement * element);
/* gobject bla bla */
-static void gst_matroska_mux_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_matroska_mux_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
+static void gst_matroska_mux_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_matroska_mux_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
/* reset muxer */
-static void gst_matroska_mux_reset (GstElement *element);
+static void gst_matroska_mux_reset (GstElement * element);
static GstEbmlWriteClass *parent_class = NULL;
+
/*static guint gst_matroska_mux_signals[LAST_SIGNAL] = { 0 };*/
GType
-gst_matroska_mux_get_type (void)
+gst_matroska_mux_get_type (void)
{
static GType gst_matroska_mux_type = 0;
if (!gst_matroska_mux_type) {
static const GTypeInfo gst_matroska_mux_info = {
- sizeof (GstMatroskaMuxClass),
+ sizeof (GstMatroskaMuxClass),
(GBaseInitFunc) gst_matroska_mux_base_init,
NULL,
(GClassInitFunc) gst_matroska_mux_class_init,
@@ -170,15 +156,14 @@ gst_matroska_mux_get_type (void)
gst_matroska_mux_type =
g_type_register_static (GST_TYPE_EBML_WRITE,
- "GstMatroskaMmux",
- &gst_matroska_mux_info, 0);
+ "GstMatroskaMmux", &gst_matroska_mux_info, 0);
}
return gst_matroska_mux_type;
}
static void
-gst_matroska_mux_base_init (GstMatroskaMuxClass *klass)
+gst_matroska_mux_base_init (GstMatroskaMuxClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
static GstElementDetails gst_matroska_mux_details = {
@@ -189,19 +174,18 @@ gst_matroska_mux_base_init (GstMatroskaMuxClass *klass)
};
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&videosink_templ));
+ gst_static_pad_template_get (&videosink_templ));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&audiosink_templ));
+ gst_static_pad_template_get (&audiosink_templ));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&subtitlesink_templ));
+ gst_static_pad_template_get (&subtitlesink_templ));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_templ));
- gst_element_class_set_details (element_class,
- &gst_matroska_mux_details);
+ gst_static_pad_template_get (&src_templ));
+ gst_element_class_set_details (element_class, &gst_matroska_mux_details);
}
static void
-gst_matroska_mux_class_init (GstMatroskaMuxClass *klass)
+gst_matroska_mux_class_init (GstMatroskaMuxClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
@@ -210,8 +194,8 @@ gst_matroska_mux_class_init (GstMatroskaMuxClass *klass)
gstelement_class = (GstElementClass *) klass;
g_object_class_install_property (gobject_class, ARG_METADATA,
- g_param_spec_boxed ("metadata", "Metadata", "Metadata",
- GST_TYPE_CAPS, G_PARAM_READWRITE));
+ g_param_spec_boxed ("metadata", "Metadata", "Metadata",
+ GST_TYPE_CAPS, G_PARAM_READWRITE));
parent_class = g_type_class_ref (GST_TYPE_EBML_WRITE);
@@ -222,19 +206,19 @@ gst_matroska_mux_class_init (GstMatroskaMuxClass *klass)
gstelement_class->request_new_pad = gst_matroska_mux_request_new_pad;
}
-static void
-gst_matroska_mux_init (GstMatroskaMux *mux)
+static void
+gst_matroska_mux_init (GstMatroskaMux * mux)
{
GstElementClass *klass = GST_ELEMENT_GET_CLASS (mux);
gint i;
- mux->srcpad = gst_pad_new_from_template (
- gst_element_class_get_pad_template (klass, "src"), "src");
+ mux->srcpad =
+ gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
+ "src"), "src");
gst_element_add_pad (GST_ELEMENT (mux), mux->srcpad);
GST_EBML_WRITE (mux)->srcpad = mux->srcpad;
- gst_element_set_loop_function (GST_ELEMENT (mux),
- gst_matroska_mux_loop);
+ gst_element_set_loop_function (GST_ELEMENT (mux), gst_matroska_mux_loop);
/* initial stream no. */
for (i = 0; i < GST_MATROSKA_MUX_MAX_STREAMS; i++) {
@@ -248,7 +232,7 @@ gst_matroska_mux_init (GstMatroskaMux *mux)
}
static void
-gst_matroska_mux_reset (GstElement *element)
+gst_matroska_mux_reset (GstElement * element)
{
GstMatroskaMux *mux = GST_MATROSKA_MUX (element);
guint i;
@@ -260,7 +244,7 @@ gst_matroska_mux_reset (GstElement *element)
for (i = 0; i < GST_MATROSKA_MUX_MAX_STREAMS; i++) {
if (mux->sink[i].track != NULL) {
if (mux->sink[i].track->pad != NULL) {
- gst_element_remove_pad (GST_ELEMENT (mux), mux->sink[i].track->pad);
+ gst_element_remove_pad (GST_ELEMENT (mux), mux->sink[i].track->pad);
}
g_free (mux->sink[i].track->codec_id);
g_free (mux->sink[i].track->codec_name);
@@ -284,8 +268,7 @@ gst_matroska_mux_reset (GstElement *element)
/* reset media info (to default) */
gst_caps_replace (&mux->metadata,
gst_caps_new_simple ("application/x-gst-metadata",
- "application", G_TYPE_STRING, "",
- "date", G_TYPE_STRING, "", NULL));
+ "application", G_TYPE_STRING, "", "date", G_TYPE_STRING, "", NULL));
/* reset indexes */
mux->num_indexes = 0;
@@ -298,7 +281,7 @@ gst_matroska_mux_reset (GstElement *element)
}
static GstPadLinkReturn
-gst_matroska_mux_video_pad_link (GstPad *pad, const GstCaps *caps)
+gst_matroska_mux_video_pad_link (GstPad * pad, const GstCaps * caps)
{
GstMatroskaTrackContext *context = NULL;
GstMatroskaTrackVideoContext *videocontext;
@@ -312,7 +295,7 @@ gst_matroska_mux_video_pad_link (GstPad *pad, const GstCaps *caps)
/* find context */
for (i = 0; i < mux->num_streams; i++) {
if (mux->sink[i].track && mux->sink[i].track->pad &&
- mux->sink[i].track->pad == pad) {
+ mux->sink[i].track->pad == pad) {
context = mux->sink[i].track;
break;
}
@@ -373,14 +356,14 @@ gst_matroska_mux_video_pad_link (GstPad *pad, const GstCaps *caps)
gst_structure_get_int (structure, "divxversion", &divxversion);
switch (divxversion) {
case 3:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MSMPEG4V3);
- break;
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MSMPEG4V3);
+ break;
case 4:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_SP);
- break;
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_SP);
+ break;
case 5:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_ASP);
- break;
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_ASP);
+ break;
}
return GST_PAD_LINK_OK;
@@ -394,14 +377,14 @@ gst_matroska_mux_video_pad_link (GstPad *pad, const GstCaps *caps)
gst_structure_get_int (structure, "mpegversion", &mpegversion);
switch (mpegversion) {
case 1:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG1);
- break;
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG1);
+ break;
case 2:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG2);
- break;
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG2);
+ break;
case 3:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_ASP);
- break;
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_ASP);
+ break;
}
return GST_PAD_LINK_OK;
@@ -415,8 +398,7 @@ gst_matroska_mux_video_pad_link (GstPad *pad, const GstCaps *caps)
}
static GstPadLinkReturn
-gst_matroska_mux_audio_pad_link (GstPad *pad,
- const GstCaps *caps)
+gst_matroska_mux_audio_pad_link (GstPad * pad, const GstCaps * caps)
{
GstMatroskaTrackContext *context = NULL;
GstMatroskaTrackAudioContext *audiocontext;
@@ -428,7 +410,7 @@ gst_matroska_mux_audio_pad_link (GstPad *pad,
/* find context */
for (i = 0; i < mux->num_streams; i++) {
if (mux->sink[i].track && mux->sink[i].track->pad &&
- mux->sink[i].track->pad == pad) {
+ mux->sink[i].track->pad == pad) {
context = mux->sink[i].track;
break;
}
@@ -453,31 +435,29 @@ gst_matroska_mux_audio_pad_link (GstPad *pad,
gst_structure_get_int (structure, "mpegversion", &mpegversion);
switch (mpegversion) {
- case 1: {
- gint layer;
-
- gst_structure_get_int (structure, "layer", &layer);
- switch (layer) {
- case 1:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L1);
- break;
- case 2:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L2);
- break;
- case 3:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L3);
- break;
- }
- break;
+ case 1:{
+ gint layer;
+
+ gst_structure_get_int (structure, "layer", &layer);
+ switch (layer) {
+ case 1:
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L1);
+ break;
+ case 2:
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L2);
+ break;
+ case 3:
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L3);
+ break;
+ }
+ break;
}
case 2:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG2
- "MAIN");
- break;
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG2 "MAIN");
+ break;
case 4:
- context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG4
- "MAIN");
- break;
+ context->codec_id = g_strdup (GST_MATROSKA_CODEC_ID_AUDIO_MPEG4 "MAIN");
+ break;
}
return GST_PAD_LINK_OK;
@@ -490,7 +470,7 @@ gst_matroska_mux_audio_pad_link (GstPad *pad,
gst_structure_get_int (structure, "depth", &depth);
gst_structure_get_int (structure, "signed", &signedness);
if (width != depth ||
- (width == 8 && signedness) || (width == 16 && !signedness))
+ (width == 8 && signedness) || (width == 16 && !signedness))
return GST_PAD_LINK_REFUSED;
audiocontext->bitdepth = depth;
@@ -514,8 +494,7 @@ gst_matroska_mux_audio_pad_link (GstPad *pad,
}
static GstPadLinkReturn
-gst_matroska_mux_subtitle_pad_link (GstPad *pad,
- const GstCaps *caps)
+gst_matroska_mux_subtitle_pad_link (GstPad * pad, const GstCaps * caps)
{
/* Consider this as boilerplate code for now. There is
* no single subtitle creation element in GStreamer,
@@ -525,9 +504,8 @@ gst_matroska_mux_subtitle_pad_link (GstPad *pad,
}
static GstPad *
-gst_matroska_mux_request_new_pad (GstElement *element,
- GstPadTemplate *templ,
- const gchar *pad_name)
+gst_matroska_mux_request_new_pad (GstElement * element,
+ GstPadTemplate * templ, const gchar * pad_name)
{
GstElementClass *klass = GST_ELEMENT_GET_CLASS (element);
GstMatroskaMux *mux = GST_MATROSKA_MUX (element);
@@ -540,21 +518,21 @@ gst_matroska_mux_request_new_pad (GstElement *element,
name = g_strdup_printf ("audio_%d", mux->num_a_streams++);
linkfunc = gst_matroska_mux_audio_pad_link;
context = (GstMatroskaTrackContext *)
- g_new0 (GstMatroskaTrackAudioContext, 1);
+ g_new0 (GstMatroskaTrackAudioContext, 1);
context->type = GST_MATROSKA_TRACK_TYPE_AUDIO;
context->name = g_strdup ("Audio");
} else if (templ == gst_element_class_get_pad_template (klass, "video_%d")) {
name = g_strdup_printf ("video_%d", mux->num_v_streams++);
linkfunc = gst_matroska_mux_video_pad_link;
context = (GstMatroskaTrackContext *)
- g_new0 (GstMatroskaTrackVideoContext, 1);
+ g_new0 (GstMatroskaTrackVideoContext, 1);
context->type = GST_MATROSKA_TRACK_TYPE_VIDEO;
context->name = g_strdup ("Video");
} else if (templ == gst_element_class_get_pad_template (klass, "subtitle_%d")) {
name = g_strdup_printf ("subtitle_%d", mux->num_t_streams++);
linkfunc = gst_matroska_mux_subtitle_pad_link;
context = (GstMatroskaTrackContext *)
- g_new0 (GstMatroskaTrackSubtitleContext, 1);
+ g_new0 (GstMatroskaTrackSubtitleContext, 1);
context->type = GST_MATROSKA_TRACK_TYPE_SUBTITLE;
context->name = g_strdup ("Subtitle");
} else {
@@ -569,15 +547,14 @@ gst_matroska_mux_request_new_pad (GstElement *element,
context->index = mux->num_streams++;
mux->sink[context->index].track = context;
context->pad = pad;
- context->flags = GST_MATROSKA_TRACK_ENABLED |
- GST_MATROSKA_TRACK_DEFAULT;
-
+ context->flags = GST_MATROSKA_TRACK_ENABLED | GST_MATROSKA_TRACK_DEFAULT;
+
return pad;
}
static void
-gst_matroska_mux_track_header (GstMatroskaMux *mux,
- GstMatroskaTrackContext *context)
+gst_matroska_mux_track_header (GstMatroskaMux * mux,
+ GstMatroskaTrackContext * context)
{
GstEbmlWrite *ebml = GST_EBML_WRITE (mux);
guint64 master;
@@ -588,53 +565,52 @@ gst_matroska_mux_track_header (GstMatroskaMux *mux,
/* type-specific stuff */
switch (context->type) {
- case GST_MATROSKA_TRACK_TYPE_VIDEO: {
+ case GST_MATROSKA_TRACK_TYPE_VIDEO:{
GstMatroskaTrackVideoContext *videocontext =
- (GstMatroskaTrackVideoContext *) context;
+ (GstMatroskaTrackVideoContext *) context;
/* framerate, but not in the video part */
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_TRACKDEFAULTDURATION,
- context->default_duration);
+ context->default_duration);
- master = gst_ebml_write_master_start (ebml,
- GST_MATROSKA_ID_TRACKVIDEO);
+ master = gst_ebml_write_master_start (ebml, GST_MATROSKA_ID_TRACKVIDEO);
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOPIXELWIDTH,
- videocontext->pixel_width);
+ videocontext->pixel_width);
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOPIXELHEIGHT,
- videocontext->pixel_height);
+ videocontext->pixel_height);
if (videocontext->display_width && videocontext->display_height) {
- gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEODISPLAYWIDTH,
- videocontext->display_width);
- gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEODISPLAYHEIGHT,
- videocontext->display_height);
+ gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEODISPLAYWIDTH,
+ videocontext->display_width);
+ gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEODISPLAYHEIGHT,
+ videocontext->display_height);
}
if (context->flags & GST_MATROSKA_VIDEOTRACK_INTERLACED)
- gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOFLAGINTERLACED, 1);
+ gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOFLAGINTERLACED, 1);
if (videocontext->fourcc) {
- guint32 fcc_le = GUINT32_TO_LE (videocontext->fourcc);
- gst_ebml_write_binary (ebml, GST_MATROSKA_ID_VIDEOCOLOURSPACE,
- (gpointer) &fcc_le, 4);
+ guint32 fcc_le = GUINT32_TO_LE (videocontext->fourcc);
+
+ gst_ebml_write_binary (ebml, GST_MATROSKA_ID_VIDEOCOLOURSPACE,
+ (gpointer) & fcc_le, 4);
}
gst_ebml_write_master_finish (ebml, master);
break;
}
- case GST_MATROSKA_TRACK_TYPE_AUDIO: {
+ case GST_MATROSKA_TRACK_TYPE_AUDIO:{
GstMatroskaTrackAudioContext *audiocontext =
- (GstMatroskaTrackAudioContext *) context;
+ (GstMatroskaTrackAudioContext *) context;
- master = gst_ebml_write_master_start (ebml,
- GST_MATROSKA_ID_TRACKAUDIO);
+ master = gst_ebml_write_master_start (ebml, GST_MATROSKA_ID_TRACKAUDIO);
if (audiocontext->samplerate != 8000)
- gst_ebml_write_float (ebml, GST_MATROSKA_ID_AUDIOSAMPLINGFREQ,
- audiocontext->samplerate);
+ gst_ebml_write_float (ebml, GST_MATROSKA_ID_AUDIOSAMPLINGFREQ,
+ audiocontext->samplerate);
if (audiocontext->channels != 1)
- gst_ebml_write_uint (ebml, GST_MATROSKA_ID_AUDIOCHANNELS,
- audiocontext->channels);
+ gst_ebml_write_uint (ebml, GST_MATROSKA_ID_AUDIOCHANNELS,
+ audiocontext->channels);
if (audiocontext->bitdepth) {
- gst_ebml_write_uint (ebml, GST_MATROSKA_ID_AUDIOBITDEPTH,
- audiocontext->bitdepth);
+ gst_ebml_write_uint (ebml, GST_MATROSKA_ID_AUDIOBITDEPTH,
+ audiocontext->bitdepth);
}
gst_ebml_write_master_finish (ebml, master);
@@ -646,31 +622,30 @@ gst_matroska_mux_track_header (GstMatroskaMux *mux,
break;
}
- gst_ebml_write_ascii (ebml, GST_MATROSKA_ID_CODECID,
- context->codec_id);
+ gst_ebml_write_ascii (ebml, GST_MATROSKA_ID_CODECID, context->codec_id);
if (context->codec_priv)
gst_ebml_write_binary (ebml, GST_MATROSKA_ID_CODECPRIVATE,
- context->codec_priv, context->codec_priv_size);
+ context->codec_priv, context->codec_priv_size);
/* FIXME: until we have a nice way of getting the codecname
* out of the caps, I'm not going to enable this. Too much
* (useless, double, boring) work... */
/*gst_ebml_write_utf8 (ebml, GST_MATROSKA_ID_CODECNAME,
- context->codec_name);*/
- gst_ebml_write_utf8 (ebml, GST_MATROSKA_ID_TRACKNAME,
- context->name);
+ context->codec_name); */
+ gst_ebml_write_utf8 (ebml, GST_MATROSKA_ID_TRACKNAME, context->name);
}
static void
-gst_matroska_mux_start (GstMatroskaMux *mux)
+gst_matroska_mux_start (GstMatroskaMux * mux)
{
GstEbmlWrite *ebml = GST_EBML_WRITE (mux);
guint32 seekhead_id[] = { GST_MATROSKA_ID_INFO,
- GST_MATROSKA_ID_TRACKS,
- GST_MATROSKA_ID_CUES,
+ GST_MATROSKA_ID_TRACKS,
+ GST_MATROSKA_ID_CUES,
#if 0
- GST_MATROSKA_ID_TAGS,
+ GST_MATROSKA_ID_TAGS,
#endif
- 0 };
+ 0
+ };
guint64 master, child;
gint i;
guint tracknum = 1;
@@ -679,7 +654,8 @@ gst_matroska_mux_start (GstMatroskaMux *mux)
gst_ebml_write_header (ebml, "matroska", 1);
/* start a segment */
- mux->segment_pos = gst_ebml_write_master_start (ebml, GST_MATROSKA_ID_SEGMENT);
+ mux->segment_pos =
+ gst_ebml_write_master_start (ebml, GST_MATROSKA_ID_SEGMENT);
mux->segment_master = ebml->pos;
/* the rest of the header is cached */
@@ -704,18 +680,18 @@ gst_matroska_mux_start (GstMatroskaMux *mux)
gst_ebml_write_float (ebml, GST_MATROSKA_ID_DURATION, 0);
gst_ebml_write_utf8 (ebml, GST_MATROSKA_ID_MUXINGAPP, "GStreamer");
if (mux->metadata &&
- gst_structure_has_field (gst_caps_get_structure(mux->metadata,0),
- "application")) {
+ gst_structure_has_field (gst_caps_get_structure (mux->metadata, 0),
+ "application")) {
const gchar *app;
- app = gst_structure_get_string (gst_caps_get_structure(mux->metadata, 0),
- "application");
+ app = gst_structure_get_string (gst_caps_get_structure (mux->metadata, 0),
+ "application");
if (app && app[0]) {
gst_ebml_write_utf8 (ebml, GST_MATROSKA_ID_WRITINGAPP, app);
}
}
/* FIXME: how do I get this? Automatic? Via tags? */
- /*gst_ebml_write_date (ebml, GST_MATROSKA_ID_DATEUTC, 0);*/
+ /*gst_ebml_write_date (ebml, GST_MATROSKA_ID_DATEUTC, 0); */
gst_ebml_write_master_finish (ebml, master);
/* tracks */
@@ -736,7 +712,7 @@ gst_matroska_mux_start (GstMatroskaMux *mux)
}
static void
-gst_matroska_mux_finish (GstMatroskaMux *mux)
+gst_matroska_mux_finish (GstMatroskaMux * mux)
{
GstEbmlWrite *ebml = GST_EBML_WRITE (mux);
guint64 pos;
@@ -754,14 +730,14 @@ gst_matroska_mux_finish (GstMatroskaMux *mux)
GstMatroskaIndex *idx = &mux->index[n];
pointentry_master = gst_ebml_write_master_start (ebml,
- GST_MATROSKA_ID_POINTENTRY);
+ GST_MATROSKA_ID_POINTENTRY);
gst_ebml_write_date (ebml, GST_MATROSKA_ID_CUETIME,
- idx->time / mux->time_scale);
+ idx->time / mux->time_scale);
trackpos_master = gst_ebml_write_master_start (ebml,
- GST_MATROSKA_ID_CUETRACKPOSITION);
+ GST_MATROSKA_ID_CUETRACKPOSITION);
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_CUETRACK, idx->track);
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_CUECLUSTERPOSITION,
- idx->pos - mux->segment_master);
+ idx->pos - mux->segment_master);
gst_ebml_write_master_finish (ebml, trackpos_master);
gst_ebml_write_master_finish (ebml, pointentry_master);
}
@@ -783,29 +759,30 @@ gst_matroska_mux_finish (GstMatroskaMux *mux)
* - all entries are local to the segment (so pos - segment_master).
* - so each entry is at 12 + 20 + num * 28. */
gst_ebml_replace_uint (ebml, mux->seekhead_pos + 32,
- mux->info_pos - mux->segment_master);
+ mux->info_pos - mux->segment_master);
gst_ebml_replace_uint (ebml, mux->seekhead_pos + 60,
- mux->tracks_pos - mux->segment_master);
+ mux->tracks_pos - mux->segment_master);
if (mux->index != NULL) {
gst_ebml_replace_uint (ebml, mux->seekhead_pos + 88,
- mux->cues_pos - mux->segment_master);
+ mux->cues_pos - mux->segment_master);
} else {
/* void'ify */
guint64 my_pos = ebml->pos;
+
gst_ebml_write_seek (ebml, mux->seekhead_pos + 68);
gst_ebml_write_buffer_header (ebml, GST_EBML_ID_VOID, 26);
gst_ebml_write_seek (ebml, my_pos);
}
#if 0
gst_ebml_replace_uint (ebml, mux->seekhead_pos + 116,
- mux->tags_pos - mux->segment_master);
+ mux->tags_pos - mux->segment_master);
#endif
/* update duration */
pos = GST_EBML_WRITE (mux)->pos;
gst_ebml_write_seek (ebml, mux->duration_pos);
gst_ebml_write_float (ebml, GST_MATROSKA_ID_DURATION,
- mux->duration / mux->time_scale);
+ mux->duration / mux->time_scale);
gst_ebml_write_seek (ebml, pos);
/* finish segment - this also writes element length */
@@ -813,30 +790,30 @@ gst_matroska_mux_finish (GstMatroskaMux *mux)
}
static gint
-gst_matroska_mux_prepare_data (GstMatroskaMux *mux)
+gst_matroska_mux_prepare_data (GstMatroskaMux * mux)
{
gint i, first = -1;
for (i = 0; i < mux->num_streams; i++) {
while (!mux->sink[i].eos && !mux->sink[i].buffer &&
- mux->sink[i].track->num > 0 &&
- GST_PAD_IS_USABLE (mux->sink[i].track->pad)) {
+ mux->sink[i].track->num > 0 &&
+ GST_PAD_IS_USABLE (mux->sink[i].track->pad)) {
GstData *data;
data = gst_pad_pull (mux->sink[i].track->pad);
if (GST_IS_EVENT (data)) {
- if (GST_EVENT_TYPE (GST_EVENT (data)) == GST_EVENT_EOS)
- mux->sink[i].eos = TRUE;
- gst_event_unref (GST_EVENT (data));
+ if (GST_EVENT_TYPE (GST_EVENT (data)) == GST_EVENT_EOS)
+ mux->sink[i].eos = TRUE;
+ gst_event_unref (GST_EVENT (data));
} else {
- mux->sink[i].buffer = GST_BUFFER (data);
+ mux->sink[i].buffer = GST_BUFFER (data);
}
}
if (mux->sink[i].buffer) {
if (first < 0 || GST_BUFFER_TIMESTAMP (mux->sink[i].buffer) <
- GST_BUFFER_TIMESTAMP (mux->sink[first].buffer))
- first = i;
+ GST_BUFFER_TIMESTAMP (mux->sink[first].buffer))
+ first = i;
}
}
@@ -844,7 +821,7 @@ gst_matroska_mux_prepare_data (GstMatroskaMux *mux)
}
static void
-gst_matroska_mux_write_data (GstMatroskaMux *mux)
+gst_matroska_mux_write_data (GstMatroskaMux * mux)
{
GstEbmlWrite *ebml = GST_EBML_WRITE (mux);
GstBuffer *buf, *hdr;
@@ -877,12 +854,12 @@ gst_matroska_mux_write_data (GstMatroskaMux *mux)
if (mux->num_indexes % 32 == 0) {
mux->index = g_renew (GstMatroskaIndex, mux->index,
- mux->num_indexes + 32);
+ mux->num_indexes + 32);
}
idx = &mux->index[mux->num_indexes++];
- idx->pos = ebml->pos;
- idx->time = GST_BUFFER_TIMESTAMP (buf);
+ idx->pos = ebml->pos;
+ idx->time = GST_BUFFER_TIMESTAMP (buf);
idx->track = mux->sink[i].track->num;
}
@@ -891,15 +868,15 @@ gst_matroska_mux_write_data (GstMatroskaMux *mux)
* FIXME: lacing, multiple frames/cluster, etc. */
cluster = gst_ebml_write_master_start (ebml, GST_MATROSKA_ID_CLUSTER);
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_CLUSTERTIMECODE,
- GST_BUFFER_TIMESTAMP (buf) / mux->time_scale);
+ GST_BUFFER_TIMESTAMP (buf) / mux->time_scale);
blockgroup = gst_ebml_write_master_start (ebml, GST_MATROSKA_ID_BLOCKGROUP);
gst_ebml_write_buffer_header (ebml, GST_MATROSKA_ID_BLOCK,
- GST_BUFFER_SIZE (buf) + 4);
+ GST_BUFFER_SIZE (buf) + 4);
hdr = gst_buffer_new_and_alloc (4);
/* track num - FIXME: what if num >= 0x80 (unlikely)? */
GST_BUFFER_DATA (hdr)[0] = mux->sink[i].track->num | 0x80;
/* time relative to clustertime - we don't use this yet */
- * (guint16 *) &GST_BUFFER_DATA (hdr)[1] = GUINT16_TO_BE (0);
+ *(guint16 *) & GST_BUFFER_DATA (hdr)[1] = GUINT16_TO_BE (0);
/* flags - no lacing (yet) */
GST_BUFFER_DATA (hdr)[3] = 0;
gst_ebml_write_buffer (ebml, hdr);
@@ -909,7 +886,7 @@ gst_matroska_mux_write_data (GstMatroskaMux *mux)
}
static void
-gst_matroska_mux_loop (GstElement *element)
+gst_matroska_mux_loop (GstElement * element)
{
GstMatroskaMux *mux = GST_MATROSKA_MUX (element);
@@ -925,7 +902,7 @@ gst_matroska_mux_loop (GstElement *element)
}
static GstElementStateReturn
-gst_matroska_mux_change_state (GstElement *element)
+gst_matroska_mux_change_state (GstElement * element)
{
GstMatroskaMux *mux = GST_MATROSKA_MUX (element);
@@ -944,10 +921,8 @@ gst_matroska_mux_change_state (GstElement *element)
}
static void
-gst_matroska_mux_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+gst_matroska_mux_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
{
GstMatroskaMux *mux;
@@ -956,8 +931,7 @@ gst_matroska_mux_set_property (GObject *object,
switch (prop_id) {
case ARG_METADATA:
- gst_caps_replace (&mux->metadata,
- g_value_get_boxed (value));
+ gst_caps_replace (&mux->metadata, g_value_get_boxed (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -966,10 +940,8 @@ gst_matroska_mux_set_property (GObject *object,
}
static void
-gst_matroska_mux_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+gst_matroska_mux_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
{
GstMatroskaMux *mux;
@@ -987,9 +959,8 @@ gst_matroska_mux_get_property (GObject *object,
}
gboolean
-gst_matroska_mux_plugin_init (GstPlugin *plugin)
+gst_matroska_mux_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "matroskamux",
- GST_RANK_NONE,
- GST_TYPE_MATROSKA_MUX);
+ GST_RANK_NONE, GST_TYPE_MATROSKA_MUX);
}
diff --git a/gst/matroska/matroska-mux.h b/gst/matroska/matroska-mux.h
index 119237c9..ab018688 100644
--- a/gst/matroska/matroska-mux.h
+++ b/gst/matroska/matroska-mux.h
@@ -28,7 +28,6 @@
#include "matroska-ids.h"
G_BEGIN_DECLS
-
#define GST_TYPE_MATROSKA_MUX \
(gst_matroska_mux_get_type ())
#define GST_MATROSKA_MUX(obj) \
@@ -39,65 +38,61 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MATROSKA_MUX))
#define GST_IS_MATROSKA_MUX_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MATROSKA_MUX))
-
#define GST_MATROSKA_MUX_MAX_STREAMS 64
-
-typedef enum {
+ typedef enum
+{
GST_MATROSKA_MUX_STATE_START,
GST_MATROSKA_MUX_STATE_HEADER,
GST_MATROSKA_MUX_STATE_DATA,
} GstMatroskaMuxState;
-typedef struct _GstMatroskaMux {
- GstEbmlWrite parent;
+typedef struct _GstMatroskaMux
+{
+ GstEbmlWrite parent;
/* pads */
- GstPad *srcpad;
- struct {
+ GstPad *srcpad;
+ struct
+ {
GstMatroskaTrackContext *track;
- GstBuffer *buffer;
- gboolean eos;
+ GstBuffer *buffer;
+ gboolean eos;
} sink[GST_MATROSKA_MUX_MAX_STREAMS];
- guint num_streams,
- num_v_streams, num_a_streams, num_t_streams;
+ guint num_streams, num_v_streams, num_a_streams, num_t_streams;
/* metadata - includes writing_app and creation_time */
- GstCaps *metadata;
+ GstCaps *metadata;
/* state */
GstMatroskaMuxState state;
/* a cue (index) table */
GstMatroskaIndex *index;
- guint num_indexes;
+ guint num_indexes;
/* timescale in the file */
- guint64 time_scale;
+ guint64 time_scale;
/* length, position (time, ns) */
- guint64 duration;
+ guint64 duration;
/* byte-positions of master-elements (for replacing contents) */
- guint64 segment_pos,
- seekhead_pos,
- cues_pos,
+ guint64 segment_pos, seekhead_pos, cues_pos,
#if 0
- tags_pos,
+ tags_pos,
#endif
- info_pos,
- tracks_pos,
- duration_pos;
- guint64 segment_master;
+ info_pos, tracks_pos, duration_pos;
+ guint64 segment_master;
} GstMatroskaMux;
-typedef struct _GstMatroskaMuxClass {
+typedef struct _GstMatroskaMuxClass
+{
GstEbmlWriteClass parent;
} GstMatroskaMuxClass;
-GType gst_matroska_mux_get_type (void);
+GType gst_matroska_mux_get_type (void);
-gboolean gst_matroska_mux_plugin_init (GstPlugin *plugin);
+gboolean gst_matroska_mux_plugin_init (GstPlugin * plugin);
G_END_DECLS
-
#endif /* __GST_MATROSKA_MUX_H__ */
diff --git a/gst/matroska/matroska.c b/gst/matroska/matroska.c
index 49657818..67b5f267 100644
--- a/gst/matroska/matroska.c
+++ b/gst/matroska/matroska.c
@@ -27,20 +27,14 @@
#include "matroska-mux.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
return (gst_matroska_demux_plugin_init (plugin) &&
- gst_matroska_mux_plugin_init (plugin));
+ gst_matroska_mux_plugin_init (plugin));
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "matroska",
- "Matroska stream handling",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "matroska",
+ "Matroska stream handling",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/median/gstmedian.c b/gst/median/gstmedian.c
index c30b8ce3..9ce8430a 100644
--- a/gst/median/gstmedian.c
+++ b/gst/median/gstmedian.c
@@ -32,49 +32,53 @@ static GstElementDetails median_details = {
"Wim Taymans <wim.taymans@chello.be>"
};
-static GstStaticPadTemplate median_src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
-);
+static GstStaticPadTemplate median_src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
static GstStaticPadTemplate median_sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
-);
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
/* Median signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_ACTIVE,
ARG_FILTERSIZE,
ARG_LUM_ONLY
};
-static GType gst_median_get_type (void);
-static void gst_median_class_init (GstMedianClass *klass);
-static void gst_median_base_init (GstMedianClass *klass);
-static void gst_median_init (GstMedian *median);
+static GType gst_median_get_type (void);
+static void gst_median_class_init (GstMedianClass * klass);
+static void gst_median_base_init (GstMedianClass * klass);
+static void gst_median_init (GstMedian * median);
-static void median_5 (unsigned char *src, unsigned char *dest, int height, int width);
-static void median_9 (unsigned char *src, unsigned char *dest, int height, int width);
-static void gst_median_chain (GstPad *pad, GstData *_data);
+static void median_5 (unsigned char *src, unsigned char *dest, int height,
+ int width);
+static void median_9 (unsigned char *src, unsigned char *dest, int height,
+ int width);
+static void gst_median_chain (GstPad * pad, GstData * _data);
-static void gst_median_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_median_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_median_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_median_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_median_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -84,60 +88,55 @@ gst_median_get_type (void)
if (!median_type) {
static const GTypeInfo median_info = {
- sizeof(GstMedianClass),
- (GBaseInitFunc)gst_median_base_init,
+ sizeof (GstMedianClass),
+ (GBaseInitFunc) gst_median_base_init,
NULL,
- (GClassInitFunc)gst_median_class_init,
+ (GClassInitFunc) gst_median_class_init,
NULL,
NULL,
- sizeof(GstMedian),
+ sizeof (GstMedian),
0,
- (GInstanceInitFunc)gst_median_init,
+ (GInstanceInitFunc) gst_median_init,
};
- median_type = g_type_register_static(GST_TYPE_ELEMENT, "GstMedian", &median_info, 0);
+ median_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstMedian", &median_info, 0);
}
return median_type;
}
static void
-gst_median_base_init (GstMedianClass *klass)
+gst_median_base_init (GstMedianClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&median_sink_factory));
+ gst_static_pad_template_get (&median_sink_factory));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&median_src_factory));
+ gst_static_pad_template_get (&median_src_factory));
gst_element_class_set_details (element_class, &median_details);
}
static void
-gst_median_class_init (GstMedianClass *klass)
+gst_median_class_init (GstMedianClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ACTIVE,
- g_param_spec_boolean("active","active","active",
- TRUE,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FILTERSIZE,
- g_param_spec_int("filtersize","filtersize","filtersize",
- G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LUM_ONLY,
- g_param_spec_boolean("lum_only","lum_only","lum_only",
- TRUE,G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ACTIVE, g_param_spec_boolean ("active", "active", "active", TRUE, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FILTERSIZE, g_param_spec_int ("filtersize", "filtersize", "filtersize", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LUM_ONLY, g_param_spec_boolean ("lum_only", "lum_only", "lum_only", TRUE, G_PARAM_READWRITE)); /* CHECKME */
gobject_class->set_property = gst_median_set_property;
gobject_class->get_property = gst_median_get_property;
}
static gboolean
-gst_median_link (GstPad *pad, const GstCaps *caps)
+gst_median_link (GstPad * pad, const GstCaps * caps)
{
GstMedian *filter = GST_MEDIAN (gst_pad_get_parent (pad));
GstPad *otherpad = (pad == filter->srcpad) ? filter->sinkpad : filter->srcpad;
@@ -157,17 +156,20 @@ gst_median_link (GstPad *pad, const GstCaps *caps)
return ret;
}
-void gst_median_init (GstMedian *median)
+void
+gst_median_init (GstMedian * median)
{
- median->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&median_sink_factory), "sink");
+ median->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&median_sink_factory), "sink");
gst_pad_set_getcaps_function (median->sinkpad, gst_pad_proxy_getcaps);
gst_pad_set_link_function (median->sinkpad, gst_median_link);
gst_pad_set_chain_function (median->sinkpad, gst_median_chain);
gst_element_add_pad (GST_ELEMENT (median), median->sinkpad);
- median->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&median_src_factory), "src");
+ median->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&median_src_factory), "src");
gst_pad_set_getcaps_function (median->srcpad, gst_pad_proxy_getcaps);
gst_pad_set_link_function (median->sinkpad, gst_median_link);
gst_element_add_pad (GST_ELEMENT (median), median->srcpad);
@@ -192,7 +194,7 @@ median_5 (unsigned char *src, unsigned char *dest, int width, int height)
nLastRow = height - 1;
/*copy the top and bottom rows into the result array */
- for (i=0; i<width; i++) {
+ for (i = 0; i < width; i++) {
dest[i] = src[i];
dest[nLastRow * width + i] = src[nLastRow * width + i];
}
@@ -203,16 +205,20 @@ median_5 (unsigned char *src, unsigned char *dest, int width, int height)
/* process the interior pixels */
i = width + 1;
- for (k=0; k < nLastRow; k++) {
- for (j=0; j < nLastCol; j++, i++) {
- p[0] = src[i-width];
- p[1] = src[i-1];
+ for (k = 0; k < nLastRow; k++) {
+ for (j = 0; j < nLastCol; j++, i++) {
+ p[0] = src[i - width];
+ p[1] = src[i - 1];
p[2] = src[i];
- p[3] = src[i+1];
- p[4] = src[i+width];
- PIX_SORT(p[0],p[1]) ; PIX_SORT(p[3],p[4]) ; PIX_SORT(p[0],p[3]) ;
- PIX_SORT(p[1],p[4]) ; PIX_SORT(p[1],p[2]) ; PIX_SORT(p[2],p[3]) ;
- PIX_SORT(p[1],p[2]) ;
+ p[3] = src[i + 1];
+ p[4] = src[i + width];
+ PIX_SORT (p[0], p[1]);
+ PIX_SORT (p[3], p[4]);
+ PIX_SORT (p[0], p[3]);
+ PIX_SORT (p[1], p[4]);
+ PIX_SORT (p[1], p[2]);
+ PIX_SORT (p[2], p[3]);
+ PIX_SORT (p[1], p[2]);
dest[i] = p[2];
}
dest[i] = src[i];
@@ -236,7 +242,7 @@ median_9 (unsigned char *src, unsigned char *dest, int width, int height)
nLastRow = height - 1;
/*copy the top and bottom rows into the result array */
- for (i=0; i<width; i++) {
+ for (i = 0; i < width; i++) {
dest[i] = src[i];
dest[nLastRow * width + i] = src[nLastRow * width + i];
}
@@ -247,24 +253,36 @@ median_9 (unsigned char *src, unsigned char *dest, int width, int height)
/* process the interior pixels */
i = width + 1;
- for (k=0; k < nLastRow; k++) {
- for (j=0; j < nLastCol; j++, i++) {
- p[0] = src[i-width-1];
- p[1] = src[i-width];
- p[2] = src[i-width+1];
- p[3] = src[i-1];
+ for (k = 0; k < nLastRow; k++) {
+ for (j = 0; j < nLastCol; j++, i++) {
+ p[0] = src[i - width - 1];
+ p[1] = src[i - width];
+ p[2] = src[i - width + 1];
+ p[3] = src[i - 1];
p[4] = src[i];
- p[5] = src[i+1];
- p[6] = src[i+width-1];
- p[7] = src[i+width];
- p[8] = src[i+width+1];
- PIX_SORT(p[1], p[2]) ; PIX_SORT(p[4], p[5]) ; PIX_SORT(p[7], p[8]) ;
- PIX_SORT(p[0], p[1]) ; PIX_SORT(p[3], p[4]) ; PIX_SORT(p[6], p[7]) ;
- PIX_SORT(p[1], p[2]) ; PIX_SORT(p[4], p[5]) ; PIX_SORT(p[7], p[8]) ;
- PIX_SORT(p[0], p[3]) ; PIX_SORT(p[5], p[8]) ; PIX_SORT(p[4], p[7]) ;
- PIX_SORT(p[3], p[6]) ; PIX_SORT(p[1], p[4]) ; PIX_SORT(p[2], p[5]) ;
- PIX_SORT(p[4], p[7]) ; PIX_SORT(p[4], p[2]) ; PIX_SORT(p[6], p[4]) ;
- PIX_SORT(p[4], p[2]) ;
+ p[5] = src[i + 1];
+ p[6] = src[i + width - 1];
+ p[7] = src[i + width];
+ p[8] = src[i + width + 1];
+ PIX_SORT (p[1], p[2]);
+ PIX_SORT (p[4], p[5]);
+ PIX_SORT (p[7], p[8]);
+ PIX_SORT (p[0], p[1]);
+ PIX_SORT (p[3], p[4]);
+ PIX_SORT (p[6], p[7]);
+ PIX_SORT (p[1], p[2]);
+ PIX_SORT (p[4], p[5]);
+ PIX_SORT (p[7], p[8]);
+ PIX_SORT (p[0], p[3]);
+ PIX_SORT (p[5], p[8]);
+ PIX_SORT (p[4], p[7]);
+ PIX_SORT (p[3], p[6]);
+ PIX_SORT (p[1], p[4]);
+ PIX_SORT (p[2], p[5]);
+ PIX_SORT (p[4], p[7]);
+ PIX_SORT (p[4], p[2]);
+ PIX_SORT (p[6], p[4]);
+ PIX_SORT (p[4], p[2]);
dest[i] = p[4];
}
dest[i] = src[i];
@@ -277,83 +295,90 @@ median_9 (unsigned char *src, unsigned char *dest, int width, int height)
}
static void
-gst_median_chain (GstPad *pad, GstData *_data)
+gst_median_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstMedian *median;
guchar *data;
gulong size;
GstBuffer *outbuf;
+
/* GstMeta *meta; */
int lumsize, chromsize;
- g_return_if_fail(pad != NULL);
- g_return_if_fail(GST_IS_PAD(pad));
- g_return_if_fail(buf != NULL);
+ g_return_if_fail (pad != NULL);
+ g_return_if_fail (GST_IS_PAD (pad));
+ g_return_if_fail (buf != NULL);
median = GST_MEDIAN (GST_OBJECT_PARENT (pad));
if (!median->active) {
- gst_pad_push(median->srcpad,GST_DATA (buf));
+ gst_pad_push (median->srcpad, GST_DATA (buf));
return;
}
- data = GST_BUFFER_DATA(buf);
- size = GST_BUFFER_SIZE(buf);
+ data = GST_BUFFER_DATA (buf);
+ size = GST_BUFFER_SIZE (buf);
- GST_DEBUG ("median: have buffer of %d", GST_BUFFER_SIZE(buf));
+ GST_DEBUG ("median: have buffer of %d", GST_BUFFER_SIZE (buf));
- outbuf = gst_buffer_new();
- GST_BUFFER_DATA(outbuf) = g_malloc(GST_BUFFER_SIZE(buf));
- GST_BUFFER_SIZE(outbuf) = GST_BUFFER_SIZE(buf);
+ outbuf = gst_buffer_new ();
+ GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (buf));
+ GST_BUFFER_SIZE (outbuf) = GST_BUFFER_SIZE (buf);
lumsize = median->width * median->height;
- chromsize = lumsize/4;
+ chromsize = lumsize / 4;
if (median->filtersize == 5) {
- median_5(data, GST_BUFFER_DATA(outbuf), median->width, median->height);
+ median_5 (data, GST_BUFFER_DATA (outbuf), median->width, median->height);
if (!median->lum_only) {
- median_5(data+lumsize, GST_BUFFER_DATA(outbuf)+lumsize, median->width/2, median->height/2);
- median_5(data+lumsize+chromsize, GST_BUFFER_DATA(outbuf)+lumsize+chromsize, median->width/2, median->height/2);
+ median_5 (data + lumsize, GST_BUFFER_DATA (outbuf) + lumsize,
+ median->width / 2, median->height / 2);
+ median_5 (data + lumsize + chromsize,
+ GST_BUFFER_DATA (outbuf) + lumsize + chromsize, median->width / 2,
+ median->height / 2);
+ } else {
+ memcpy (GST_BUFFER_DATA (outbuf) + lumsize, data + lumsize,
+ chromsize * 2);
}
- else {
- memcpy (GST_BUFFER_DATA (outbuf)+lumsize, data+lumsize, chromsize*2);
- }
- }
- else {
- median_9(data, GST_BUFFER_DATA(outbuf), median->width, median->height);
+ } else {
+ median_9 (data, GST_BUFFER_DATA (outbuf), median->width, median->height);
if (!median->lum_only) {
- median_9(data+lumsize, GST_BUFFER_DATA(outbuf)+lumsize, median->width/2, median->height/2);
- median_9(data+lumsize+chromsize, GST_BUFFER_DATA(outbuf)+lumsize+chromsize, median->width/2, median->height/2);
- }
- else {
- memcpy (GST_BUFFER_DATA (outbuf)+lumsize, data+lumsize, chromsize*2);
+ median_9 (data + lumsize, GST_BUFFER_DATA (outbuf) + lumsize,
+ median->width / 2, median->height / 2);
+ median_9 (data + lumsize + chromsize,
+ GST_BUFFER_DATA (outbuf) + lumsize + chromsize, median->width / 2,
+ median->height / 2);
+ } else {
+ memcpy (GST_BUFFER_DATA (outbuf) + lumsize, data + lumsize,
+ chromsize * 2);
}
}
GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
- gst_pad_push(median->srcpad,GST_DATA (outbuf));
+ gst_pad_push (median->srcpad, GST_DATA (outbuf));
}
static void
-gst_median_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_median_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstMedian *median;
gint argvalue;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_MEDIAN(object));
- median = GST_MEDIAN(object);
+ g_return_if_fail (GST_IS_MEDIAN (object));
+ median = GST_MEDIAN (object);
switch (prop_id) {
case ARG_FILTERSIZE:
argvalue = g_value_get_int (value);
if (argvalue != 5 && argvalue != 9) {
- g_warning ("median: invalid filtersize (%d), must be 5 or 9\n", argvalue);
- }
- else {
+ g_warning ("median: invalid filtersize (%d), must be 5 or 9\n",
+ argvalue);
+ } else {
median->filtersize = argvalue;
}
break;
@@ -369,13 +394,14 @@ gst_median_set_property (GObject *object, guint prop_id, const GValue *value, GP
}
static void
-gst_median_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_median_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstMedian *median;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_MEDIAN(object));
- median = GST_MEDIAN(object);
+ g_return_if_fail (GST_IS_MEDIAN (object));
+ median = GST_MEDIAN (object);
switch (prop_id) {
case ARG_FILTERSIZE:
@@ -395,20 +421,14 @@ gst_median_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "median",
- GST_RANK_NONE, GST_TYPE_MEDIAN);
+ GST_RANK_NONE, GST_TYPE_MEDIAN);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "median",
- "Video median filter",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "median",
+ "Video median filter",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/median/gstmedian.h b/gst/median/gstmedian.h
index c22b80d1..5e558bae 100644
--- a/gst/median/gstmedian.h
+++ b/gst/median/gstmedian.h
@@ -26,8 +26,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_MEDIAN \
@@ -41,31 +42,33 @@ extern "C" {
#define GST_IS_MEDIAN_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MEDIAN))
-typedef struct _GstMedian GstMedian;
-typedef struct _GstMedianClass GstMedianClass;
+ typedef struct _GstMedian GstMedian;
+ typedef struct _GstMedianClass GstMedianClass;
-struct _GstMedian {
- GstElement element;
+ struct _GstMedian
+ {
+ GstElement element;
- int format;
- int width;
- int height;
+ int format;
+ int width;
+ int height;
- int filtersize;
+ int filtersize;
- gboolean active;
- gboolean lum_only;
+ gboolean active;
+ gboolean lum_only;
- GstPad *sinkpad,*srcpad;
-};
+ GstPad *sinkpad, *srcpad;
+ };
-struct _GstMedianClass {
- GstElementClass parent_class;
-};
+ struct _GstMedianClass
+ {
+ GstElementClass parent_class;
+ };
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_MEDIAN_H__ */
+#endif /* __GST_MEDIAN_H__ */
diff --git a/gst/monoscope/convolve.c b/gst/monoscope/convolve.c
index b707621b..6b8cdd50 100644
--- a/gst/monoscope/convolve.c
+++ b/gst/monoscope/convolve.c
@@ -62,19 +62,28 @@
#include <stdlib.h>
#include "convolve.h"
-typedef union stack_entry_s {
- struct {const double * left, * right; double * out;} v;
- struct {double * main, * null;} b;
+typedef union stack_entry_s
+{
+ struct
+ {
+ const double *left, *right;
+ double *out;
+ } v;
+ struct
+ {
+ double *main, *null;
+ } b;
} stack_entry;
#define STACK_SIZE (CONVOLVE_DEPTH * 3)
-struct _struct_convolve_state {
- double left [CONVOLVE_BIG];
- double right [CONVOLVE_SMALL * 3];
- double scratch [CONVOLVE_SMALL * 3];
- stack_entry stack[STACK_SIZE];
+struct _struct_convolve_state
+{
+ double left[CONVOLVE_BIG];
+ double right[CONVOLVE_SMALL * 3];
+ double scratch[CONVOLVE_SMALL * 3];
+ stack_entry stack[STACK_SIZE];
};
/*
@@ -83,48 +92,53 @@ struct _struct_convolve_state {
* On error, returns NULL.
* The pointer should be freed when it is finished with, by convolve_close().
*/
-convolve_state *convolve_init(void)
+convolve_state *
+convolve_init (void)
{
- return (convolve_state *) malloc (sizeof(convolve_state));
+ return (convolve_state *) malloc (sizeof (convolve_state));
}
/*
* Free the state allocated with convolve_init().
*/
-void convolve_close(convolve_state *state)
+void
+convolve_close (convolve_state * state)
{
- if (state)
- free(state);
+ if (state)
+ free (state);
}
-static void convolve_4 (double * out, const double * left, const double * right)
+static void
+convolve_4 (double *out, const double *left, const double *right)
/* This does a 4x4 -> 7 convolution. For what it's worth, the slightly odd
* ordering gives about a 1% speed up on my Pentium II. */
{
- double l0, l1, l2, l3, r0, r1, r2, r3;
- double a;
- l0 = left[0];
- r0 = right[0];
- a = l0 * r0;
- l1 = left[1];
- r1 = right[1];
- out[0] = a;
- a = (l0 * r1) + (l1 * r0);
- l2 = left[2];
- r2 = right[2];
- out[1] = a;
- a = (l0 * r2) + (l1 * r1) + (l2 * r0);
- l3 = left[3];
- r3 = right[3];
- out[2] = a;
-
- out[3] = (l0 * r3) + (l1 * r2) + (l2 * r1) + (l3 * r0);
- out[4] = (l1 * r3) + (l2 * r2) + (l3 * r1);
- out[5] = (l2 * r3) + (l3 * r2);
- out[6] = l3 * r3;
+ double l0, l1, l2, l3, r0, r1, r2, r3;
+ double a;
+
+ l0 = left[0];
+ r0 = right[0];
+ a = l0 * r0;
+ l1 = left[1];
+ r1 = right[1];
+ out[0] = a;
+ a = (l0 * r1) + (l1 * r0);
+ l2 = left[2];
+ r2 = right[2];
+ out[1] = a;
+ a = (l0 * r2) + (l1 * r1) + (l2 * r0);
+ l3 = left[3];
+ r3 = right[3];
+ out[2] = a;
+
+ out[3] = (l0 * r3) + (l1 * r2) + (l2 * r1) + (l3 * r0);
+ out[4] = (l1 * r3) + (l2 * r2) + (l3 * r1);
+ out[5] = (l2 * r3) + (l3 * r2);
+ out[6] = l3 * r3;
}
-static void convolve_run (stack_entry * top, unsigned size, double * scratch)
+static void
+convolve_run (stack_entry * top, unsigned size, double *scratch)
/* Interpret a stack of commands. The stack starts with two entries; the
* convolution to do, and an illegal entry used to mark the stack top. The
* size is the number of entries in each input, and must be a power of 2,
@@ -132,102 +146,105 @@ static void convolve_run (stack_entry * top, unsigned size, double * scratch)
* scratch must have length 3*size. The number of stack entries needed is
* 3n-4 where size=2^n. */
{
- do {
- const double * left;
- const double * right;
- double * out;
-
- /* When we get here, the stack top is always a convolve,
- * with size > 4. So we will split it. We repeatedly split
- * the top entry until we get to size = 4. */
-
- left = top->v.left;
- right = top->v.right;
- out = top->v.out;
- top++;
-
- do {
- double * s_left, * s_right;
- int i;
-
- /* Halve the size. */
- size >>= 1;
-
- /* Allocate the scratch areas. */
- s_left = scratch + size * 3;
- /* s_right is a length 2*size buffer also used for
- * intermediate output. */
- s_right = scratch + size * 4;
-
- /* Create the intermediate factors. */
- for (i = 0; i < size; i++) {
- double l = left[i] + left[i + size];
- double r = right[i] + right[i + size];
- s_left[i + size] = r;
- s_left[i] = l;
- }
-
- /* Push the combine entry onto the stack. */
- top -= 3;
- top[2].b.main = out;
- top[2].b.null = NULL;
-
- /* Push the low entry onto the stack. This must be
- * the last of the three sub-convolutions, because
- * it may overwrite the arguments. */
- top[1].v.left = left;
- top[1].v.right = right;
- top[1].v.out = out;
-
- /* Push the mid entry onto the stack. */
- top[0].v.left = s_left;
- top[0].v.right = s_right;
- top[0].v.out = s_right;
-
- /* Leave the high entry in variables. */
- left += size;
- right += size;
- out += size * 2;
-
- } while (size > 4);
-
- /* When we get here, the stack top is a group of 3
- * convolves, with size = 4, followed by some combines. */
- convolve_4 (out, left, right);
- convolve_4 (top[0].v.out, top[0].v.left, top[0].v.right);
- convolve_4 (top[1].v.out, top[1].v.left, top[1].v.right);
- top += 2;
-
- /* Now process combines. */
- do {
- /* b.main is the output buffer, mid is the middle
- * part which needs to be adjusted in place, and
- * then folded back into the output. We do this in
- * a slightly strange way, so as to avoid having
- * two loops. */
- double * out = top->b.main;
- double * mid = scratch + size * 4;
- unsigned int i;
- top++;
- out[size * 2 - 1] = 0;
- for (i = 0; i < size-1; i++) {
- double lo;
- double hi;
- lo = mid[0] - (out[0] + out[2 * size]) + out[size];
- hi = mid[size] - (out[size] + out[3 * size]) + out[2 * size];
- out[size] = lo;
- out[2 * size] = hi;
- out++;
- mid++;
- }
- size <<= 1;
- } while (top->b.null == NULL);
- } while (top->b.main != NULL);
+ do {
+ const double *left;
+ const double *right;
+ double *out;
+
+ /* When we get here, the stack top is always a convolve,
+ * with size > 4. So we will split it. We repeatedly split
+ * the top entry until we get to size = 4. */
+
+ left = top->v.left;
+ right = top->v.right;
+ out = top->v.out;
+ top++;
+
+ do {
+ double *s_left, *s_right;
+ int i;
+
+ /* Halve the size. */
+ size >>= 1;
+
+ /* Allocate the scratch areas. */
+ s_left = scratch + size * 3;
+ /* s_right is a length 2*size buffer also used for
+ * intermediate output. */
+ s_right = scratch + size * 4;
+
+ /* Create the intermediate factors. */
+ for (i = 0; i < size; i++) {
+ double l = left[i] + left[i + size];
+ double r = right[i] + right[i + size];
+
+ s_left[i + size] = r;
+ s_left[i] = l;
+ }
+
+ /* Push the combine entry onto the stack. */
+ top -= 3;
+ top[2].b.main = out;
+ top[2].b.null = NULL;
+
+ /* Push the low entry onto the stack. This must be
+ * the last of the three sub-convolutions, because
+ * it may overwrite the arguments. */
+ top[1].v.left = left;
+ top[1].v.right = right;
+ top[1].v.out = out;
+
+ /* Push the mid entry onto the stack. */
+ top[0].v.left = s_left;
+ top[0].v.right = s_right;
+ top[0].v.out = s_right;
+
+ /* Leave the high entry in variables. */
+ left += size;
+ right += size;
+ out += size * 2;
+
+ } while (size > 4);
+
+ /* When we get here, the stack top is a group of 3
+ * convolves, with size = 4, followed by some combines. */
+ convolve_4 (out, left, right);
+ convolve_4 (top[0].v.out, top[0].v.left, top[0].v.right);
+ convolve_4 (top[1].v.out, top[1].v.left, top[1].v.right);
+ top += 2;
+
+ /* Now process combines. */
+ do {
+ /* b.main is the output buffer, mid is the middle
+ * part which needs to be adjusted in place, and
+ * then folded back into the output. We do this in
+ * a slightly strange way, so as to avoid having
+ * two loops. */
+ double *out = top->b.main;
+ double *mid = scratch + size * 4;
+ unsigned int i;
+
+ top++;
+ out[size * 2 - 1] = 0;
+ for (i = 0; i < size - 1; i++) {
+ double lo;
+ double hi;
+
+ lo = mid[0] - (out[0] + out[2 * size]) + out[size];
+ hi = mid[size] - (out[size] + out[3 * size]) + out[2 * size];
+ out[size] = lo;
+ out[2 * size] = hi;
+ out++;
+ mid++;
+ }
+ size <<= 1;
+ } while (top->b.null == NULL);
+ } while (top->b.main != NULL);
}
-int convolve_match (const int * lastchoice,
- const short * input,
- convolve_state * state)
+int
+convolve_match (const int *lastchoice,
+ const short *input, convolve_state * state)
/* lastchoice is a 256 sized array. input is a 512 array. We find the
* contiguous length 256 sub-array of input that best matches lastchoice.
* A measure of how good a sub-array is compared with the lastchoice is
@@ -236,85 +253,90 @@ int convolve_match (const int * lastchoice,
* entry in the convolutions. state is a (non-NULL) pointer returned by
* convolve_init. */
{
- double avg;
- double best;
- int p = 0;
- int i;
- double * left = state->left;
- double * right = state->right;
- double * scratch = state->scratch;
- stack_entry * top = state->stack + STACK_SIZE - 1;
+ double avg;
+ double best;
+ int p = 0;
+ int i;
+ double *left = state->left;
+ double *right = state->right;
+ double *scratch = state->scratch;
+ stack_entry *top = state->stack + STACK_SIZE - 1;
+
#if 1
- for (i = 0; i < 512; i++)
- left[i] = input[i];
-
- avg = 0;
- for (i = 0; i < 256; i++) {
- double a = lastchoice[255 - i];
- right[i] = a;
- avg += a;
- }
+ for (i = 0; i < 512; i++)
+ left[i] = input[i];
+
+ avg = 0;
+ for (i = 0; i < 256; i++) {
+ double a = lastchoice[255 - i];
+
+ right[i] = a;
+ avg += a;
+ }
#endif
- /* We adjust the smaller of the two input arrays to have average
- * value 0. This makes the eventual result insensitive to both
- * constant offsets and positive multipliers of the inputs. */
- avg /= 256;
- for (i = 0; i < 256; i++)
- right[i] -= avg;
- /* End-of-stack marker. */
-#if 0 /* The following line produces a CRASH, need to figure out why?!! */
- top[1].b.null = scratch;
-#endif
- top[1].b.main = NULL;
- /* The low 256x256, of which we want the high 256 outputs. */
- top->v.left = left;
- top->v.right = right;
- top->v.out = right + 256;
- convolve_run (top, 256, scratch);
-
- /* The high 256x256, of which we want the low 256 outputs. */
- top->v.left = left + 256;
- top->v.right = right;
- top->v.out = right;
- convolve_run (top, 256, scratch);
-
- /* Now find the best position amoungs this. Apart from the first
- * and last, the required convolution outputs are formed by adding
- * outputs from the two convolutions above. */
- best = right[511];
- right[767] = 0;
- p = -1;
- for (i = 0; i < 256; i++) {
- double a = right[i] + right[i + 512];
- if (a > best) {
- best = a;
- p = i;
- }
- }
- p++;
-
+ /* We adjust the smaller of the two input arrays to have average
+ * value 0. This makes the eventual result insensitive to both
+ * constant offsets and positive multipliers of the inputs. */
+ avg /= 256;
+ for (i = 0; i < 256; i++)
+ right[i] -= avg;
+ /* End-of-stack marker. */
+#if 0 /* The following line produces a CRASH, need to figure out why?!! */
+ top[1].b.null = scratch;
+#endif
+ top[1].b.main = NULL;
+ /* The low 256x256, of which we want the high 256 outputs. */
+ top->v.left = left;
+ top->v.right = right;
+ top->v.out = right + 256;
+ convolve_run (top, 256, scratch);
+
+ /* The high 256x256, of which we want the low 256 outputs. */
+ top->v.left = left + 256;
+ top->v.right = right;
+ top->v.out = right;
+ convolve_run (top, 256, scratch);
+
+ /* Now find the best position amoungs this. Apart from the first
+ * and last, the required convolution outputs are formed by adding
+ * outputs from the two convolutions above. */
+ best = right[511];
+ right[767] = 0;
+ p = -1;
+ for (i = 0; i < 256; i++) {
+ double a = right[i] + right[i + 512];
+
+ if (a > best) {
+ best = a;
+ p = i;
+ }
+ }
+ p++;
+
#if 0
- {
- /* This is some debugging code... */
- int bad = 0;
- best = 0;
- for (i = 0; i < 256; i++)
- best += ((double) input[i+p]) * ((double) lastchoice[i] - avg);
-
- for (i = 0; i < 257; i++) {
- double tot = 0;
- unsigned int j;
- for (j = 0; j < 256; j++)
- tot += ((double) input[i+j]) * ((double) lastchoice[j] - avg);
- if (tot > best)
- printf ("(%i)", i);
- if (tot != left[i + 255])
- printf ("!");
- }
-
- printf ("%i\n", p);
- }
-#endif
-
- return p;
+ {
+ /* This is some debugging code... */
+ int bad = 0;
+
+ best = 0;
+ for (i = 0; i < 256; i++)
+ best += ((double) input[i + p]) * ((double) lastchoice[i] - avg);
+
+ for (i = 0; i < 257; i++) {
+ double tot = 0;
+ unsigned int j;
+
+ for (j = 0; j < 256; j++)
+ tot += ((double) input[i + j]) * ((double) lastchoice[j] - avg);
+ if (tot > best)
+ printf ("(%i)", i);
+ if (tot != left[i + 255])
+ printf ("!");
+ }
+
+ printf ("%i\n", p);
+ }
+#endif
+
+ return p;
}
diff --git a/gst/monoscope/convolve.h b/gst/monoscope/convolve.h
index d9709edc..d5f34d2b 100644
--- a/gst/monoscope/convolve.h
+++ b/gst/monoscope/convolve.h
@@ -21,7 +21,8 @@
#define CONVOLVE_H
#ifdef __cplusplus
-extern "C" {
+extern "C"
+{
#endif
/* convolve_match takes two blocks, one twice the size of the other. The
@@ -31,14 +32,13 @@ extern "C" {
#define CONVOLVE_BIG (CONVOLVE_SMALL * 2)
/* Convolution stuff */
-typedef struct _struct_convolve_state convolve_state;
+ typedef struct _struct_convolve_state convolve_state;
-convolve_state *convolve_init (void);
-void convolve_close (convolve_state * state);
+ convolve_state *convolve_init (void);
+ void convolve_close (convolve_state * state);
-int convolve_match (const int * lastchoice,
- const short int * input,
- convolve_state * state);
+ int convolve_match (const int *lastchoice,
+ const short int *input, convolve_state * state);
#ifdef __cplusplus
}
diff --git a/gst/monoscope/gstmonoscope.c b/gst/monoscope/gstmonoscope.c
index d3157d97..f8e82b2f 100644
--- a/gst/monoscope/gstmonoscope.c
+++ b/gst/monoscope/gstmonoscope.c
@@ -35,11 +35,12 @@
typedef struct _GstMonoscope GstMonoscope;
typedef struct _GstMonoscopeClass GstMonoscopeClass;
-struct _GstMonoscope {
+struct _GstMonoscope
+{
GstElement element;
/* pads */
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
/* the timestamp of the next frame */
guint64 next_time;
@@ -52,14 +53,15 @@ struct _GstMonoscope {
gboolean first_buffer;
/* visualisation state */
- struct monoscope_state * visstate;
+ struct monoscope_state *visstate;
};
-struct _GstMonoscopeClass {
+struct _GstMonoscopeClass
+{
GstElementClass parent_class;
};
-GType gst_monoscope_get_type(void);
+GType gst_monoscope_get_type (void);
/* elementfactory information */
@@ -71,41 +73,39 @@ static GstElementDetails gst_monoscope_details = {
};
/* signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static GstStaticPadTemplate src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_xRGB_HOST_ENDIAN)
-);
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_xRGB_HOST_ENDIAN)
+ );
-static GstStaticPadTemplate sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_AUDIO_INT_STANDARD_PAD_TEMPLATE_CAPS)
-);
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_AUDIO_INT_STANDARD_PAD_TEMPLATE_CAPS)
+ );
-static void gst_monoscope_class_init (GstMonoscopeClass *klass);
-static void gst_monoscope_base_init (GstMonoscopeClass *klass);
-static void gst_monoscope_init (GstMonoscope *monoscope);
+static void gst_monoscope_class_init (GstMonoscopeClass * klass);
+static void gst_monoscope_base_init (GstMonoscopeClass * klass);
+static void gst_monoscope_init (GstMonoscope * monoscope);
-static void gst_monoscope_chain (GstPad *pad, GstData *_data);
+static void gst_monoscope_chain (GstPad * pad, GstData * _data);
static GstPadLinkReturn
- gst_monoscope_srcconnect (GstPad *pad, const GstCaps *caps);
+gst_monoscope_srcconnect (GstPad * pad, const GstCaps * caps);
static GstElementClass *parent_class = NULL;
@@ -116,9 +116,9 @@ gst_monoscope_get_type (void)
if (!type) {
static const GTypeInfo info = {
- sizeof (GstMonoscopeClass),
- (GBaseInitFunc) gst_monoscope_base_init,
- NULL,
+ sizeof (GstMonoscopeClass),
+ (GBaseInitFunc) gst_monoscope_base_init,
+ NULL,
(GClassInitFunc) gst_monoscope_class_init,
NULL,
NULL,
@@ -132,37 +132,39 @@ gst_monoscope_get_type (void)
}
static void
-gst_monoscope_base_init (GstMonoscopeClass *klass)
+gst_monoscope_base_init (GstMonoscopeClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_static_pad_template_get (&src_template));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_static_pad_template_get (&sink_template));
gst_element_class_set_details (element_class, &gst_monoscope_details);
}
static void
-gst_monoscope_class_init(GstMonoscopeClass *klass)
+gst_monoscope_class_init (GstMonoscopeClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*) klass;
- gstelement_class = (GstElementClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
}
static void
-gst_monoscope_init (GstMonoscope *monoscope)
+gst_monoscope_init (GstMonoscope * monoscope)
{
/* create the sink and src pads */
- monoscope->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&sink_template ), "sink");
- monoscope->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&src_template ), "src");
+ monoscope->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get (&sink_template),
+ "sink");
+ monoscope->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get (&src_template),
+ "src");
gst_element_add_pad (GST_ELEMENT (monoscope), monoscope->sinkpad);
gst_element_add_pad (GST_ELEMENT (monoscope), monoscope->srcpad);
@@ -175,11 +177,11 @@ gst_monoscope_init (GstMonoscope *monoscope)
monoscope->first_buffer = TRUE;
monoscope->width = 256;
monoscope->height = 128;
- monoscope->fps = 25.; /* desired frame rate */
+ monoscope->fps = 25.; /* desired frame rate */
}
static GstPadLinkReturn
-gst_monoscope_srcconnect (GstPad *pad, const GstCaps *caps)
+gst_monoscope_srcconnect (GstPad * pad, const GstCaps * caps)
{
GstMonoscope *monoscope = GST_MONOSCOPE (gst_pad_get_parent (pad));
GstStructure *structure;
@@ -194,7 +196,7 @@ gst_monoscope_srcconnect (GstPad *pad, const GstCaps *caps)
}
static void
-gst_monoscope_chain (GstPad *pad, GstData *_data)
+gst_monoscope_chain (GstPad * pad, GstData * _data)
{
GstBuffer *bufin = GST_BUFFER (_data);
GstMonoscope *monoscope;
@@ -213,25 +215,26 @@ gst_monoscope_chain (GstPad *pad, GstData *_data)
/* FIXME: should really select the first 1024 samples after the timestamp. */
if (GST_BUFFER_TIMESTAMP (bufin) < monoscope->next_time || samples_in < 1024) {
- GST_DEBUG ("timestamp is %" G_GUINT64_FORMAT ": want >= %" G_GUINT64_FORMAT, GST_BUFFER_TIMESTAMP (bufin), monoscope->next_time);
+ GST_DEBUG ("timestamp is %" G_GUINT64_FORMAT ": want >= %" G_GUINT64_FORMAT,
+ GST_BUFFER_TIMESTAMP (bufin), monoscope->next_time);
gst_buffer_unref (bufin);
return;
}
data = (gint16 *) GST_BUFFER_DATA (bufin);
/* FIXME: Select samples in a better way. */
- for (i=0; i < 512; i++) {
+ for (i = 0; i < 512; i++) {
monoscope->datain[i] = *data++;
}
if (monoscope->first_buffer) {
monoscope->visstate = monoscope_init (monoscope->width, monoscope->height);
- g_assert(monoscope->visstate != 0);
+ g_assert (monoscope->visstate != 0);
GST_DEBUG ("making new pad");
if (!gst_pad_is_negotiated (monoscope->srcpad)) {
if (gst_pad_renegotiate (monoscope->srcpad) <= 0) {
- GST_ELEMENT_ERROR (monoscope, CORE, NEGOTIATION, (NULL), (NULL));
- return;
+ GST_ELEMENT_ERROR (monoscope, CORE, NEGOTIATION, (NULL), (NULL));
+ return;
}
}
monoscope->first_buffer = FALSE;
@@ -239,7 +242,8 @@ gst_monoscope_chain (GstPad *pad, GstData *_data)
bufout = gst_buffer_new ();
GST_BUFFER_SIZE (bufout) = monoscope->width * monoscope->height * 4;
- GST_BUFFER_DATA (bufout) = (guchar *) monoscope_update (monoscope->visstate, monoscope->datain);
+ GST_BUFFER_DATA (bufout) =
+ (guchar *) monoscope_update (monoscope->visstate, monoscope->datain);
GST_BUFFER_TIMESTAMP (bufout) = monoscope->next_time;
GST_BUFFER_FLAG_SET (bufout, GST_BUFFER_DONTFREE);
@@ -254,20 +258,14 @@ gst_monoscope_chain (GstPad *pad, GstData *_data)
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- return gst_element_register(plugin, "monoscope",
- GST_RANK_NONE, GST_TYPE_MONOSCOPE);
+ return gst_element_register (plugin, "monoscope",
+ GST_RANK_NONE, GST_TYPE_MONOSCOPE);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "monoscope",
- "Monoscope visualization",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "monoscope",
+ "Monoscope visualization",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/monoscope/monoscope.c b/gst/monoscope/monoscope.c
index eb0e728a..20a68099 100644
--- a/gst/monoscope/monoscope.c
+++ b/gst/monoscope/monoscope.c
@@ -29,110 +29,114 @@
#include <string.h>
#include <stdlib.h>
-static void colors_init(guint32 * colors)
+static void
+colors_init (guint32 * colors)
{
- int i;
- for (i = 0; i < 32; i++) {
- colors[i] = (i*8 << 16) + (255 << 8);
- colors[i+31] = (255 << 16) + (((31 - i) * 8) << 8);
- }
- colors[63] = (40 << 16) + (75 << 8);
+ int i;
+
+ for (i = 0; i < 32; i++) {
+ colors[i] = (i * 8 << 16) + (255 << 8);
+ colors[i + 31] = (255 << 16) + (((31 - i) * 8) << 8);
+ }
+ colors[63] = (40 << 16) + (75 << 8);
}
-struct monoscope_state * monoscope_init (guint32 resx, guint32 resy)
+struct monoscope_state *
+monoscope_init (guint32 resx, guint32 resy)
{
- struct monoscope_state * stateptr;
- stateptr = calloc(1, sizeof(struct monoscope_state));
- if (stateptr == 0) return 0;
- stateptr->cstate = convolve_init();
- colors_init(stateptr->colors);
- return stateptr;
+ struct monoscope_state *stateptr;
+ stateptr = calloc (1, sizeof (struct monoscope_state));
+ if (stateptr == 0)
+ return 0;
+ stateptr->cstate = convolve_init ();
+ colors_init (stateptr->colors);
+ return stateptr;
}
-guint32 * monoscope_update (struct monoscope_state * stateptr,
- gint16 data [512])
+guint32 *
+monoscope_update (struct monoscope_state * stateptr, gint16 data[512])
{
- /* Note that CONVOLVE_BIG must == data size here, ie 512. */
- /* Really, we want samples evenly spread over the available data.
- * Just taking a continuous chunk will do for now, though. */
- int i;
- int foo;
- int bar;
- int h;
- guint32 *loc;
+ /* Note that CONVOLVE_BIG must == data size here, ie 512. */
+ /* Really, we want samples evenly spread over the available data.
+ * Just taking a continuous chunk will do for now, though. */
+ int i;
+ int foo;
+ int bar;
+ int h;
+ guint32 *loc;
- int factor;
- int val;
- int max = 1;
- short * thisEq;
+ int factor;
+ int val;
+ int max = 1;
+ short *thisEq;
- memcpy (stateptr->copyEq, data, sizeof (short) * CONVOLVE_BIG);
- thisEq = stateptr->copyEq;
-#if 1
- val = convolve_match (stateptr->avgEq, stateptr->copyEq, stateptr->cstate);
- thisEq += val;
-#endif
- memset(stateptr->display, 0, 256 * 128 * sizeof(guint32));
- for (i=0; i < 256; i++) {
- foo = thisEq[i] + (stateptr->avgEq[i] >> 1);
- stateptr->avgEq[i] = foo;
- if (foo < 0)
- foo = -foo;
- if (foo > max)
- max = foo;
+ memcpy (stateptr->copyEq, data, sizeof (short) * CONVOLVE_BIG);
+ thisEq = stateptr->copyEq;
+#if 1
+ val = convolve_match (stateptr->avgEq, stateptr->copyEq, stateptr->cstate);
+ thisEq += val;
+#endif
+ memset (stateptr->display, 0, 256 * 128 * sizeof (guint32));
+ for (i = 0; i < 256; i++) {
+ foo = thisEq[i] + (stateptr->avgEq[i] >> 1);
+ stateptr->avgEq[i] = foo;
+ if (foo < 0)
+ foo = -foo;
+ if (foo > max)
+ max = foo;
+ }
+ stateptr->avgMax += max - (stateptr->avgMax >> 8);
+ if (stateptr->avgMax < max)
+ stateptr->avgMax = max; /* Avoid overflow */
+ factor = 0x7fffffff / stateptr->avgMax;
+ /* Keep the scaling sensible. */
+ if (factor > (1 << 18))
+ factor = 1 << 18;
+ if (factor < (1 << 8))
+ factor = 1 << 8;
+ for (i = 0; i < 256; i++) {
+ foo = stateptr->avgEq[i] * factor;
+ foo >>= 18;
+ if (foo > 63)
+ foo = 63;
+ if (foo < -64)
+ foo = -64;
+ val = (i + ((foo + 64) << 8));
+ bar = val;
+ if ((bar > 0) && (bar < (256 * 128))) {
+ loc = stateptr->display + bar;
+ if (foo < 0) {
+ for (h = 0; h <= (-foo); h++) {
+ *loc = stateptr->colors[h];
+ loc += 256;
}
- stateptr->avgMax += max - (stateptr->avgMax >> 8);
- if (stateptr->avgMax < max)
- stateptr->avgMax = max; /* Avoid overflow */
- factor = 0x7fffffff / stateptr->avgMax;
- /* Keep the scaling sensible. */
- if (factor > (1 << 18))
- factor = 1 << 18;
- if (factor < (1 << 8))
- factor = 1 << 8;
- for (i=0; i < 256; i++) {
- foo = stateptr->avgEq[i] * factor;
- foo >>= 18;
- if (foo > 63)
- foo = 63;
- if (foo < -64)
- foo = -64;
- val = (i + ((foo+64) << 8));
- bar = val;
- if ((bar > 0) && (bar < (256 * 128))) {
- loc = stateptr->display + bar;
- if (foo < 0) {
- for (h = 0; h <= (-foo); h++) {
- *loc = stateptr->colors[h];
- loc+=256;
- }
- } else {
- for (h = 0; h <= foo; h++) {
- *loc = stateptr->colors[h];
- loc-=256;
- }
- }
- }
+ } else {
+ for (h = 0; h <= foo; h++) {
+ *loc = stateptr->colors[h];
+ loc -= 256;
}
+ }
+ }
+ }
- /* Draw grid. */
- for (i=16;i < 128; i+=16) {
- for (h = 0; h < 256; h+=2) {
- stateptr->display[(i << 8) + h] = stateptr->colors[63];
- if (i == 64)
- stateptr->display[(i << 8) + h + 1] = stateptr->colors[63];
- }
- }
- for (i = 16; i < 256; i+=16) {
- for (h = 0; h < 128; h+=2) {
- stateptr->display[i + (h << 8)] = stateptr->colors[63];
- }
- }
+ /* Draw grid. */
+ for (i = 16; i < 128; i += 16) {
+ for (h = 0; h < 256; h += 2) {
+ stateptr->display[(i << 8) + h] = stateptr->colors[63];
+ if (i == 64)
+ stateptr->display[(i << 8) + h + 1] = stateptr->colors[63];
+ }
+ }
+ for (i = 16; i < 256; i += 16) {
+ for (h = 0; h < 128; h += 2) {
+ stateptr->display[i + (h << 8)] = stateptr->colors[63];
+ }
+ }
- return stateptr->display;
+ return stateptr->display;
}
-void monoscope_close (struct monoscope_state * stateptr)
+void
+monoscope_close (struct monoscope_state *stateptr)
{
}
-
diff --git a/gst/monoscope/monoscope.h b/gst/monoscope/monoscope.h
index 8e7d7591..37be6fff 100644
--- a/gst/monoscope/monoscope.h
+++ b/gst/monoscope/monoscope.h
@@ -7,18 +7,19 @@
#define scope_width 256
#define scope_height 128
-struct monoscope_state {
- gint16 copyEq[CONVOLVE_BIG];
- int avgEq[CONVOLVE_SMALL]; /* a running average of the last few. */
- int avgMax; /* running average of max sample. */
- guint32 display[(scope_width + 1) * (scope_height + 1)];
+struct monoscope_state
+{
+ gint16 copyEq[CONVOLVE_BIG];
+ int avgEq[CONVOLVE_SMALL]; /* a running average of the last few. */
+ int avgMax; /* running average of max sample. */
+ guint32 display[(scope_width + 1) * (scope_height + 1)];
- convolve_state *cstate;
- guint32 colors[64];
+ convolve_state *cstate;
+ guint32 colors[64];
};
-struct monoscope_state * monoscope_init (guint32 resx, guint32 resy);
-guint32 * monoscope_update (struct monoscope_state * stateptr, gint16 data [512]);
-void monoscope_close (struct monoscope_state * stateptr);
+struct monoscope_state *monoscope_init (guint32 resx, guint32 resy);
+guint32 *monoscope_update (struct monoscope_state *stateptr, gint16 data[512]);
+void monoscope_close (struct monoscope_state *stateptr);
#endif
diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c
index 4826821b..f7914e24 100644
--- a/gst/qtdemux/qtdemux.c
+++ b/gst/qtdemux/qtdemux.c
@@ -41,22 +41,26 @@ GST_DEBUG_CATEGORY_EXTERN (qtdemux_debug);
typedef struct _QtNode QtNode;
typedef struct _QtNodeType QtNodeType;
typedef struct _QtDemuxSample QtDemuxSample;
+
//typedef struct _QtDemuxStream QtDemuxStream;
-struct _QtNode {
+struct _QtNode
+{
guint32 type;
gpointer data;
int len;
};
-struct _QtNodeType {
+struct _QtNodeType
+{
guint32 fourcc;
char *name;
int flags;
- void (*dump)(GstQTDemux *qtdemux, void *buffer, int depth);
+ void (*dump) (GstQTDemux * qtdemux, void *buffer, int depth);
};
-struct _QtDemuxSample {
+struct _QtDemuxSample
+{
int sample_index;
int chunk;
int size;
@@ -65,7 +69,8 @@ struct _QtDemuxSample {
guint64 duration;
};
-struct _QtDemuxStream {
+struct _QtDemuxStream
+{
guint32 subtype;
GstCaps *caps;
GstPad *pad;
@@ -78,14 +83,15 @@ struct _QtDemuxStream {
int width;
int height;
float fps;
-
+
double rate;
int n_channels;
guint bytes_per_frame;
guint samples_per_packet;
};
-enum QtDemuxState {
+enum QtDemuxState
+{
QTDEMUX_STATE_NULL,
QTDEMUX_STATE_HEADER,
QTDEMUX_STATE_HEADER_SEEKING,
@@ -95,85 +101,87 @@ enum QtDemuxState {
QTDEMUX_STATE_EOS,
};
-static GNode *qtdemux_tree_get_child_by_type(GNode *node, guint32 fourcc);
-static GNode *qtdemux_tree_get_sibling_by_type(GNode *node, guint32 fourcc);
+static GNode *qtdemux_tree_get_child_by_type (GNode * node, guint32 fourcc);
+static GNode *qtdemux_tree_get_sibling_by_type (GNode * node, guint32 fourcc);
-static GstElementDetails
-gst_qtdemux_details =
-{
+static GstElementDetails gst_qtdemux_details = {
"QuickTime Demuxer",
"Codec/Demuxer",
"Demultiplex a QuickTime file into audio and video streams",
"David Schleef <ds@schleef.org>"
};
-enum {
+enum
+{
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0
};
static GstStaticPadTemplate gst_qtdemux_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_SOMETIMES,
- GST_STATIC_CAPS ("video/quicktime")
-);
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_SOMETIMES,
+ GST_STATIC_CAPS ("video/quicktime")
+ );
static GstStaticPadTemplate gst_qtdemux_videosrc_template =
-GST_STATIC_PAD_TEMPLATE (
- "audio_%02d",
- GST_PAD_SRC,
- GST_PAD_SOMETIMES,
- GST_STATIC_CAPS_ANY
-);
+GST_STATIC_PAD_TEMPLATE ("audio_%02d",
+ GST_PAD_SRC,
+ GST_PAD_SOMETIMES,
+ GST_STATIC_CAPS_ANY);
static GstStaticPadTemplate gst_qtdemux_audiosrc_template =
-GST_STATIC_PAD_TEMPLATE (
- "video_%02d",
- GST_PAD_SRC,
- GST_PAD_SOMETIMES,
- GST_STATIC_CAPS_ANY
-);
+GST_STATIC_PAD_TEMPLATE ("video_%02d",
+ GST_PAD_SRC,
+ GST_PAD_SOMETIMES,
+ GST_STATIC_CAPS_ANY);
static GstElementClass *parent_class = NULL;
-static void gst_qtdemux_class_init (GstQTDemuxClass *klass);
-static void gst_qtdemux_base_init (GstQTDemuxClass *klass);
-static void gst_qtdemux_init (GstQTDemux *quicktime_demux);
-static GstElementStateReturn gst_qtdemux_change_state(GstElement *element);
-static void gst_qtdemux_loop_header (GstElement *element);
-static gboolean gst_qtdemux_handle_sink_event (GstQTDemux *qtdemux);
-
-static void qtdemux_parse_moov(GstQTDemux *qtdemux, void *buffer, int length);
-static void qtdemux_parse(GstQTDemux *qtdemux, GNode *node, void *buffer, int length);
-static QtNodeType *qtdemux_type_get(guint32 fourcc);
-static void qtdemux_node_dump(GstQTDemux *qtdemux, GNode *node);
-static void qtdemux_parse_tree(GstQTDemux *qtdemux);
-static GstCaps *qtdemux_video_caps(GstQTDemux *qtdemux, guint32 fourcc, const guint8 *stsd_data);
-static GstCaps *qtdemux_audio_caps(GstQTDemux *qtdemux, guint32 fourcc, const guint8 *data);
-
-static GType gst_qtdemux_get_type (void)
+static void gst_qtdemux_class_init (GstQTDemuxClass * klass);
+static void gst_qtdemux_base_init (GstQTDemuxClass * klass);
+static void gst_qtdemux_init (GstQTDemux * quicktime_demux);
+static GstElementStateReturn gst_qtdemux_change_state (GstElement * element);
+static void gst_qtdemux_loop_header (GstElement * element);
+static gboolean gst_qtdemux_handle_sink_event (GstQTDemux * qtdemux);
+
+static void qtdemux_parse_moov (GstQTDemux * qtdemux, void *buffer, int length);
+static void qtdemux_parse (GstQTDemux * qtdemux, GNode * node, void *buffer,
+ int length);
+static QtNodeType *qtdemux_type_get (guint32 fourcc);
+static void qtdemux_node_dump (GstQTDemux * qtdemux, GNode * node);
+static void qtdemux_parse_tree (GstQTDemux * qtdemux);
+static GstCaps *qtdemux_video_caps (GstQTDemux * qtdemux, guint32 fourcc,
+ const guint8 * stsd_data);
+static GstCaps *qtdemux_audio_caps (GstQTDemux * qtdemux, guint32 fourcc,
+ const guint8 * data);
+
+static GType
+gst_qtdemux_get_type (void)
{
static GType qtdemux_type = 0;
if (!qtdemux_type) {
static const GTypeInfo qtdemux_info = {
- sizeof(GstQTDemuxClass),
- (GBaseInitFunc)gst_qtdemux_base_init, NULL,
- (GClassInitFunc)gst_qtdemux_class_init,
- NULL, NULL, sizeof(GstQTDemux), 0,
- (GInstanceInitFunc)gst_qtdemux_init,
+ sizeof (GstQTDemuxClass),
+ (GBaseInitFunc) gst_qtdemux_base_init, NULL,
+ (GClassInitFunc) gst_qtdemux_class_init,
+ NULL, NULL, sizeof (GstQTDemux), 0,
+ (GInstanceInitFunc) gst_qtdemux_init,
};
- qtdemux_type = g_type_register_static (GST_TYPE_ELEMENT, "GstQTDemux", &qtdemux_info, 0);
+ qtdemux_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstQTDemux", &qtdemux_info,
+ 0);
}
return qtdemux_type;
}
-static void gst_qtdemux_base_init (GstQTDemuxClass *klass)
+static void
+gst_qtdemux_base_init (GstQTDemuxClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
@@ -187,31 +195,33 @@ static void gst_qtdemux_base_init (GstQTDemuxClass *klass)
}
-static void gst_qtdemux_class_init (GstQTDemuxClass *klass)
+static void
+gst_qtdemux_class_init (GstQTDemuxClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gstelement_class->change_state = gst_qtdemux_change_state;
}
-static void
-gst_qtdemux_init (GstQTDemux *qtdemux)
+static void
+gst_qtdemux_init (GstQTDemux * qtdemux)
{
- qtdemux->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_qtdemux_sink_template), "sink");
+ qtdemux->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_qtdemux_sink_template), "sink");
gst_element_set_loop_function (GST_ELEMENT (qtdemux),
gst_qtdemux_loop_header);
gst_element_add_pad (GST_ELEMENT (qtdemux), qtdemux->sinkpad);
}
static const GstFormat *
-gst_qtdemux_get_src_formats (GstPad *pad)
+gst_qtdemux_get_src_formats (GstPad * pad)
{
static const GstFormat src_a_formats[] = {
GST_FORMAT_TIME,
@@ -224,55 +234,55 @@ gst_qtdemux_get_src_formats (GstPad *pad)
GST_FORMAT_DEFAULT,
0
};
- QtDemuxStream *stream = gst_pad_get_element_private(pad);
+ QtDemuxStream *stream = gst_pad_get_element_private (pad);
- return (stream->subtype == GST_MAKE_FOURCC('v','i','d','e')) ?
- src_v_formats : src_a_formats;
+ return (stream->subtype == GST_MAKE_FOURCC ('v', 'i', 'd', 'e')) ?
+ src_v_formats : src_a_formats;
}
static gboolean
-gst_qtdemux_src_convert (GstPad *pad, GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value)
+gst_qtdemux_src_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
+ GstFormat * dest_format, gint64 * dest_value)
{
gboolean res = TRUE;
- QtDemuxStream *stream = gst_pad_get_element_private(pad);
+ QtDemuxStream *stream = gst_pad_get_element_private (pad);
- if (stream->subtype == GST_MAKE_FOURCC('v','i','d','e') &&
+ if (stream->subtype == GST_MAKE_FOURCC ('v', 'i', 'd', 'e') &&
(src_format == GST_FORMAT_BYTES || *dest_format == GST_FORMAT_BYTES))
return FALSE;
switch (src_format) {
case GST_FORMAT_TIME:
switch (*dest_format) {
- case GST_FORMAT_BYTES:
- *dest_value = src_value * 1; /* FIXME */
- break;
- case GST_FORMAT_DEFAULT:
- *dest_value = src_value * 1; /* FIXME */
- break;
- default:
- res = FALSE;
- break;
+ case GST_FORMAT_BYTES:
+ *dest_value = src_value * 1; /* FIXME */
+ break;
+ case GST_FORMAT_DEFAULT:
+ *dest_value = src_value * 1; /* FIXME */
+ break;
+ default:
+ res = FALSE;
+ break;
}
break;
case GST_FORMAT_BYTES:
switch (*dest_format) {
- case GST_FORMAT_TIME:
- *dest_value = src_value * 1; /* FIXME */
- break;
- default:
- res = FALSE;
- break;
+ case GST_FORMAT_TIME:
+ *dest_value = src_value * 1; /* FIXME */
+ break;
+ default:
+ res = FALSE;
+ break;
}
break;
case GST_FORMAT_DEFAULT:
switch (*dest_format) {
- case GST_FORMAT_TIME:
- *dest_value = src_value * 1; /* FIXME */
- break;
- default:
- res = FALSE;
- break;
+ case GST_FORMAT_TIME:
+ *dest_value = src_value * 1; /* FIXME */
+ break;
+ default:
+ res = FALSE;
+ break;
}
break;
default:
@@ -283,7 +293,7 @@ gst_qtdemux_src_convert (GstPad *pad, GstFormat src_format, gint64 src_value,
}
static const GstQueryType *
-gst_qtdemux_get_src_query_types (GstPad *pad)
+gst_qtdemux_get_src_query_types (GstPad * pad)
{
static const GstQueryType src_types[] = {
GST_QUERY_TOTAL,
@@ -295,54 +305,55 @@ gst_qtdemux_get_src_query_types (GstPad *pad)
}
static const GstEventMask *
-gst_qtdemux_get_event_mask (GstPad *pad)
+gst_qtdemux_get_event_mask (GstPad * pad)
{
static const GstEventMask masks[] = {
- { GST_EVENT_SEEK, GST_SEEK_METHOD_SET | GST_SEEK_FLAG_KEY_UNIT },
- { 0, }
+ {GST_EVENT_SEEK, GST_SEEK_METHOD_SET | GST_SEEK_FLAG_KEY_UNIT},
+ {0,}
};
return masks;
}
static gboolean
-gst_qtdemux_handle_src_query (GstPad *pad, GstQueryType type,
- GstFormat *format, gint64 *value)
+gst_qtdemux_handle_src_query (GstPad * pad, GstQueryType type,
+ GstFormat * format, gint64 * value)
{
gboolean res = TRUE;
+
//QtDemuxStream *stream = gst_pad_get_element_private(pad);
switch (type) {
case GST_QUERY_TOTAL:
switch (*format) {
- case GST_FORMAT_TIME:
- *value = 0; /* FIXME */
- break;
- case GST_FORMAT_BYTES:
- *value = 0; /* FIXME */
- break;
- case GST_FORMAT_DEFAULT:
- *value = 0; /* FIXME */
- break;
- default:
- res = FALSE;
- break;
+ case GST_FORMAT_TIME:
+ *value = 0; /* FIXME */
+ break;
+ case GST_FORMAT_BYTES:
+ *value = 0; /* FIXME */
+ break;
+ case GST_FORMAT_DEFAULT:
+ *value = 0; /* FIXME */
+ break;
+ default:
+ res = FALSE;
+ break;
}
break;
case GST_QUERY_POSITION:
switch (*format) {
- case GST_FORMAT_TIME:
- *value = 0; /* FIXME */
- break;
- case GST_FORMAT_BYTES:
- *value = 0; /* FIXME */
- break;
- case GST_FORMAT_DEFAULT:
- *value = 0; /* FIXME */
- break;
- default:
- res = FALSE;
- break;
+ case GST_FORMAT_TIME:
+ *value = 0; /* FIXME */
+ break;
+ case GST_FORMAT_BYTES:
+ *value = 0; /* FIXME */
+ break;
+ case GST_FORMAT_DEFAULT:
+ *value = 0; /* FIXME */
+ break;
+ default:
+ res = FALSE;
+ break;
}
break;
default:
@@ -354,9 +365,10 @@ gst_qtdemux_handle_src_query (GstPad *pad, GstQueryType type,
}
static gboolean
-gst_qtdemux_handle_src_event (GstPad *pad, GstEvent *event)
+gst_qtdemux_handle_src_event (GstPad * pad, GstEvent * event)
{
gboolean res = TRUE;
+
//QtDemuxStream *stream = gst_pad_get_element_private(pad);
switch (GST_EVENT_TYPE (event)) {
@@ -364,19 +376,19 @@ gst_qtdemux_handle_src_event (GstPad *pad, GstEvent *event)
GST_DEBUG ("seek format %d", GST_EVENT_SEEK_FORMAT (event));
switch (GST_EVENT_SEEK_FORMAT (event)) {
- case GST_FORMAT_BYTES:
- case GST_FORMAT_DEFAULT:
- case GST_FORMAT_TIME:
- {
- gint64 desired_offset = GST_EVENT_SEEK_OFFSET (event);
-
- GST_DEBUG ("seeking to %" G_GINT64_FORMAT, desired_offset);
-
- res = FALSE;
- }
- default:
- res = FALSE;
- break;
+ case GST_FORMAT_BYTES:
+ case GST_FORMAT_DEFAULT:
+ case GST_FORMAT_TIME:
+ {
+ gint64 desired_offset = GST_EVENT_SEEK_OFFSET (event);
+
+ GST_DEBUG ("seeking to %" G_GINT64_FORMAT, desired_offset);
+
+ res = FALSE;
+ }
+ default:
+ res = FALSE;
+ break;
}
default:
res = FALSE;
@@ -393,7 +405,7 @@ gst_qtdemux_handle_src_event (GstPad *pad, GstEvent *event)
GST_DEBUG_CATEGORY (qtdemux_debug);
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (qtdemux_debug, "qtdemux", 0, "qtdemux plugin");
@@ -404,36 +416,30 @@ plugin_init (GstPlugin *plugin)
return FALSE;
return gst_element_register (plugin, "qtdemux",
- GST_RANK_PRIMARY, GST_TYPE_QTDEMUX);
+ GST_RANK_PRIMARY, GST_TYPE_QTDEMUX);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "qtdemux",
- "Quicktime stream demuxer",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
-
-static gboolean gst_qtdemux_handle_sink_event (GstQTDemux *qtdemux)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "qtdemux",
+ "Quicktime stream demuxer",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
+
+ static gboolean gst_qtdemux_handle_sink_event (GstQTDemux * qtdemux)
{
guint32 remaining;
GstEvent *event;
GstEventType type;
- gst_bytestream_get_status(qtdemux->bs, &remaining, &event);
+ gst_bytestream_get_status (qtdemux->bs, &remaining, &event);
- type = event ? GST_EVENT_TYPE(event) : GST_EVENT_UNKNOWN;
+ type = event ? GST_EVENT_TYPE (event) : GST_EVENT_UNKNOWN;
GST_DEBUG ("qtdemux: event %p %d", event, type);
- switch(type){
+ switch (type) {
case GST_EVENT_EOS:
- gst_bytestream_flush(qtdemux->bs, remaining);
- gst_pad_event_default(qtdemux->sinkpad, event);
+ gst_bytestream_flush (qtdemux->bs, remaining);
+ gst_pad_event_default (qtdemux->sinkpad, event);
return FALSE;
case GST_EVENT_FLUSH:
//g_warning("flush event");
@@ -443,23 +449,24 @@ static gboolean gst_qtdemux_handle_sink_event (GstQTDemux *qtdemux)
//gst_bytestream_flush_fast(qtdemux->bs, remaining);
break;
default:
- g_warning("unhandled event %d",type);
+ g_warning ("unhandled event %d", type);
break;
}
- gst_event_unref(event);
+ gst_event_unref (event);
return TRUE;
}
-static GstElementStateReturn gst_qtdemux_change_state(GstElement *element)
+static GstElementStateReturn
+gst_qtdemux_change_state (GstElement * element)
{
- GstQTDemux *qtdemux = GST_QTDEMUX(element);
+ GstQTDemux *qtdemux = GST_QTDEMUX (element);
- switch(GST_STATE_TRANSITION(element)){
+ switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_NULL_TO_READY:
break;
case GST_STATE_READY_TO_PAUSED:
- qtdemux->bs = gst_bytestream_new(qtdemux->sinkpad);
+ qtdemux->bs = gst_bytestream_new (qtdemux->sinkpad);
qtdemux->state = QTDEMUX_STATE_HEADER;
/* FIXME */
break;
@@ -468,7 +475,7 @@ static GstElementStateReturn gst_qtdemux_change_state(GstElement *element)
case GST_STATE_PLAYING_TO_PAUSED:
break;
case GST_STATE_PAUSED_TO_READY:
- gst_bytestream_destroy(qtdemux->bs);
+ gst_bytestream_destroy (qtdemux->bs);
break;
case GST_STATE_READY_TO_NULL:
break;
@@ -476,12 +483,13 @@ static GstElementStateReturn gst_qtdemux_change_state(GstElement *element)
break;
}
- return GST_ELEMENT_CLASS(parent_class)->change_state(element);
+ return GST_ELEMENT_CLASS (parent_class)->change_state (element);
}
-static void gst_qtdemux_loop_header (GstElement *element)
+static void
+gst_qtdemux_loop_header (GstElement * element)
{
- GstQTDemux *qtdemux = GST_QTDEMUX(element);
+ GstQTDemux *qtdemux = GST_QTDEMUX (element);
guint8 *data;
guint32 length;
guint32 fourcc;
@@ -493,220 +501,230 @@ static void gst_qtdemux_loop_header (GstElement *element)
/* FIXME _tell gets the offset wrong */
//cur_offset = gst_bytestream_tell(qtdemux->bs);
-
+
cur_offset = qtdemux->offset;
- GST_DEBUG ("loop at position %d",cur_offset);
-
- switch(qtdemux->state){
- case QTDEMUX_STATE_HEADER:
- {
- do{
- ret = gst_bytestream_peek_bytes(qtdemux->bs, &data, 16);
- if(ret<16){
- if(!gst_qtdemux_handle_sink_event(qtdemux)){
- return;
+ GST_DEBUG ("loop at position %d", cur_offset);
+
+ switch (qtdemux->state) {
+ case QTDEMUX_STATE_HEADER:
+ {
+ do {
+ ret = gst_bytestream_peek_bytes (qtdemux->bs, &data, 16);
+ if (ret < 16) {
+ if (!gst_qtdemux_handle_sink_event (qtdemux)) {
+ return;
+ }
+ } else {
+ break;
}
- }else{
- break;
+ } while (1);
+
+ length = GUINT32_FROM_BE (*(guint32 *) data);
+ GST_DEBUG ("length %08x", length);
+ fourcc = GUINT32_FROM_LE (*(guint32 *) (data + 4));
+ GST_DEBUG ("fourcc " GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc));
+
+ if (length == 0) {
+ length = gst_bytestream_length (qtdemux->bs) - cur_offset;
}
- }while(1);
+ if (length == 1) {
+ guint32 length1, length2;
- length = GUINT32_FROM_BE(*(guint32 *)data);
- GST_DEBUG ("length %08x",length);
- fourcc = GUINT32_FROM_LE(*(guint32 *)(data+4));
- GST_DEBUG ("fourcc " GST_FOURCC_FORMAT, GST_FOURCC_ARGS(fourcc));
+ length1 = GUINT32_FROM_BE (*(guint32 *) (data + 8));
+ GST_DEBUG ("length1 %08x", length1);
+ length2 = GUINT32_FROM_BE (*(guint32 *) (data + 12));
+ GST_DEBUG ("length2 %08x", length2);
- if(length==0){
- length = gst_bytestream_length(qtdemux->bs) - cur_offset;
- }
- if(length==1){
- guint32 length1, length2;
-
- length1 = GUINT32_FROM_BE(*(guint32 *)(data+8));
- GST_DEBUG ("length1 %08x",length1);
- length2 = GUINT32_FROM_BE(*(guint32 *)(data+12));
- GST_DEBUG ("length2 %08x",length2);
-
- length=length2;
- }
-
- switch(fourcc){
- case GST_MAKE_FOURCC('m','d','a','t'):
- case GST_MAKE_FOURCC('f','r','e','e'):
- case GST_MAKE_FOURCC('w','i','d','e'):
- case GST_MAKE_FOURCC('P','I','C','T'):
- case GST_MAKE_FOURCC('p','n','o','t'):
- break;
- case GST_MAKE_FOURCC('m','o','o','v'):
- {
- GstBuffer *moov;
-
- do{
- ret = gst_bytestream_read(qtdemux->bs, &moov, length);
- if(ret < length){
- GST_DEBUG ("read failed (%d < %d)",ret,length);
- if(!gst_qtdemux_handle_sink_event(qtdemux)){
- return;
+ length = length2;
+ }
+
+ switch (fourcc) {
+ case GST_MAKE_FOURCC ('m', 'd', 'a', 't'):
+ case GST_MAKE_FOURCC ('f', 'r', 'e', 'e'):
+ case GST_MAKE_FOURCC ('w', 'i', 'd', 'e'):
+ case GST_MAKE_FOURCC ('P', 'I', 'C', 'T'):
+ case GST_MAKE_FOURCC ('p', 'n', 'o', 't'):
+ break;
+ case GST_MAKE_FOURCC ('m', 'o', 'o', 'v'):
+ {
+ GstBuffer *moov;
+
+ do {
+ ret = gst_bytestream_read (qtdemux->bs, &moov, length);
+ if (ret < length) {
+ GST_DEBUG ("read failed (%d < %d)", ret, length);
+ if (!gst_qtdemux_handle_sink_event (qtdemux)) {
+ return;
+ }
+ } else {
+ break;
}
- }else{
- break;
+ } while (1);
+
+ qtdemux_parse_moov (qtdemux, GST_BUFFER_DATA (moov), length);
+ if (1)
+ qtdemux_node_dump (qtdemux, qtdemux->moov_node);
+ qtdemux_parse_tree (qtdemux);
+ qtdemux->state = QTDEMUX_STATE_MOVIE;
+ break;
+ }
+ default:
+ {
+ GST_LOG ("unknown %08x '" GST_FOURCC_FORMAT "' at %d\n",
+ fourcc, GST_FOURCC_ARGS (fourcc), cur_offset);
+ break;
+ }
+ }
+ ret = gst_bytestream_seek (qtdemux->bs, cur_offset + length,
+ GST_SEEK_METHOD_SET);
+ qtdemux->offset = cur_offset + length;
+ GST_DEBUG ("seek returned %d\n", ret);
+ break;
+ }
+ case QTDEMUX_STATE_SEEKING_EOS:
+ {
+ guint8 *data;
+
+ do {
+ ret = gst_bytestream_peek_bytes (qtdemux->bs, &data, 1);
+ if (ret < 1) {
+ if (!gst_qtdemux_handle_sink_event (qtdemux)) {
+ return;
}
- }while(1);
+ } else {
+ break;
+ }
+ } while (TRUE);
+ gst_element_set_eos (element);
- qtdemux_parse_moov(qtdemux, GST_BUFFER_DATA(moov), length);
- if(1)qtdemux_node_dump(qtdemux, qtdemux->moov_node);
- qtdemux_parse_tree(qtdemux);
- qtdemux->state = QTDEMUX_STATE_MOVIE;
- break;
- }
- default:
- {
- GST_LOG("unknown %08x '" GST_FOURCC_FORMAT "' at %d\n",
- fourcc, GST_FOURCC_ARGS(fourcc), cur_offset);
- break;
- }
+ qtdemux->state = QTDEMUX_STATE_EOS;
+ return;
}
- ret = gst_bytestream_seek(qtdemux->bs, cur_offset + length,
- GST_SEEK_METHOD_SET);
- qtdemux->offset = cur_offset + length;
- GST_DEBUG ("seek returned %d\n",ret);
- break;
- }
- case QTDEMUX_STATE_SEEKING_EOS:
- {
- guint8 *data;
-
- do{
- ret = gst_bytestream_peek_bytes(qtdemux->bs, &data, 1);
- if(ret<1){
- if(!gst_qtdemux_handle_sink_event(qtdemux)){
- return;
- }
- }else{
- break;
+ case QTDEMUX_STATE_EOS:
+ g_warning ("spinning in EOS\n");
+ return;
+ case QTDEMUX_STATE_MOVIE:
+ {
+ QtDemuxStream *stream;
+ guint64 min_time;
+ int index = -1;
+ int i;
+
+ min_time = G_MAXUINT64;
+ for (i = 0; i < qtdemux->n_streams; i++) {
+ stream = qtdemux->streams[i];
+
+ if (stream->sample_index < stream->n_samples &&
+ stream->samples[stream->sample_index].timestamp < min_time) {
+ min_time = stream->samples[stream->sample_index].timestamp;
+ index = i;
+ }
}
- }while(TRUE);
- gst_element_set_eos(element);
- qtdemux->state = QTDEMUX_STATE_EOS;
- return;
- }
- case QTDEMUX_STATE_EOS:
- g_warning("spinning in EOS\n");
- return;
- case QTDEMUX_STATE_MOVIE:
- {
- QtDemuxStream *stream;
- guint64 min_time;
- int index = -1;
- int i;
-
- min_time = G_MAXUINT64;
- for(i=0;i<qtdemux->n_streams;i++){
- stream = qtdemux->streams[i];
-
- if(stream->sample_index < stream->n_samples &&
- stream->samples[stream->sample_index].timestamp < min_time){
- min_time = stream->samples[stream->sample_index].timestamp;
- index = i;
- }
- }
+ if (index == -1) {
+ for (i = 0; i < qtdemux->n_streams; i++) {
+ gst_pad_push (qtdemux->streams[i]->pad,
+ GST_DATA (gst_event_new (GST_EVENT_EOS)));
+ }
+ ret = gst_bytestream_seek (qtdemux->bs, 0, GST_SEEK_METHOD_END);
+ GST_DEBUG ("seek returned %d", ret);
- if(index==-1){
- for(i=0;i<qtdemux->n_streams;i++){
- gst_pad_push(qtdemux->streams[i]->pad,
- GST_DATA(gst_event_new (GST_EVENT_EOS)));
+ qtdemux->state = QTDEMUX_STATE_SEEKING_EOS;
+ return;
}
- ret = gst_bytestream_seek(qtdemux->bs, 0, GST_SEEK_METHOD_END);
- GST_DEBUG ("seek returned %d",ret);
-
- qtdemux->state = QTDEMUX_STATE_SEEKING_EOS;
- return;
- }
- stream = qtdemux->streams[index];
+ stream = qtdemux->streams[index];
- offset = stream->samples[stream->sample_index].offset;
- size = stream->samples[stream->sample_index].size;
+ offset = stream->samples[stream->sample_index].offset;
+ size = stream->samples[stream->sample_index].size;
- GST_INFO ("pushing from stream %d, sample_index=%d offset=%d size=%d timestamp=%lld",
- index, stream->sample_index, offset, size,
- stream->samples[stream->sample_index].timestamp);
+ GST_INFO
+ ("pushing from stream %d, sample_index=%d offset=%d size=%d timestamp=%lld",
+ index, stream->sample_index, offset, size,
+ stream->samples[stream->sample_index].timestamp);
- cur_offset = gst_bytestream_tell(qtdemux->bs);
- if(offset != cur_offset){
- GST_DEBUG ("seeking to offset %d",offset);
- GST_LOG ("seeking to offset %d\n",offset);
- ret = gst_bytestream_seek(qtdemux->bs, offset, GST_SEEK_METHOD_SET);
- GST_DEBUG ("seek returned %d",ret);
- return;
- }
+ cur_offset = gst_bytestream_tell (qtdemux->bs);
+ if (offset != cur_offset) {
+ GST_DEBUG ("seeking to offset %d", offset);
+ GST_LOG ("seeking to offset %d\n", offset);
+ ret = gst_bytestream_seek (qtdemux->bs, offset, GST_SEEK_METHOD_SET);
+ GST_DEBUG ("seek returned %d", ret);
+ return;
+ }
- GST_DEBUG ("reading %d bytes\n",size);
- buf = NULL;
- do{
- ret = gst_bytestream_read(qtdemux->bs, &buf, size);
- if(ret < size){
- GST_DEBUG ("read failed (%d < %d)",ret,size);
- if(!gst_qtdemux_handle_sink_event(qtdemux)){
- return;
+ GST_DEBUG ("reading %d bytes\n", size);
+ buf = NULL;
+ do {
+ ret = gst_bytestream_read (qtdemux->bs, &buf, size);
+ if (ret < size) {
+ GST_DEBUG ("read failed (%d < %d)", ret, size);
+ if (!gst_qtdemux_handle_sink_event (qtdemux)) {
+ return;
+ }
+ } else {
+ break;
+ }
+ } while (TRUE);
+
+ if (buf) {
+ /* hum... */
+ if (stream->subtype == GST_MAKE_FOURCC ('v', 'i', 'd', 'e')) {
+ float fps =
+ 1. * GST_SECOND / stream->samples[stream->sample_index].duration;
+ if (fps != stream->fps) {
+ gst_caps_set_simple (stream->caps, "framerate", G_TYPE_DOUBLE, fps,
+ NULL);
+ stream->fps = fps;
+ gst_pad_set_explicit_caps (stream->pad, stream->caps);
+ }
}
- }else{
- break;
- }
- }while(TRUE);
-
- if(buf){
- /* hum... */
- if(stream->subtype == GST_MAKE_FOURCC('v','i','d','e')){
- float fps = 1. * GST_SECOND / stream->samples[stream->sample_index].duration;
- if (fps != stream->fps) {
- gst_caps_set_simple (stream->caps, "framerate", G_TYPE_DOUBLE, fps,
- NULL);
- stream->fps = fps;
- gst_pad_set_explicit_caps(stream->pad, stream->caps);
- }
- }
- GST_BUFFER_TIMESTAMP(buf) = stream->samples[stream->sample_index].timestamp;
- GST_BUFFER_DURATION(buf) = stream->samples[stream->sample_index].duration;
- gst_pad_push(stream->pad, GST_DATA (buf));
+ GST_BUFFER_TIMESTAMP (buf) =
+ stream->samples[stream->sample_index].timestamp;
+ GST_BUFFER_DURATION (buf) =
+ stream->samples[stream->sample_index].duration;
+ gst_pad_push (stream->pad, GST_DATA (buf));
- GST_DEBUG ("pushing buffer on %" GST_PTR_FORMAT, stream->pad);
+ GST_DEBUG ("pushing buffer on %" GST_PTR_FORMAT, stream->pad);
+ }
+ stream->sample_index++;
+ break;
}
- stream->sample_index++;
- break;
- }
- default:
- /* unreached */
- g_assert(0);
+ default:
+ /* unreached */
+ g_assert (0);
}
}
-void gst_qtdemux_add_stream(GstQTDemux *qtdemux, QtDemuxStream *stream)
+void
+gst_qtdemux_add_stream (GstQTDemux * qtdemux, QtDemuxStream * stream)
{
- if(stream->subtype == GST_MAKE_FOURCC('v','i','d','e')){
+ if (stream->subtype == GST_MAKE_FOURCC ('v', 'i', 'd', 'e')) {
gchar *name = g_strdup_printf ("video_%02d", qtdemux->n_video_streams);
- stream->pad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_qtdemux_videosrc_template), name);
+
+ stream->pad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_qtdemux_videosrc_template), name);
g_free (name);
stream->fps = 1. * GST_SECOND / stream->samples[0].duration;
- if(stream->caps){
- gst_caps_set_simple(stream->caps,
+ if (stream->caps) {
+ gst_caps_set_simple (stream->caps,
"width", G_TYPE_INT, stream->width,
"height", G_TYPE_INT, stream->height,
"framerate", G_TYPE_DOUBLE, stream->fps, NULL);
}
qtdemux->n_video_streams++;
- }else{
+ } else {
gchar *name = g_strdup_printf ("audio_%02d", qtdemux->n_audio_streams);
- stream->pad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_qtdemux_audiosrc_template), name);
+
+ stream->pad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_qtdemux_audiosrc_template), name);
g_free (name);
- if(stream->caps){
- gst_caps_set_simple(stream->caps,
- "rate", G_TYPE_INT, (int)stream->rate,
+ if (stream->caps) {
+ gst_caps_set_simple (stream->caps,
+ "rate", G_TYPE_INT, (int) stream->rate,
"channels", G_TYPE_INT, stream->n_channels, NULL);
}
qtdemux->n_audio_streams++;
@@ -714,22 +732,23 @@ void gst_qtdemux_add_stream(GstQTDemux *qtdemux, QtDemuxStream *stream)
gst_pad_use_explicit_caps (stream->pad);
- GST_PAD_ELEMENT_PRIVATE(stream->pad) = stream;
+ GST_PAD_ELEMENT_PRIVATE (stream->pad) = stream;
qtdemux->streams[qtdemux->n_streams] = stream;
qtdemux->n_streams++;
GST_DEBUG ("n_streams is now %d", qtdemux->n_streams);
gst_pad_set_event_mask_function (stream->pad, gst_qtdemux_get_event_mask);
gst_pad_set_event_function (stream->pad, gst_qtdemux_handle_src_event);
- gst_pad_set_query_type_function (stream->pad, gst_qtdemux_get_src_query_types);
+ gst_pad_set_query_type_function (stream->pad,
+ gst_qtdemux_get_src_query_types);
gst_pad_set_query_function (stream->pad, gst_qtdemux_handle_src_query);
gst_pad_set_formats_function (stream->pad, gst_qtdemux_get_src_formats);
gst_pad_set_convert_function (stream->pad, gst_qtdemux_src_convert);
- gst_pad_set_explicit_caps(stream->pad, stream->caps);
+ gst_pad_set_explicit_caps (stream->pad, stream->caps);
GST_DEBUG ("adding pad %p to qtdemux %p", stream->pad, qtdemux);
- gst_element_add_pad(GST_ELEMENT (qtdemux), stream->pad);
+ gst_element_add_pad (GST_ELEMENT (qtdemux), stream->pad);
}
@@ -777,101 +796,104 @@ void gst_qtdemux_add_stream(GstQTDemux *qtdemux, QtDemuxStream *stream)
#define FOURCC_cmvd GST_MAKE_FOURCC('c','m','v','d')
-static void qtdemux_dump_mvhd(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_tkhd(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_elst(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_mdhd(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_hdlr(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_vmhd(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_dref(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_stsd(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_stts(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_stss(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_stsc(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_stsz(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_stco(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_co64(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_dcom(GstQTDemux *qtdemux, void *buffer, int depth);
-static void qtdemux_dump_cmvd(GstQTDemux *qtdemux, void *buffer, int depth);
+static void qtdemux_dump_mvhd (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_tkhd (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_elst (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_mdhd (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_hdlr (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_vmhd (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_dref (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_stsd (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_stts (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_stss (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_stsc (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_stsz (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_stco (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_co64 (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_dcom (GstQTDemux * qtdemux, void *buffer, int depth);
+static void qtdemux_dump_cmvd (GstQTDemux * qtdemux, void *buffer, int depth);
QtNodeType qt_node_types[] = {
- { FOURCC_moov, "movie", QT_CONTAINER, },
- { FOURCC_mvhd, "movie header", 0,
- qtdemux_dump_mvhd },
- { FOURCC_clip, "clipping", QT_CONTAINER, },
- { FOURCC_trak, "track", QT_CONTAINER, },
- { FOURCC_udta, "user data", 0, }, /* special container */
- { FOURCC_ctab, "color table", 0, },
- { FOURCC_tkhd, "track header", 0,
- qtdemux_dump_tkhd },
- { FOURCC_crgn, "clipping region", 0, },
- { FOURCC_matt, "track matte", QT_CONTAINER, },
- { FOURCC_kmat, "compressed matte", 0, },
- { FOURCC_edts, "edit", QT_CONTAINER, },
- { FOURCC_elst, "edit list", 0,
- qtdemux_dump_elst },
- { FOURCC_load, "track load settings", 0, },
- { FOURCC_tref, "track reference", QT_CONTAINER, },
- { FOURCC_imap, "track input map", QT_CONTAINER, },
- { FOURCC___in, "track input", 0, }, /* special container */
- { FOURCC___ty, "input type", 0, },
- { FOURCC_mdia, "media", QT_CONTAINER },
- { FOURCC_mdhd, "media header", 0,
- qtdemux_dump_mdhd },
- { FOURCC_hdlr, "handler reference", 0,
- qtdemux_dump_hdlr },
- { FOURCC_minf, "media information", QT_CONTAINER },
- { FOURCC_vmhd, "video media information", 0,
- qtdemux_dump_vmhd },
- { FOURCC_smhd, "sound media information", 0 },
- { FOURCC_gmhd, "base media information header", 0 },
- { FOURCC_gmin, "base media info", 0 },
- { FOURCC_dinf, "data information", QT_CONTAINER },
- { FOURCC_dref, "data reference", 0,
- qtdemux_dump_dref },
- { FOURCC_stbl, "sample table", QT_CONTAINER },
- { FOURCC_stsd, "sample description", 0,
- qtdemux_dump_stsd },
- { FOURCC_stts, "time-to-sample", 0,
- qtdemux_dump_stts },
- { FOURCC_stss, "sync sample", 0,
- qtdemux_dump_stss },
- { FOURCC_stsc, "sample-to-chunk", 0,
- qtdemux_dump_stsc },
- { FOURCC_stsz, "sample size", 0,
- qtdemux_dump_stsz },
- { FOURCC_stco, "chunk offset", 0,
- qtdemux_dump_stco },
- { FOURCC_co64, "64-bit chunk offset", 0,
- qtdemux_dump_co64 },
- { FOURCC_vide, "video media", 0 },
- { FOURCC_cmov, "compressed movie", QT_CONTAINER },
- { FOURCC_dcom, "compressed data", 0,
- qtdemux_dump_dcom },
- { FOURCC_cmvd, "compressed movie data", 0,
- qtdemux_dump_cmvd },
- { 0, "unknown", 0 },
+ {FOURCC_moov, "movie", QT_CONTAINER,},
+ {FOURCC_mvhd, "movie header", 0,
+ qtdemux_dump_mvhd},
+ {FOURCC_clip, "clipping", QT_CONTAINER,},
+ {FOURCC_trak, "track", QT_CONTAINER,},
+ {FOURCC_udta, "user data", 0,}, /* special container */
+ {FOURCC_ctab, "color table", 0,},
+ {FOURCC_tkhd, "track header", 0,
+ qtdemux_dump_tkhd},
+ {FOURCC_crgn, "clipping region", 0,},
+ {FOURCC_matt, "track matte", QT_CONTAINER,},
+ {FOURCC_kmat, "compressed matte", 0,},
+ {FOURCC_edts, "edit", QT_CONTAINER,},
+ {FOURCC_elst, "edit list", 0,
+ qtdemux_dump_elst},
+ {FOURCC_load, "track load settings", 0,},
+ {FOURCC_tref, "track reference", QT_CONTAINER,},
+ {FOURCC_imap, "track input map", QT_CONTAINER,},
+ {FOURCC___in, "track input", 0,}, /* special container */
+ {FOURCC___ty, "input type", 0,},
+ {FOURCC_mdia, "media", QT_CONTAINER},
+ {FOURCC_mdhd, "media header", 0,
+ qtdemux_dump_mdhd},
+ {FOURCC_hdlr, "handler reference", 0,
+ qtdemux_dump_hdlr},
+ {FOURCC_minf, "media information", QT_CONTAINER},
+ {FOURCC_vmhd, "video media information", 0,
+ qtdemux_dump_vmhd},
+ {FOURCC_smhd, "sound media information", 0},
+ {FOURCC_gmhd, "base media information header", 0},
+ {FOURCC_gmin, "base media info", 0},
+ {FOURCC_dinf, "data information", QT_CONTAINER},
+ {FOURCC_dref, "data reference", 0,
+ qtdemux_dump_dref},
+ {FOURCC_stbl, "sample table", QT_CONTAINER},
+ {FOURCC_stsd, "sample description", 0,
+ qtdemux_dump_stsd},
+ {FOURCC_stts, "time-to-sample", 0,
+ qtdemux_dump_stts},
+ {FOURCC_stss, "sync sample", 0,
+ qtdemux_dump_stss},
+ {FOURCC_stsc, "sample-to-chunk", 0,
+ qtdemux_dump_stsc},
+ {FOURCC_stsz, "sample size", 0,
+ qtdemux_dump_stsz},
+ {FOURCC_stco, "chunk offset", 0,
+ qtdemux_dump_stco},
+ {FOURCC_co64, "64-bit chunk offset", 0,
+ qtdemux_dump_co64},
+ {FOURCC_vide, "video media", 0},
+ {FOURCC_cmov, "compressed movie", QT_CONTAINER},
+ {FOURCC_dcom, "compressed data", 0,
+ qtdemux_dump_dcom},
+ {FOURCC_cmvd, "compressed movie data", 0,
+ qtdemux_dump_cmvd},
+ {0, "unknown", 0},
};
-static int n_qt_node_types = sizeof(qt_node_types)/sizeof(qt_node_types[0]);
+static int n_qt_node_types = sizeof (qt_node_types) / sizeof (qt_node_types[0]);
-static void *qtdemux_zalloc(void *opaque, unsigned int items, unsigned int size)
+static void *
+qtdemux_zalloc (void *opaque, unsigned int items, unsigned int size)
{
- return g_malloc(items*size);
+ return g_malloc (items * size);
}
-static void qtdemux_zfree(void *opaque, void *addr)
+static void
+qtdemux_zfree (void *opaque, void *addr)
{
- g_free(addr);
+ g_free (addr);
}
-static void *qtdemux_inflate(void *z_buffer, int z_length, int length)
+static void *
+qtdemux_inflate (void *z_buffer, int z_length, int length)
{
void *buffer;
z_stream *z;
int ret;
- z = g_new0(z_stream, 1);
+ z = g_new0 (z_stream, 1);
z->zalloc = qtdemux_zalloc;
z->zfree = qtdemux_zfree;
z->opaque = NULL;
@@ -879,147 +901,154 @@ static void *qtdemux_inflate(void *z_buffer, int z_length, int length)
z->next_in = z_buffer;
z->avail_in = z_length;
- buffer = g_malloc(length);
- ret = inflateInit(z);
- while(z->avail_in > 0){
- if(z->avail_out == 0){
+ buffer = g_malloc (length);
+ ret = inflateInit (z);
+ while (z->avail_in > 0) {
+ if (z->avail_out == 0) {
length += 1024;
- buffer = realloc(buffer, length);
+ buffer = realloc (buffer, length);
z->next_out = buffer + z->total_out;
z->avail_out = 1024;
}
- ret = inflate(z,Z_SYNC_FLUSH);
- if(ret != Z_OK)break;
+ ret = inflate (z, Z_SYNC_FLUSH);
+ if (ret != Z_OK)
+ break;
}
- if(ret != Z_STREAM_END){
- g_warning("inflate() returned %d\n",ret);
+ if (ret != Z_STREAM_END) {
+ g_warning ("inflate() returned %d\n", ret);
}
- g_free(z);
+ g_free (z);
return buffer;
}
-static void qtdemux_parse_moov(GstQTDemux *qtdemux, void *buffer, int length)
+static void
+qtdemux_parse_moov (GstQTDemux * qtdemux, void *buffer, int length)
{
GNode *cmov;
- qtdemux->moov_node = g_node_new(buffer);
+ qtdemux->moov_node = g_node_new (buffer);
- qtdemux_parse(qtdemux, qtdemux->moov_node, buffer, length);
+ qtdemux_parse (qtdemux, qtdemux->moov_node, buffer, length);
- cmov = qtdemux_tree_get_child_by_type(qtdemux->moov_node, FOURCC_cmov);
- if(cmov){
+ cmov = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_cmov);
+ if (cmov) {
GNode *dcom;
GNode *cmvd;
- dcom = qtdemux_tree_get_child_by_type(cmov, FOURCC_dcom);
- cmvd = qtdemux_tree_get_child_by_type(cmov, FOURCC_cmvd);
+ dcom = qtdemux_tree_get_child_by_type (cmov, FOURCC_dcom);
+ cmvd = qtdemux_tree_get_child_by_type (cmov, FOURCC_cmvd);
- if(QTDEMUX_FOURCC_GET(dcom->data+8) == GST_MAKE_FOURCC('z','l','i','b')){
+ if (QTDEMUX_FOURCC_GET (dcom->data + 8) == GST_MAKE_FOURCC ('z', 'l', 'i',
+ 'b')) {
int uncompressed_length;
int compressed_length;
void *buf;
-
- uncompressed_length = QTDEMUX_GUINT32_GET(cmvd->data+8);
- compressed_length = QTDEMUX_GUINT32_GET(cmvd->data+4) - 12;
- GST_LOG("length = %d\n",uncompressed_length);
- buf = qtdemux_inflate(cmvd->data + 12, compressed_length,
+ uncompressed_length = QTDEMUX_GUINT32_GET (cmvd->data + 8);
+ compressed_length = QTDEMUX_GUINT32_GET (cmvd->data + 4) - 12;
+ GST_LOG ("length = %d\n", uncompressed_length);
+
+ buf = qtdemux_inflate (cmvd->data + 12, compressed_length,
uncompressed_length);
qtdemux->moov_node_compressed = qtdemux->moov_node;
- qtdemux->moov_node = g_node_new(buf);
+ qtdemux->moov_node = g_node_new (buf);
- qtdemux_parse(qtdemux, qtdemux->moov_node, buf, uncompressed_length);
- }else{
- GST_LOG("unknown header compression type\n");
+ qtdemux_parse (qtdemux, qtdemux->moov_node, buf, uncompressed_length);
+ } else {
+ GST_LOG ("unknown header compression type\n");
}
}
}
-static void qtdemux_parse(GstQTDemux *qtdemux, GNode *node, void *buffer, int length)
+static void
+qtdemux_parse (GstQTDemux * qtdemux, GNode * node, void *buffer, int length)
{
guint32 fourcc;
guint32 node_length;
QtNodeType *type;
void *end;
- GST_LOG("qtdemux_parse %p %d\n",buffer, length);
+ GST_LOG ("qtdemux_parse %p %d\n", buffer, length);
- node_length = QTDEMUX_GUINT32_GET(buffer);
- fourcc = QTDEMUX_FOURCC_GET(buffer+4);
+ node_length = QTDEMUX_GUINT32_GET (buffer);
+ fourcc = QTDEMUX_FOURCC_GET (buffer + 4);
- type = qtdemux_type_get(fourcc);
-
- GST_LOG("parsing '" GST_FOURCC_FORMAT "', length=%d\n",
- GST_FOURCC_ARGS(fourcc), node_length);
+ type = qtdemux_type_get (fourcc);
- if(type->flags & QT_CONTAINER){
+ GST_LOG ("parsing '" GST_FOURCC_FORMAT "', length=%d\n",
+ GST_FOURCC_ARGS (fourcc), node_length);
+
+ if (type->flags & QT_CONTAINER) {
void *buf;
guint32 len;
buf = buffer + 8;
end = buffer + length;
- while(buf < end){
+ while (buf < end) {
GNode *child;
- if(buf + 8 >= end){
+ if (buf + 8 >= end) {
/* FIXME: get annoyed */
- GST_LOG("buffer overrun\n");
+ GST_LOG ("buffer overrun\n");
}
- len = QTDEMUX_GUINT32_GET(buf);
+ len = QTDEMUX_GUINT32_GET (buf);
- child = g_node_new(buf);
- g_node_append(node, child);
- qtdemux_parse(qtdemux, child, buf, len);
+ child = g_node_new (buf);
+ g_node_append (node, child);
+ qtdemux_parse (qtdemux, child, buf, len);
buf += len;
}
- }else{
+ } else {
#if 0
- if(fourcc == FOURCC_cmvd){
+ if (fourcc == FOURCC_cmvd) {
int uncompressed_length;
void *buf;
-
- uncompressed_length = QTDEMUX_GUINT32_GET(buffer+8);
- GST_LOG("length = %d\n",uncompressed_length);
- buf = qtdemux_inflate(buffer + 12, node_length-12, uncompressed_length);
+ uncompressed_length = QTDEMUX_GUINT32_GET (buffer + 8);
+ GST_LOG ("length = %d\n", uncompressed_length);
+
+ buf =
+ qtdemux_inflate (buffer + 12, node_length - 12, uncompressed_length);
end = buf + uncompressed_length;
- while(buf < end){
- GNode *child;
+ while (buf < end) {
+ GNode *child;
guint32 len;
- if(buf + 8 >= end){
+ if (buf + 8 >= end) {
/* FIXME: get annoyed */
- GST_LOG("buffer overrun\n");
- }
- len = QTDEMUX_GUINT32_GET(buf);
+ GST_LOG ("buffer overrun\n");
+ }
+ len = QTDEMUX_GUINT32_GET (buf);
- child = g_node_new(buf);
- g_node_append(node, child);
- qtdemux_parse(qtdemux, child, buf, len);
+ child = g_node_new (buf);
+ g_node_append (node, child);
+ qtdemux_parse (qtdemux, child, buf, len);
- buf += len;
+ buf += len;
}
}
#endif
}
}
-static QtNodeType *qtdemux_type_get(guint32 fourcc)
+static QtNodeType *
+qtdemux_type_get (guint32 fourcc)
{
int i;
- for(i=0;i<n_qt_node_types;i++){
- if(qt_node_types[i].fourcc == fourcc)
- return qt_node_types+i;
+ for (i = 0; i < n_qt_node_types; i++) {
+ if (qt_node_types[i].fourcc == fourcc)
+ return qt_node_types + i;
}
- return qt_node_types+n_qt_node_types-1;
+ return qt_node_types + n_qt_node_types - 1;
}
-static gboolean qtdemux_node_dump_foreach(GNode *node, gpointer data)
+static gboolean
+qtdemux_node_dump_foreach (GNode * node, gpointer data)
{
void *buffer = node->data;
guint32 node_length;
@@ -1027,353 +1056,456 @@ static gboolean qtdemux_node_dump_foreach(GNode *node, gpointer data)
QtNodeType *type;
int depth;
- node_length = GUINT32_FROM_BE(*(guint32 *)buffer);
- fourcc = GUINT32_FROM_LE(*(guint32 *)(buffer+4));
+ node_length = GUINT32_FROM_BE (*(guint32 *) buffer);
+ fourcc = GUINT32_FROM_LE (*(guint32 *) (buffer + 4));
- type = qtdemux_type_get(fourcc);
+ type = qtdemux_type_get (fourcc);
- depth = (g_node_depth(node)-1)*2;
- GST_LOG("%*s'" GST_FOURCC_FORMAT "', [%d], %s\n",
- depth, "",
- GST_FOURCC_ARGS(fourcc),
- node_length,
- type->name);
+ depth = (g_node_depth (node) - 1) * 2;
+ GST_LOG ("%*s'" GST_FOURCC_FORMAT "', [%d], %s\n",
+ depth, "", GST_FOURCC_ARGS (fourcc), node_length, type->name);
- if(type->dump)type->dump(data, buffer, depth);
+ if (type->dump)
+ type->dump (data, buffer, depth);
return FALSE;
}
-static void qtdemux_node_dump(GstQTDemux *qtdemux, GNode *node)
+static void
+qtdemux_node_dump (GstQTDemux * qtdemux, GNode * node)
{
- g_node_traverse(qtdemux->moov_node, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
+ g_node_traverse (qtdemux->moov_node, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
qtdemux_node_dump_foreach, qtdemux);
}
-static void qtdemux_dump_mvhd(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_mvhd (GstQTDemux * qtdemux, void *buffer, int depth)
{
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s creation time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- GST_LOG("%*s modify time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+16));
- GST_LOG("%*s time scale: 1/%u sec\n", depth, "", QTDEMUX_GUINT32_GET(buffer+20));
- GST_LOG("%*s duration: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+24));
- GST_LOG("%*s pref. rate: %g\n", depth, "", QTDEMUX_FP32_GET(buffer+28));
- GST_LOG("%*s pref. volume: %g\n", depth, "", QTDEMUX_FP16_GET(buffer+32));
- GST_LOG("%*s preview time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+80));
- GST_LOG("%*s preview dur.: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+84));
- GST_LOG("%*s poster time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+88));
- GST_LOG("%*s select time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+92));
- GST_LOG("%*s select dur.: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+96));
- GST_LOG("%*s current time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+100));
- GST_LOG("%*s next track ID: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+104));
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s creation time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ GST_LOG ("%*s modify time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 16));
+ GST_LOG ("%*s time scale: 1/%u sec\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 20));
+ GST_LOG ("%*s duration: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 24));
+ GST_LOG ("%*s pref. rate: %g\n", depth, "",
+ QTDEMUX_FP32_GET (buffer + 28));
+ GST_LOG ("%*s pref. volume: %g\n", depth, "",
+ QTDEMUX_FP16_GET (buffer + 32));
+ GST_LOG ("%*s preview time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 80));
+ GST_LOG ("%*s preview dur.: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 84));
+ GST_LOG ("%*s poster time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 88));
+ GST_LOG ("%*s select time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 92));
+ GST_LOG ("%*s select dur.: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 96));
+ GST_LOG ("%*s current time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 100));
+ GST_LOG ("%*s next track ID: %d\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 104));
}
-static void qtdemux_dump_tkhd(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_tkhd (GstQTDemux * qtdemux, void *buffer, int depth)
{
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s creation time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- GST_LOG("%*s modify time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+16));
- GST_LOG("%*s track ID: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+20));
- GST_LOG("%*s duration: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+28));
- GST_LOG("%*s layer: %u\n", depth, "", QTDEMUX_GUINT16_GET(buffer+36));
- GST_LOG("%*s alt group: %u\n", depth, "", QTDEMUX_GUINT16_GET(buffer+38));
- GST_LOG("%*s volume: %g\n", depth, "", QTDEMUX_FP16_GET(buffer+44));
- GST_LOG("%*s track width: %g\n", depth, "", QTDEMUX_FP32_GET(buffer+84));
- GST_LOG("%*s track height: %g\n", depth, "", QTDEMUX_FP32_GET(buffer+88));
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s creation time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ GST_LOG ("%*s modify time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 16));
+ GST_LOG ("%*s track ID: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 20));
+ GST_LOG ("%*s duration: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 28));
+ GST_LOG ("%*s layer: %u\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + 36));
+ GST_LOG ("%*s alt group: %u\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + 38));
+ GST_LOG ("%*s volume: %g\n", depth, "",
+ QTDEMUX_FP16_GET (buffer + 44));
+ GST_LOG ("%*s track width: %g\n", depth, "",
+ QTDEMUX_FP32_GET (buffer + 84));
+ GST_LOG ("%*s track height: %g\n", depth, "",
+ QTDEMUX_FP32_GET (buffer + 88));
}
-static void qtdemux_dump_elst(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_elst (GstQTDemux * qtdemux, void *buffer, int depth)
{
int i;
int n;
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s n entries: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- n = QTDEMUX_GUINT32_GET(buffer+12);
- for(i=0;i<n;i++){
- GST_LOG("%*s track dur: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+16+i*12));
- GST_LOG("%*s media time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+20+i*12));
- GST_LOG("%*s media rate: %g\n", depth, "", QTDEMUX_FP32_GET(buffer+24+i*12));
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s n entries: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ n = QTDEMUX_GUINT32_GET (buffer + 12);
+ for (i = 0; i < n; i++) {
+ GST_LOG ("%*s track dur: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 16 + i * 12));
+ GST_LOG ("%*s media time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 20 + i * 12));
+ GST_LOG ("%*s media rate: %g\n", depth, "",
+ QTDEMUX_FP32_GET (buffer + 24 + i * 12));
}
}
-static void qtdemux_dump_mdhd(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_mdhd (GstQTDemux * qtdemux, void *buffer, int depth)
{
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s creation time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- GST_LOG("%*s modify time: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+16));
- GST_LOG("%*s time scale: 1/%u sec\n", depth, "", QTDEMUX_GUINT32_GET(buffer+20));
- GST_LOG("%*s duration: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+24));
- GST_LOG("%*s language: %u\n", depth, "", QTDEMUX_GUINT16_GET(buffer+28));
- GST_LOG("%*s quality: %u\n", depth, "", QTDEMUX_GUINT16_GET(buffer+30));
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s creation time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ GST_LOG ("%*s modify time: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 16));
+ GST_LOG ("%*s time scale: 1/%u sec\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 20));
+ GST_LOG ("%*s duration: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 24));
+ GST_LOG ("%*s language: %u\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + 28));
+ GST_LOG ("%*s quality: %u\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + 30));
}
-static void qtdemux_dump_hdlr(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_hdlr (GstQTDemux * qtdemux, void *buffer, int depth)
{
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s type: " GST_FOURCC_FORMAT "\n", depth, "",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(buffer+12)));
- GST_LOG("%*s subtype: " GST_FOURCC_FORMAT "\n", depth, "",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(buffer+16)));
- GST_LOG("%*s manufacturer: " GST_FOURCC_FORMAT "\n", depth, "",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(buffer+20)));
- GST_LOG("%*s flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+24));
- GST_LOG("%*s flags mask: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+28));
- GST_LOG("%*s name: %*s\n", depth, "",
- QTDEMUX_GUINT8_GET(buffer+32), (char *)(buffer+33));
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s type: " GST_FOURCC_FORMAT "\n", depth, "",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (buffer + 12)));
+ GST_LOG ("%*s subtype: " GST_FOURCC_FORMAT "\n", depth, "",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (buffer + 16)));
+ GST_LOG ("%*s manufacturer: " GST_FOURCC_FORMAT "\n", depth, "",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (buffer + 20)));
+ GST_LOG ("%*s flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 24));
+ GST_LOG ("%*s flags mask: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 28));
+ GST_LOG ("%*s name: %*s\n", depth, "",
+ QTDEMUX_GUINT8_GET (buffer + 32), (char *) (buffer + 33));
}
-static void qtdemux_dump_vmhd(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_vmhd (GstQTDemux * qtdemux, void *buffer, int depth)
{
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s mode/color: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+16));
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s mode/color: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 16));
}
-static void qtdemux_dump_dref(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_dref (GstQTDemux * qtdemux, void *buffer, int depth)
{
int n;
int i;
int offset;
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s n entries: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- n = QTDEMUX_GUINT32_GET(buffer+12);
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s n entries: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ n = QTDEMUX_GUINT32_GET (buffer + 12);
offset = 16;
- for(i=0;i<n;i++){
- GST_LOG("%*s size: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset));
- GST_LOG("%*s type: " GST_FOURCC_FORMAT "\n", depth, "",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(buffer+offset+4)));
- offset += QTDEMUX_GUINT32_GET(buffer+offset);
+ for (i = 0; i < n; i++) {
+ GST_LOG ("%*s size: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset));
+ GST_LOG ("%*s type: " GST_FOURCC_FORMAT "\n", depth, "",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (buffer + offset + 4)));
+ offset += QTDEMUX_GUINT32_GET (buffer + offset);
}
}
-static void qtdemux_dump_stsd(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_stsd (GstQTDemux * qtdemux, void *buffer, int depth)
{
int i;
int n;
int offset;
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s n entries: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- n = QTDEMUX_GUINT32_GET(buffer+12);
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s n entries: %d\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ n = QTDEMUX_GUINT32_GET (buffer + 12);
offset = 16;
- for(i=0;i<n;i++){
- GST_LOG("%*s size: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset));
- GST_LOG("%*s type: " GST_FOURCC_FORMAT "\n", depth, "",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(buffer+offset+4)));
- GST_LOG("%*s data reference:%d\n", depth, "", QTDEMUX_GUINT16_GET(buffer+offset+14));
-
- GST_LOG("%*s version/rev.: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset+16));
- GST_LOG("%*s vendor: " GST_FOURCC_FORMAT "\n", depth, "",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(buffer+offset+20)));
- GST_LOG("%*s temporal qual: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset+24));
- GST_LOG("%*s spatial qual: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset+28));
- GST_LOG("%*s width: %u\n", depth, "", QTDEMUX_GUINT16_GET(buffer+offset+32));
- GST_LOG("%*s height: %u\n", depth, "", QTDEMUX_GUINT16_GET(buffer+offset+34));
- GST_LOG("%*s horiz. resol: %g\n", depth, "", QTDEMUX_FP32_GET(buffer+offset+36));
- GST_LOG("%*s vert. resol.: %g\n", depth, "", QTDEMUX_FP32_GET(buffer+offset+40));
- GST_LOG("%*s data size: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset+44));
- GST_LOG("%*s frame count: %u\n", depth, "", QTDEMUX_GUINT16_GET(buffer+offset+48));
- GST_LOG("%*s compressor: %*s\n", depth, "",
- QTDEMUX_GUINT8_GET(buffer+offset+49), (char *)(buffer+offset+51));
- GST_LOG("%*s depth: %u\n", depth, "", QTDEMUX_GUINT16_GET(buffer+offset+82));
- GST_LOG("%*s color table ID:%u\n", depth, "", QTDEMUX_GUINT16_GET(buffer+offset+84));
-
- offset += QTDEMUX_GUINT32_GET(buffer+offset);
+ for (i = 0; i < n; i++) {
+ GST_LOG ("%*s size: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset));
+ GST_LOG ("%*s type: " GST_FOURCC_FORMAT "\n", depth, "",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (buffer + offset + 4)));
+ GST_LOG ("%*s data reference:%d\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + offset + 14));
+
+ GST_LOG ("%*s version/rev.: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset + 16));
+ GST_LOG ("%*s vendor: " GST_FOURCC_FORMAT "\n", depth, "",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (buffer + offset + 20)));
+ GST_LOG ("%*s temporal qual: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset + 24));
+ GST_LOG ("%*s spatial qual: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset + 28));
+ GST_LOG ("%*s width: %u\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + offset + 32));
+ GST_LOG ("%*s height: %u\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + offset + 34));
+ GST_LOG ("%*s horiz. resol: %g\n", depth, "",
+ QTDEMUX_FP32_GET (buffer + offset + 36));
+ GST_LOG ("%*s vert. resol.: %g\n", depth, "",
+ QTDEMUX_FP32_GET (buffer + offset + 40));
+ GST_LOG ("%*s data size: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset + 44));
+ GST_LOG ("%*s frame count: %u\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + offset + 48));
+ GST_LOG ("%*s compressor: %*s\n", depth, "",
+ QTDEMUX_GUINT8_GET (buffer + offset + 49),
+ (char *) (buffer + offset + 51));
+ GST_LOG ("%*s depth: %u\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + offset + 82));
+ GST_LOG ("%*s color table ID:%u\n", depth, "",
+ QTDEMUX_GUINT16_GET (buffer + offset + 84));
+
+ offset += QTDEMUX_GUINT32_GET (buffer + offset);
}
}
-static void qtdemux_dump_stts(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_stts (GstQTDemux * qtdemux, void *buffer, int depth)
{
int i;
int n;
int offset;
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s n entries: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- n = QTDEMUX_GUINT32_GET(buffer+12);
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s n entries: %d\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ n = QTDEMUX_GUINT32_GET (buffer + 12);
offset = 16;
- for(i=0;i<n;i++){
- GST_LOG("%*s count: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset));
- GST_LOG("%*s duration: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset + 4));
+ for (i = 0; i < n; i++) {
+ GST_LOG ("%*s count: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset));
+ GST_LOG ("%*s duration: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset + 4));
offset += 8;
}
}
-static void qtdemux_dump_stss(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_stss (GstQTDemux * qtdemux, void *buffer, int depth)
{
int i;
int n;
int offset;
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s n entries: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- n = QTDEMUX_GUINT32_GET(buffer+12);
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s n entries: %d\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ n = QTDEMUX_GUINT32_GET (buffer + 12);
offset = 16;
- for(i=0;i<n;i++){
- GST_LOG("%*s sample: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset));
+ for (i = 0; i < n; i++) {
+ GST_LOG ("%*s sample: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset));
offset += 4;
}
}
-static void qtdemux_dump_stsc(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_stsc (GstQTDemux * qtdemux, void *buffer, int depth)
{
int i;
int n;
int offset;
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s n entries: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- n = QTDEMUX_GUINT32_GET(buffer+12);
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s n entries: %d\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ n = QTDEMUX_GUINT32_GET (buffer + 12);
offset = 16;
- for(i=0;i<n;i++){
- GST_LOG("%*s first chunk: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset));
- GST_LOG("%*s sample per ch: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset+4));
- GST_LOG("%*s sample desc id:%08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset+8));
+ for (i = 0; i < n; i++) {
+ GST_LOG ("%*s first chunk: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset));
+ GST_LOG ("%*s sample per ch: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset + 4));
+ GST_LOG ("%*s sample desc id:%08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset + 8));
offset += 12;
}
}
-static void qtdemux_dump_stsz(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_stsz (GstQTDemux * qtdemux, void *buffer, int depth)
{
int i;
int n;
int offset;
int sample_size;
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s sample size: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- sample_size = QTDEMUX_GUINT32_GET(buffer+12);
- if(sample_size == 0){
- GST_LOG("%*s n entries: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+16));
- n = QTDEMUX_GUINT32_GET(buffer+16);
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s sample size: %d\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ sample_size = QTDEMUX_GUINT32_GET (buffer + 12);
+ if (sample_size == 0) {
+ GST_LOG ("%*s n entries: %d\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 16));
+ n = QTDEMUX_GUINT32_GET (buffer + 16);
offset = 20;
- for(i=0;i<n;i++){
- GST_LOG("%*s sample size: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset));
+ for (i = 0; i < n; i++) {
+ GST_LOG ("%*s sample size: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset));
offset += 4;
}
}
}
-static void qtdemux_dump_stco(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_stco (GstQTDemux * qtdemux, void *buffer, int depth)
{
int i;
int n;
int offset;
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s n entries: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- n = QTDEMUX_GUINT32_GET(buffer+12);
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s n entries: %d\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ n = QTDEMUX_GUINT32_GET (buffer + 12);
offset = 16;
- for(i=0;i<n;i++){
- GST_LOG("%*s chunk offset: %u\n", depth, "", QTDEMUX_GUINT32_GET(buffer+offset));
+ for (i = 0; i < n; i++) {
+ GST_LOG ("%*s chunk offset: %u\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + offset));
offset += 4;
}
}
-static void qtdemux_dump_co64(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_co64 (GstQTDemux * qtdemux, void *buffer, int depth)
{
int i;
int n;
int offset;
- GST_LOG("%*s version/flags: %08x\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
- GST_LOG("%*s n entries: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+12));
- n = QTDEMUX_GUINT32_GET(buffer+12);
+ GST_LOG ("%*s version/flags: %08x\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 8));
+ GST_LOG ("%*s n entries: %d\n", depth, "",
+ QTDEMUX_GUINT32_GET (buffer + 12));
+ n = QTDEMUX_GUINT32_GET (buffer + 12);
offset = 16;
- for(i=0;i<n;i++){
- GST_LOG("%*s chunk offset: %" G_GUINT64_FORMAT "\n", depth, "", QTDEMUX_GUINT64_GET(buffer+offset));
+ for (i = 0; i < n; i++) {
+ GST_LOG ("%*s chunk offset: %" G_GUINT64_FORMAT "\n", depth, "",
+ QTDEMUX_GUINT64_GET (buffer + offset));
offset += 8;
}
}
-static void qtdemux_dump_dcom(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_dcom (GstQTDemux * qtdemux, void *buffer, int depth)
{
- GST_LOG("%*s compression type: " GST_FOURCC_FORMAT "\n", depth, "",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(buffer+8)));
+ GST_LOG ("%*s compression type: " GST_FOURCC_FORMAT "\n", depth, "",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (buffer + 8)));
}
-static void qtdemux_dump_cmvd(GstQTDemux *qtdemux, void *buffer, int depth)
+static void
+qtdemux_dump_cmvd (GstQTDemux * qtdemux, void *buffer, int depth)
{
- GST_LOG("%*s length: %d\n", depth, "", QTDEMUX_GUINT32_GET(buffer+8));
+ GST_LOG ("%*s length: %d\n", depth, "", QTDEMUX_GUINT32_GET (buffer + 8));
}
-static GNode *qtdemux_tree_get_child_by_type(GNode *node, guint32 fourcc)
+static GNode *
+qtdemux_tree_get_child_by_type (GNode * node, guint32 fourcc)
{
GNode *child;
void *buffer;
guint32 child_fourcc;
- for(child = g_node_first_child(node); child; child = g_node_next_sibling(child)){
+ for (child = g_node_first_child (node); child;
+ child = g_node_next_sibling (child)) {
buffer = child->data;
- child_fourcc = GUINT32_FROM_LE(*(guint32 *)(buffer+4));
+ child_fourcc = GUINT32_FROM_LE (*(guint32 *) (buffer + 4));
- if(child_fourcc == fourcc){
+ if (child_fourcc == fourcc) {
return child;
}
}
return NULL;
}
-static GNode *qtdemux_tree_get_sibling_by_type(GNode *node, guint32 fourcc)
+static GNode *
+qtdemux_tree_get_sibling_by_type (GNode * node, guint32 fourcc)
{
GNode *child;
void *buffer;
guint32 child_fourcc;
- for(child = g_node_next_sibling(node); child; child = g_node_next_sibling(child)){
+ for (child = g_node_next_sibling (node); child;
+ child = g_node_next_sibling (child)) {
buffer = child->data;
- child_fourcc = GUINT32_FROM_LE(*(guint32 *)(buffer+4));
+ child_fourcc = GUINT32_FROM_LE (*(guint32 *) (buffer + 4));
- if(child_fourcc == fourcc){
+ if (child_fourcc == fourcc) {
return child;
}
}
return NULL;
}
-static void qtdemux_parse_trak(GstQTDemux *qtdemux, GNode *trak);
+static void qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak);
-static void qtdemux_parse_tree(GstQTDemux *qtdemux)
+static void
+qtdemux_parse_tree (GstQTDemux * qtdemux)
{
GNode *mvhd;
GNode *trak;
- mvhd = qtdemux_tree_get_child_by_type(qtdemux->moov_node, FOURCC_mvhd);
- if(mvhd==NULL){
- GST_LOG("No mvhd node found.\n");
+ mvhd = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_mvhd);
+ if (mvhd == NULL) {
+ GST_LOG ("No mvhd node found.\n");
return;
}
- qtdemux->timescale = QTDEMUX_GUINT32_GET(mvhd->data + 20);
- qtdemux->duration = QTDEMUX_GUINT32_GET(mvhd->data + 24);
+ qtdemux->timescale = QTDEMUX_GUINT32_GET (mvhd->data + 20);
+ qtdemux->duration = QTDEMUX_GUINT32_GET (mvhd->data + 24);
- GST_INFO("timescale: %d\n", qtdemux->timescale);
- GST_INFO("duration: %d\n", qtdemux->duration);
+ GST_INFO ("timescale: %d\n", qtdemux->timescale);
+ GST_INFO ("duration: %d\n", qtdemux->duration);
- trak = qtdemux_tree_get_child_by_type(qtdemux->moov_node, FOURCC_trak);
- qtdemux_parse_trak(qtdemux, trak);
+ trak = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_trak);
+ qtdemux_parse_trak (qtdemux, trak);
/* trak = qtdemux_tree_get_sibling_by_type(trak, FOURCC_trak);
if(trak)qtdemux_parse_trak(qtdemux, trak);*/
- while ((trak = qtdemux_tree_get_sibling_by_type(trak, FOURCC_trak)) != NULL)
- qtdemux_parse_trak(qtdemux, trak);
+ while ((trak = qtdemux_tree_get_sibling_by_type (trak, FOURCC_trak)) != NULL)
+ qtdemux_parse_trak (qtdemux, trak);
}
-static void qtdemux_parse_trak(GstQTDemux *qtdemux, GNode *trak)
+static void
+qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
{
int offset;
GNode *tkhd;
@@ -1392,235 +1524,257 @@ static void qtdemux_parse_trak(GstQTDemux *qtdemux, GNode *trak)
QtDemuxSample *samples;
int n_samples_per_chunk;
int index;
- int i,j,k;
+ int i, j, k;
QtDemuxStream *stream;
int n_sample_times;
guint64 timestamp;
int sample_size;
int sample_index;
- stream = g_new0(QtDemuxStream,1);
+ stream = g_new0 (QtDemuxStream, 1);
- tkhd = qtdemux_tree_get_child_by_type(trak, FOURCC_tkhd);
- g_assert(tkhd);
+ tkhd = qtdemux_tree_get_child_by_type (trak, FOURCC_tkhd);
+ g_assert (tkhd);
/* track duration? */
- mdia = qtdemux_tree_get_child_by_type(trak, FOURCC_mdia);
- g_assert(mdia);
+ mdia = qtdemux_tree_get_child_by_type (trak, FOURCC_mdia);
+ g_assert (mdia);
- mdhd = qtdemux_tree_get_child_by_type(mdia, FOURCC_mdhd);
- g_assert(mdhd);
+ mdhd = qtdemux_tree_get_child_by_type (mdia, FOURCC_mdhd);
+ g_assert (mdhd);
- stream->timescale = QTDEMUX_GUINT32_GET(mdhd->data+20);
- GST_INFO("track timescale: %d", stream->timescale);
-
- hdlr = qtdemux_tree_get_child_by_type(mdia, FOURCC_hdlr);
- g_assert(hdlr);
-
- GST_LOG("track type: " GST_FOURCC_FORMAT "\n",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(hdlr->data+12)));
- GST_LOG("track subtype: " GST_FOURCC_FORMAT "\n",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(hdlr->data+16)));
+ stream->timescale = QTDEMUX_GUINT32_GET (mdhd->data + 20);
+ GST_INFO ("track timescale: %d", stream->timescale);
+
+ hdlr = qtdemux_tree_get_child_by_type (mdia, FOURCC_hdlr);
+ g_assert (hdlr);
- stream->subtype = QTDEMUX_FOURCC_GET(hdlr->data+16);
+ GST_LOG ("track type: " GST_FOURCC_FORMAT "\n",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (hdlr->data + 12)));
+ GST_LOG ("track subtype: " GST_FOURCC_FORMAT "\n",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (hdlr->data + 16)));
- minf = qtdemux_tree_get_child_by_type(mdia, FOURCC_minf);
- g_assert(minf);
+ stream->subtype = QTDEMUX_FOURCC_GET (hdlr->data + 16);
- stbl = qtdemux_tree_get_child_by_type(minf, FOURCC_stbl);
- g_assert(stbl);
+ minf = qtdemux_tree_get_child_by_type (mdia, FOURCC_minf);
+ g_assert (minf);
- stsd = qtdemux_tree_get_child_by_type(stbl, FOURCC_stsd);
- g_assert(stsd);
+ stbl = qtdemux_tree_get_child_by_type (minf, FOURCC_stbl);
+ g_assert (stbl);
- if(stream->subtype == FOURCC_vide){
+ stsd = qtdemux_tree_get_child_by_type (stbl, FOURCC_stsd);
+ g_assert (stsd);
+
+ if (stream->subtype == FOURCC_vide) {
offset = 16;
- GST_LOG("st type: " GST_FOURCC_FORMAT "\n",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(stsd->data+offset+4)));
-
- stream->width = QTDEMUX_GUINT16_GET(stsd->data+offset+32);
- stream->height = QTDEMUX_GUINT16_GET(stsd->data+offset+34);
- stream->fps = 0.; /* this is filled in later */
-
- GST_LOG("frame count: %u\n", QTDEMUX_GUINT16_GET(stsd->data+offset+48));
-
- stream->caps = qtdemux_video_caps(qtdemux,
- QTDEMUX_FOURCC_GET(stsd->data+offset+4), stsd->data);
- GST_INFO("type " GST_FOURCC_FORMAT " caps %" GST_PTR_FORMAT "\n",
- GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET(stsd->data+offset+4)),
- stream->caps);
- }else if(stream->subtype == FOURCC_soun){
+ GST_LOG ("st type: " GST_FOURCC_FORMAT "\n",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (stsd->data + offset + 4)));
+
+ stream->width = QTDEMUX_GUINT16_GET (stsd->data + offset + 32);
+ stream->height = QTDEMUX_GUINT16_GET (stsd->data + offset + 34);
+ stream->fps = 0.; /* this is filled in later */
+
+ GST_LOG ("frame count: %u\n",
+ QTDEMUX_GUINT16_GET (stsd->data + offset + 48));
+
+ stream->caps = qtdemux_video_caps (qtdemux,
+ QTDEMUX_FOURCC_GET (stsd->data + offset + 4), stsd->data);
+ GST_INFO ("type " GST_FOURCC_FORMAT " caps %" GST_PTR_FORMAT "\n",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (stsd->data + offset + 4)),
+ stream->caps);
+ } else if (stream->subtype == FOURCC_soun) {
int version, samplesize;
- GST_LOG("st type: " GST_FOURCC_FORMAT "\n",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(stsd->data+16+4)));
+ GST_LOG ("st type: " GST_FOURCC_FORMAT "\n",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (stsd->data + 16 + 4)));
offset = 32;
- GST_LOG("version/rev: %08x\n", QTDEMUX_GUINT32_GET(stsd->data+offset));
- version = QTDEMUX_GUINT32_GET(stsd->data+offset);
- GST_LOG("vendor: %08x\n", QTDEMUX_GUINT32_GET(stsd->data+offset + 4));
- GST_LOG("n_channels: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 8));
- stream->n_channels = QTDEMUX_GUINT16_GET(stsd->data+offset + 8);
- GST_LOG("sample_size: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 10));
- samplesize = QTDEMUX_GUINT16_GET(stsd->data+offset + 10);
- GST_LOG("compression_id: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 12));
- GST_LOG("packet size: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 14));
- GST_LOG("sample rate: %g\n", QTDEMUX_FP32_GET(stsd->data+offset + 16));
- stream->rate = QTDEMUX_FP32_GET(stsd->data+offset + 16);
+ GST_LOG ("version/rev: %08x\n",
+ QTDEMUX_GUINT32_GET (stsd->data + offset));
+ version = QTDEMUX_GUINT32_GET (stsd->data + offset);
+ GST_LOG ("vendor: %08x\n",
+ QTDEMUX_GUINT32_GET (stsd->data + offset + 4));
+ GST_LOG ("n_channels: %d\n",
+ QTDEMUX_GUINT16_GET (stsd->data + offset + 8));
+ stream->n_channels = QTDEMUX_GUINT16_GET (stsd->data + offset + 8);
+ GST_LOG ("sample_size: %d\n",
+ QTDEMUX_GUINT16_GET (stsd->data + offset + 10));
+ samplesize = QTDEMUX_GUINT16_GET (stsd->data + offset + 10);
+ GST_LOG ("compression_id: %d\n",
+ QTDEMUX_GUINT16_GET (stsd->data + offset + 12));
+ GST_LOG ("packet size: %d\n",
+ QTDEMUX_GUINT16_GET (stsd->data + offset + 14));
+ GST_LOG ("sample rate: %g\n",
+ QTDEMUX_FP32_GET (stsd->data + offset + 16));
+ stream->rate = QTDEMUX_FP32_GET (stsd->data + offset + 16);
offset = 52;
- if(version == 0x00010000){
- GST_LOG("samples/packet: %d\n", QTDEMUX_GUINT32_GET(stsd->data+offset));
- stream->samples_per_packet = QTDEMUX_GUINT32_GET(stsd->data+offset);
- GST_LOG("bytes/packet: %d\n", QTDEMUX_GUINT32_GET(stsd->data+offset + 4));
- GST_LOG("bytes/frame: %d\n", QTDEMUX_GUINT32_GET(stsd->data+offset + 8));
- stream->bytes_per_frame = QTDEMUX_GUINT32_GET(stsd->data+offset + 8);
- GST_LOG("bytes/sample: %d\n", QTDEMUX_GUINT32_GET(stsd->data+offset + 12));
+ if (version == 0x00010000) {
+ GST_LOG ("samples/packet: %d\n",
+ QTDEMUX_GUINT32_GET (stsd->data + offset));
+ stream->samples_per_packet = QTDEMUX_GUINT32_GET (stsd->data + offset);
+ GST_LOG ("bytes/packet: %d\n",
+ QTDEMUX_GUINT32_GET (stsd->data + offset + 4));
+ GST_LOG ("bytes/frame: %d\n",
+ QTDEMUX_GUINT32_GET (stsd->data + offset + 8));
+ stream->bytes_per_frame = QTDEMUX_GUINT32_GET (stsd->data + offset + 8);
+ GST_LOG ("bytes/sample: %d\n",
+ QTDEMUX_GUINT32_GET (stsd->data + offset + 12));
offset = 68;
} else {
stream->bytes_per_frame = stream->n_channels * samplesize / 8;
stream->samples_per_packet = 1;
}
- stream->caps = qtdemux_audio_caps(qtdemux,
- QTDEMUX_FOURCC_GET(stsd->data+16+4), (QTDEMUX_GUINT32_GET(stsd->data) > offset) ? stsd->data + offset : NULL);
- GST_INFO("type " GST_FOURCC_FORMAT " caps %" GST_PTR_FORMAT "\n",
- GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(stsd->data+16+4)), stream->caps);
- }else{
- GST_LOG("unknown subtype\n");
+ stream->caps = qtdemux_audio_caps (qtdemux,
+ QTDEMUX_FOURCC_GET (stsd->data + 16 + 4),
+ (QTDEMUX_GUINT32_GET (stsd->data) >
+ offset) ? stsd->data + offset : NULL);
+ GST_INFO ("type " GST_FOURCC_FORMAT " caps %" GST_PTR_FORMAT "\n",
+ GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET (stsd->data + 16 + 4)),
+ stream->caps);
+ } else {
+ GST_LOG ("unknown subtype\n");
return;
}
/* sample to chunk */
- stsc = qtdemux_tree_get_child_by_type(stbl, FOURCC_stsc);
- g_assert(stsc);
+ stsc = qtdemux_tree_get_child_by_type (stbl, FOURCC_stsc);
+ g_assert (stsc);
/* sample size */
- stsz = qtdemux_tree_get_child_by_type(stbl, FOURCC_stsz);
- g_assert(stsz);
+ stsz = qtdemux_tree_get_child_by_type (stbl, FOURCC_stsz);
+ g_assert (stsz);
/* chunk offsets */
- stco = qtdemux_tree_get_child_by_type(stbl, FOURCC_stco);
- co64 = qtdemux_tree_get_child_by_type(stbl, FOURCC_co64);
- g_assert(stco || co64);
+ stco = qtdemux_tree_get_child_by_type (stbl, FOURCC_stco);
+ co64 = qtdemux_tree_get_child_by_type (stbl, FOURCC_co64);
+ g_assert (stco || co64);
/* sample time */
- stts = qtdemux_tree_get_child_by_type(stbl, FOURCC_stts);
- g_assert(stts);
+ stts = qtdemux_tree_get_child_by_type (stbl, FOURCC_stts);
+ g_assert (stts);
- sample_size = QTDEMUX_GUINT32_GET(stsz->data+12);
- if(sample_size == 0){
- n_samples = QTDEMUX_GUINT32_GET(stsz->data+16);
+ sample_size = QTDEMUX_GUINT32_GET (stsz->data + 12);
+ if (sample_size == 0) {
+ n_samples = QTDEMUX_GUINT32_GET (stsz->data + 16);
stream->n_samples = n_samples;
- samples = g_malloc(sizeof(QtDemuxSample)*n_samples);
+ samples = g_malloc (sizeof (QtDemuxSample) * n_samples);
stream->samples = samples;
- for(i=0;i<n_samples;i++){
- samples[i].size = QTDEMUX_GUINT32_GET(stsz->data + i*4 + 20);
+ for (i = 0; i < n_samples; i++) {
+ samples[i].size = QTDEMUX_GUINT32_GET (stsz->data + i * 4 + 20);
}
- n_samples_per_chunk = QTDEMUX_GUINT32_GET(stsc->data+12);
+ n_samples_per_chunk = QTDEMUX_GUINT32_GET (stsc->data + 12);
index = 0;
offset = 16;
- for(i=0;i<n_samples_per_chunk;i++){
+ for (i = 0; i < n_samples_per_chunk; i++) {
int first_chunk, last_chunk;
int samples_per_chunk;
-
- first_chunk = QTDEMUX_GUINT32_GET(stsc->data + 16 + i*12 + 0) - 1;
- if(i==n_samples_per_chunk-1){
- last_chunk = INT_MAX;
- }else{
- last_chunk = QTDEMUX_GUINT32_GET(stsc->data +16 + i*12 + 12) - 1;
+
+ first_chunk = QTDEMUX_GUINT32_GET (stsc->data + 16 + i * 12 + 0) - 1;
+ if (i == n_samples_per_chunk - 1) {
+ last_chunk = INT_MAX;
+ } else {
+ last_chunk = QTDEMUX_GUINT32_GET (stsc->data + 16 + i * 12 + 12) - 1;
}
- samples_per_chunk = QTDEMUX_GUINT32_GET(stsc->data + 16 + i*12 + 4);
-
- for(j=first_chunk;j<last_chunk;j++){
- int chunk_offset;
- if(stco){
- chunk_offset = QTDEMUX_GUINT32_GET(stco->data + 16 + j*4);
- }else{
- chunk_offset = QTDEMUX_GUINT64_GET(co64->data + 16 + j*8);
- }
- for(k=0;k<samples_per_chunk;k++){
+ samples_per_chunk = QTDEMUX_GUINT32_GET (stsc->data + 16 + i * 12 + 4);
+
+ for (j = first_chunk; j < last_chunk; j++) {
+ int chunk_offset;
+
+ if (stco) {
+ chunk_offset = QTDEMUX_GUINT32_GET (stco->data + 16 + j * 4);
+ } else {
+ chunk_offset = QTDEMUX_GUINT64_GET (co64->data + 16 + j * 8);
+ }
+ for (k = 0; k < samples_per_chunk; k++) {
samples[index].chunk = j;
samples[index].offset = chunk_offset;
chunk_offset += samples[index].size;
index++;
- if(index>=n_samples)goto done;
- }
+ if (index >= n_samples)
+ goto done;
+ }
}
}
-done:
-
- n_sample_times = QTDEMUX_GUINT32_GET(stts->data + 12);
+ done:
+
+ n_sample_times = QTDEMUX_GUINT32_GET (stts->data + 12);
timestamp = 0;
index = 0;
- for(i=0;i<n_sample_times;i++){
+ for (i = 0; i < n_sample_times; i++) {
int n;
int duration;
guint64 time;
-
- n = QTDEMUX_GUINT32_GET(stts->data + 16 + 8*i);
- duration = QTDEMUX_GUINT32_GET(stts->data + 16 + 8*i + 4);
- time = (GST_SECOND * duration)/stream->timescale;
- for(j=0;j<n;j++){
- //GST_INFO("moo %lld", timestamp);
- samples[index].timestamp = timestamp;
- samples[index].duration = time;
- timestamp += time;
- index++;
+
+ n = QTDEMUX_GUINT32_GET (stts->data + 16 + 8 * i);
+ duration = QTDEMUX_GUINT32_GET (stts->data + 16 + 8 * i + 4);
+ time = (GST_SECOND * duration) / stream->timescale;
+ for (j = 0; j < n; j++) {
+ //GST_INFO("moo %lld", timestamp);
+ samples[index].timestamp = timestamp;
+ samples[index].duration = time;
+ timestamp += time;
+ index++;
}
}
- }else{
+ } else {
int sample_width;
guint64 timestamp = 0;
- GST_LOG("treating chunks as samples\n");
+ GST_LOG ("treating chunks as samples\n");
/* treat chunks as samples */
- if(stco){
- n_samples = QTDEMUX_GUINT32_GET(stco->data+12);
- }else{
- n_samples = QTDEMUX_GUINT32_GET(co64->data+12);
+ if (stco) {
+ n_samples = QTDEMUX_GUINT32_GET (stco->data + 12);
+ } else {
+ n_samples = QTDEMUX_GUINT32_GET (co64->data + 12);
}
stream->n_samples = n_samples;
- samples = g_malloc(sizeof(QtDemuxSample)*n_samples);
+ samples = g_malloc (sizeof (QtDemuxSample) * n_samples);
stream->samples = samples;
- sample_width = QTDEMUX_GUINT16_GET(stsd->data+offset + 10) / 8;
+ sample_width = QTDEMUX_GUINT16_GET (stsd->data + offset + 10) / 8;
- n_samples_per_chunk = QTDEMUX_GUINT32_GET(stsc->data+12);
+ n_samples_per_chunk = QTDEMUX_GUINT32_GET (stsc->data + 12);
offset = 16;
sample_index = 0;
- for(i=0;i<n_samples_per_chunk;i++){
+ for (i = 0; i < n_samples_per_chunk; i++) {
int first_chunk, last_chunk;
int samples_per_chunk;
-
- first_chunk = QTDEMUX_GUINT32_GET(stsc->data + 16 + i*12 + 0) - 1;
- if(i==n_samples-1){
- last_chunk = INT_MAX;
- }else{
- last_chunk = QTDEMUX_GUINT32_GET(stsc->data +16 + i*12 + 12) - 1;
+
+ first_chunk = QTDEMUX_GUINT32_GET (stsc->data + 16 + i * 12 + 0) - 1;
+ if (i == n_samples - 1) {
+ last_chunk = INT_MAX;
+ } else {
+ last_chunk = QTDEMUX_GUINT32_GET (stsc->data + 16 + i * 12 + 12) - 1;
}
- samples_per_chunk = QTDEMUX_GUINT32_GET(stsc->data + 16 + i*12 + 4);
-
- for(j=first_chunk;j<last_chunk;j++){
- int chunk_offset;
- if(j>=n_samples)goto done2;
- if(stco){
- chunk_offset = QTDEMUX_GUINT32_GET(stco->data + 16 + j*4);
- }else{
- chunk_offset = QTDEMUX_GUINT64_GET(co64->data + 16 + j*8);
- }
+ samples_per_chunk = QTDEMUX_GUINT32_GET (stsc->data + 16 + i * 12 + 4);
+
+ for (j = first_chunk; j < last_chunk; j++) {
+ int chunk_offset;
+
+ if (j >= n_samples)
+ goto done2;
+ if (stco) {
+ chunk_offset = QTDEMUX_GUINT32_GET (stco->data + 16 + j * 4);
+ } else {
+ chunk_offset = QTDEMUX_GUINT64_GET (co64->data + 16 + j * 8);
+ }
samples[j].chunk = j;
samples[j].offset = chunk_offset;
- samples[j].size = samples_per_chunk * stream->bytes_per_frame / stream->samples_per_packet;
- samples[j].duration = samples_per_chunk * GST_SECOND / (stream->rate/2);
+ samples[j].size =
+ samples_per_chunk * stream->bytes_per_frame /
+ stream->samples_per_packet;
+ samples[j].duration =
+ samples_per_chunk * GST_SECOND / (stream->rate / 2);
samples[j].timestamp = timestamp;
timestamp += (samples_per_chunk * GST_SECOND) / stream->rate;
#if 0
- GST_INFO("moo samples_per_chunk=%d rate=%d dur=%lld %lld",
- (int)samples_per_chunk,
- (int)stream->rate,
- (long long)((samples_per_chunk * GST_SECOND) / stream->rate),
- (long long)timestamp);
+ GST_INFO ("moo samples_per_chunk=%d rate=%d dur=%lld %lld",
+ (int) samples_per_chunk,
+ (int) stream->rate,
+ (long long) ((samples_per_chunk * GST_SECOND) / stream->rate),
+ (long long) timestamp);
#endif
samples[j].sample_index = sample_index;
sample_index += samples_per_chunk;
@@ -1653,183 +1807,175 @@ done2:
}
done2:
#if 0
- for(i=0;i<n_samples;i++){
- GST_LOG("%d: %d %d %d %d %" G_GUINT64_FORMAT "\n",i,
- samples[i].sample_index,samples[i].chunk,
+ for (i = 0; i < n_samples; i++) {
+ GST_LOG ("%d: %d %d %d %d %" G_GUINT64_FORMAT "\n", i,
+ samples[i].sample_index, samples[i].chunk,
samples[i].offset, samples[i].size, samples[i].timestamp);
- if(i>10)break;
+ if (i > 10)
+ break;
}
#endif
- gst_qtdemux_add_stream(qtdemux,stream);
+ gst_qtdemux_add_stream (qtdemux, stream);
}
-static GstCaps *qtdemux_video_caps(GstQTDemux *qtdemux, guint32 fourcc, const guint8 *stsd_data)
+static GstCaps *
+qtdemux_video_caps (GstQTDemux * qtdemux, guint32 fourcc,
+ const guint8 * stsd_data)
{
- switch(fourcc){
- case GST_MAKE_FOURCC('j','p','e','g'):
+ switch (fourcc) {
+ case GST_MAKE_FOURCC ('j', 'p', 'e', 'g'):
/* JPEG */
return gst_caps_from_string ("image/jpeg");
- case GST_MAKE_FOURCC('m','j','p','a'):
+ case GST_MAKE_FOURCC ('m', 'j', 'p', 'a'):
/* Motion-JPEG (format A) */
return gst_caps_from_string ("image/jpeg");
- case GST_MAKE_FOURCC('m','j','p','b'):
+ case GST_MAKE_FOURCC ('m', 'j', 'p', 'b'):
/* Motion-JPEG (format B) */
return gst_caps_from_string ("image/jpeg");
- case GST_MAKE_FOURCC('S','V','Q','3'):
+ case GST_MAKE_FOURCC ('S', 'V', 'Q', '3'):
if (stsd_data != NULL) {
- gst_getbits_t gb;
+ gst_getbits_t gb;
gint halfpel_flag;
gint thirdpel_flag;
gint unknown_svq3_flag;
gint low_delay;
gint size;
- size = QTDEMUX_GUINT32_GET(stsd_data + 16);
+ size = QTDEMUX_GUINT32_GET (stsd_data + 16);
+
+ gst_getbits_init (&gb, NULL, NULL);
+ gst_getbits_newbuf (&gb, (unsigned char *) stsd_data + 98 + 16 + 4,
+ (size - 102 + 16));
+
+ /* Infos ripped from ffmpeg see libavcodec/svq3.c */
- gst_getbits_init (&gb, NULL, NULL);
- gst_getbits_newbuf (&gb, (unsigned char *)stsd_data + 98 + 16 + 4 , (size - 102 + 16));
-
- /* Infos ripped from ffmpeg see libavcodec/svq3.c */
-
/* 'frame size code' and optional 'width, height' */
- if (gst_getbitsn (&gb, 3) == 7) {
- gst_getbitsn (&gb, 12);
- gst_getbitsn (&gb, 12);
+ if (gst_getbitsn (&gb, 3) == 7) {
+ gst_getbitsn (&gb, 12);
+ gst_getbitsn (&gb, 12);
}
halfpel_flag = gst_get1bit (&gb);
- thirdpel_flag = gst_get1bit (&gb);
+ thirdpel_flag = gst_get1bit (&gb);
- /* unknown fields */
- gst_get1bit (&gb);
- gst_get1bit (&gb);
- gst_get1bit (&gb);
- gst_get1bit (&gb);
+ /* unknown fields */
+ gst_get1bit (&gb);
+ gst_get1bit (&gb);
+ gst_get1bit (&gb);
+ gst_get1bit (&gb);
- low_delay = gst_get1bit (&gb);
+ low_delay = gst_get1bit (&gb);
- /* unknown field */
- gst_get1bit (&gb);
+ /* unknown field */
+ gst_get1bit (&gb);
while (gst_get1bit (&gb)) {
- gst_getbitsn (&gb, 8);
- }
-
- unknown_svq3_flag = gst_get1bit (&gb);
-
- return gst_caps_new_simple ("video/x-svq",
- "svqversion", G_TYPE_INT, 3,
- "halfpel_flag", G_TYPE_INT, halfpel_flag,
- "thirdpel_flag", G_TYPE_INT, thirdpel_flag,
- "low_delay", G_TYPE_INT, low_delay,
- "unknown_svq3_flag", G_TYPE_INT, unknown_svq3_flag,
- NULL);
+ gst_getbitsn (&gb, 8);
+ }
+
+ unknown_svq3_flag = gst_get1bit (&gb);
+
+ return gst_caps_new_simple ("video/x-svq",
+ "svqversion", G_TYPE_INT, 3,
+ "halfpel_flag", G_TYPE_INT, halfpel_flag,
+ "thirdpel_flag", G_TYPE_INT, thirdpel_flag,
+ "low_delay", G_TYPE_INT, low_delay,
+ "unknown_svq3_flag", G_TYPE_INT, unknown_svq3_flag, NULL);
}
- return gst_caps_from_string ("video/x-svq, "
- "svqversion = (int) 3");
- case GST_MAKE_FOURCC('s','v','q','i'):
- case GST_MAKE_FOURCC('S','V','Q','1'):
- return gst_caps_from_string ("video/x-svq, "
- "svqversion = (int) 1");
- case GST_MAKE_FOURCC('r','a','w',' '):
+ return gst_caps_from_string ("video/x-svq, " "svqversion = (int) 3");
+ case GST_MAKE_FOURCC ('s', 'v', 'q', 'i'):
+ case GST_MAKE_FOURCC ('S', 'V', 'Q', '1'):
+ return gst_caps_from_string ("video/x-svq, " "svqversion = (int) 1");
+ case GST_MAKE_FOURCC ('r', 'a', 'w', ' '):
/* uncompressed RGB */
return gst_caps_from_string ("video/x-raw-rgb, "
"endianness = (int) BIG_ENDIAN");
- /*"bpp", GST_PROPS_INT(x),
- "depth", GST_PROPS_INT(x),
- "red_mask", GST_PROPS_INT(x),
- "green_mask", GST_PROPS_INT(x),
- "blue_mask", GST_PROPS_INT(x), FIXME! */
- case GST_MAKE_FOURCC('Y','u','v','2'):
+ /*"bpp", GST_PROPS_INT(x),
+ "depth", GST_PROPS_INT(x),
+ "red_mask", GST_PROPS_INT(x),
+ "green_mask", GST_PROPS_INT(x),
+ "blue_mask", GST_PROPS_INT(x), FIXME! */
+ case GST_MAKE_FOURCC ('Y', 'u', 'v', '2'):
/* uncompressed YUV2 */
return gst_caps_from_string ("video/x-raw-yuv, "
"format = (fourcc) YUY2");
- case GST_MAKE_FOURCC('m','p','e','g'):
+ case GST_MAKE_FOURCC ('m', 'p', 'e', 'g'):
/* MPEG */
return gst_caps_from_string ("video/mpeg, "
- "systemstream = (boolean) false, "
- "mpegversion = (int) 1");
- case GST_MAKE_FOURCC('g','i','f',' '):
+ "systemstream = (boolean) false, " "mpegversion = (int) 1");
+ case GST_MAKE_FOURCC ('g', 'i', 'f', ' '):
return gst_caps_from_string ("image/gif");
- case GST_MAKE_FOURCC('h','2','6','3'):
+ case GST_MAKE_FOURCC ('h', '2', '6', '3'):
/* H.263 */
/* ffmpeg uses the height/width props, don't know why */
return gst_caps_from_string ("video/x-h263");
- case GST_MAKE_FOURCC('m','p','4','v'):
+ case GST_MAKE_FOURCC ('m', 'p', '4', 'v'):
/* MPEG-4 */
return gst_caps_from_string ("video/mpeg, "
- "mpegversion = (int) 4, "
- "systemstream = (boolean) false");
- case GST_MAKE_FOURCC('3','I','V','1'):
+ "mpegversion = (int) 4, " "systemstream = (boolean) false");
+ case GST_MAKE_FOURCC ('3', 'I', 'V', '1'):
return gst_caps_from_string ("video/x-3ivx");
- case GST_MAKE_FOURCC('c','v','i','d'):
+ case GST_MAKE_FOURCC ('c', 'v', 'i', 'd'):
/* Cinepak */
return gst_caps_from_string ("video/x-cinepak");
- case GST_MAKE_FOURCC('r','p','z','a'):
- case GST_MAKE_FOURCC('r','l','e',' '):
+ case GST_MAKE_FOURCC ('r', 'p', 'z', 'a'):
+ case GST_MAKE_FOURCC ('r', 'l', 'e', ' '):
/* Run-length encoding */
- case GST_MAKE_FOURCC('s','m','c',' '):
- case GST_MAKE_FOURCC('k','p','c','d'):
+ case GST_MAKE_FOURCC ('s', 'm', 'c', ' '):
+ case GST_MAKE_FOURCC ('k', 'p', 'c', 'd'):
default:
g_critical ("Don't know how to convert fourcc '" GST_FOURCC_FORMAT
- "' to caps\n", GST_FOURCC_ARGS(fourcc));
+ "' to caps\n", GST_FOURCC_ARGS (fourcc));
return NULL;
}
}
-static GstCaps *qtdemux_audio_caps(GstQTDemux *qtdemux, guint32 fourcc, const guint8 *data)
+static GstCaps *
+qtdemux_audio_caps (GstQTDemux * qtdemux, guint32 fourcc, const guint8 * data)
{
- switch(fourcc){
- case GST_MAKE_FOURCC('N','O','N','E'):
- return NULL; /*gst_caps_from_string ("audio/raw");*/
- case GST_MAKE_FOURCC('r','a','w',' '):
+ switch (fourcc) {
+ case GST_MAKE_FOURCC ('N', 'O', 'N', 'E'):
+ return NULL; /*gst_caps_from_string ("audio/raw"); */
+ case GST_MAKE_FOURCC ('r', 'a', 'w', ' '):
/* FIXME */
return gst_caps_from_string ("audio/x-raw-int, "
- "width = (int) 8, "
- "depth = (int) 8, "
- "signed = (boolean) true");
- case GST_MAKE_FOURCC('t','w','o','s'):
+ "width = (int) 8, " "depth = (int) 8, " "signed = (boolean) true");
+ case GST_MAKE_FOURCC ('t', 'w', 'o', 's'):
/* FIXME */
return gst_caps_from_string ("audio/x-raw-int, "
"width = (int) 16, "
"depth = (int) 16, "
- "endianness = (int) G_BIG_ENDIAN, "
- "signed = (boolean) true");
- case GST_MAKE_FOURCC('s','o','w','t'):
+ "endianness = (int) G_BIG_ENDIAN, " "signed = (boolean) true");
+ case GST_MAKE_FOURCC ('s', 'o', 'w', 't'):
/* FIXME */
return gst_caps_from_string ("audio/x-raw-int, "
"width = (int) 16, "
"depth = (int) 16, "
- "endianness = (int) G_LITTLE_ENDIAN, "
- "signed = (boolean) true");
- case GST_MAKE_FOURCC('f','l','6','4'):
+ "endianness = (int) G_LITTLE_ENDIAN, " "signed = (boolean) true");
+ case GST_MAKE_FOURCC ('f', 'l', '6', '4'):
return gst_caps_from_string ("audio/x-raw-float, "
- "width = (int) 64, "
- "endianness = (int) G_BIG_ENDIAN");
- case GST_MAKE_FOURCC('f','l','3','2'):
+ "width = (int) 64, " "endianness = (int) G_BIG_ENDIAN");
+ case GST_MAKE_FOURCC ('f', 'l', '3', '2'):
return gst_caps_from_string ("audio/x-raw-float, "
- "width = (int) 32, "
- "endianness = (int) G_BIG_ENDIAN");
- case GST_MAKE_FOURCC('i','n','2','4'):
+ "width = (int) 32, " "endianness = (int) G_BIG_ENDIAN");
+ case GST_MAKE_FOURCC ('i', 'n', '2', '4'):
/* FIXME */
return gst_caps_from_string ("audio/x-raw-int, "
"width = (int) 24, "
"depth = (int) 32, "
- "endianness = (int) G_BIG_ENDIAN, "
- "signed = (boolean) true");
- case GST_MAKE_FOURCC('i','n','3','2'):
+ "endianness = (int) G_BIG_ENDIAN, " "signed = (boolean) true");
+ case GST_MAKE_FOURCC ('i', 'n', '3', '2'):
/* FIXME */
return gst_caps_from_string ("audio/x-raw-int, "
"width = (int) 32, "
"depth = (int) 32, "
- "endianness = (int) G_BIG_ENDIAN, "
- "signed = (boolean) true");
- case GST_MAKE_FOURCC('u','l','a','w'):
+ "endianness = (int) G_BIG_ENDIAN, " "signed = (boolean) true");
+ case GST_MAKE_FOURCC ('u', 'l', 'a', 'w'):
/* FIXME */
return gst_caps_from_string ("audio/x-mulaw");
- case GST_MAKE_FOURCC('a','l','a','w'):
+ case GST_MAKE_FOURCC ('a', 'l', 'a', 'w'):
/* FIXME */
return gst_caps_from_string ("audio/x-alaw");
case 0x6d730002:
@@ -1843,53 +1989,47 @@ static GstCaps *qtdemux_audio_caps(GstQTDemux *qtdemux, guint32 fourcc, const gu
case 0x6d730055:
/* MPEG layer 3, CBR only (pre QT4.1) */
case 0x5500736d:
- case GST_MAKE_FOURCC('.','m','p','3'):
+ case GST_MAKE_FOURCC ('.', 'm', 'p', '3'):
/* MPEG layer 3, CBR & VBR (QT4.1 and later) */
return gst_caps_from_string ("audio/mpeg, "
- "layer = (int) 3, "
- "mpegversion = (int) 1");
- case GST_MAKE_FOURCC('M','A','C','3'):
+ "layer = (int) 3, " "mpegversion = (int) 1");
+ case GST_MAKE_FOURCC ('M', 'A', 'C', '3'):
/* MACE 3:1 */
- return gst_caps_from_string ("audio/x-mace, "
- "maceversion = (int) 3");
- case GST_MAKE_FOURCC('M','A','C','6'):
+ return gst_caps_from_string ("audio/x-mace, " "maceversion = (int) 3");
+ case GST_MAKE_FOURCC ('M', 'A', 'C', '6'):
/* MACE 6:1 */
- return gst_caps_from_string ("audio/x-mace, "
- "maceversion = (int) 6");
- case GST_MAKE_FOURCC('O','g','g','V'):
+ return gst_caps_from_string ("audio/x-mace, " "maceversion = (int) 6");
+ case GST_MAKE_FOURCC ('O', 'g', 'g', 'V'):
/* Ogg Vorbis */
return gst_caps_from_string ("application/ogg");
- case GST_MAKE_FOURCC('d','v','c','a'):
+ case GST_MAKE_FOURCC ('d', 'v', 'c', 'a'):
/* DV audio */
return gst_caps_from_string ("audio/x-dv");
- case GST_MAKE_FOURCC('m','p','4','a'):
+ case GST_MAKE_FOURCC ('m', 'p', '4', 'a'):
/* MPEG-4 AAC */
- return gst_caps_from_string ("audio/mpeg, "
- "mpegversion = (int) 4");
- case GST_MAKE_FOURCC('Q','D','M','2'):
+ return gst_caps_from_string ("audio/mpeg, " "mpegversion = (int) 4");
+ case GST_MAKE_FOURCC ('Q', 'D', 'M', '2'):
/* FIXME: QDesign music version 2 (no constant) */
if (QTDEMUX_GUINT32_GET (data) <= 100) {
- gst_util_dump_mem ((guint8*)data, 100);
+ gst_util_dump_mem ((guint8 *) data, 100);
return gst_caps_new_simple ("audio/x-qdm2",
- "framesize", G_TYPE_INT, QTDEMUX_GUINT32_GET (data + 52),
- "bitrate", G_TYPE_INT, QTDEMUX_GUINT32_GET (data + 40),
- "blocksize", G_TYPE_INT, QTDEMUX_GUINT32_GET (data + 44),
- NULL);
+ "framesize", G_TYPE_INT, QTDEMUX_GUINT32_GET (data + 52),
+ "bitrate", G_TYPE_INT, QTDEMUX_GUINT32_GET (data + 40),
+ "blocksize", G_TYPE_INT, QTDEMUX_GUINT32_GET (data + 44), NULL);
}
- case GST_MAKE_FOURCC('q','t','v','r'):
+ case GST_MAKE_FOURCC ('q', 't', 'v', 'r'):
/* ? */
- case GST_MAKE_FOURCC('Q','D','M','C'):
+ case GST_MAKE_FOURCC ('Q', 'D', 'M', 'C'):
/* QDesign music */
- case GST_MAKE_FOURCC('i','m','a','4'):
+ case GST_MAKE_FOURCC ('i', 'm', 'a', '4'):
/* IMA 4:1 */
- case GST_MAKE_FOURCC('Q','c','l','p'):
+ case GST_MAKE_FOURCC ('Q', 'c', 'l', 'p'):
/* QUALCOMM PureVoice */
- case GST_MAKE_FOURCC('a','g','s','m'):
+ case GST_MAKE_FOURCC ('a', 'g', 's', 'm'):
/* ? */
default:
g_critical ("Don't know how to convert fourcc '" GST_FOURCC_FORMAT
- "' to caps\n", GST_FOURCC_ARGS(fourcc));
+ "' to caps\n", GST_FOURCC_ARGS (fourcc));
return NULL;
}
}
-
diff --git a/gst/qtdemux/qtdemux.h b/gst/qtdemux/qtdemux.h
index 249ef216..ed0f3154 100644
--- a/gst/qtdemux/qtdemux.h
+++ b/gst/qtdemux/qtdemux.h
@@ -26,8 +26,9 @@
#include <gst/getbits/getbits.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_QTDEMUX \
@@ -43,43 +44,45 @@ extern "C" {
#define GST_QTDEMUX_MAX_STREAMS 8
-typedef struct _GstQTDemux GstQTDemux;
-typedef struct _GstQTDemuxClass GstQTDemuxClass;
-typedef struct _QtDemuxStream QtDemuxStream;
+ typedef struct _GstQTDemux GstQTDemux;
+ typedef struct _GstQTDemuxClass GstQTDemuxClass;
+ typedef struct _QtDemuxStream QtDemuxStream;
-struct _GstQTDemux {
- GstElement element;
+ struct _GstQTDemux
+ {
+ GstElement element;
- /* pads */
- GstPad *sinkpad;
+ /* pads */
+ GstPad *sinkpad;
- QtDemuxStream *streams[GST_QTDEMUX_MAX_STREAMS];
- int n_streams;
- int n_video_streams;
- int n_audio_streams;
+ QtDemuxStream *streams[GST_QTDEMUX_MAX_STREAMS];
+ int n_streams;
+ int n_video_streams;
+ int n_audio_streams;
- GstByteStream *bs;
+ GstByteStream *bs;
- GNode *moov_node;
- GNode *moov_node_compressed;
+ GNode *moov_node;
+ GNode *moov_node_compressed;
- guint32 timescale;
- guint32 duration;
+ guint32 timescale;
+ guint32 duration;
- int state;
+ int state;
- int offset;
+ int offset;
- /* track stuff */
+ /* track stuff */
-};
+ };
-struct _GstQTDemuxClass {
- GstElementClass parent_class;
-};
+ struct _GstQTDemuxClass
+ {
+ GstElementClass parent_class;
+ };
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_QTDEMUX_H__ */
+#endif /* __GST_QTDEMUX_H__ */
diff --git a/gst/rtp/gstrtp-common.h b/gst/rtp/gstrtp-common.h
index fb675189..ec4cd947 100644
--- a/gst/rtp/gstrtp-common.h
+++ b/gst/rtp/gstrtp-common.h
@@ -26,7 +26,7 @@
typedef enum
{
/* Audio: */
- PAYLOAD_PCMU = 0, /* ITU-T G.711. mu-law audio (RFC 3551) */
+ PAYLOAD_PCMU = 0, /* ITU-T G.711. mu-law audio (RFC 3551) */
PAYLOAD_GSM = 3,
PAYLOAD_PCMA = 8, /* ITU-T G.711 A-law audio (RFC 3551) */
PAYLOAD_L16_STEREO = 10,
diff --git a/gst/rtp/gstrtp.c b/gst/rtp/gstrtp.c
index 4f3f7d46..fd1a3aa1 100644
--- a/gst/rtp/gstrtp.c
+++ b/gst/rtp/gstrtp.c
@@ -27,7 +27,7 @@
#include "gstrtpgsmparse.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_rtpL16enc_plugin_init (plugin) ||
!gst_rtpL16parse_plugin_init (plugin) ||
@@ -38,14 +38,8 @@ plugin_init (GstPlugin *plugin)
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "rtp",
- "Real-time protocol plugins",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "rtp",
+ "Real-time protocol plugins",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/rtp/gstrtpL16depay.c b/gst/rtp/gstrtpL16depay.c
index 51ec258c..07bfb6a0 100644
--- a/gst/rtp/gstrtpL16depay.c
+++ b/gst/rtp/gstrtpL16depay.c
@@ -42,43 +42,41 @@ enum
};
static GstStaticPadTemplate gst_rtpL16parse_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) true, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) BYTE_ORDER, "
+ "signed = (boolean) true, "
+ "width = (int) 16, "
+ "depth = (int) 16, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
static GstStaticPadTemplate gst_rtpL16parse_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
-);
+ );
static void gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass);
static void gst_rtpL16parse_base_init (GstRtpL16ParseClass * klass);
static void gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse);
-static void gst_rtpL16parse_chain (GstPad * pad, GstData *_data);
+static void gst_rtpL16parse_chain (GstPad * pad, GstData * _data);
static void gst_rtpL16parse_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
+ const GValue * value, GParamSpec * pspec);
static void gst_rtpL16parse_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static GstElementStateReturn gst_rtpL16parse_change_state (GstElement * element);
+ GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_rtpL16parse_change_state (GstElement *
+ element);
static GstElementClass *parent_class = NULL;
-static GType gst_rtpL16parse_get_type (void)
+static GType
+gst_rtpL16parse_get_type (void)
{
static GType rtpL16parse_type = 0;
@@ -95,7 +93,9 @@ static GType gst_rtpL16parse_get_type (void)
(GInstanceInitFunc) gst_rtpL16parse_init,
};
- rtpL16parse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Parse", &rtpL16parse_info, 0);
+ rtpL16parse_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Parse",
+ &rtpL16parse_info, 0);
}
return rtpL16parse_type;
}
@@ -123,12 +123,12 @@ gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass)
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PAYLOAD_TYPE,
- g_param_spec_int ("payload_type", "payload_type", "payload type",
- G_MININT, G_MAXINT, PAYLOAD_L16_STEREO, G_PARAM_READABLE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY,
- g_param_spec_int ("frequency", "frequency", "frequency",
- G_MININT, G_MAXINT, 44100, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PAYLOAD_TYPE,
+ g_param_spec_int ("payload_type", "payload_type", "payload type",
+ G_MININT, G_MAXINT, PAYLOAD_L16_STEREO, G_PARAM_READABLE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY,
+ g_param_spec_int ("frequency", "frequency", "frequency",
+ G_MININT, G_MAXINT, 44100, G_PARAM_READWRITE));
gobject_class->set_property = gst_rtpL16parse_set_property;
gobject_class->get_property = gst_rtpL16parse_get_property;
@@ -139,10 +139,12 @@ gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass)
static void
gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse)
{
- rtpL16parse->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpL16parse_src_template), "src");
- rtpL16parse->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpL16parse_sink_template), "sink");
+ rtpL16parse->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpL16parse_src_template), "src");
+ rtpL16parse->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpL16parse_sink_template), "sink");
gst_element_add_pad (GST_ELEMENT (rtpL16parse), rtpL16parse->srcpad);
gst_element_add_pad (GST_ELEMENT (rtpL16parse), rtpL16parse->sinkpad);
gst_pad_set_chain_function (rtpL16parse->sinkpad, gst_rtpL16parse_chain);
@@ -154,25 +156,27 @@ gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse)
}
void
-gst_rtpL16parse_ntohs (GstBuffer *buf)
+gst_rtpL16parse_ntohs (GstBuffer * buf)
{
gint16 *i, *len;
/* FIXME: is this code correct or even sane at all? */
- i = (gint16 *) GST_BUFFER_DATA(buf);
+ i = (gint16 *) GST_BUFFER_DATA (buf);
len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *);
- for (; i<len; i++) {
- *i = g_ntohs (*i);
+ for (; i < len; i++) {
+ *i = g_ntohs (*i);
}
}
void
-gst_rtpL16_caps_nego (GstRtpL16Parse *rtpL16parse)
+gst_rtpL16_caps_nego (GstRtpL16Parse * rtpL16parse)
{
GstCaps *caps;
- caps = gst_caps_copy(gst_static_caps_get (&gst_rtpL16parse_src_template.static_caps));
+ caps =
+ gst_caps_copy (gst_static_caps_get (&gst_rtpL16parse_src_template.
+ static_caps));
gst_caps_set_simple (caps,
"rate", G_TYPE_INT, rtpL16parse->frequency,
@@ -182,26 +186,27 @@ gst_rtpL16_caps_nego (GstRtpL16Parse *rtpL16parse)
}
void
-gst_rtpL16parse_payloadtype_change (GstRtpL16Parse *rtpL16parse, rtp_payload_t pt)
+gst_rtpL16parse_payloadtype_change (GstRtpL16Parse * rtpL16parse,
+ rtp_payload_t pt)
{
rtpL16parse->payload_type = pt;
-
+
switch (pt) {
- case PAYLOAD_L16_MONO:
- rtpL16parse->channels = 1;
- break;
- case PAYLOAD_L16_STEREO:
- rtpL16parse->channels = 2;
- break;
- default:
- g_warning ("unknown payload_t %d\n", pt);
+ case PAYLOAD_L16_MONO:
+ rtpL16parse->channels = 1;
+ break;
+ case PAYLOAD_L16_STEREO:
+ rtpL16parse->channels = 2;
+ break;
+ default:
+ g_warning ("unknown payload_t %d\n", pt);
}
gst_rtpL16_caps_nego (rtpL16parse);
}
static void
-gst_rtpL16parse_chain (GstPad * pad, GstData *_data)
+gst_rtpL16parse_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstRtpL16Parse *rtpL16parse;
@@ -220,8 +225,9 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data)
if (GST_IS_EVENT (buf)) {
GstEvent *event = GST_EVENT (buf);
+
gst_pad_event_default (pad, event);
-
+
return;
}
@@ -229,26 +235,30 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data)
gst_rtpL16_caps_nego (rtpL16parse);
}
- packet = rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ packet =
+ rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
pt = rtp_packet_get_payload_type (packet);
if (pt != rtpL16parse->payload_type) {
- gst_rtpL16parse_payloadtype_change (rtpL16parse, pt);
+ gst_rtpL16parse_payloadtype_change (rtpL16parse, pt);
}
outbuf = gst_buffer_new ();
GST_BUFFER_SIZE (outbuf) = rtp_packet_get_payload_len (packet);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
- GST_BUFFER_TIMESTAMP (outbuf) = g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND;
+ GST_BUFFER_TIMESTAMP (outbuf) =
+ g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND;
+
+ memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet),
+ GST_BUFFER_SIZE (outbuf));
- memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), GST_BUFFER_SIZE (outbuf));
-
- GST_DEBUG ("gst_rtpL16parse_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf));
+ GST_DEBUG ("gst_rtpL16parse_chain: pushing buffer of size %d",
+ GST_BUFFER_SIZE (outbuf));
/* FIXME: According to RFC 1890, this is required, right? */
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- gst_rtpL16parse_ntohs (outbuf);
+ gst_rtpL16parse_ntohs (outbuf);
#endif
gst_pad_push (rtpL16parse->srcpad, GST_DATA (outbuf));
@@ -258,7 +268,8 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data)
}
static void
-gst_rtpL16parse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_rtpL16parse_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstRtpL16Parse *rtpL16parse;
@@ -279,7 +290,8 @@ gst_rtpL16parse_set_property (GObject * object, guint prop_id, const GValue * va
}
static void
-gst_rtpL16parse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_rtpL16parse_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstRtpL16Parse *rtpL16parse;
@@ -331,5 +343,5 @@ gboolean
gst_rtpL16parse_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rtpL16parse",
- GST_RANK_NONE, GST_TYPE_RTP_L16_PARSE);
+ GST_RANK_NONE, GST_TYPE_RTP_L16_PARSE);
}
diff --git a/gst/rtp/gstrtpL16depay.h b/gst/rtp/gstrtpL16depay.h
index dad467bf..b49cf240 100644
--- a/gst/rtp/gstrtpL16depay.h
+++ b/gst/rtp/gstrtpL16depay.h
@@ -30,26 +30,26 @@ extern "C"
#endif /* __cplusplus */
/* Definition of structure storing data for this element. */
-typedef struct _GstRtpL16Parse GstRtpL16Parse;
-struct _GstRtpL16Parse
-{
- GstElement element;
+ typedef struct _GstRtpL16Parse GstRtpL16Parse;
+ struct _GstRtpL16Parse
+ {
+ GstElement element;
- GstPad *sinkpad;
- GstPad *srcpad;
+ GstPad *sinkpad;
+ GstPad *srcpad;
- guint frequency;
- guint channels;
+ guint frequency;
+ guint channels;
- rtp_payload_t payload_type;
-};
+ rtp_payload_t payload_type;
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstRtpL16ParseClass GstRtpL16ParseClass;
-struct _GstRtpL16ParseClass
-{
- GstElementClass parent_class;
-};
+ typedef struct _GstRtpL16ParseClass GstRtpL16ParseClass;
+ struct _GstRtpL16ParseClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_RTP_L16_PARSE \
@@ -63,7 +63,7 @@ struct _GstRtpL16ParseClass
#define GST_IS_RTP_L16_PARSE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L16_PARSE))
-gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin);
+ gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
diff --git a/gst/rtp/gstrtpL16enc.c b/gst/rtp/gstrtpL16enc.c
index 45d6a95a..0914d2fb 100644
--- a/gst/rtp/gstrtpL16enc.c
+++ b/gst/rtp/gstrtpL16enc.c
@@ -45,42 +45,40 @@ enum
};
static GstStaticPadTemplate gst_rtpL16enc_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) true, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) BYTE_ORDER, "
+ "signed = (boolean) true, "
+ "width = (int) 16, "
+ "depth = (int) 16, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
static GstStaticPadTemplate gst_rtpL16enc_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
-);
+ );
static void gst_rtpL16enc_class_init (GstRtpL16EncClass * klass);
static void gst_rtpL16enc_base_init (GstRtpL16EncClass * klass);
static void gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc);
-static void gst_rtpL16enc_chain (GstPad * pad, GstData *_data);
+static void gst_rtpL16enc_chain (GstPad * pad, GstData * _data);
static void gst_rtpL16enc_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
+ const GValue * value, GParamSpec * pspec);
static void gst_rtpL16enc_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static GstPadLinkReturn gst_rtpL16enc_sinkconnect (GstPad * pad, const GstCaps * caps);
+ GValue * value, GParamSpec * pspec);
+static GstPadLinkReturn gst_rtpL16enc_sinkconnect (GstPad * pad,
+ const GstCaps * caps);
static GstElementStateReturn gst_rtpL16enc_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
-static GType gst_rtpL16enc_get_type (void)
+static GType
+gst_rtpL16enc_get_type (void)
{
static GType rtpL16enc_type = 0;
@@ -97,7 +95,9 @@ static GType gst_rtpL16enc_get_type (void)
(GInstanceInitFunc) gst_rtpL16enc_init,
};
- rtpL16enc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Enc", &rtpL16enc_info, 0);
+ rtpL16enc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Enc",
+ &rtpL16enc_info, 0);
}
return rtpL16enc_type;
}
@@ -134,10 +134,12 @@ gst_rtpL16enc_class_init (GstRtpL16EncClass * klass)
static void
gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc)
{
- rtpL16enc->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpL16enc_sink_template), "sink");
- rtpL16enc->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpL16enc_src_template), "src");
+ rtpL16enc->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpL16enc_sink_template), "sink");
+ rtpL16enc->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpL16enc_src_template), "src");
gst_element_add_pad (GST_ELEMENT (rtpL16enc), rtpL16enc->sinkpad);
gst_element_add_pad (GST_ELEMENT (rtpL16enc), rtpL16enc->srcpad);
gst_pad_set_chain_function (rtpL16enc->sinkpad, gst_rtpL16enc_chain);
@@ -146,7 +148,7 @@ gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc)
rtpL16enc->frequency = 44100;
rtpL16enc->channels = 2;
- rtpL16enc->next_time = 0;
+ rtpL16enc->next_time = 0;
rtpL16enc->time_interval = 0;
rtpL16enc->seq = 0;
@@ -167,31 +169,33 @@ gst_rtpL16enc_sinkconnect (GstPad * pad, const GstCaps * caps)
ret = gst_structure_get_int (structure, "rate", &rtpL16enc->frequency);
ret &= gst_structure_get_int (structure, "channels", &rtpL16enc->channels);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
/* Pre-calculate what we can */
- rtpL16enc->time_interval = GST_SECOND / (2 * rtpL16enc->channels * rtpL16enc->frequency);
+ rtpL16enc->time_interval =
+ GST_SECOND / (2 * rtpL16enc->channels * rtpL16enc->frequency);
return GST_PAD_LINK_OK;
}
void
-gst_rtpL16enc_htons (GstBuffer *buf)
+gst_rtpL16enc_htons (GstBuffer * buf)
{
gint16 *i, *len;
/* FIXME: is this code correct or even sane at all? */
- i = (gint16 *) GST_BUFFER_DATA(buf);
+ i = (gint16 *) GST_BUFFER_DATA (buf);
len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *);
- for (; i<len; i++) {
- *i = g_htons (*i);
+ for (; i < len; i++) {
+ *i = g_htons (*i);
}
}
static void
-gst_rtpL16enc_chain (GstPad * pad, GstData *_data)
+gst_rtpL16enc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstRtpL16Enc *rtpL16enc;
@@ -212,12 +216,12 @@ gst_rtpL16enc_chain (GstPad * pad, GstData *_data)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_DISCONTINUOUS:
- GST_DEBUG ("discont");
- rtpL16enc->next_time = 0;
- gst_pad_event_default (pad, event);
+ GST_DEBUG ("discont");
+ rtpL16enc->next_time = 0;
+ gst_pad_event_default (pad, event);
return;
default:
- gst_pad_event_default (pad, event);
+ gst_pad_event_default (pad, event);
return;
}
}
@@ -232,41 +236,47 @@ gst_rtpL16enc_chain (GstPad * pad, GstData *_data)
rtp_packet_set_marker (packet, 0);
rtp_packet_set_ssrc (packet, g_htonl (rtpL16enc->ssrc));
rtp_packet_set_seq (packet, g_htons (rtpL16enc->seq));
- rtp_packet_set_timestamp (packet, g_htonl ((guint32) rtpL16enc->next_time / GST_SECOND));
+ rtp_packet_set_timestamp (packet,
+ g_htonl ((guint32) rtpL16enc->next_time / GST_SECOND));
if (rtpL16enc->channels == 1) {
- rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_MONO);
+ rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_MONO);
}
else {
- rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_STEREO);
+ rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_STEREO);
}
/* FIXME: According to RFC 1890, this is required, right? */
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- gst_rtpL16enc_htons (buf);
+ gst_rtpL16enc_htons (buf);
#endif
outbuf = gst_buffer_new ();
- GST_BUFFER_SIZE (outbuf) = rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf);
+ GST_BUFFER_SIZE (outbuf) =
+ rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
GST_BUFFER_TIMESTAMP (outbuf) = rtpL16enc->next_time;
- memcpy (GST_BUFFER_DATA (outbuf), packet->data, rtp_packet_get_packet_len (packet));
- memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len(packet), GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ memcpy (GST_BUFFER_DATA (outbuf), packet->data,
+ rtp_packet_get_packet_len (packet));
+ memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len (packet),
+ GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
- GST_DEBUG ("gst_rtpL16enc_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf));
+ GST_DEBUG ("gst_rtpL16enc_chain: pushing buffer of size %d",
+ GST_BUFFER_SIZE (outbuf));
gst_pad_push (rtpL16enc->srcpad, GST_DATA (outbuf));
++rtpL16enc->seq;
rtpL16enc->next_time += rtpL16enc->time_interval * GST_BUFFER_SIZE (buf);
-
+
rtp_packet_free (packet);
gst_buffer_unref (buf);
}
static void
-gst_rtpL16enc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_rtpL16enc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstRtpL16Enc *rtpL16enc;
@@ -281,7 +291,8 @@ gst_rtpL16enc_set_property (GObject * object, guint prop_id, const GValue * valu
}
static void
-gst_rtpL16enc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_rtpL16enc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstRtpL16Enc *rtpL16enc;
@@ -330,5 +341,5 @@ gboolean
gst_rtpL16enc_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rtpL16enc",
- GST_RANK_NONE, GST_TYPE_RTP_L16_ENC);
+ GST_RANK_NONE, GST_TYPE_RTP_L16_ENC);
}
diff --git a/gst/rtp/gstrtpL16enc.h b/gst/rtp/gstrtpL16enc.h
index 15ed92f6..7e902483 100644
--- a/gst/rtp/gstrtpL16enc.h
+++ b/gst/rtp/gstrtpL16enc.h
@@ -31,32 +31,32 @@ extern "C"
#endif /* __cplusplus */
/* Definition of structure storing data for this element. */
-typedef struct _GstRtpL16Enc GstRtpL16Enc;
-struct _GstRtpL16Enc
-{
- GstElement element;
+ typedef struct _GstRtpL16Enc GstRtpL16Enc;
+ struct _GstRtpL16Enc
+ {
+ GstElement element;
+
+ GstPad *sinkpad;
+ GstPad *srcpad;
- GstPad *sinkpad;
- GstPad *srcpad;
+ guint frequency;
+ guint channels;
- guint frequency;
- guint channels;
+ /* the timestamp of the next frame */
+ guint64 next_time;
+ /* the interval between frames */
+ guint64 time_interval;
- /* the timestamp of the next frame */
- guint64 next_time;
- /* the interval between frames */
- guint64 time_interval;
-
- guint32 ssrc;
- guint16 seq;
-};
+ guint32 ssrc;
+ guint16 seq;
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstRtpL16EncClass GstRtpL16EncClass;
-struct _GstRtpL16EncClass
-{
- GstElementClass parent_class;
-};
+ typedef struct _GstRtpL16EncClass GstRtpL16EncClass;
+ struct _GstRtpL16EncClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_RTP_L16_ENC \
@@ -70,7 +70,7 @@ struct _GstRtpL16EncClass
#define GST_IS_RTP_L16_ENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L16_ENC))
-gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin);
+ gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
diff --git a/gst/rtp/gstrtpL16parse.c b/gst/rtp/gstrtpL16parse.c
index 51ec258c..07bfb6a0 100644
--- a/gst/rtp/gstrtpL16parse.c
+++ b/gst/rtp/gstrtpL16parse.c
@@ -42,43 +42,41 @@ enum
};
static GstStaticPadTemplate gst_rtpL16parse_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) true, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) BYTE_ORDER, "
+ "signed = (boolean) true, "
+ "width = (int) 16, "
+ "depth = (int) 16, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
static GstStaticPadTemplate gst_rtpL16parse_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
-);
+ );
static void gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass);
static void gst_rtpL16parse_base_init (GstRtpL16ParseClass * klass);
static void gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse);
-static void gst_rtpL16parse_chain (GstPad * pad, GstData *_data);
+static void gst_rtpL16parse_chain (GstPad * pad, GstData * _data);
static void gst_rtpL16parse_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
+ const GValue * value, GParamSpec * pspec);
static void gst_rtpL16parse_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static GstElementStateReturn gst_rtpL16parse_change_state (GstElement * element);
+ GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_rtpL16parse_change_state (GstElement *
+ element);
static GstElementClass *parent_class = NULL;
-static GType gst_rtpL16parse_get_type (void)
+static GType
+gst_rtpL16parse_get_type (void)
{
static GType rtpL16parse_type = 0;
@@ -95,7 +93,9 @@ static GType gst_rtpL16parse_get_type (void)
(GInstanceInitFunc) gst_rtpL16parse_init,
};
- rtpL16parse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Parse", &rtpL16parse_info, 0);
+ rtpL16parse_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Parse",
+ &rtpL16parse_info, 0);
}
return rtpL16parse_type;
}
@@ -123,12 +123,12 @@ gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass)
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PAYLOAD_TYPE,
- g_param_spec_int ("payload_type", "payload_type", "payload type",
- G_MININT, G_MAXINT, PAYLOAD_L16_STEREO, G_PARAM_READABLE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY,
- g_param_spec_int ("frequency", "frequency", "frequency",
- G_MININT, G_MAXINT, 44100, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PAYLOAD_TYPE,
+ g_param_spec_int ("payload_type", "payload_type", "payload type",
+ G_MININT, G_MAXINT, PAYLOAD_L16_STEREO, G_PARAM_READABLE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY,
+ g_param_spec_int ("frequency", "frequency", "frequency",
+ G_MININT, G_MAXINT, 44100, G_PARAM_READWRITE));
gobject_class->set_property = gst_rtpL16parse_set_property;
gobject_class->get_property = gst_rtpL16parse_get_property;
@@ -139,10 +139,12 @@ gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass)
static void
gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse)
{
- rtpL16parse->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpL16parse_src_template), "src");
- rtpL16parse->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpL16parse_sink_template), "sink");
+ rtpL16parse->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpL16parse_src_template), "src");
+ rtpL16parse->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpL16parse_sink_template), "sink");
gst_element_add_pad (GST_ELEMENT (rtpL16parse), rtpL16parse->srcpad);
gst_element_add_pad (GST_ELEMENT (rtpL16parse), rtpL16parse->sinkpad);
gst_pad_set_chain_function (rtpL16parse->sinkpad, gst_rtpL16parse_chain);
@@ -154,25 +156,27 @@ gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse)
}
void
-gst_rtpL16parse_ntohs (GstBuffer *buf)
+gst_rtpL16parse_ntohs (GstBuffer * buf)
{
gint16 *i, *len;
/* FIXME: is this code correct or even sane at all? */
- i = (gint16 *) GST_BUFFER_DATA(buf);
+ i = (gint16 *) GST_BUFFER_DATA (buf);
len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *);
- for (; i<len; i++) {
- *i = g_ntohs (*i);
+ for (; i < len; i++) {
+ *i = g_ntohs (*i);
}
}
void
-gst_rtpL16_caps_nego (GstRtpL16Parse *rtpL16parse)
+gst_rtpL16_caps_nego (GstRtpL16Parse * rtpL16parse)
{
GstCaps *caps;
- caps = gst_caps_copy(gst_static_caps_get (&gst_rtpL16parse_src_template.static_caps));
+ caps =
+ gst_caps_copy (gst_static_caps_get (&gst_rtpL16parse_src_template.
+ static_caps));
gst_caps_set_simple (caps,
"rate", G_TYPE_INT, rtpL16parse->frequency,
@@ -182,26 +186,27 @@ gst_rtpL16_caps_nego (GstRtpL16Parse *rtpL16parse)
}
void
-gst_rtpL16parse_payloadtype_change (GstRtpL16Parse *rtpL16parse, rtp_payload_t pt)
+gst_rtpL16parse_payloadtype_change (GstRtpL16Parse * rtpL16parse,
+ rtp_payload_t pt)
{
rtpL16parse->payload_type = pt;
-
+
switch (pt) {
- case PAYLOAD_L16_MONO:
- rtpL16parse->channels = 1;
- break;
- case PAYLOAD_L16_STEREO:
- rtpL16parse->channels = 2;
- break;
- default:
- g_warning ("unknown payload_t %d\n", pt);
+ case PAYLOAD_L16_MONO:
+ rtpL16parse->channels = 1;
+ break;
+ case PAYLOAD_L16_STEREO:
+ rtpL16parse->channels = 2;
+ break;
+ default:
+ g_warning ("unknown payload_t %d\n", pt);
}
gst_rtpL16_caps_nego (rtpL16parse);
}
static void
-gst_rtpL16parse_chain (GstPad * pad, GstData *_data)
+gst_rtpL16parse_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstRtpL16Parse *rtpL16parse;
@@ -220,8 +225,9 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data)
if (GST_IS_EVENT (buf)) {
GstEvent *event = GST_EVENT (buf);
+
gst_pad_event_default (pad, event);
-
+
return;
}
@@ -229,26 +235,30 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data)
gst_rtpL16_caps_nego (rtpL16parse);
}
- packet = rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ packet =
+ rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
pt = rtp_packet_get_payload_type (packet);
if (pt != rtpL16parse->payload_type) {
- gst_rtpL16parse_payloadtype_change (rtpL16parse, pt);
+ gst_rtpL16parse_payloadtype_change (rtpL16parse, pt);
}
outbuf = gst_buffer_new ();
GST_BUFFER_SIZE (outbuf) = rtp_packet_get_payload_len (packet);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
- GST_BUFFER_TIMESTAMP (outbuf) = g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND;
+ GST_BUFFER_TIMESTAMP (outbuf) =
+ g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND;
+
+ memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet),
+ GST_BUFFER_SIZE (outbuf));
- memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), GST_BUFFER_SIZE (outbuf));
-
- GST_DEBUG ("gst_rtpL16parse_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf));
+ GST_DEBUG ("gst_rtpL16parse_chain: pushing buffer of size %d",
+ GST_BUFFER_SIZE (outbuf));
/* FIXME: According to RFC 1890, this is required, right? */
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- gst_rtpL16parse_ntohs (outbuf);
+ gst_rtpL16parse_ntohs (outbuf);
#endif
gst_pad_push (rtpL16parse->srcpad, GST_DATA (outbuf));
@@ -258,7 +268,8 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data)
}
static void
-gst_rtpL16parse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_rtpL16parse_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstRtpL16Parse *rtpL16parse;
@@ -279,7 +290,8 @@ gst_rtpL16parse_set_property (GObject * object, guint prop_id, const GValue * va
}
static void
-gst_rtpL16parse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_rtpL16parse_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstRtpL16Parse *rtpL16parse;
@@ -331,5 +343,5 @@ gboolean
gst_rtpL16parse_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rtpL16parse",
- GST_RANK_NONE, GST_TYPE_RTP_L16_PARSE);
+ GST_RANK_NONE, GST_TYPE_RTP_L16_PARSE);
}
diff --git a/gst/rtp/gstrtpL16parse.h b/gst/rtp/gstrtpL16parse.h
index dad467bf..b49cf240 100644
--- a/gst/rtp/gstrtpL16parse.h
+++ b/gst/rtp/gstrtpL16parse.h
@@ -30,26 +30,26 @@ extern "C"
#endif /* __cplusplus */
/* Definition of structure storing data for this element. */
-typedef struct _GstRtpL16Parse GstRtpL16Parse;
-struct _GstRtpL16Parse
-{
- GstElement element;
+ typedef struct _GstRtpL16Parse GstRtpL16Parse;
+ struct _GstRtpL16Parse
+ {
+ GstElement element;
- GstPad *sinkpad;
- GstPad *srcpad;
+ GstPad *sinkpad;
+ GstPad *srcpad;
- guint frequency;
- guint channels;
+ guint frequency;
+ guint channels;
- rtp_payload_t payload_type;
-};
+ rtp_payload_t payload_type;
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstRtpL16ParseClass GstRtpL16ParseClass;
-struct _GstRtpL16ParseClass
-{
- GstElementClass parent_class;
-};
+ typedef struct _GstRtpL16ParseClass GstRtpL16ParseClass;
+ struct _GstRtpL16ParseClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_RTP_L16_PARSE \
@@ -63,7 +63,7 @@ struct _GstRtpL16ParseClass
#define GST_IS_RTP_L16_PARSE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L16_PARSE))
-gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin);
+ gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
diff --git a/gst/rtp/gstrtpL16pay.c b/gst/rtp/gstrtpL16pay.c
index 45d6a95a..0914d2fb 100644
--- a/gst/rtp/gstrtpL16pay.c
+++ b/gst/rtp/gstrtpL16pay.c
@@ -45,42 +45,40 @@ enum
};
static GstStaticPadTemplate gst_rtpL16enc_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) true, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) BYTE_ORDER, "
+ "signed = (boolean) true, "
+ "width = (int) 16, "
+ "depth = (int) 16, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
static GstStaticPadTemplate gst_rtpL16enc_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
-);
+ );
static void gst_rtpL16enc_class_init (GstRtpL16EncClass * klass);
static void gst_rtpL16enc_base_init (GstRtpL16EncClass * klass);
static void gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc);
-static void gst_rtpL16enc_chain (GstPad * pad, GstData *_data);
+static void gst_rtpL16enc_chain (GstPad * pad, GstData * _data);
static void gst_rtpL16enc_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
+ const GValue * value, GParamSpec * pspec);
static void gst_rtpL16enc_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static GstPadLinkReturn gst_rtpL16enc_sinkconnect (GstPad * pad, const GstCaps * caps);
+ GValue * value, GParamSpec * pspec);
+static GstPadLinkReturn gst_rtpL16enc_sinkconnect (GstPad * pad,
+ const GstCaps * caps);
static GstElementStateReturn gst_rtpL16enc_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
-static GType gst_rtpL16enc_get_type (void)
+static GType
+gst_rtpL16enc_get_type (void)
{
static GType rtpL16enc_type = 0;
@@ -97,7 +95,9 @@ static GType gst_rtpL16enc_get_type (void)
(GInstanceInitFunc) gst_rtpL16enc_init,
};
- rtpL16enc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Enc", &rtpL16enc_info, 0);
+ rtpL16enc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Enc",
+ &rtpL16enc_info, 0);
}
return rtpL16enc_type;
}
@@ -134,10 +134,12 @@ gst_rtpL16enc_class_init (GstRtpL16EncClass * klass)
static void
gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc)
{
- rtpL16enc->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpL16enc_sink_template), "sink");
- rtpL16enc->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpL16enc_src_template), "src");
+ rtpL16enc->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpL16enc_sink_template), "sink");
+ rtpL16enc->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpL16enc_src_template), "src");
gst_element_add_pad (GST_ELEMENT (rtpL16enc), rtpL16enc->sinkpad);
gst_element_add_pad (GST_ELEMENT (rtpL16enc), rtpL16enc->srcpad);
gst_pad_set_chain_function (rtpL16enc->sinkpad, gst_rtpL16enc_chain);
@@ -146,7 +148,7 @@ gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc)
rtpL16enc->frequency = 44100;
rtpL16enc->channels = 2;
- rtpL16enc->next_time = 0;
+ rtpL16enc->next_time = 0;
rtpL16enc->time_interval = 0;
rtpL16enc->seq = 0;
@@ -167,31 +169,33 @@ gst_rtpL16enc_sinkconnect (GstPad * pad, const GstCaps * caps)
ret = gst_structure_get_int (structure, "rate", &rtpL16enc->frequency);
ret &= gst_structure_get_int (structure, "channels", &rtpL16enc->channels);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
/* Pre-calculate what we can */
- rtpL16enc->time_interval = GST_SECOND / (2 * rtpL16enc->channels * rtpL16enc->frequency);
+ rtpL16enc->time_interval =
+ GST_SECOND / (2 * rtpL16enc->channels * rtpL16enc->frequency);
return GST_PAD_LINK_OK;
}
void
-gst_rtpL16enc_htons (GstBuffer *buf)
+gst_rtpL16enc_htons (GstBuffer * buf)
{
gint16 *i, *len;
/* FIXME: is this code correct or even sane at all? */
- i = (gint16 *) GST_BUFFER_DATA(buf);
+ i = (gint16 *) GST_BUFFER_DATA (buf);
len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *);
- for (; i<len; i++) {
- *i = g_htons (*i);
+ for (; i < len; i++) {
+ *i = g_htons (*i);
}
}
static void
-gst_rtpL16enc_chain (GstPad * pad, GstData *_data)
+gst_rtpL16enc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstRtpL16Enc *rtpL16enc;
@@ -212,12 +216,12 @@ gst_rtpL16enc_chain (GstPad * pad, GstData *_data)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_DISCONTINUOUS:
- GST_DEBUG ("discont");
- rtpL16enc->next_time = 0;
- gst_pad_event_default (pad, event);
+ GST_DEBUG ("discont");
+ rtpL16enc->next_time = 0;
+ gst_pad_event_default (pad, event);
return;
default:
- gst_pad_event_default (pad, event);
+ gst_pad_event_default (pad, event);
return;
}
}
@@ -232,41 +236,47 @@ gst_rtpL16enc_chain (GstPad * pad, GstData *_data)
rtp_packet_set_marker (packet, 0);
rtp_packet_set_ssrc (packet, g_htonl (rtpL16enc->ssrc));
rtp_packet_set_seq (packet, g_htons (rtpL16enc->seq));
- rtp_packet_set_timestamp (packet, g_htonl ((guint32) rtpL16enc->next_time / GST_SECOND));
+ rtp_packet_set_timestamp (packet,
+ g_htonl ((guint32) rtpL16enc->next_time / GST_SECOND));
if (rtpL16enc->channels == 1) {
- rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_MONO);
+ rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_MONO);
}
else {
- rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_STEREO);
+ rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_STEREO);
}
/* FIXME: According to RFC 1890, this is required, right? */
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- gst_rtpL16enc_htons (buf);
+ gst_rtpL16enc_htons (buf);
#endif
outbuf = gst_buffer_new ();
- GST_BUFFER_SIZE (outbuf) = rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf);
+ GST_BUFFER_SIZE (outbuf) =
+ rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
GST_BUFFER_TIMESTAMP (outbuf) = rtpL16enc->next_time;
- memcpy (GST_BUFFER_DATA (outbuf), packet->data, rtp_packet_get_packet_len (packet));
- memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len(packet), GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ memcpy (GST_BUFFER_DATA (outbuf), packet->data,
+ rtp_packet_get_packet_len (packet));
+ memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len (packet),
+ GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
- GST_DEBUG ("gst_rtpL16enc_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf));
+ GST_DEBUG ("gst_rtpL16enc_chain: pushing buffer of size %d",
+ GST_BUFFER_SIZE (outbuf));
gst_pad_push (rtpL16enc->srcpad, GST_DATA (outbuf));
++rtpL16enc->seq;
rtpL16enc->next_time += rtpL16enc->time_interval * GST_BUFFER_SIZE (buf);
-
+
rtp_packet_free (packet);
gst_buffer_unref (buf);
}
static void
-gst_rtpL16enc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_rtpL16enc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstRtpL16Enc *rtpL16enc;
@@ -281,7 +291,8 @@ gst_rtpL16enc_set_property (GObject * object, guint prop_id, const GValue * valu
}
static void
-gst_rtpL16enc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_rtpL16enc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstRtpL16Enc *rtpL16enc;
@@ -330,5 +341,5 @@ gboolean
gst_rtpL16enc_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rtpL16enc",
- GST_RANK_NONE, GST_TYPE_RTP_L16_ENC);
+ GST_RANK_NONE, GST_TYPE_RTP_L16_ENC);
}
diff --git a/gst/rtp/gstrtpL16pay.h b/gst/rtp/gstrtpL16pay.h
index 15ed92f6..7e902483 100644
--- a/gst/rtp/gstrtpL16pay.h
+++ b/gst/rtp/gstrtpL16pay.h
@@ -31,32 +31,32 @@ extern "C"
#endif /* __cplusplus */
/* Definition of structure storing data for this element. */
-typedef struct _GstRtpL16Enc GstRtpL16Enc;
-struct _GstRtpL16Enc
-{
- GstElement element;
+ typedef struct _GstRtpL16Enc GstRtpL16Enc;
+ struct _GstRtpL16Enc
+ {
+ GstElement element;
+
+ GstPad *sinkpad;
+ GstPad *srcpad;
- GstPad *sinkpad;
- GstPad *srcpad;
+ guint frequency;
+ guint channels;
- guint frequency;
- guint channels;
+ /* the timestamp of the next frame */
+ guint64 next_time;
+ /* the interval between frames */
+ guint64 time_interval;
- /* the timestamp of the next frame */
- guint64 next_time;
- /* the interval between frames */
- guint64 time_interval;
-
- guint32 ssrc;
- guint16 seq;
-};
+ guint32 ssrc;
+ guint16 seq;
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstRtpL16EncClass GstRtpL16EncClass;
-struct _GstRtpL16EncClass
-{
- GstElementClass parent_class;
-};
+ typedef struct _GstRtpL16EncClass GstRtpL16EncClass;
+ struct _GstRtpL16EncClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_RTP_L16_ENC \
@@ -70,7 +70,7 @@ struct _GstRtpL16EncClass
#define GST_IS_RTP_L16_ENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L16_ENC))
-gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin);
+ gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
diff --git a/gst/rtp/gstrtpgsmdepay.c b/gst/rtp/gstrtpgsmdepay.c
index 8f1b301a..55b96945 100644
--- a/gst/rtp/gstrtpgsmdepay.c
+++ b/gst/rtp/gstrtpgsmdepay.c
@@ -42,39 +42,37 @@ enum
};
static GstStaticPadTemplate gst_rtpgsmparse_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "audio/x-gsm, "
- "rate = (int) [ 1000, 48000 ]"
- )
-);
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-gsm, " "rate = (int) [ 1000, 48000 ]")
+ );
static GstStaticPadTemplate gst_rtpgsmparse_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
- GST_PAD_ALWAYS,
+ GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
-);
+ );
static void gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass);
static void gst_rtpgsmparse_base_init (GstRtpGSMParseClass * klass);
static void gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse);
-static void gst_rtpgsmparse_chain (GstPad * pad, GstData *_data);
+static void gst_rtpgsmparse_chain (GstPad * pad, GstData * _data);
static void gst_rtpgsmparse_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
+ const GValue * value, GParamSpec * pspec);
static void gst_rtpgsmparse_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static GstElementStateReturn gst_rtpgsmparse_change_state (GstElement * element);
+ GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_rtpgsmparse_change_state (GstElement *
+ element);
static GstElementClass *parent_class = NULL;
-static GType gst_rtpgsmparse_get_type (void)
+static GType
+gst_rtpgsmparse_get_type (void)
{
static GType rtpgsmparse_type = 0;
@@ -91,7 +89,9 @@ static GType gst_rtpgsmparse_get_type (void)
(GInstanceInitFunc) gst_rtpgsmparse_init,
};
- rtpgsmparse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMParse", &rtpgsmparse_info, 0);
+ rtpgsmparse_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMParse",
+ &rtpgsmparse_info, 0);
}
return rtpgsmparse_type;
}
@@ -102,9 +102,9 @@ gst_rtpgsmparse_base_init (GstRtpGSMParseClass * klass)
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get(&gst_rtpgsmparse_src_template));
+ gst_static_pad_template_get (&gst_rtpgsmparse_src_template));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get(&gst_rtpgsmparse_sink_template));
+ gst_static_pad_template_get (&gst_rtpgsmparse_sink_template));
gst_element_class_set_details (element_class, &gst_rtp_gsmparse_details);
}
@@ -119,9 +119,9 @@ gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass)
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY,
- g_param_spec_int ("frequency", "frequency", "frequency",
- G_MININT, G_MAXINT, 8000, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY,
+ g_param_spec_int ("frequency", "frequency", "frequency",
+ G_MININT, G_MAXINT, 8000, G_PARAM_READWRITE));
gobject_class->set_property = gst_rtpgsmparse_set_property;
gobject_class->get_property = gst_rtpgsmparse_get_property;
@@ -132,10 +132,12 @@ gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass)
static void
gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse)
{
- rtpgsmparse->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_rtpgsmparse_src_template), "src");
- rtpgsmparse->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_rtpgsmparse_sink_template), "sink");
+ rtpgsmparse->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpgsmparse_src_template), "src");
+ rtpgsmparse->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpgsmparse_sink_template), "sink");
gst_element_add_pad (GST_ELEMENT (rtpgsmparse), rtpgsmparse->srcpad);
gst_element_add_pad (GST_ELEMENT (rtpgsmparse), rtpgsmparse->sinkpad);
gst_pad_set_chain_function (rtpgsmparse->sinkpad, gst_rtpgsmparse_chain);
@@ -144,32 +146,32 @@ gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse)
}
void
-gst_rtpgsmparse_ntohs (GstBuffer *buf)
+gst_rtpgsmparse_ntohs (GstBuffer * buf)
{
gint16 *i, *len;
/* FIXME: is this code correct or even sane at all? */
- i = (gint16 *) GST_BUFFER_DATA(buf);
+ i = (gint16 *) GST_BUFFER_DATA (buf);
len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *);
- for (; i<len; i++) {
- *i = g_ntohs (*i);
+ for (; i < len; i++) {
+ *i = g_ntohs (*i);
}
}
void
-gst_rtpgsm_caps_nego (GstRtpGSMParse *rtpgsmparse)
+gst_rtpgsm_caps_nego (GstRtpGSMParse * rtpgsmparse)
{
GstCaps *caps;
caps = gst_caps_new_simple ("audio/x-gsm",
- "rate", G_TYPE_INT, rtpgsmparse->frequency);
+ "rate", G_TYPE_INT, rtpgsmparse->frequency);
gst_pad_try_set_caps (rtpgsmparse->srcpad, caps);
}
static void
-gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
+gst_rtpgsmparse_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstRtpGSMParse *rtpgsmparse;
@@ -188,8 +190,9 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
if (GST_IS_EVENT (buf)) {
GstEvent *event = GST_EVENT (buf);
+
gst_pad_event_default (pad, event);
-
+
return;
}
@@ -197,7 +200,8 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
gst_rtpgsm_caps_nego (rtpgsmparse);
}
- packet = rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ packet =
+ rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
pt = rtp_packet_get_payload_type (packet);
@@ -211,15 +215,18 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
outbuf = gst_buffer_new ();
GST_BUFFER_SIZE (outbuf) = rtp_packet_get_payload_len (packet);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
- GST_BUFFER_TIMESTAMP (outbuf) = g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND;
+ GST_BUFFER_TIMESTAMP (outbuf) =
+ g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND;
+
+ memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet),
+ GST_BUFFER_SIZE (outbuf));
- memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), GST_BUFFER_SIZE (outbuf));
-
- GST_DEBUG ("gst_rtpgsmparse_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf));
+ GST_DEBUG ("gst_rtpgsmparse_chain: pushing buffer of size %d",
+ GST_BUFFER_SIZE (outbuf));
/* FIXME: According to RFC 1890, this is required, right? */
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- gst_rtpgsmparse_ntohs (outbuf);
+ gst_rtpgsmparse_ntohs (outbuf);
#endif
gst_pad_push (rtpgsmparse->srcpad, GST_DATA (outbuf));
@@ -229,7 +236,8 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
}
static void
-gst_rtpgsmparse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_rtpgsmparse_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstRtpGSMParse *rtpgsmparse;
@@ -247,7 +255,8 @@ gst_rtpgsmparse_set_property (GObject * object, guint prop_id, const GValue * va
}
static void
-gst_rtpgsmparse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_rtpgsmparse_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstRtpGSMParse *rtpgsmparse;
@@ -296,5 +305,5 @@ gboolean
gst_rtpgsmparse_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rtpgsmparse",
- GST_RANK_NONE, GST_TYPE_RTP_GSM_PARSE);
+ GST_RANK_NONE, GST_TYPE_RTP_GSM_PARSE);
}
diff --git a/gst/rtp/gstrtpgsmdepay.h b/gst/rtp/gstrtpgsmdepay.h
index 0a006e70..f3b0e659 100644
--- a/gst/rtp/gstrtpgsmdepay.h
+++ b/gst/rtp/gstrtpgsmdepay.h
@@ -30,23 +30,23 @@ extern "C"
#endif /* __cplusplus */
/* Definition of structure storing data for this element. */
-typedef struct _GstRtpGSMParse GstRtpGSMParse;
-struct _GstRtpGSMParse
-{
- GstElement element;
+ typedef struct _GstRtpGSMParse GstRtpGSMParse;
+ struct _GstRtpGSMParse
+ {
+ GstElement element;
- GstPad *sinkpad;
- GstPad *srcpad;
+ GstPad *sinkpad;
+ GstPad *srcpad;
- guint frequency;
-};
+ guint frequency;
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstRtpGSMParseClass GstRtpGSMParseClass;
-struct _GstRtpGSMParseClass
-{
- GstElementClass parent_class;
-};
+ typedef struct _GstRtpGSMParseClass GstRtpGSMParseClass;
+ struct _GstRtpGSMParseClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_RTP_GSM_PARSE \
@@ -60,7 +60,7 @@ struct _GstRtpGSMParseClass
#define GST_IS_RTP_GSM_PARSE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_GSM_PARSE))
-gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin);
+ gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
diff --git a/gst/rtp/gstrtpgsmenc.c b/gst/rtp/gstrtpgsmenc.c
index 495e4367..6301dd8c 100644
--- a/gst/rtp/gstrtpgsmenc.c
+++ b/gst/rtp/gstrtpgsmenc.c
@@ -46,38 +46,36 @@ enum
};
static GstStaticPadTemplate gst_rtpgsmenc_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "audio/x-gsm, "
- "rate = (int) [ 1000, 48000 ]"
- )
-);
+ GST_STATIC_CAPS ("audio/x-gsm, " "rate = (int) [ 1000, 48000 ]")
+ );
static GstStaticPadTemplate gst_rtpgsmenc_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
-);
+ );
static void gst_rtpgsmenc_class_init (GstRtpGSMEncClass * klass);
static void gst_rtpgsmenc_base_init (GstRtpGSMEncClass * klass);
static void gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc);
-static void gst_rtpgsmenc_chain (GstPad * pad, GstData *_data);
+static void gst_rtpgsmenc_chain (GstPad * pad, GstData * _data);
static void gst_rtpgsmenc_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
+ const GValue * value, GParamSpec * pspec);
static void gst_rtpgsmenc_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static GstPadLinkReturn gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps);
+ GValue * value, GParamSpec * pspec);
+static GstPadLinkReturn gst_rtpgsmenc_sinkconnect (GstPad * pad,
+ const GstCaps * caps);
static GstElementStateReturn gst_rtpgsmenc_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
-static GType gst_rtpgsmenc_get_type (void)
+static GType
+gst_rtpgsmenc_get_type (void)
{
static GType rtpgsmenc_type = 0;
@@ -94,7 +92,9 @@ static GType gst_rtpgsmenc_get_type (void)
(GInstanceInitFunc) gst_rtpgsmenc_init,
};
- rtpgsmenc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMEnc", &rtpgsmenc_info, 0);
+ rtpgsmenc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMEnc",
+ &rtpgsmenc_info, 0);
}
return rtpgsmenc_type;
}
@@ -131,10 +131,12 @@ gst_rtpgsmenc_class_init (GstRtpGSMEncClass * klass)
static void
gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc)
{
- rtpgsmenc->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpgsmenc_sink_template), "sink");
- rtpgsmenc->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpgsmenc_sink_template), "src");
+ rtpgsmenc->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpgsmenc_sink_template), "sink");
+ rtpgsmenc->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpgsmenc_sink_template), "src");
gst_element_add_pad (GST_ELEMENT (rtpgsmenc), rtpgsmenc->sinkpad);
gst_element_add_pad (GST_ELEMENT (rtpgsmenc), rtpgsmenc->srcpad);
gst_pad_set_chain_function (rtpgsmenc->sinkpad, gst_rtpgsmenc_chain);
@@ -142,7 +144,7 @@ gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc)
rtpgsmenc->frequency = 8000;
- rtpgsmenc->next_time = 0;
+ rtpgsmenc->next_time = 0;
rtpgsmenc->time_interval = 0;
rtpgsmenc->seq = 0;
@@ -161,7 +163,8 @@ gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps)
structure = gst_caps_get_structure (caps, 0);
ret = gst_structure_get_int (structure, "rate", &rtpgsmenc->frequency);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
/* Pre-calculate what we can */
rtpgsmenc->time_interval = GST_SECOND / (2 * rtpgsmenc->frequency);
@@ -171,21 +174,21 @@ gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps)
void
-gst_rtpgsmenc_htons (GstBuffer *buf)
+gst_rtpgsmenc_htons (GstBuffer * buf)
{
gint16 *i, *len;
/* FIXME: is this code correct or even sane at all? */
- i = (gint16 *) GST_BUFFER_DATA(buf);
+ i = (gint16 *) GST_BUFFER_DATA (buf);
len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *);
- for (; i<len; i++) {
- *i = g_htons (*i);
+ for (; i < len; i++) {
+ *i = g_htons (*i);
}
}
static void
-gst_rtpgsmenc_chain (GstPad * pad, GstData *_data)
+gst_rtpgsmenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstRtpGSMEnc *rtpgsmenc;
@@ -206,12 +209,12 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_DISCONTINUOUS:
- GST_DEBUG ("discont");
- rtpgsmenc->next_time = 0;
- gst_pad_event_default (pad, event);
+ GST_DEBUG ("discont");
+ rtpgsmenc->next_time = 0;
+ gst_pad_event_default (pad, event);
return;
default:
- gst_pad_event_default (pad, event);
+ gst_pad_event_default (pad, event);
return;
}
}
@@ -226,7 +229,8 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data)
rtp_packet_set_marker (packet, 0);
rtp_packet_set_ssrc (packet, g_htonl (rtpgsmenc->ssrc));
rtp_packet_set_seq (packet, g_htons (rtpgsmenc->seq));
- rtp_packet_set_timestamp (packet, g_htonl ((guint32) rtpgsmenc->next_time / GST_SECOND));
+ rtp_packet_set_timestamp (packet,
+ g_htonl ((guint32) rtpgsmenc->next_time / GST_SECOND));
rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_GSM);
/* FIXME: According to RFC 1890, this is required, right? */
@@ -235,25 +239,30 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data)
#endif
outbuf = gst_buffer_new ();
- GST_BUFFER_SIZE (outbuf) = rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf);
+ GST_BUFFER_SIZE (outbuf) =
+ rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
GST_BUFFER_TIMESTAMP (outbuf) = rtpgsmenc->next_time;
- memcpy (GST_BUFFER_DATA (outbuf), packet->data, rtp_packet_get_packet_len (packet));
- memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len(packet), GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ memcpy (GST_BUFFER_DATA (outbuf), packet->data,
+ rtp_packet_get_packet_len (packet));
+ memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len (packet),
+ GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
- GST_DEBUG ("gst_rtpgsmenc_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf));
+ GST_DEBUG ("gst_rtpgsmenc_chain: pushing buffer of size %d",
+ GST_BUFFER_SIZE (outbuf));
gst_pad_push (rtpgsmenc->srcpad, GST_DATA (outbuf));
++rtpgsmenc->seq;
rtpgsmenc->next_time += rtpgsmenc->time_interval * GST_BUFFER_SIZE (buf);
-
+
rtp_packet_free (packet);
gst_buffer_unref (buf);
}
static void
-gst_rtpgsmenc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_rtpgsmenc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstRtpGSMEnc *rtpgsmenc;
@@ -268,7 +277,8 @@ gst_rtpgsmenc_set_property (GObject * object, guint prop_id, const GValue * valu
}
static void
-gst_rtpgsmenc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_rtpgsmenc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstRtpGSMEnc *rtpgsmenc;
@@ -317,5 +327,5 @@ gboolean
gst_rtpgsmenc_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rtpgsmenc",
- GST_RANK_NONE, GST_TYPE_RTP_GSM_ENC);
+ GST_RANK_NONE, GST_TYPE_RTP_GSM_ENC);
}
diff --git a/gst/rtp/gstrtpgsmenc.h b/gst/rtp/gstrtpgsmenc.h
index 1220d402..e44e5dae 100644
--- a/gst/rtp/gstrtpgsmenc.h
+++ b/gst/rtp/gstrtpgsmenc.h
@@ -31,31 +31,31 @@ extern "C"
#endif /* __cplusplus */
/* Definition of structure storing data for this element. */
-typedef struct _GstRtpGSMEnc GstRtpGSMEnc;
-struct _GstRtpGSMEnc
-{
- GstElement element;
+ typedef struct _GstRtpGSMEnc GstRtpGSMEnc;
+ struct _GstRtpGSMEnc
+ {
+ GstElement element;
+
+ GstPad *sinkpad;
+ GstPad *srcpad;
- GstPad *sinkpad;
- GstPad *srcpad;
+ guint frequency;
- guint frequency;
+ /* the timestamp of the next frame */
+ guint64 next_time;
+ /* the interval between frames */
+ guint64 time_interval;
- /* the timestamp of the next frame */
- guint64 next_time;
- /* the interval between frames */
- guint64 time_interval;
-
- guint32 ssrc;
- guint16 seq;
-};
+ guint32 ssrc;
+ guint16 seq;
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstRtpGSMEncClass GstRtpGSMEncClass;
-struct _GstRtpGSMEncClass
-{
- GstElementClass parent_class;
-};
+ typedef struct _GstRtpGSMEncClass GstRtpGSMEncClass;
+ struct _GstRtpGSMEncClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_RTP_GSM_ENC \
@@ -69,7 +69,7 @@ struct _GstRtpGSMEncClass
#define GST_IS_RTP_GSM_ENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_GSM_ENC))
-gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin);
+ gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
diff --git a/gst/rtp/gstrtpgsmparse.c b/gst/rtp/gstrtpgsmparse.c
index 8f1b301a..55b96945 100644
--- a/gst/rtp/gstrtpgsmparse.c
+++ b/gst/rtp/gstrtpgsmparse.c
@@ -42,39 +42,37 @@ enum
};
static GstStaticPadTemplate gst_rtpgsmparse_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "audio/x-gsm, "
- "rate = (int) [ 1000, 48000 ]"
- )
-);
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-gsm, " "rate = (int) [ 1000, 48000 ]")
+ );
static GstStaticPadTemplate gst_rtpgsmparse_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
- GST_PAD_ALWAYS,
+ GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
-);
+ );
static void gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass);
static void gst_rtpgsmparse_base_init (GstRtpGSMParseClass * klass);
static void gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse);
-static void gst_rtpgsmparse_chain (GstPad * pad, GstData *_data);
+static void gst_rtpgsmparse_chain (GstPad * pad, GstData * _data);
static void gst_rtpgsmparse_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
+ const GValue * value, GParamSpec * pspec);
static void gst_rtpgsmparse_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static GstElementStateReturn gst_rtpgsmparse_change_state (GstElement * element);
+ GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_rtpgsmparse_change_state (GstElement *
+ element);
static GstElementClass *parent_class = NULL;
-static GType gst_rtpgsmparse_get_type (void)
+static GType
+gst_rtpgsmparse_get_type (void)
{
static GType rtpgsmparse_type = 0;
@@ -91,7 +89,9 @@ static GType gst_rtpgsmparse_get_type (void)
(GInstanceInitFunc) gst_rtpgsmparse_init,
};
- rtpgsmparse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMParse", &rtpgsmparse_info, 0);
+ rtpgsmparse_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMParse",
+ &rtpgsmparse_info, 0);
}
return rtpgsmparse_type;
}
@@ -102,9 +102,9 @@ gst_rtpgsmparse_base_init (GstRtpGSMParseClass * klass)
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get(&gst_rtpgsmparse_src_template));
+ gst_static_pad_template_get (&gst_rtpgsmparse_src_template));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get(&gst_rtpgsmparse_sink_template));
+ gst_static_pad_template_get (&gst_rtpgsmparse_sink_template));
gst_element_class_set_details (element_class, &gst_rtp_gsmparse_details);
}
@@ -119,9 +119,9 @@ gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass)
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY,
- g_param_spec_int ("frequency", "frequency", "frequency",
- G_MININT, G_MAXINT, 8000, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY,
+ g_param_spec_int ("frequency", "frequency", "frequency",
+ G_MININT, G_MAXINT, 8000, G_PARAM_READWRITE));
gobject_class->set_property = gst_rtpgsmparse_set_property;
gobject_class->get_property = gst_rtpgsmparse_get_property;
@@ -132,10 +132,12 @@ gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass)
static void
gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse)
{
- rtpgsmparse->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_rtpgsmparse_src_template), "src");
- rtpgsmparse->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_rtpgsmparse_sink_template), "sink");
+ rtpgsmparse->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpgsmparse_src_template), "src");
+ rtpgsmparse->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpgsmparse_sink_template), "sink");
gst_element_add_pad (GST_ELEMENT (rtpgsmparse), rtpgsmparse->srcpad);
gst_element_add_pad (GST_ELEMENT (rtpgsmparse), rtpgsmparse->sinkpad);
gst_pad_set_chain_function (rtpgsmparse->sinkpad, gst_rtpgsmparse_chain);
@@ -144,32 +146,32 @@ gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse)
}
void
-gst_rtpgsmparse_ntohs (GstBuffer *buf)
+gst_rtpgsmparse_ntohs (GstBuffer * buf)
{
gint16 *i, *len;
/* FIXME: is this code correct or even sane at all? */
- i = (gint16 *) GST_BUFFER_DATA(buf);
+ i = (gint16 *) GST_BUFFER_DATA (buf);
len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *);
- for (; i<len; i++) {
- *i = g_ntohs (*i);
+ for (; i < len; i++) {
+ *i = g_ntohs (*i);
}
}
void
-gst_rtpgsm_caps_nego (GstRtpGSMParse *rtpgsmparse)
+gst_rtpgsm_caps_nego (GstRtpGSMParse * rtpgsmparse)
{
GstCaps *caps;
caps = gst_caps_new_simple ("audio/x-gsm",
- "rate", G_TYPE_INT, rtpgsmparse->frequency);
+ "rate", G_TYPE_INT, rtpgsmparse->frequency);
gst_pad_try_set_caps (rtpgsmparse->srcpad, caps);
}
static void
-gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
+gst_rtpgsmparse_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstRtpGSMParse *rtpgsmparse;
@@ -188,8 +190,9 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
if (GST_IS_EVENT (buf)) {
GstEvent *event = GST_EVENT (buf);
+
gst_pad_event_default (pad, event);
-
+
return;
}
@@ -197,7 +200,8 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
gst_rtpgsm_caps_nego (rtpgsmparse);
}
- packet = rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ packet =
+ rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
pt = rtp_packet_get_payload_type (packet);
@@ -211,15 +215,18 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
outbuf = gst_buffer_new ();
GST_BUFFER_SIZE (outbuf) = rtp_packet_get_payload_len (packet);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
- GST_BUFFER_TIMESTAMP (outbuf) = g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND;
+ GST_BUFFER_TIMESTAMP (outbuf) =
+ g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND;
+
+ memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet),
+ GST_BUFFER_SIZE (outbuf));
- memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), GST_BUFFER_SIZE (outbuf));
-
- GST_DEBUG ("gst_rtpgsmparse_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf));
+ GST_DEBUG ("gst_rtpgsmparse_chain: pushing buffer of size %d",
+ GST_BUFFER_SIZE (outbuf));
/* FIXME: According to RFC 1890, this is required, right? */
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- gst_rtpgsmparse_ntohs (outbuf);
+ gst_rtpgsmparse_ntohs (outbuf);
#endif
gst_pad_push (rtpgsmparse->srcpad, GST_DATA (outbuf));
@@ -229,7 +236,8 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data)
}
static void
-gst_rtpgsmparse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_rtpgsmparse_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstRtpGSMParse *rtpgsmparse;
@@ -247,7 +255,8 @@ gst_rtpgsmparse_set_property (GObject * object, guint prop_id, const GValue * va
}
static void
-gst_rtpgsmparse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_rtpgsmparse_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstRtpGSMParse *rtpgsmparse;
@@ -296,5 +305,5 @@ gboolean
gst_rtpgsmparse_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rtpgsmparse",
- GST_RANK_NONE, GST_TYPE_RTP_GSM_PARSE);
+ GST_RANK_NONE, GST_TYPE_RTP_GSM_PARSE);
}
diff --git a/gst/rtp/gstrtpgsmparse.h b/gst/rtp/gstrtpgsmparse.h
index 0a006e70..f3b0e659 100644
--- a/gst/rtp/gstrtpgsmparse.h
+++ b/gst/rtp/gstrtpgsmparse.h
@@ -30,23 +30,23 @@ extern "C"
#endif /* __cplusplus */
/* Definition of structure storing data for this element. */
-typedef struct _GstRtpGSMParse GstRtpGSMParse;
-struct _GstRtpGSMParse
-{
- GstElement element;
+ typedef struct _GstRtpGSMParse GstRtpGSMParse;
+ struct _GstRtpGSMParse
+ {
+ GstElement element;
- GstPad *sinkpad;
- GstPad *srcpad;
+ GstPad *sinkpad;
+ GstPad *srcpad;
- guint frequency;
-};
+ guint frequency;
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstRtpGSMParseClass GstRtpGSMParseClass;
-struct _GstRtpGSMParseClass
-{
- GstElementClass parent_class;
-};
+ typedef struct _GstRtpGSMParseClass GstRtpGSMParseClass;
+ struct _GstRtpGSMParseClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_RTP_GSM_PARSE \
@@ -60,7 +60,7 @@ struct _GstRtpGSMParseClass
#define GST_IS_RTP_GSM_PARSE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_GSM_PARSE))
-gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin);
+ gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
diff --git a/gst/rtp/gstrtpgsmpay.c b/gst/rtp/gstrtpgsmpay.c
index 495e4367..6301dd8c 100644
--- a/gst/rtp/gstrtpgsmpay.c
+++ b/gst/rtp/gstrtpgsmpay.c
@@ -46,38 +46,36 @@ enum
};
static GstStaticPadTemplate gst_rtpgsmenc_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ( "audio/x-gsm, "
- "rate = (int) [ 1000, 48000 ]"
- )
-);
+ GST_STATIC_CAPS ("audio/x-gsm, " "rate = (int) [ 1000, 48000 ]")
+ );
static GstStaticPadTemplate gst_rtpgsmenc_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
-);
+ );
static void gst_rtpgsmenc_class_init (GstRtpGSMEncClass * klass);
static void gst_rtpgsmenc_base_init (GstRtpGSMEncClass * klass);
static void gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc);
-static void gst_rtpgsmenc_chain (GstPad * pad, GstData *_data);
+static void gst_rtpgsmenc_chain (GstPad * pad, GstData * _data);
static void gst_rtpgsmenc_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
+ const GValue * value, GParamSpec * pspec);
static void gst_rtpgsmenc_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static GstPadLinkReturn gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps);
+ GValue * value, GParamSpec * pspec);
+static GstPadLinkReturn gst_rtpgsmenc_sinkconnect (GstPad * pad,
+ const GstCaps * caps);
static GstElementStateReturn gst_rtpgsmenc_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
-static GType gst_rtpgsmenc_get_type (void)
+static GType
+gst_rtpgsmenc_get_type (void)
{
static GType rtpgsmenc_type = 0;
@@ -94,7 +92,9 @@ static GType gst_rtpgsmenc_get_type (void)
(GInstanceInitFunc) gst_rtpgsmenc_init,
};
- rtpgsmenc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMEnc", &rtpgsmenc_info, 0);
+ rtpgsmenc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMEnc",
+ &rtpgsmenc_info, 0);
}
return rtpgsmenc_type;
}
@@ -131,10 +131,12 @@ gst_rtpgsmenc_class_init (GstRtpGSMEncClass * klass)
static void
gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc)
{
- rtpgsmenc->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpgsmenc_sink_template), "sink");
- rtpgsmenc->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_rtpgsmenc_sink_template), "src");
+ rtpgsmenc->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpgsmenc_sink_template), "sink");
+ rtpgsmenc->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_rtpgsmenc_sink_template), "src");
gst_element_add_pad (GST_ELEMENT (rtpgsmenc), rtpgsmenc->sinkpad);
gst_element_add_pad (GST_ELEMENT (rtpgsmenc), rtpgsmenc->srcpad);
gst_pad_set_chain_function (rtpgsmenc->sinkpad, gst_rtpgsmenc_chain);
@@ -142,7 +144,7 @@ gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc)
rtpgsmenc->frequency = 8000;
- rtpgsmenc->next_time = 0;
+ rtpgsmenc->next_time = 0;
rtpgsmenc->time_interval = 0;
rtpgsmenc->seq = 0;
@@ -161,7 +163,8 @@ gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps)
structure = gst_caps_get_structure (caps, 0);
ret = gst_structure_get_int (structure, "rate", &rtpgsmenc->frequency);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
/* Pre-calculate what we can */
rtpgsmenc->time_interval = GST_SECOND / (2 * rtpgsmenc->frequency);
@@ -171,21 +174,21 @@ gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps)
void
-gst_rtpgsmenc_htons (GstBuffer *buf)
+gst_rtpgsmenc_htons (GstBuffer * buf)
{
gint16 *i, *len;
/* FIXME: is this code correct or even sane at all? */
- i = (gint16 *) GST_BUFFER_DATA(buf);
+ i = (gint16 *) GST_BUFFER_DATA (buf);
len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *);
- for (; i<len; i++) {
- *i = g_htons (*i);
+ for (; i < len; i++) {
+ *i = g_htons (*i);
}
}
static void
-gst_rtpgsmenc_chain (GstPad * pad, GstData *_data)
+gst_rtpgsmenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstRtpGSMEnc *rtpgsmenc;
@@ -206,12 +209,12 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_DISCONTINUOUS:
- GST_DEBUG ("discont");
- rtpgsmenc->next_time = 0;
- gst_pad_event_default (pad, event);
+ GST_DEBUG ("discont");
+ rtpgsmenc->next_time = 0;
+ gst_pad_event_default (pad, event);
return;
default:
- gst_pad_event_default (pad, event);
+ gst_pad_event_default (pad, event);
return;
}
}
@@ -226,7 +229,8 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data)
rtp_packet_set_marker (packet, 0);
rtp_packet_set_ssrc (packet, g_htonl (rtpgsmenc->ssrc));
rtp_packet_set_seq (packet, g_htons (rtpgsmenc->seq));
- rtp_packet_set_timestamp (packet, g_htonl ((guint32) rtpgsmenc->next_time / GST_SECOND));
+ rtp_packet_set_timestamp (packet,
+ g_htonl ((guint32) rtpgsmenc->next_time / GST_SECOND));
rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_GSM);
/* FIXME: According to RFC 1890, this is required, right? */
@@ -235,25 +239,30 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data)
#endif
outbuf = gst_buffer_new ();
- GST_BUFFER_SIZE (outbuf) = rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf);
+ GST_BUFFER_SIZE (outbuf) =
+ rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
GST_BUFFER_TIMESTAMP (outbuf) = rtpgsmenc->next_time;
- memcpy (GST_BUFFER_DATA (outbuf), packet->data, rtp_packet_get_packet_len (packet));
- memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len(packet), GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ memcpy (GST_BUFFER_DATA (outbuf), packet->data,
+ rtp_packet_get_packet_len (packet));
+ memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len (packet),
+ GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
- GST_DEBUG ("gst_rtpgsmenc_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf));
+ GST_DEBUG ("gst_rtpgsmenc_chain: pushing buffer of size %d",
+ GST_BUFFER_SIZE (outbuf));
gst_pad_push (rtpgsmenc->srcpad, GST_DATA (outbuf));
++rtpgsmenc->seq;
rtpgsmenc->next_time += rtpgsmenc->time_interval * GST_BUFFER_SIZE (buf);
-
+
rtp_packet_free (packet);
gst_buffer_unref (buf);
}
static void
-gst_rtpgsmenc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
+gst_rtpgsmenc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstRtpGSMEnc *rtpgsmenc;
@@ -268,7 +277,8 @@ gst_rtpgsmenc_set_property (GObject * object, guint prop_id, const GValue * valu
}
static void
-gst_rtpgsmenc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
+gst_rtpgsmenc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstRtpGSMEnc *rtpgsmenc;
@@ -317,5 +327,5 @@ gboolean
gst_rtpgsmenc_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rtpgsmenc",
- GST_RANK_NONE, GST_TYPE_RTP_GSM_ENC);
+ GST_RANK_NONE, GST_TYPE_RTP_GSM_ENC);
}
diff --git a/gst/rtp/gstrtpgsmpay.h b/gst/rtp/gstrtpgsmpay.h
index 1220d402..e44e5dae 100644
--- a/gst/rtp/gstrtpgsmpay.h
+++ b/gst/rtp/gstrtpgsmpay.h
@@ -31,31 +31,31 @@ extern "C"
#endif /* __cplusplus */
/* Definition of structure storing data for this element. */
-typedef struct _GstRtpGSMEnc GstRtpGSMEnc;
-struct _GstRtpGSMEnc
-{
- GstElement element;
+ typedef struct _GstRtpGSMEnc GstRtpGSMEnc;
+ struct _GstRtpGSMEnc
+ {
+ GstElement element;
+
+ GstPad *sinkpad;
+ GstPad *srcpad;
- GstPad *sinkpad;
- GstPad *srcpad;
+ guint frequency;
- guint frequency;
+ /* the timestamp of the next frame */
+ guint64 next_time;
+ /* the interval between frames */
+ guint64 time_interval;
- /* the timestamp of the next frame */
- guint64 next_time;
- /* the interval between frames */
- guint64 time_interval;
-
- guint32 ssrc;
- guint16 seq;
-};
+ guint32 ssrc;
+ guint16 seq;
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstRtpGSMEncClass GstRtpGSMEncClass;
-struct _GstRtpGSMEncClass
-{
- GstElementClass parent_class;
-};
+ typedef struct _GstRtpGSMEncClass GstRtpGSMEncClass;
+ struct _GstRtpGSMEncClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_RTP_GSM_ENC \
@@ -69,7 +69,7 @@ struct _GstRtpGSMEncClass
#define GST_IS_RTP_GSM_ENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_GSM_ENC))
-gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin);
+ gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
diff --git a/gst/rtp/rtp-packet.c b/gst/rtp/rtp-packet.c
index 11077ef6..f33772b5 100644
--- a/gst/rtp/rtp-packet.c
+++ b/gst/rtp/rtp-packet.c
@@ -33,65 +33,64 @@
#include "rtp-packet.h"
Rtp_Packet
-rtp_packet_new_take_data(gpointer data, guint data_len)
+rtp_packet_new_take_data (gpointer data, guint data_len)
{
Rtp_Packet packet;
//g_return_val_if_fail(data_len < RTP_MTU, NULL);
- packet = g_malloc(sizeof *packet);
+ packet = g_malloc (sizeof *packet);
- packet -> data = data;
- packet -> data_len = data_len;
+ packet->data = data;
+ packet->data_len = data_len;
return packet;
}
Rtp_Packet
-rtp_packet_new_copy_data(gpointer data, guint data_len)
+rtp_packet_new_copy_data (gpointer data, guint data_len)
{
Rtp_Packet packet;
//g_return_val_if_fail(data_len < RTP_MTU, NULL);
- packet = g_malloc(sizeof *packet);
+ packet = g_malloc (sizeof *packet);
- packet -> data = g_memdup(data, data_len);
- packet -> data_len = data_len;
+ packet->data = g_memdup (data, data_len);
+ packet->data_len = data_len;
return packet;
}
Rtp_Packet
-rtp_packet_new_allocate(guint payload_len, guint pad_len, guint csrc_count)
+rtp_packet_new_allocate (guint payload_len, guint pad_len, guint csrc_count)
{
guint len;
Rtp_Packet packet;
- g_return_val_if_fail(csrc_count <= 15, NULL);
+ g_return_val_if_fail (csrc_count <= 15, NULL);
- len = RTP_HEADER_LEN
- + csrc_count * sizeof(guint32)
- + payload_len + pad_len;
+ len = RTP_HEADER_LEN + csrc_count * sizeof (guint32)
+ + payload_len + pad_len;
//g_return_val_if_fail(len < RTP_MTU, NULL);
- packet = g_malloc(sizeof *packet);
+ packet = g_malloc (sizeof *packet);
- packet -> data_len = len;
- packet -> data = g_malloc(len);
+ packet->data_len = len;
+ packet->data = g_malloc (len);
- return(packet);
+ return (packet);
}
void
-rtp_packet_free(Rtp_Packet packet)
+rtp_packet_free (Rtp_Packet packet)
{
- g_return_if_fail(packet != NULL);
+ g_return_if_fail (packet != NULL);
- g_free(packet -> data);
- g_free(packet);
+ g_free (packet->data);
+ g_free (packet);
}
/*Rtp_Packet
@@ -124,187 +123,185 @@ rtp_packet_send(Rtp_Packet packet, int fd, struct sockaddr *toaddr, socklen_t to
}*/
guint8
-rtp_packet_get_version(Rtp_Packet packet)
+rtp_packet_get_version (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return ((Rtp_Header) packet -> data) -> version;
+ return ((Rtp_Header) packet->data)->version;
}
void
-rtp_packet_set_version(Rtp_Packet packet, guint8 version)
+rtp_packet_set_version (Rtp_Packet packet, guint8 version)
{
- g_return_if_fail(packet != NULL);
- g_return_if_fail(version < 0x04);
+ g_return_if_fail (packet != NULL);
+ g_return_if_fail (version < 0x04);
- ((Rtp_Header) packet -> data) -> version = version;
+ ((Rtp_Header) packet->data)->version = version;
}
guint8
-rtp_packet_get_padding(Rtp_Packet packet)
+rtp_packet_get_padding (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return ((Rtp_Header) packet -> data) -> padding;
+ return ((Rtp_Header) packet->data)->padding;
}
void
-rtp_packet_set_padding(Rtp_Packet packet, guint8 padding)
+rtp_packet_set_padding (Rtp_Packet packet, guint8 padding)
{
- g_return_if_fail(packet != NULL);
- g_return_if_fail(padding < 0x02);
+ g_return_if_fail (packet != NULL);
+ g_return_if_fail (padding < 0x02);
- ((Rtp_Header) packet -> data) -> padding = padding;
+ ((Rtp_Header) packet->data)->padding = padding;
}
guint8
-rtp_packet_get_csrc_count(Rtp_Packet packet)
+rtp_packet_get_csrc_count (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return ((Rtp_Header) packet -> data) -> csrc_count;
+ return ((Rtp_Header) packet->data)->csrc_count;
}
guint8
-rtp_packet_get_extension(Rtp_Packet packet)
+rtp_packet_get_extension (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return ((Rtp_Header) packet -> data) -> extension;
+ return ((Rtp_Header) packet->data)->extension;
}
void
-rtp_packet_set_extension(Rtp_Packet packet, guint8 extension)
+rtp_packet_set_extension (Rtp_Packet packet, guint8 extension)
{
- g_return_if_fail(packet != NULL);
- g_return_if_fail(extension < 0x02);
+ g_return_if_fail (packet != NULL);
+ g_return_if_fail (extension < 0x02);
- ((Rtp_Header) packet -> data) -> extension = extension;
+ ((Rtp_Header) packet->data)->extension = extension;
}
void
-rtp_packet_set_csrc_count(Rtp_Packet packet, guint8 csrc_count)
+rtp_packet_set_csrc_count (Rtp_Packet packet, guint8 csrc_count)
{
- g_return_if_fail(packet != NULL);
- g_return_if_fail(csrc_count < 0x04);
+ g_return_if_fail (packet != NULL);
+ g_return_if_fail (csrc_count < 0x04);
- ((Rtp_Header) packet -> data) -> csrc_count = csrc_count;
+ ((Rtp_Header) packet->data)->csrc_count = csrc_count;
}
guint8
-rtp_packet_get_marker(Rtp_Packet packet)
+rtp_packet_get_marker (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return ((Rtp_Header) packet -> data) -> marker;
+ return ((Rtp_Header) packet->data)->marker;
}
void
-rtp_packet_set_marker(Rtp_Packet packet, guint8 marker)
+rtp_packet_set_marker (Rtp_Packet packet, guint8 marker)
{
- g_return_if_fail(packet != NULL);
- g_return_if_fail(marker < 0x02);
+ g_return_if_fail (packet != NULL);
+ g_return_if_fail (marker < 0x02);
- ((Rtp_Header) packet -> data) -> marker = marker;
+ ((Rtp_Header) packet->data)->marker = marker;
}
guint8
-rtp_packet_get_payload_type(Rtp_Packet packet)
+rtp_packet_get_payload_type (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return ((Rtp_Header) packet -> data) -> payload_type;
+ return ((Rtp_Header) packet->data)->payload_type;
}
void
-rtp_packet_set_payload_type(Rtp_Packet packet, guint8 payload_type)
+rtp_packet_set_payload_type (Rtp_Packet packet, guint8 payload_type)
{
- g_return_if_fail(packet != NULL);
- g_return_if_fail(payload_type < 0x80);
+ g_return_if_fail (packet != NULL);
+ g_return_if_fail (payload_type < 0x80);
- ((Rtp_Header) packet -> data) -> payload_type = payload_type;
+ ((Rtp_Header) packet->data)->payload_type = payload_type;
}
guint16
-rtp_packet_get_seq(Rtp_Packet packet)
+rtp_packet_get_seq (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return g_ntohs(((Rtp_Header) packet -> data) -> seq);
+ return g_ntohs (((Rtp_Header) packet->data)->seq);
}
void
-rtp_packet_set_seq(Rtp_Packet packet, guint16 seq)
+rtp_packet_set_seq (Rtp_Packet packet, guint16 seq)
{
- g_return_if_fail(packet != NULL);
+ g_return_if_fail (packet != NULL);
- ((Rtp_Header) packet -> data) -> seq = g_htons(seq);
+ ((Rtp_Header) packet->data)->seq = g_htons (seq);
}
guint32
-rtp_packet_get_timestamp(Rtp_Packet packet)
+rtp_packet_get_timestamp (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return g_ntohl(((Rtp_Header) packet -> data) -> timestamp);
+ return g_ntohl (((Rtp_Header) packet->data)->timestamp);
}
void
-rtp_packet_set_timestamp(Rtp_Packet packet, guint32 timestamp)
+rtp_packet_set_timestamp (Rtp_Packet packet, guint32 timestamp)
{
- g_return_if_fail(packet != NULL);
+ g_return_if_fail (packet != NULL);
- ((Rtp_Header) packet -> data) -> timestamp = g_htonl(timestamp);
+ ((Rtp_Header) packet->data)->timestamp = g_htonl (timestamp);
}
guint32
-rtp_packet_get_ssrc(Rtp_Packet packet)
+rtp_packet_get_ssrc (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return g_ntohl(((Rtp_Header) packet -> data) -> ssrc);
+ return g_ntohl (((Rtp_Header) packet->data)->ssrc);
}
void
-rtp_packet_set_ssrc(Rtp_Packet packet, guint32 ssrc)
+rtp_packet_set_ssrc (Rtp_Packet packet, guint32 ssrc)
{
- g_return_if_fail(packet != NULL);
+ g_return_if_fail (packet != NULL);
- ((Rtp_Header) packet -> data) -> ssrc = g_htonl(ssrc);
+ ((Rtp_Header) packet->data)->ssrc = g_htonl (ssrc);
}
guint
-rtp_packet_get_payload_len(Rtp_Packet packet)
+rtp_packet_get_payload_len (Rtp_Packet packet)
{
guint len;
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- len = packet -> data_len
- - RTP_HEADER_LEN
- - rtp_packet_get_csrc_count(packet) * sizeof(guint32);
+ len = packet->data_len
+ - RTP_HEADER_LEN - rtp_packet_get_csrc_count (packet) * sizeof (guint32);
- if (rtp_packet_get_padding(packet)) {
- len -= ((guint8 *) packet -> data)[packet -> data_len - 1];
+ if (rtp_packet_get_padding (packet)) {
+ len -= ((guint8 *) packet->data)[packet->data_len - 1];
}
return len;
}
gpointer
-rtp_packet_get_payload(Rtp_Packet packet)
+rtp_packet_get_payload (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, NULL);
+ g_return_val_if_fail (packet != NULL, NULL);
- return ((char *) packet -> data)
- + RTP_HEADER_LEN
- + rtp_packet_get_csrc_count(packet) * sizeof(guint32);
+ return ((char *) packet->data)
+ + RTP_HEADER_LEN + rtp_packet_get_csrc_count (packet) * sizeof (guint32);
}
guint
-rtp_packet_get_packet_len(Rtp_Packet packet)
+rtp_packet_get_packet_len (Rtp_Packet packet)
{
- g_return_val_if_fail(packet != NULL, 0);
+ g_return_val_if_fail (packet != NULL, 0);
- return packet -> data_len;
+ return packet->data_len;
}
diff --git a/gst/rtp/rtp-packet.h b/gst/rtp/rtp-packet.h
index f731c5f0..b130c86e 100644
--- a/gst/rtp/rtp-packet.h
+++ b/gst/rtp/rtp-packet.h
@@ -30,77 +30,80 @@
#endif
#ifdef __cplusplus
-extern "C" {
+extern "C"
+{
#endif
#define RTP_VERSION 2
#define RTP_HEADER_LEN 12
#define RTP_MTU 2048
-typedef struct Rtp_Header *Rtp_Header;
+ typedef struct Rtp_Header *Rtp_Header;
-struct Rtp_Packet_Struct {
- gpointer data;
- guint data_len;
-};
+ struct Rtp_Packet_Struct
+ {
+ gpointer data;
+ guint data_len;
+ };
-struct Rtp_Header {
+ struct Rtp_Header
+ {
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- unsigned int csrc_count:4; /* CSRC count */
- unsigned int extension:1; /* header extension flag */
- unsigned int padding:1; /* padding flag */
- unsigned int version:2; /* protocol version */
- unsigned int payload_type:7; /* payload type */
- unsigned int marker:1; /* marker bit */
+ unsigned int csrc_count:4; /* CSRC count */
+ unsigned int extension:1; /* header extension flag */
+ unsigned int padding:1; /* padding flag */
+ unsigned int version:2; /* protocol version */
+ unsigned int payload_type:7; /* payload type */
+ unsigned int marker:1; /* marker bit */
#elif G_BYTE_ORDER == G_BIG_ENDIAN
- unsigned int version:2; /* protocol version */
- unsigned int padding:1; /* padding flag */
- unsigned int extension:1; /* header extension flag */
- unsigned int csrc_count:4; /* CSRC count */
- unsigned int marker:1; /* marker bit */
- unsigned int payload_type:7; /* payload type */
+ unsigned int version:2; /* protocol version */
+ unsigned int padding:1; /* padding flag */
+ unsigned int extension:1; /* header extension flag */
+ unsigned int csrc_count:4; /* CSRC count */
+ unsigned int marker:1; /* marker bit */
+ unsigned int payload_type:7; /* payload type */
#else
#error "G_BYTE_ORDER should be big or little endian."
#endif
- guint16 seq; /* sequence number */
- guint32 timestamp; /* timestamp */
- guint32 ssrc; /* synchronization source */
- guint32 csrc[1]; /* optional CSRC list */
-};
+ guint16 seq; /* sequence number */
+ guint32 timestamp; /* timestamp */
+ guint32 ssrc; /* synchronization source */
+ guint32 csrc[1]; /* optional CSRC list */
+ };
-typedef struct Rtp_Packet_Struct *Rtp_Packet;
+ typedef struct Rtp_Packet_Struct *Rtp_Packet;
-Rtp_Packet rtp_packet_new_take_data(gpointer data, guint data_len);
-Rtp_Packet rtp_packet_new_copy_data(gpointer data, guint data_len);
-Rtp_Packet rtp_packet_new_allocate(guint payload_len,
- guint pad_len, guint csrc_count);
-void rtp_packet_free(Rtp_Packet packet);
+ Rtp_Packet rtp_packet_new_take_data (gpointer data, guint data_len);
+ Rtp_Packet rtp_packet_new_copy_data (gpointer data, guint data_len);
+ Rtp_Packet rtp_packet_new_allocate (guint payload_len,
+ guint pad_len, guint csrc_count);
+ void rtp_packet_free (Rtp_Packet packet);
//Rtp_Packet rtp_packet_read(int fd, struct sockaddr *fromaddr, socklen_t *fromlen);
//void rtp_packet_send(Rtp_Packet packet, int fd, struct sockaddr *toaddr, socklen_t tolen);
-guint8 rtp_packet_get_version(Rtp_Packet packet);
-void rtp_packet_set_version(Rtp_Packet packet, guint8 version);
-guint8 rtp_packet_get_padding(Rtp_Packet packet);
-void rtp_packet_set_padding(Rtp_Packet packet, guint8 padding);
-guint8 rtp_packet_get_csrc_count(Rtp_Packet packet);
-guint8 rtp_packet_get_extension(Rtp_Packet packet);
-void rtp_packet_set_extension(Rtp_Packet packet, guint8 extension);
-void rtp_packet_set_csrc_count(Rtp_Packet packet, guint8 csrc_count);
-guint8 rtp_packet_get_marker(Rtp_Packet packet);
-void rtp_packet_set_marker(Rtp_Packet packet, guint8 marker);
-guint8 rtp_packet_get_payload_type(Rtp_Packet packet);
-void rtp_packet_set_payload_type(Rtp_Packet packet, guint8 payload_type);
-guint16 rtp_packet_get_seq(Rtp_Packet packet);
-void rtp_packet_set_seq(Rtp_Packet packet, guint16 seq);
-guint32 rtp_packet_get_timestamp(Rtp_Packet packet);
-void rtp_packet_set_timestamp(Rtp_Packet packet, guint32 timestamp);
-guint32 rtp_packet_get_ssrc(Rtp_Packet packet);
-void rtp_packet_set_ssrc(Rtp_Packet packet, guint32 ssrc);
-guint rtp_packet_get_payload_len(Rtp_Packet packet);
-gpointer rtp_packet_get_payload(Rtp_Packet packet);
-guint rtp_packet_get_packet_len(Rtp_Packet packet);
+ guint8 rtp_packet_get_version (Rtp_Packet packet);
+ void rtp_packet_set_version (Rtp_Packet packet, guint8 version);
+ guint8 rtp_packet_get_padding (Rtp_Packet packet);
+ void rtp_packet_set_padding (Rtp_Packet packet, guint8 padding);
+ guint8 rtp_packet_get_csrc_count (Rtp_Packet packet);
+ guint8 rtp_packet_get_extension (Rtp_Packet packet);
+ void rtp_packet_set_extension (Rtp_Packet packet, guint8 extension);
+ void rtp_packet_set_csrc_count (Rtp_Packet packet, guint8 csrc_count);
+ guint8 rtp_packet_get_marker (Rtp_Packet packet);
+ void rtp_packet_set_marker (Rtp_Packet packet, guint8 marker);
+ guint8 rtp_packet_get_payload_type (Rtp_Packet packet);
+ void rtp_packet_set_payload_type (Rtp_Packet packet, guint8 payload_type);
+ guint16 rtp_packet_get_seq (Rtp_Packet packet);
+ void rtp_packet_set_seq (Rtp_Packet packet, guint16 seq);
+ guint32 rtp_packet_get_timestamp (Rtp_Packet packet);
+ void rtp_packet_set_timestamp (Rtp_Packet packet, guint32 timestamp);
+ guint32 rtp_packet_get_ssrc (Rtp_Packet packet);
+ void rtp_packet_set_ssrc (Rtp_Packet packet, guint32 ssrc);
+ guint rtp_packet_get_payload_len (Rtp_Packet packet);
+ gpointer rtp_packet_get_payload (Rtp_Packet packet);
+ guint rtp_packet_get_packet_len (Rtp_Packet packet);
#ifdef __cplusplus
}
#endif
-#endif /* rtp-packet.h */
+#endif /* rtp-packet.h */
diff --git a/gst/smoothwave/demo-osssrc.c b/gst/smoothwave/demo-osssrc.c
index 457900d7..c39bc72c 100644
--- a/gst/smoothwave/demo-osssrc.c
+++ b/gst/smoothwave/demo-osssrc.c
@@ -3,11 +3,13 @@
extern gboolean _gst_plugin_spew;
-gboolean idle_func(gpointer data);
+gboolean idle_func (gpointer data);
GtkWidget *drawingarea;
-int main(int argc,char *argv[]) {
+int
+main (int argc, char *argv[])
+{
GstElement *bin;
GstElementFactory *srcfactory;
GstElement *src;
@@ -16,46 +18,47 @@ int main(int argc,char *argv[]) {
GtkWidget *wave_widget;
GtkWidget *appwindow;
- gst_init(&argc,&argv);
- gst_plugin_load("libsmoothwave.so");
- gtk_init(&argc,&argv);
+ gst_init (&argc, &argv);
+ gst_plugin_load ("libsmoothwave.so");
+ gtk_init (&argc, &argv);
- bin = gst_pipeline_new("bin");
+ bin = gst_pipeline_new ("bin");
- srcfactory = gst_element_factory_find("sinesrc");
- g_return_val_if_fail(srcfactory != NULL, -1);
- wavefactory = gst_element_factory_find("smoothwave");
- g_return_val_if_fail(wavefactory != NULL, -1);
+ srcfactory = gst_element_factory_find ("sinesrc");
+ g_return_val_if_fail (srcfactory != NULL, -1);
+ wavefactory = gst_element_factory_find ("smoothwave");
+ g_return_val_if_fail (wavefactory != NULL, -1);
- src = gst_element_factory_create(srcfactory,"src");
+ src = gst_element_factory_create (srcfactory, "src");
//g_object_set(G_OBJECT(src),"bytes_per_read",(gulong)2048,NULL);
- wave = gst_element_factory_create(wavefactory,"wave");
- g_object_set(G_OBJECT(wave),"width",256,"height",100,NULL);
+ wave = gst_element_factory_create (wavefactory, "wave");
+ g_object_set (G_OBJECT (wave), "width", 256, "height", 100, NULL);
- gst_bin_add(GST_BIN(bin),GST_ELEMENT(src));
- gst_bin_add(GST_BIN(bin),GST_ELEMENT(wave));
+ gst_bin_add (GST_BIN (bin), GST_ELEMENT (src));
+ gst_bin_add (GST_BIN (bin), GST_ELEMENT (wave));
- gst_pad_link(gst_element_get_pad(src,"src"),
- gst_element_get_pad(wave,"sink"));
+ gst_pad_link (gst_element_get_pad (src, "src"),
+ gst_element_get_pad (wave, "sink"));
- appwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- g_object_get(G_OBJECT(wave),"widget",&wave_widget,NULL);
- gtk_container_add(GTK_CONTAINER(appwindow), wave_widget);
- gtk_widget_show_all(appwindow);
+ appwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ g_object_get (G_OBJECT (wave), "widget", &wave_widget, NULL);
+ gtk_container_add (GTK_CONTAINER (appwindow), wave_widget);
+ gtk_widget_show_all (appwindow);
- gst_element_set_state(GST_ELEMENT(bin),GST_STATE_READY);
- gst_element_set_state(GST_ELEMENT(bin),GST_STATE_PLAYING);
+ gst_element_set_state (GST_ELEMENT (bin), GST_STATE_READY);
+ gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING);
- g_idle_add(idle_func,bin);
+ g_idle_add (idle_func, bin);
- gtk_main();
+ gtk_main ();
return 0;
}
-gboolean idle_func(gpointer data)
+gboolean
+idle_func (gpointer data)
{
- gst_bin_iterate(GST_BIN(data));
+ gst_bin_iterate (GST_BIN (data));
return TRUE;
}
diff --git a/gst/smoothwave/gstsmoothwave.c b/gst/smoothwave/gstsmoothwave.c
index 57c267e5..2abbdec2 100644
--- a/gst/smoothwave/gstsmoothwave.c
+++ b/gst/smoothwave/gstsmoothwave.c
@@ -25,37 +25,41 @@
#include "gstsmoothwave.h"
-static GstElementDetails gst_smoothwave_details = GST_ELEMENT_DETAILS (
- "Smooth waveform",
- "Visualization",
- "Fading grayscale waveform display",
- "Erik Walthinsen <omega@cse.ogi.edu>"
-);
+static GstElementDetails gst_smoothwave_details =
+GST_ELEMENT_DETAILS ("Smooth waveform",
+ "Visualization",
+ "Fading grayscale waveform display",
+ "Erik Walthinsen <omega@cse.ogi.edu>");
/* SmoothWave signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_WIDTH,
ARG_HEIGHT,
ARG_WIDGET,
};
-static void gst_smoothwave_base_init (gpointer g_class);
-static void gst_smoothwave_class_init (GstSmoothWaveClass *klass);
-static void gst_smoothwave_init (GstSmoothWave *smoothwave);
+static void gst_smoothwave_base_init (gpointer g_class);
+static void gst_smoothwave_class_init (GstSmoothWaveClass * klass);
+static void gst_smoothwave_init (GstSmoothWave * smoothwave);
-static void gst_smoothwave_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_smoothwave_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_smoothwave_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_smoothwave_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_smoothwave_chain (GstPad *pad, GstData *_data);
+static void gst_smoothwave_chain (GstPad * pad, GstData * _data);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_smoothwave_signals[LAST_SIGNAL] = { 0 }; */
@@ -66,17 +70,19 @@ gst_smoothwave_get_type (void)
if (!smoothwave_type) {
static const GTypeInfo smoothwave_info = {
- sizeof(GstSmoothWaveClass),
+ sizeof (GstSmoothWaveClass),
gst_smoothwave_base_init,
NULL,
- (GClassInitFunc)gst_smoothwave_class_init,
+ (GClassInitFunc) gst_smoothwave_class_init,
NULL,
NULL,
- sizeof(GstSmoothWave),
+ sizeof (GstSmoothWave),
0,
- (GInstanceInitFunc)gst_smoothwave_init,
+ (GInstanceInitFunc) gst_smoothwave_init,
};
- smoothwave_type = g_type_register_static(GST_TYPE_ELEMENT, "GstSmoothWave", &smoothwave_info, 0);
+ smoothwave_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstSmoothWave",
+ &smoothwave_info, 0);
}
return smoothwave_type;
}
@@ -90,83 +96,77 @@ gst_smoothwave_base_init (gpointer g_class)
}
static void
-gst_smoothwave_class_init (GstSmoothWaveClass *klass)
+gst_smoothwave_class_init (GstSmoothWaveClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_WIDTH,
- g_param_spec_int("width","width","width",
- G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_HEIGHT,
- g_param_spec_int("height","height","height",
- G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_WIDGET,
- g_param_spec_object("widget","widget","widget",
- GTK_TYPE_WIDGET,G_PARAM_READABLE)); /* CHECKME! */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_WIDTH, g_param_spec_int ("width", "width", "width", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HEIGHT, g_param_spec_int ("height", "height", "height", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_WIDGET, g_param_spec_object ("widget", "widget", "widget", GTK_TYPE_WIDGET, G_PARAM_READABLE)); /* CHECKME! */
gobject_class->set_property = gst_smoothwave_set_property;
gobject_class->get_property = gst_smoothwave_get_property;
}
static void
-gst_smoothwave_init (GstSmoothWave *smoothwave)
+gst_smoothwave_init (GstSmoothWave * smoothwave)
{
int i;
guint32 palette[256];
- smoothwave->sinkpad = gst_pad_new("sink",GST_PAD_SINK);
- gst_element_add_pad(GST_ELEMENT(smoothwave),smoothwave->sinkpad);
- gst_pad_set_chain_function(smoothwave->sinkpad,gst_smoothwave_chain);
- smoothwave->srcpad = gst_pad_new("src",GST_PAD_SRC);
- gst_element_add_pad(GST_ELEMENT(smoothwave),smoothwave->srcpad);
+ smoothwave->sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
+ gst_element_add_pad (GST_ELEMENT (smoothwave), smoothwave->sinkpad);
+ gst_pad_set_chain_function (smoothwave->sinkpad, gst_smoothwave_chain);
+ smoothwave->srcpad = gst_pad_new ("src", GST_PAD_SRC);
+ gst_element_add_pad (GST_ELEMENT (smoothwave), smoothwave->srcpad);
/* smoothwave->meta = NULL; */
smoothwave->width = 512;
smoothwave->height = 256;
- gdk_rgb_init();
+ gdk_rgb_init ();
/* gtk_widget_set_default_colormap (gdk_rgb_get_cmap()); */
/* gtk_widget_set_default_visual (gdk_rgb_get_visual()); */
/* GST_DEBUG ("creating palette"); */
- for (i=0;i<256;i++)
+ for (i = 0; i < 256; i++)
palette[i] = (i << 16) || (i << 8);
/* GST_DEBUG ("creating cmap"); */
- smoothwave->cmap = gdk_rgb_cmap_new(palette,256);
+ smoothwave->cmap = gdk_rgb_cmap_new (palette, 256);
/* GST_DEBUG ("created cmap"); */
/* gtk_widget_set_default_colormap (smoothwave->cmap); */
- smoothwave->image = gtk_drawing_area_new();
- gtk_drawing_area_size(GTK_DRAWING_AREA(smoothwave->image),
- smoothwave->width,smoothwave->height);
- gtk_widget_show(smoothwave->image);
+ smoothwave->image = gtk_drawing_area_new ();
+ gtk_drawing_area_size (GTK_DRAWING_AREA (smoothwave->image),
+ smoothwave->width, smoothwave->height);
+ gtk_widget_show (smoothwave->image);
- smoothwave->imagebuffer = g_malloc(smoothwave->width*smoothwave->height);
- memset(smoothwave->imagebuffer,0,smoothwave->width*smoothwave->height);
+ smoothwave->imagebuffer = g_malloc (smoothwave->width * smoothwave->height);
+ memset (smoothwave->imagebuffer, 0, smoothwave->width * smoothwave->height);
}
static void
-gst_smoothwave_chain (GstPad *pad, GstData *_data)
+gst_smoothwave_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstSmoothWave *smoothwave;
gint16 *samples;
- gint samplecount,i;
+ gint samplecount, i;
register guint32 *ptr;
gint qheight;
- g_return_if_fail(pad != NULL);
- g_return_if_fail(GST_IS_PAD(pad));
- g_return_if_fail(buf != NULL);
+ g_return_if_fail (pad != NULL);
+ g_return_if_fail (GST_IS_PAD (pad));
+ g_return_if_fail (buf != NULL);
/* g_return_if_fail(GST_IS_BUFFER(buf)); */
- smoothwave = GST_SMOOTHWAVE(GST_OBJECT_PARENT (pad));
+ smoothwave = GST_SMOOTHWAVE (GST_OBJECT_PARENT (pad));
/* first deal with audio metadata */
#if 0
@@ -175,36 +175,35 @@ gst_smoothwave_chain (GstPad *pad, GstData *_data)
/* FIXME: need to unref the old metadata so it goes away */
}
/* we just make a copy of the pointer */
- smoothwave->meta = (MetaAudioRaw *)(buf->meta);
+ smoothwave->meta = (MetaAudioRaw *) (buf->meta);
/* FIXME: now we have to ref the metadata so it doesn't go away */
}
#endif
/* g_return_if_fail(smoothwave->meta != NULL); */
- samples = (gint16 *)GST_BUFFER_DATA(buf);
+ samples = (gint16 *) GST_BUFFER_DATA (buf);
/* samplecount = buf->datasize / (smoothwave->meta->channels * sizeof(gint16)); */
- samplecount = GST_BUFFER_SIZE(buf) / (2 * sizeof(gint16));
+ samplecount = GST_BUFFER_SIZE (buf) / (2 * sizeof (gint16));
- qheight = smoothwave->height/4;
+ qheight = smoothwave->height / 4;
/* GST_DEBUG ("traversing %d",smoothwave->width); */
- for (i=0;i<MAX(smoothwave->width,samplecount);i++) {
- gint16 y1 = (gint32)(samples[i*2] * qheight) / 32768 +
- qheight;
- gint16 y2 = (gint32)(samples[(i*2)+1] * qheight) / 32768 +
- (qheight*3);
- smoothwave->imagebuffer[y1*smoothwave->width + i] = 0xff;
- smoothwave->imagebuffer[y2*smoothwave->width + i] = 0xff;
+ for (i = 0; i < MAX (smoothwave->width, samplecount); i++) {
+ gint16 y1 = (gint32) (samples[i * 2] * qheight) / 32768 + qheight;
+ gint16 y2 = (gint32) (samples[(i * 2) + 1] * qheight) / 32768 +
+ (qheight * 3);
+ smoothwave->imagebuffer[y1 * smoothwave->width + i] = 0xff;
+ smoothwave->imagebuffer[y2 * smoothwave->width + i] = 0xff;
/* smoothwave->imagebuffer[i+(smoothwave->width*5)] = i; */
}
- ptr = (guint32 *)smoothwave->imagebuffer;
- for (i=0;i<(smoothwave->width*smoothwave->height)/4;i++) {
- if (*ptr){
+ ptr = (guint32 *) smoothwave->imagebuffer;
+ for (i = 0; i < (smoothwave->width * smoothwave->height) / 4; i++) {
+ if (*ptr) {
*ptr -= ((*ptr & 0xf0f0f0f0ul) >> 4) + ((*ptr & 0xe0e0e0e0ul) >> 5);
ptr++;
- }else{
+ } else {
ptr++;
}
}
@@ -223,40 +222,40 @@ gst_smoothwave_chain (GstPad *pad, GstData *_data)
GDK_RGB_DITHER_NONE,
smoothwave->imagebuffer,smoothwave->width,
smoothwave->cmap);*/
- gdk_draw_gray_image(smoothwave->image->window,
- smoothwave->image->style->fg_gc[GTK_STATE_NORMAL],
- 0,0,smoothwave->width,smoothwave->height,
- GDK_RGB_DITHER_NORMAL,
- smoothwave->imagebuffer,smoothwave->width);
+ gdk_draw_gray_image (smoothwave->image->window,
+ smoothwave->image->style->fg_gc[GTK_STATE_NORMAL],
+ 0, 0, smoothwave->width, smoothwave->height,
+ GDK_RGB_DITHER_NORMAL, smoothwave->imagebuffer, smoothwave->width);
/* gst_trace_add_entry(NULL,0,buf,"smoothwave: calculated smoothwave"); */
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
static void
-gst_smoothwave_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_smoothwave_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstSmoothWave *smoothwave;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_SMOOTHWAVE(object));
- smoothwave = GST_SMOOTHWAVE(object);
+ g_return_if_fail (GST_IS_SMOOTHWAVE (object));
+ smoothwave = GST_SMOOTHWAVE (object);
switch (prop_id) {
case ARG_WIDTH:
smoothwave->width = g_value_get_int (value);
- gtk_drawing_area_size(GTK_DRAWING_AREA(smoothwave->image),
- smoothwave->width,smoothwave->height);
- gtk_widget_set_usize(GTK_WIDGET(smoothwave->image),
- smoothwave->width,smoothwave->height);
+ gtk_drawing_area_size (GTK_DRAWING_AREA (smoothwave->image),
+ smoothwave->width, smoothwave->height);
+ gtk_widget_set_usize (GTK_WIDGET (smoothwave->image),
+ smoothwave->width, smoothwave->height);
break;
case ARG_HEIGHT:
smoothwave->height = g_value_get_int (value);
- gtk_drawing_area_size(GTK_DRAWING_AREA(smoothwave->image),
- smoothwave->width,smoothwave->height);
- gtk_widget_set_usize(GTK_WIDGET(smoothwave->image),
- smoothwave->width,smoothwave->height);
+ gtk_drawing_area_size (GTK_DRAWING_AREA (smoothwave->image),
+ smoothwave->width, smoothwave->height);
+ gtk_widget_set_usize (GTK_WIDGET (smoothwave->image),
+ smoothwave->width, smoothwave->height);
break;
default:
break;
@@ -264,27 +263,28 @@ gst_smoothwave_set_property (GObject *object, guint prop_id, const GValue *value
}
static void
-gst_smoothwave_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_smoothwave_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstSmoothWave *smoothwave;
/* it's not null if we got it, but it might not be ours */
- smoothwave = GST_SMOOTHWAVE(object);
+ smoothwave = GST_SMOOTHWAVE (object);
switch (prop_id) {
- case ARG_WIDTH: {
+ case ARG_WIDTH:{
g_value_set_int (value, smoothwave->width);
break;
}
- case ARG_HEIGHT: {
+ case ARG_HEIGHT:{
g_value_set_int (value, smoothwave->height);
break;
}
- case ARG_WIDGET: {
+ case ARG_WIDGET:{
g_value_set_object (value, smoothwave->image);
break;
}
- default: {
+ default:{
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
@@ -294,21 +294,17 @@ gst_smoothwave_get_property (GObject *object, guint prop_id, GValue *value, GPar
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "smoothwave", GST_RANK_NONE, GST_TYPE_SMOOTHWAVE))
+ if (!gst_element_register (plugin, "smoothwave", GST_RANK_NONE,
+ GST_TYPE_SMOOTHWAVE))
return FALSE;
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "smoothwave",
- "Fading greyscale waveform display",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "smoothwave",
+ "Fading greyscale waveform display",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/smoothwave/gstsmoothwave.h b/gst/smoothwave/gstsmoothwave.h
index 87165131..df4d8763 100644
--- a/gst/smoothwave/gstsmoothwave.h
+++ b/gst/smoothwave/gstsmoothwave.h
@@ -26,8 +26,9 @@
#include <gtk/gtk.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_SMOOTHWAVE \
@@ -41,31 +42,33 @@ extern "C" {
#define GST_IS_SMOOTHWAVE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SMOOTHWAVE))
-typedef struct _GstSmoothWave GstSmoothWave;
-typedef struct _GstSmoothWaveClass GstSmoothWaveClass;
+ typedef struct _GstSmoothWave GstSmoothWave;
+ typedef struct _GstSmoothWaveClass GstSmoothWaveClass;
-struct _GstSmoothWave {
- GstElement element;
+ struct _GstSmoothWave
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- gint width,height;
+ gint width, height;
- GdkRgbCmap *cmap;
- GtkWidget *image;
- guchar *imagebuffer;
-};
+ GdkRgbCmap *cmap;
+ GtkWidget *image;
+ guchar *imagebuffer;
+ };
-struct _GstSmoothWaveClass {
- GstElementClass parent_class;
-};
+ struct _GstSmoothWaveClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_smoothwave_get_type(void);
+ GType gst_smoothwave_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_SMOOTHWAVE_H__ */
+#endif /* __GST_SMOOTHWAVE_H__ */
diff --git a/gst/smpte/barboxwipes.c b/gst/smpte/barboxwipes.c
index a490f632..2508adf4 100644
--- a/gst/smpte/barboxwipes.c
+++ b/gst/smpte/barboxwipes.c
@@ -26,544 +26,533 @@
enum
{
- BOX_VERTICAL = 1,
- BOX_HORIZONTAL = 2,
- BOX_CLOCK = 3,
- TRIGANLE_LINEAR = 4,
+ BOX_VERTICAL = 1,
+ BOX_HORIZONTAL = 2,
+ BOX_CLOCK = 3,
+ TRIGANLE_LINEAR = 4,
};
-static gint boxes_1b[][7] =
-{
+static gint boxes_1b[][7] = {
#define WIPE_B1_1 0
- { BOX_VERTICAL, 0, 0, 0, 1, 1, 1 },
+ {BOX_VERTICAL, 0, 0, 0, 1, 1, 1},
#define WIPE_B1_2 1
- { BOX_HORIZONTAL, 0, 0, 0, 1, 1, 1 }
+ {BOX_HORIZONTAL, 0, 0, 0, 1, 1, 1}
};
-static gint boxes_2b[][7*2] =
-{
+static gint boxes_2b[][7 * 2] = {
#define WIPE_B2_21 0
- { BOX_VERTICAL, 0, 0, 1, 1, 2, 0,
- BOX_VERTICAL, 1, 0, 0, 2, 2, 1 },
+ {BOX_VERTICAL, 0, 0, 1, 1, 2, 0,
+ BOX_VERTICAL, 1, 0, 0, 2, 2, 1},
#define WIPE_B2_22 1
- { BOX_HORIZONTAL, 0, 0, 1, 2, 1, 0,
- BOX_HORIZONTAL, 0, 1, 0, 2, 2, 1 },
+ {BOX_HORIZONTAL, 0, 0, 1, 2, 1, 0,
+ BOX_HORIZONTAL, 0, 1, 0, 2, 2, 1},
};
-static gint box_clock_1b[][1*10] =
-{
+static gint box_clock_1b[][1 * 10] = {
#define WIPE_B1_241 0
- { BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 1, 1 },
+ {BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 1, 1},
#define WIPE_B1_242 1
- { BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1 },
+ {BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1},
#define WIPE_B1_243 2
- { BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 },
+ {BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1},
#define WIPE_B1_244 3
- { BOX_CLOCK, 1, 0, 0, 0, 0, 0, 1, 1, 1 },
+ {BOX_CLOCK, 1, 0, 0, 0, 0, 0, 1, 1, 1},
};
#define WIPE_B2_221 0
-static gint box_clock_2b[][2*10] =
-{
+static gint box_clock_2b[][2 * 10] = {
#define WIPE_B2_221 0
- { BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
- BOX_CLOCK, 1, 0, 0, 1, 2, 1, 0, 0, 2 },
+ {BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
+ BOX_CLOCK, 1, 0, 0, 1, 2, 1, 0, 0, 2},
#define WIPE_B2_222 1
- { BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1,
- BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 0, 2 },
+ {BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1,
+ BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 0, 2},
#define WIPE_B2_223 2
- { BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1,
- BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2 },
+ {BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1,
+ BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2},
#define WIPE_B2_224 3
- { BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1,
- BOX_CLOCK, 0, 1, 0, 2, 1, 1, 0, 2, 2 },
+ {BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1,
+ BOX_CLOCK, 0, 1, 0, 2, 1, 1, 0, 2, 2},
#define WIPE_B2_225 4
- { BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
- BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1 },
+ {BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
+ BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1},
#define WIPE_B2_226 5
- { BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1,
- BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1 },
+ {BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1,
+ BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1},
#define WIPE_B2_231 6
- { BOX_CLOCK, 1, 0, 0, 1, 2, 0, 2, 0, 1,
- BOX_CLOCK, 1, 0, 0, 1, 2, 0, 0, 0, 1 },
+ {BOX_CLOCK, 1, 0, 0, 1, 2, 0, 2, 0, 1,
+ BOX_CLOCK, 1, 0, 0, 1, 2, 0, 0, 0, 1},
#define WIPE_B2_232 7
- { BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 0, 1,
- BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 2, 1 },
+ {BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 0, 1,
+ BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 2, 1},
#define WIPE_B2_233 8
- { BOX_CLOCK, 1, 2, 0, 1, 0, 0, 2, 2, 1,
- BOX_CLOCK, 1, 2, 0, 1, 0, 0, 0, 2, 1 },
+ {BOX_CLOCK, 1, 2, 0, 1, 0, 0, 2, 2, 1,
+ BOX_CLOCK, 1, 2, 0, 1, 0, 0, 0, 2, 1},
#define WIPE_B2_234 9
- { BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 0, 1,
- BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 2, 1 },
+ {BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 0, 1,
+ BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 2, 1},
#define WIPE_B2_251 10
- { BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 2, 1,
- BOX_CLOCK, 2, 0, 0, 1, 0, 0, 2, 2, 1 },
+ {BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 2, 1,
+ BOX_CLOCK, 2, 0, 0, 1, 0, 0, 2, 2, 1},
#define WIPE_B2_252 11
- { BOX_CLOCK, 0, 0, 0, 0, 1, 0, 2, 0, 1,
- BOX_CLOCK, 0, 2, 0, 0, 1, 0, 2, 2, 1 },
+ {BOX_CLOCK, 0, 0, 0, 0, 1, 0, 2, 0, 1,
+ BOX_CLOCK, 0, 2, 0, 0, 1, 0, 2, 2, 1},
#define WIPE_B2_253 12
- { BOX_CLOCK, 0, 2, 0, 1, 2, 0, 0, 0, 1,
- BOX_CLOCK, 2, 2, 0, 1, 2, 0, 2, 0, 1 },
+ {BOX_CLOCK, 0, 2, 0, 1, 2, 0, 0, 0, 1,
+ BOX_CLOCK, 2, 2, 0, 1, 2, 0, 2, 0, 1},
#define WIPE_B2_254 13
- { BOX_CLOCK, 2, 0, 0, 2, 1, 0, 0, 0, 1,
- BOX_CLOCK, 2, 2, 0, 2, 1, 0, 0, 2, 1 },
+ {BOX_CLOCK, 2, 0, 0, 2, 1, 0, 0, 0, 1,
+ BOX_CLOCK, 2, 2, 0, 2, 1, 0, 0, 2, 1},
};
-static gint box_clock_4b[][4*10] =
-{
+static gint box_clock_4b[][4 * 10] = {
#define WIPE_B4_201 0
- { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
- BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
- BOX_CLOCK, 1, 1, 0, 1, 2, 2, 0, 1, 3,
- BOX_CLOCK, 1, 1, 0, 0, 1, 3, 1, 0, 4 },
+ {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 2, 0, 1, 3,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 3, 1, 0, 4},
#define WIPE_B4_202 1
- { BOX_CLOCK, 1, 1, 0, 1, 0, 3, 2, 1, 4,
- BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
- BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2,
- BOX_CLOCK, 1, 1, 0, 0, 1, 2, 1, 0, 3 },
+ {BOX_CLOCK, 1, 1, 0, 1, 0, 3, 2, 1, 4,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 2, 1, 0, 3},
#define WIPE_B4_203 2
- { BOX_CLOCK, 1, 1, 0, 1, 0, 2, 2, 1, 3,
- BOX_CLOCK, 1, 1, 0, 2, 1, 3, 1, 2, 4,
- BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
- BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2 },
+ {BOX_CLOCK, 1, 1, 0, 1, 0, 2, 2, 1, 3,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 3, 1, 2, 4,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2},
#define WIPE_B4_204 3
- { BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2,
- BOX_CLOCK, 1, 1, 0, 2, 1, 2, 1, 2, 3,
- BOX_CLOCK, 1, 1, 0, 1, 2, 3, 0, 1, 4,
- BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 },
+ {BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 2, 1, 2, 3,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 3, 0, 1, 4,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1},
#define WIPE_B4_205 4
- { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
- BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
- BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
- BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2 },
+ {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2},
#define WIPE_B4_206 5
- { BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2,
- BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
- BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2,
- BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 },
+ {BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1},
#define WIPE_B4_207 6
- { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
- BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
- BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
- BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 },
+ {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1},
#define WIPE_B4_211 7
- { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
- BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
- BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1,
- BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 2, 2 },
+ {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
+ BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 2, 2},
#define WIPE_B4_212 8
- { BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1,
- BOX_CLOCK, 1, 1, 0, 1, 0, 1, 0, 1, 2,
- BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
- BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2 },
+ {BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1,
+ BOX_CLOCK, 1, 1, 0, 1, 0, 1, 0, 1, 2,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2},
#define WIPE_B4_213 9
- { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
- BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1,
- BOX_CLOCK, 1, 1, 0, 1, 2, 0, 2, 1, 1,
- BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1 },
+ {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 0, 2, 1, 1,
+ BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1},
#define WIPE_B4_214 10
- { BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1,
- BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
- BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1,
- BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 2, 1 },
+ {BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1,
+ BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1,
+ BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 2, 1},
#define WIPE_B4_227 11
- { BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 1, 1,
- BOX_CLOCK, 1, 0, 0, 1, 1, 1, 0, 0, 2,
- BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 1, 1,
- BOX_CLOCK, 1, 2, 0, 1, 1, 1, 0, 2, 2 },
+ {BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 1, 1,
+ BOX_CLOCK, 1, 0, 0, 1, 1, 1, 0, 0, 2,
+ BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 1, 1,
+ BOX_CLOCK, 1, 2, 0, 1, 1, 1, 0, 2, 2},
#define WIPE_B4_228 12
- { BOX_CLOCK, 0, 1, 0, 0, 0, 0, 1, 1, 1,
- BOX_CLOCK, 0, 1, 0, 1, 1, 1, 0, 2, 2,
- BOX_CLOCK, 2, 1, 0, 2, 0, 0, 1, 1, 1,
- BOX_CLOCK, 2, 1, 0, 1, 1, 1, 2, 2, 2 },
+ {BOX_CLOCK, 0, 1, 0, 0, 0, 0, 1, 1, 1,
+ BOX_CLOCK, 0, 1, 0, 1, 1, 1, 0, 2, 2,
+ BOX_CLOCK, 2, 1, 0, 2, 0, 0, 1, 1, 1,
+ BOX_CLOCK, 2, 1, 0, 1, 1, 1, 2, 2, 2},
#define WIPE_B4_235 13
- { BOX_CLOCK, 1, 0, 0, 1, 1, 0, 0, 0, 1,
- BOX_CLOCK, 1, 0, 0, 1, 1, 0, 2, 0, 1,
- BOX_CLOCK, 1, 2, 0, 1, 1, 0, 2, 2, 1,
- BOX_CLOCK, 1, 2, 0, 1, 1, 0, 0, 2, 1 },
+ {BOX_CLOCK, 1, 0, 0, 1, 1, 0, 0, 0, 1,
+ BOX_CLOCK, 1, 0, 0, 1, 1, 0, 2, 0, 1,
+ BOX_CLOCK, 1, 2, 0, 1, 1, 0, 2, 2, 1,
+ BOX_CLOCK, 1, 2, 0, 1, 1, 0, 0, 2, 1},
#define WIPE_B4_236 14
- { BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1,
- BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 2, 1,
- BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 0, 1,
- BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 2, 1 },
+ {BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1,
+ BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 2, 1,
+ BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 0, 1,
+ BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 2, 1},
};
-static gint box_clock_8b[][8*10] =
-{
+static gint box_clock_8b[][8 * 10] = {
#define WIPE_B8_261 0
- { BOX_CLOCK, 2, 1, 0, 2, 2, 0, 4, 1, 1,
- BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 0, 2,
- BOX_CLOCK, 2, 1, 0, 2, 0, 2, 0, 1, 3,
- BOX_CLOCK, 2, 1, 0, 0, 1, 3, 2, 2, 4,
- BOX_CLOCK, 2, 3, 0, 2, 2, 0, 4, 3, 1,
- BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 4, 2,
- BOX_CLOCK, 2, 3, 0, 2, 4, 2, 0, 3, 3,
- BOX_CLOCK, 2, 3, 0, 0, 3, 3, 2, 2, 4 },
+ {BOX_CLOCK, 2, 1, 0, 2, 2, 0, 4, 1, 1,
+ BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 0, 2,
+ BOX_CLOCK, 2, 1, 0, 2, 0, 2, 0, 1, 3,
+ BOX_CLOCK, 2, 1, 0, 0, 1, 3, 2, 2, 4,
+ BOX_CLOCK, 2, 3, 0, 2, 2, 0, 4, 3, 1,
+ BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 4, 2,
+ BOX_CLOCK, 2, 3, 0, 2, 4, 2, 0, 3, 3,
+ BOX_CLOCK, 2, 3, 0, 0, 3, 3, 2, 2, 4},
#define WIPE_B8_262 1
- { BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 0, 1,
- BOX_CLOCK, 1, 2, 0, 1, 0, 1, 0, 2, 2,
- BOX_CLOCK, 1, 2, 0, 0, 2, 2, 1, 4, 3,
- BOX_CLOCK, 1, 2, 0, 1, 4, 3, 2, 2, 4,
- BOX_CLOCK, 3, 2, 0, 2, 2, 0, 3, 0, 1,
- BOX_CLOCK, 3, 2, 0, 3, 0, 1, 4, 2, 2,
- BOX_CLOCK, 3, 2, 0, 4, 2, 2, 3, 4, 3,
- BOX_CLOCK, 3, 2, 0, 3, 4, 3, 2, 2, 4 },
+ {BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 0, 1,
+ BOX_CLOCK, 1, 2, 0, 1, 0, 1, 0, 2, 2,
+ BOX_CLOCK, 1, 2, 0, 0, 2, 2, 1, 4, 3,
+ BOX_CLOCK, 1, 2, 0, 1, 4, 3, 2, 2, 4,
+ BOX_CLOCK, 3, 2, 0, 2, 2, 0, 3, 0, 1,
+ BOX_CLOCK, 3, 2, 0, 3, 0, 1, 4, 2, 2,
+ BOX_CLOCK, 3, 2, 0, 4, 2, 2, 3, 4, 3,
+ BOX_CLOCK, 3, 2, 0, 3, 4, 3, 2, 2, 4},
#define WIPE_B8_263 2
- { BOX_CLOCK, 2, 1, 0, 2, 0, 0, 4, 1, 1,
- BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 2, 2,
- BOX_CLOCK, 2, 1, 0, 2, 0, 0, 0, 1, 1,
- BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 2, 2,
- BOX_CLOCK, 2, 3, 0, 2, 4, 0, 4, 3, 1,
- BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 2, 2,
- BOX_CLOCK, 2, 3, 0, 2, 4, 0, 0, 3, 1,
- BOX_CLOCK, 2, 3, 0, 0, 3, 1, 2, 2, 2 },
+ {BOX_CLOCK, 2, 1, 0, 2, 0, 0, 4, 1, 1,
+ BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 2, 2,
+ BOX_CLOCK, 2, 1, 0, 2, 0, 0, 0, 1, 1,
+ BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 2, 2,
+ BOX_CLOCK, 2, 3, 0, 2, 4, 0, 4, 3, 1,
+ BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 2, 2,
+ BOX_CLOCK, 2, 3, 0, 2, 4, 0, 0, 3, 1,
+ BOX_CLOCK, 2, 3, 0, 0, 3, 1, 2, 2, 2},
#define WIPE_B8_264 3
- { BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1,
- BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2,
- BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 4, 1,
- BOX_CLOCK, 1, 2, 0, 1, 4, 1, 2, 2, 2,
- BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 0, 1,
- BOX_CLOCK, 3, 2, 0, 3, 0, 1, 2, 2, 2,
- BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 4, 1,
- BOX_CLOCK, 3, 2, 0, 3, 4, 1, 2, 2, 2 },
+ {BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1,
+ BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2,
+ BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 4, 1,
+ BOX_CLOCK, 1, 2, 0, 1, 4, 1, 2, 2, 2,
+ BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 0, 1,
+ BOX_CLOCK, 3, 2, 0, 3, 0, 1, 2, 2, 2,
+ BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 4, 1,
+ BOX_CLOCK, 3, 2, 0, 3, 4, 1, 2, 2, 2},
};
-static gint triangles_2t[][2*9] =
-{
+static gint triangles_2t[][2 * 9] = {
/* 3 -> 6 */
#define WIPE_T2_3 0
- { 0, 0, 0, 0, 1, 1, 1, 1, 1,
- 1, 0, 1, 0, 0, 0, 1, 1, 1 },
+ {0, 0, 0, 0, 1, 1, 1, 1, 1,
+ 1, 0, 1, 0, 0, 0, 1, 1, 1},
#define WIPE_T2_4 WIPE_T2_3+1
- { 0, 0, 1, 1, 0, 0, 0, 1, 1,
- 1, 0, 0, 0, 1, 1, 1, 1, 1 },
+ {0, 0, 1, 1, 0, 0, 0, 1, 1,
+ 1, 0, 0, 0, 1, 1, 1, 1, 1},
#define WIPE_T2_5 WIPE_T2_4+1
- { 0, 0, 1, 0, 1, 1, 1, 1, 0,
- 1, 0, 1, 0, 0, 1, 1, 1, 0 },
+ {0, 0, 1, 0, 1, 1, 1, 1, 0,
+ 1, 0, 1, 0, 0, 1, 1, 1, 0},
#define WIPE_T2_6 WIPE_T2_5+1
- { 0, 0, 1, 1, 0, 1, 0, 1, 0,
- 1, 0, 1, 0, 1, 0, 1, 1, 1 },
+ {0, 0, 1, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 1, 1},
#define WIPE_T2_41 WIPE_T2_6+1
- { 0, 0, 0, 1, 0, 1, 0, 1, 1,
- 1, 0, 1, 0, 1, 1, 1, 1, 2 },
+ {0, 0, 0, 1, 0, 1, 0, 1, 1,
+ 1, 0, 1, 0, 1, 1, 1, 1, 2},
#define WIPE_T2_42 WIPE_T2_41+1
- { 0, 0, 1, 1, 0, 0, 1, 1, 1,
- 0, 0, 1, 0, 1, 2, 1, 1, 1 },
+ {0, 0, 1, 1, 0, 0, 1, 1, 1,
+ 0, 0, 1, 0, 1, 2, 1, 1, 1},
#define WIPE_T2_45 WIPE_T2_42+1
- { 0, 0, 1, 1, 0, 0, 0, 1, 0,
- 1, 0, 0, 0, 1, 0, 1, 1, 1 },
+ {0, 0, 1, 1, 0, 0, 0, 1, 0,
+ 1, 0, 0, 0, 1, 0, 1, 1, 1},
#define WIPE_T2_46 WIPE_T2_45+1
- { 0, 0, 0, 1, 0, 1, 1, 1, 0,
- 0, 0, 0, 0, 1, 1, 1, 1, 0 },
+ {0, 0, 0, 1, 0, 1, 1, 1, 0,
+ 0, 0, 0, 0, 1, 1, 1, 1, 0},
#define WIPE_T2_245 WIPE_T2_46+1
- { 0, 0, 0, 2, 0, 0, 2, 2, 1,
- 2, 2, 0, 0, 2, 0, 0, 0, 1 },
+ {0, 0, 0, 2, 0, 0, 2, 2, 1,
+ 2, 2, 0, 0, 2, 0, 0, 0, 1},
#define WIPE_T2_246 WIPE_T2_245+1
- { 0, 2, 0, 0, 0, 0, 2, 0, 1,
- 2, 0, 0, 2, 2, 0, 0, 2, 1 },
+ {0, 2, 0, 0, 0, 0, 2, 0, 1,
+ 2, 0, 0, 2, 2, 0, 0, 2, 1},
};
-static gint triangles_3t[][3*9] =
-{
+static gint triangles_3t[][3 * 9] = {
/* 23 -> 26 */
#define WIPE_T3_23 0
- { 0, 0, 1, 1, 0, 0, 0, 2, 1,
- 1, 0, 0, 0, 2, 1, 2, 2, 1,
- 1, 0, 0, 2, 0, 1, 2, 2, 1 },
+ {0, 0, 1, 1, 0, 0, 0, 2, 1,
+ 1, 0, 0, 0, 2, 1, 2, 2, 1,
+ 1, 0, 0, 2, 0, 1, 2, 2, 1},
#define WIPE_T3_24 1
- { 0, 0, 1, 2, 0, 1, 2, 1, 0,
- 0, 0, 1, 2, 1, 0, 0, 2, 1,
- 2, 1, 0, 0, 2, 1, 2, 2, 1 },
+ {0, 0, 1, 2, 0, 1, 2, 1, 0,
+ 0, 0, 1, 2, 1, 0, 0, 2, 1,
+ 2, 1, 0, 0, 2, 1, 2, 2, 1},
#define WIPE_T3_25 2
- { 0, 0, 1, 0, 2, 1, 1, 2, 0,
- 0, 0, 1, 2, 0, 1, 1, 2, 0,
- 2, 0, 1, 1, 2, 0, 2, 2, 1 },
+ {0, 0, 1, 0, 2, 1, 1, 2, 0,
+ 0, 0, 1, 2, 0, 1, 1, 2, 0,
+ 2, 0, 1, 1, 2, 0, 2, 2, 1},
#define WIPE_T3_26 3
- { 0, 0, 1, 2, 0, 1, 0, 1, 0,
- 2, 0, 1, 0, 1, 0, 2, 2, 1,
- 0, 1, 0, 0, 2, 1, 2, 2, 1 },
+ {0, 0, 1, 2, 0, 1, 0, 1, 0,
+ 2, 0, 1, 0, 1, 0, 2, 2, 1,
+ 0, 1, 0, 0, 2, 1, 2, 2, 1},
};
-static gint triangles_4t[][4*9] =
-{
+static gint triangles_4t[][4 * 9] = {
#define WIPE_T4_61 0
- { 0, 0, 1, 1, 0, 0, 1, 2, 1,
- 0, 0, 1, 0, 2, 2, 1, 2, 1,
- 1, 0, 0, 2, 0, 1, 1, 2, 1,
- 2, 0, 1, 1, 2, 1, 2, 2, 2 },
+ {0, 0, 1, 1, 0, 0, 1, 2, 1,
+ 0, 0, 1, 0, 2, 2, 1, 2, 1,
+ 1, 0, 0, 2, 0, 1, 1, 2, 1,
+ 2, 0, 1, 1, 2, 1, 2, 2, 2},
#define WIPE_T4_62 1
- { 0, 0, 2, 2, 0, 1, 0, 1, 1,
- 2, 0, 1, 0, 1, 1, 2, 1, 0,
- 0, 1, 1, 2, 1, 0, 2, 2, 1,
- 0, 1, 1, 0, 2, 2, 2, 2, 1 },
+ {0, 0, 2, 2, 0, 1, 0, 1, 1,
+ 2, 0, 1, 0, 1, 1, 2, 1, 0,
+ 0, 1, 1, 2, 1, 0, 2, 2, 1,
+ 0, 1, 1, 0, 2, 2, 2, 2, 1},
#define WIPE_T4_63 2
- { 0, 0, 2, 1, 0, 1, 0, 2, 1,
- 1, 0, 1, 0, 2, 1, 1, 2, 0,
- 1, 0, 1, 1, 2, 0, 2, 2, 1,
- 1, 0, 1, 2, 0, 2, 2, 2, 1 },
+ {0, 0, 2, 1, 0, 1, 0, 2, 1,
+ 1, 0, 1, 0, 2, 1, 1, 2, 0,
+ 1, 0, 1, 1, 2, 0, 2, 2, 1,
+ 1, 0, 1, 2, 0, 2, 2, 2, 1},
#define WIPE_T4_64 3
- { 0, 0, 1, 2, 0, 2, 2, 1, 1,
- 0, 0, 1, 0, 1, 0, 2, 1, 1,
- 0, 1, 0, 2, 1, 1, 0, 2, 1,
- 2, 1, 1, 0, 2, 1, 2, 2, 2 },
+ {0, 0, 1, 2, 0, 2, 2, 1, 1,
+ 0, 0, 1, 0, 1, 0, 2, 1, 1,
+ 0, 1, 0, 2, 1, 1, 0, 2, 1,
+ 2, 1, 1, 0, 2, 1, 2, 2, 2},
#define WIPE_T4_65 4
- { 0, 0, 0, 1, 0, 1, 1, 2, 0,
- 0, 0, 0, 0, 2, 1, 1, 2, 0,
- 1, 0, 1, 2, 0, 0, 1, 2, 0,
- 2, 0, 0, 1, 2, 0, 2, 2, 1 },
+ {0, 0, 0, 1, 0, 1, 1, 2, 0,
+ 0, 0, 0, 0, 2, 1, 1, 2, 0,
+ 1, 0, 1, 2, 0, 0, 1, 2, 0,
+ 2, 0, 0, 1, 2, 0, 2, 2, 1},
#define WIPE_T4_66 5
- { 0, 0, 1, 2, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 1, 0, 2, 1, 1,
- 0, 1, 0, 2, 1, 1, 2, 2, 0,
- 0, 1, 0, 0, 2, 1, 2, 2, 0 },
+ {0, 0, 1, 2, 0, 0, 0, 1, 0,
+ 2, 0, 0, 0, 1, 0, 2, 1, 1,
+ 0, 1, 0, 2, 1, 1, 2, 2, 0,
+ 0, 1, 0, 0, 2, 1, 2, 2, 0},
#define WIPE_T4_67 6
- { 0, 0, 1, 1, 0, 0, 0, 2, 0,
- 1, 0, 0, 0, 2, 0, 1, 2, 1,
- 1, 0, 0, 1, 2, 1, 2, 2, 0,
- 1, 0, 0, 2, 0, 1, 2, 2, 0 },
+ {0, 0, 1, 1, 0, 0, 0, 2, 0,
+ 1, 0, 0, 0, 2, 0, 1, 2, 1,
+ 1, 0, 0, 1, 2, 1, 2, 2, 0,
+ 1, 0, 0, 2, 0, 1, 2, 2, 0},
#define WIPE_T4_68 7
- { 0, 0, 0, 2, 0, 1, 2, 1, 0,
- 0, 0, 0, 0, 1, 1, 2, 1, 0,
- 0, 1, 1, 2, 1, 0, 0, 2, 0,
- 2, 1, 0, 0, 2, 0, 2, 2, 1 },
+ {0, 0, 0, 2, 0, 1, 2, 1, 0,
+ 0, 0, 0, 0, 1, 1, 2, 1, 0,
+ 0, 1, 1, 2, 1, 0, 0, 2, 0,
+ 2, 1, 0, 0, 2, 0, 2, 2, 1},
#define WIPE_T4_101 8
- { 0, 0, 1, 2, 0, 1, 1, 1, 0,
- 0, 0, 1, 1, 1, 0, 0, 2, 1,
- 1, 1, 0, 0, 2, 1, 2, 2, 1,
- 2, 0, 1, 1, 1, 0, 2, 2, 1 },
+ {0, 0, 1, 2, 0, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 0, 0, 2, 1,
+ 1, 1, 0, 0, 2, 1, 2, 2, 1,
+ 2, 0, 1, 1, 1, 0, 2, 2, 1},
};
-static gint triangles_8t[][8*9] =
-{
+static gint triangles_8t[][8 * 9] = {
/* 7 */
#define WIPE_T8_7 0
- { 0, 0, 0, 1, 0, 1, 1, 1, 1,
- 1, 0, 1, 2, 0, 0, 1, 1, 1,
- 2, 0, 0, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 2, 1, 1, 2, 2, 0,
- 1, 1, 1, 1, 2, 1, 2, 2, 0,
- 1, 1, 1, 0, 2, 0, 1, 2, 1,
- 0, 1, 1, 1, 1, 1, 0, 2, 0,
- 0, 0, 0, 0, 1, 1, 1, 1, 1 },
+ {0, 0, 0, 1, 0, 1, 1, 1, 1,
+ 1, 0, 1, 2, 0, 0, 1, 1, 1,
+ 2, 0, 0, 1, 1, 1, 2, 1, 1,
+ 1, 1, 1, 2, 1, 1, 2, 2, 0,
+ 1, 1, 1, 1, 2, 1, 2, 2, 0,
+ 1, 1, 1, 0, 2, 0, 1, 2, 1,
+ 0, 1, 1, 1, 1, 1, 0, 2, 0,
+ 0, 0, 0, 0, 1, 1, 1, 1, 1},
#define WIPE_T8_43 1
- { 0, 0, 1, 1, 0, 0, 1, 1, 1,
- 1, 0, 0, 2, 0, 1, 1, 1, 1,
- 2, 0, 1, 1, 1, 1, 2, 1, 2,
- 1, 1, 1, 2, 1, 2, 2, 2, 1,
- 1, 1, 1, 1, 2, 0, 2, 2, 1,
- 1, 1, 1, 0, 2, 1, 1, 2, 0,
- 0, 1, 2, 1, 1, 1, 0, 2, 1,
- 0, 0, 1, 0, 1, 2, 1, 1, 1 },
+ {0, 0, 1, 1, 0, 0, 1, 1, 1,
+ 1, 0, 0, 2, 0, 1, 1, 1, 1,
+ 2, 0, 1, 1, 1, 1, 2, 1, 2,
+ 1, 1, 1, 2, 1, 2, 2, 2, 1,
+ 1, 1, 1, 1, 2, 0, 2, 2, 1,
+ 1, 1, 1, 0, 2, 1, 1, 2, 0,
+ 0, 1, 2, 1, 1, 1, 0, 2, 1,
+ 0, 0, 1, 0, 1, 2, 1, 1, 1},
#define WIPE_T8_44 2
- { 0, 0, 1, 1, 0, 2, 1, 1, 1,
- 1, 0, 2, 2, 0, 1, 1, 1, 1,
- 2, 0, 1, 1, 1, 1, 2, 1, 0,
- 1, 1, 1, 2, 1, 0, 2, 2, 1,
- 1, 1, 1, 1, 2, 2, 2, 2, 1,
- 1, 1, 1, 0, 2, 1, 1, 2, 2,
- 0, 1, 0, 1, 1, 1, 0, 2, 1,
- 0, 0, 1, 0, 1, 0, 1, 1, 1 },
+ {0, 0, 1, 1, 0, 2, 1, 1, 1,
+ 1, 0, 2, 2, 0, 1, 1, 1, 1,
+ 2, 0, 1, 1, 1, 1, 2, 1, 0,
+ 1, 1, 1, 2, 1, 0, 2, 2, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 1,
+ 1, 1, 1, 0, 2, 1, 1, 2, 2,
+ 0, 1, 0, 1, 1, 1, 0, 2, 1,
+ 0, 0, 1, 0, 1, 0, 1, 1, 1},
#define WIPE_T8_47 3
- { 0, 0, 0, 1, 0, 1, 1, 1, 0,
- 1, 0, 1, 2, 0, 0, 1, 1, 0,
- 2, 0, 0, 1, 1, 0, 2, 1, 1,
- 1, 1, 0, 2, 1, 1, 2, 2, 0,
- 1, 1, 0, 1, 2, 1, 2, 2, 0,
- 1, 1, 0, 0, 2, 0, 1, 2, 1,
- 0, 1, 1, 1, 1, 0, 0, 2, 0,
- 0, 0, 0, 0, 1, 1, 1, 1, 0 },
+ {0, 0, 0, 1, 0, 1, 1, 1, 0,
+ 1, 0, 1, 2, 0, 0, 1, 1, 0,
+ 2, 0, 0, 1, 1, 0, 2, 1, 1,
+ 1, 1, 0, 2, 1, 1, 2, 2, 0,
+ 1, 1, 0, 1, 2, 1, 2, 2, 0,
+ 1, 1, 0, 0, 2, 0, 1, 2, 1,
+ 0, 1, 1, 1, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 1, 1, 1, 1, 0},
#define WIPE_T8_48 4
- { 0, 0, 1, 1, 0, 0, 0, 1, 0,
- 1, 0, 0, 0, 1, 0, 1, 1, 1,
- 1, 0, 0, 2, 0, 1, 2, 1, 0,
- 1, 0, 0, 1, 1, 1, 2, 1, 0,
- 0, 1, 0, 1, 1, 1, 1, 2, 0,
- 0, 1, 0, 0, 2, 1, 1, 2, 0,
- 1, 1, 1, 2, 1, 0, 1, 2, 0,
- 2, 1, 0, 1, 2, 0, 2, 2, 1 },
+ {0, 0, 1, 1, 0, 0, 0, 1, 0,
+ 1, 0, 0, 0, 1, 0, 1, 1, 1,
+ 1, 0, 0, 2, 0, 1, 2, 1, 0,
+ 1, 0, 0, 1, 1, 1, 2, 1, 0,
+ 0, 1, 0, 1, 1, 1, 1, 2, 0,
+ 0, 1, 0, 0, 2, 1, 1, 2, 0,
+ 1, 1, 1, 2, 1, 0, 1, 2, 0,
+ 2, 1, 0, 1, 2, 0, 2, 2, 1},
};
-static gint triangles_16t[][16*9] =
-{
+static gint triangles_16t[][16 * 9] = {
/* 8 */
#define WIPE_T16_8 0
- { 0, 0, 1, 2, 0, 1, 1, 1, 0,
- 2, 0, 1, 1, 1, 0, 2, 2, 1,
- 1, 1, 0, 0, 2, 1, 2, 2, 1,
- 0, 0, 1, 1, 1, 0, 0, 2, 1,
- 2, 0, 1, 4, 0, 1, 3, 1, 0,
- 4, 0, 1, 3, 1, 0, 4, 2, 1,
- 3, 1, 0, 2, 2, 1, 4, 2, 1,
- 2, 0, 1, 3, 1, 0, 2, 2, 1,
- 0, 2, 1, 2, 2, 1, 1, 3, 0,
- 2, 2, 1, 1, 3, 0, 2, 4, 1,
- 1, 3, 0, 0, 4, 1, 2, 4, 1,
- 0, 2, 1, 1, 3, 0, 0, 4, 1,
- 2, 2, 1, 4, 2, 1, 3, 3, 0,
- 4, 2, 1, 3, 3, 0, 4, 4, 1,
- 3, 3, 0, 2, 4, 1, 4, 4, 1,
- 2, 2, 1, 3, 3, 0, 2, 4, 1 }
+ {0, 0, 1, 2, 0, 1, 1, 1, 0,
+ 2, 0, 1, 1, 1, 0, 2, 2, 1,
+ 1, 1, 0, 0, 2, 1, 2, 2, 1,
+ 0, 0, 1, 1, 1, 0, 0, 2, 1,
+ 2, 0, 1, 4, 0, 1, 3, 1, 0,
+ 4, 0, 1, 3, 1, 0, 4, 2, 1,
+ 3, 1, 0, 2, 2, 1, 4, 2, 1,
+ 2, 0, 1, 3, 1, 0, 2, 2, 1,
+ 0, 2, 1, 2, 2, 1, 1, 3, 0,
+ 2, 2, 1, 1, 3, 0, 2, 4, 1,
+ 1, 3, 0, 0, 4, 1, 2, 4, 1,
+ 0, 2, 1, 1, 3, 0, 0, 4, 1,
+ 2, 2, 1, 4, 2, 1, 3, 3, 0,
+ 4, 2, 1, 3, 3, 0, 4, 4, 1,
+ 3, 3, 0, 2, 4, 1, 4, 4, 1,
+ 2, 2, 1, 3, 3, 0, 2, 4, 1}
};
typedef struct _GstWipeConfig GstWipeConfig;
-struct _GstWipeConfig {
- gint *objects;
- gint nobjects;
- gint xscale;
- gint yscale;
- gint cscale;
+struct _GstWipeConfig
+{
+ gint *objects;
+ gint nobjects;
+ gint xscale;
+ gint yscale;
+ gint cscale;
};
-static GstWipeConfig wipe_config[] =
-{
+static GstWipeConfig wipe_config[] = {
#define WIPE_CONFIG_1 0
- { boxes_1b[WIPE_B1_1], 1, 0, 0, 0 }, /* 1 */
+ {boxes_1b[WIPE_B1_1], 1, 0, 0, 0}, /* 1 */
#define WIPE_CONFIG_2 WIPE_CONFIG_1+1
- { boxes_1b[WIPE_B1_2], 1, 0, 0, 0 }, /* 2 */
+ {boxes_1b[WIPE_B1_2], 1, 0, 0, 0}, /* 2 */
#define WIPE_CONFIG_3 WIPE_CONFIG_2+1
- { triangles_2t[WIPE_T2_3], 2, 0, 0, 0 }, /* 3 */
+ {triangles_2t[WIPE_T2_3], 2, 0, 0, 0}, /* 3 */
#define WIPE_CONFIG_4 WIPE_CONFIG_3+1
- { triangles_2t[WIPE_T2_4], 2, 0, 0, 0 }, /* 4 */
+ {triangles_2t[WIPE_T2_4], 2, 0, 0, 0}, /* 4 */
#define WIPE_CONFIG_5 WIPE_CONFIG_4+1
- { triangles_2t[WIPE_T2_5], 2, 0, 0, 0 }, /* 5 */
+ {triangles_2t[WIPE_T2_5], 2, 0, 0, 0}, /* 5 */
#define WIPE_CONFIG_6 WIPE_CONFIG_5+1
- { triangles_2t[WIPE_T2_6], 2, 0, 0, 0 }, /* 6 */
+ {triangles_2t[WIPE_T2_6], 2, 0, 0, 0}, /* 6 */
#define WIPE_CONFIG_7 WIPE_CONFIG_6+1
- { triangles_8t[WIPE_T8_7], 8, 1, 1, 0 }, /* 7 */
+ {triangles_8t[WIPE_T8_7], 8, 1, 1, 0}, /* 7 */
#define WIPE_CONFIG_8 WIPE_CONFIG_7+1
- { triangles_16t[WIPE_T16_8], 16, 2, 2, 0 }, /* 8 */
+ {triangles_16t[WIPE_T16_8], 16, 2, 2, 0}, /* 8 */
#define WIPE_CONFIG_21 WIPE_CONFIG_8+1
- { boxes_2b[WIPE_B2_21], 2, 1, 1, 0 }, /* 21 */
+ {boxes_2b[WIPE_B2_21], 2, 1, 1, 0}, /* 21 */
#define WIPE_CONFIG_22 WIPE_CONFIG_21+1
- { boxes_2b[WIPE_B2_22], 2, 1, 1, 0 }, /* 22 */
+ {boxes_2b[WIPE_B2_22], 2, 1, 1, 0}, /* 22 */
#define WIPE_CONFIG_23 WIPE_CONFIG_22+1
- { triangles_3t[WIPE_T3_23], 3, 1, 1, 0 }, /* 23 */
+ {triangles_3t[WIPE_T3_23], 3, 1, 1, 0}, /* 23 */
#define WIPE_CONFIG_24 WIPE_CONFIG_23+1
- { triangles_3t[WIPE_T3_24], 3, 1, 1, 0 }, /* 24 */
+ {triangles_3t[WIPE_T3_24], 3, 1, 1, 0}, /* 24 */
#define WIPE_CONFIG_25 WIPE_CONFIG_24+1
- { triangles_3t[WIPE_T3_23], 3, 1, 1, 0 }, /* 25 */
+ {triangles_3t[WIPE_T3_23], 3, 1, 1, 0}, /* 25 */
#define WIPE_CONFIG_26 WIPE_CONFIG_25+1
- { triangles_3t[WIPE_T3_26], 3, 1, 1, 0 }, /* 26 */
+ {triangles_3t[WIPE_T3_26], 3, 1, 1, 0}, /* 26 */
#define WIPE_CONFIG_41 WIPE_CONFIG_26+1
- { triangles_2t[WIPE_T2_41], 2, 0, 0, 1 }, /* 41 */
+ {triangles_2t[WIPE_T2_41], 2, 0, 0, 1}, /* 41 */
#define WIPE_CONFIG_42 WIPE_CONFIG_41+1
- { triangles_2t[WIPE_T2_42], 2, 0, 0, 1 }, /* 42 */
+ {triangles_2t[WIPE_T2_42], 2, 0, 0, 1}, /* 42 */
#define WIPE_CONFIG_43 WIPE_CONFIG_42+1
- { triangles_8t[WIPE_T8_43], 8, 1, 1, 1 }, /* 43 */
+ {triangles_8t[WIPE_T8_43], 8, 1, 1, 1}, /* 43 */
#define WIPE_CONFIG_44 WIPE_CONFIG_43+1
- { triangles_8t[WIPE_T8_44], 8, 1, 1, 1 }, /* 44 */
+ {triangles_8t[WIPE_T8_44], 8, 1, 1, 1}, /* 44 */
#define WIPE_CONFIG_45 WIPE_CONFIG_44+1
- { triangles_2t[WIPE_T2_45], 2, 0, 0, 0 }, /* 45 */
+ {triangles_2t[WIPE_T2_45], 2, 0, 0, 0}, /* 45 */
#define WIPE_CONFIG_46 WIPE_CONFIG_45+1
- { triangles_2t[WIPE_T2_46], 2, 0, 0, 0 }, /* 46 */
+ {triangles_2t[WIPE_T2_46], 2, 0, 0, 0}, /* 46 */
#define WIPE_CONFIG_47 WIPE_CONFIG_46+1
- { triangles_8t[WIPE_T8_47], 8, 1, 1, 0 }, /* 47 */
+ {triangles_8t[WIPE_T8_47], 8, 1, 1, 0}, /* 47 */
#define WIPE_CONFIG_48 WIPE_CONFIG_47+1
- { triangles_8t[WIPE_T8_48], 8, 1, 1, 0 }, /* 48 */
+ {triangles_8t[WIPE_T8_48], 8, 1, 1, 0}, /* 48 */
#define WIPE_CONFIG_61 WIPE_CONFIG_48+1
- { triangles_4t[WIPE_T4_61], 4, 1, 1, 1 }, /* 61 */
+ {triangles_4t[WIPE_T4_61], 4, 1, 1, 1}, /* 61 */
#define WIPE_CONFIG_62 WIPE_CONFIG_61+1
- { triangles_4t[WIPE_T4_62], 4, 1, 1, 1 }, /* 62 */
+ {triangles_4t[WIPE_T4_62], 4, 1, 1, 1}, /* 62 */
#define WIPE_CONFIG_63 WIPE_CONFIG_62+1
- { triangles_4t[WIPE_T4_63], 4, 1, 1, 1 }, /* 63 */
+ {triangles_4t[WIPE_T4_63], 4, 1, 1, 1}, /* 63 */
#define WIPE_CONFIG_64 WIPE_CONFIG_63+1
- { triangles_4t[WIPE_T4_64], 4, 1, 1, 1 }, /* 64 */
+ {triangles_4t[WIPE_T4_64], 4, 1, 1, 1}, /* 64 */
#define WIPE_CONFIG_65 WIPE_CONFIG_64+1
- { triangles_4t[WIPE_T4_65], 4, 1, 1, 0 }, /* 65 */
+ {triangles_4t[WIPE_T4_65], 4, 1, 1, 0}, /* 65 */
#define WIPE_CONFIG_66 WIPE_CONFIG_65+1
- { triangles_4t[WIPE_T4_66], 4, 1, 1, 0 }, /* 66 */
+ {triangles_4t[WIPE_T4_66], 4, 1, 1, 0}, /* 66 */
#define WIPE_CONFIG_67 WIPE_CONFIG_66+1
- { triangles_4t[WIPE_T4_67], 4, 1, 1, 0 }, /* 67 */
+ {triangles_4t[WIPE_T4_67], 4, 1, 1, 0}, /* 67 */
#define WIPE_CONFIG_68 WIPE_CONFIG_67+1
- { triangles_4t[WIPE_T4_68], 4, 1, 1, 0 }, /* 68 */
+ {triangles_4t[WIPE_T4_68], 4, 1, 1, 0}, /* 68 */
#define WIPE_CONFIG_101 WIPE_CONFIG_68+1
- { triangles_4t[WIPE_T4_101], 4, 1, 1, 0 }, /* 101 */
+ {triangles_4t[WIPE_T4_101], 4, 1, 1, 0}, /* 101 */
#define WIPE_CONFIG_201 WIPE_CONFIG_101+1
- { box_clock_4b[WIPE_B4_201], 4, 1, 1, 2 }, /* 201 */
+ {box_clock_4b[WIPE_B4_201], 4, 1, 1, 2}, /* 201 */
#define WIPE_CONFIG_202 WIPE_CONFIG_201+1
- { box_clock_4b[WIPE_B4_202], 4, 1, 1, 2 }, /* 202 */
+ {box_clock_4b[WIPE_B4_202], 4, 1, 1, 2}, /* 202 */
#define WIPE_CONFIG_203 WIPE_CONFIG_202+1
- { box_clock_4b[WIPE_B4_203], 4, 1, 1, 2 }, /* 203 */
+ {box_clock_4b[WIPE_B4_203], 4, 1, 1, 2}, /* 203 */
#define WIPE_CONFIG_204 WIPE_CONFIG_203+1
- { box_clock_4b[WIPE_B4_204], 4, 1, 1, 2 }, /* 204 */
+ {box_clock_4b[WIPE_B4_204], 4, 1, 1, 2}, /* 204 */
#define WIPE_CONFIG_205 WIPE_CONFIG_204+1
- { box_clock_4b[WIPE_B4_205], 4, 1, 1, 1 }, /* 205 */
+ {box_clock_4b[WIPE_B4_205], 4, 1, 1, 1}, /* 205 */
#define WIPE_CONFIG_206 WIPE_CONFIG_205+1
- { box_clock_4b[WIPE_B4_206], 4, 1, 1, 1 }, /* 206 */
+ {box_clock_4b[WIPE_B4_206], 4, 1, 1, 1}, /* 206 */
#define WIPE_CONFIG_207 WIPE_CONFIG_206+1
- { box_clock_4b[WIPE_B4_207], 4, 1, 1, 0 }, /* 207 */
+ {box_clock_4b[WIPE_B4_207], 4, 1, 1, 0}, /* 207 */
#define WIPE_CONFIG_211 WIPE_CONFIG_207+1
- { box_clock_4b[WIPE_B4_211], 4, 1, 1, 1 }, /* 211 */
+ {box_clock_4b[WIPE_B4_211], 4, 1, 1, 1}, /* 211 */
#define WIPE_CONFIG_212 WIPE_CONFIG_211+1
- { box_clock_4b[WIPE_B4_212], 4, 1, 1, 1 }, /* 212 */
+ {box_clock_4b[WIPE_B4_212], 4, 1, 1, 1}, /* 212 */
#define WIPE_CONFIG_213 WIPE_CONFIG_212+1
- { box_clock_4b[WIPE_B4_213], 4, 1, 1, 0 }, /* 213 */
+ {box_clock_4b[WIPE_B4_213], 4, 1, 1, 0}, /* 213 */
#define WIPE_CONFIG_214 WIPE_CONFIG_213+1
- { box_clock_4b[WIPE_B4_214], 4, 1, 1, 0 }, /* 214 */
+ {box_clock_4b[WIPE_B4_214], 4, 1, 1, 0}, /* 214 */
#define WIPE_CONFIG_221 WIPE_CONFIG_214+1
- { box_clock_2b[WIPE_B2_221], 2, 1, 1, 1 }, /* 221 */
+ {box_clock_2b[WIPE_B2_221], 2, 1, 1, 1}, /* 221 */
#define WIPE_CONFIG_222 WIPE_CONFIG_221+1
- { box_clock_2b[WIPE_B2_222], 2, 1, 1, 1 }, /* 222 */
+ {box_clock_2b[WIPE_B2_222], 2, 1, 1, 1}, /* 222 */
#define WIPE_CONFIG_223 WIPE_CONFIG_222+1
- { box_clock_2b[WIPE_B2_223], 2, 1, 1, 1 }, /* 223 */
+ {box_clock_2b[WIPE_B2_223], 2, 1, 1, 1}, /* 223 */
#define WIPE_CONFIG_224 WIPE_CONFIG_223+1
- { box_clock_2b[WIPE_B2_224], 2, 1, 1, 1 }, /* 224 */
+ {box_clock_2b[WIPE_B2_224], 2, 1, 1, 1}, /* 224 */
#define WIPE_CONFIG_225 WIPE_CONFIG_224+1
- { box_clock_2b[WIPE_B2_225], 2, 1, 1, 0 }, /* 225 */
+ {box_clock_2b[WIPE_B2_225], 2, 1, 1, 0}, /* 225 */
#define WIPE_CONFIG_226 WIPE_CONFIG_225+1
- { box_clock_2b[WIPE_B2_226], 2, 1, 1, 0 }, /* 226 */
+ {box_clock_2b[WIPE_B2_226], 2, 1, 1, 0}, /* 226 */
#define WIPE_CONFIG_227 WIPE_CONFIG_226+1
- { box_clock_4b[WIPE_B4_227], 4, 1, 1, 1 }, /* 227 */
+ {box_clock_4b[WIPE_B4_227], 4, 1, 1, 1}, /* 227 */
#define WIPE_CONFIG_228 WIPE_CONFIG_227+1
- { box_clock_4b[WIPE_B4_228], 4, 1, 1, 1 }, /* 228 */
+ {box_clock_4b[WIPE_B4_228], 4, 1, 1, 1}, /* 228 */
#define WIPE_CONFIG_231 WIPE_CONFIG_228+1
- { box_clock_2b[WIPE_B2_231], 2, 1, 1, 0 }, /* 231 */
+ {box_clock_2b[WIPE_B2_231], 2, 1, 1, 0}, /* 231 */
#define WIPE_CONFIG_232 WIPE_CONFIG_231+1
- { box_clock_2b[WIPE_B2_232], 2, 1, 1, 0 }, /* 232 */
+ {box_clock_2b[WIPE_B2_232], 2, 1, 1, 0}, /* 232 */
#define WIPE_CONFIG_233 WIPE_CONFIG_232+1
- { box_clock_2b[WIPE_B2_233], 2, 1, 1, 0 }, /* 233 */
+ {box_clock_2b[WIPE_B2_233], 2, 1, 1, 0}, /* 233 */
#define WIPE_CONFIG_234 WIPE_CONFIG_233+1
- { box_clock_2b[WIPE_B2_234], 2, 1, 1, 0 }, /* 234 */
+ {box_clock_2b[WIPE_B2_234], 2, 1, 1, 0}, /* 234 */
#define WIPE_CONFIG_235 WIPE_CONFIG_234+1
- { box_clock_4b[WIPE_B4_235], 4, 1, 1, 0 }, /* 235 */
+ {box_clock_4b[WIPE_B4_235], 4, 1, 1, 0}, /* 235 */
#define WIPE_CONFIG_236 WIPE_CONFIG_235+1
- { box_clock_4b[WIPE_B4_236], 4, 1, 1, 0 }, /* 236 */
+ {box_clock_4b[WIPE_B4_236], 4, 1, 1, 0}, /* 236 */
#define WIPE_CONFIG_241 WIPE_CONFIG_236+1
- { box_clock_1b[WIPE_B1_241], 1, 0, 0, 0 }, /* 241 */
+ {box_clock_1b[WIPE_B1_241], 1, 0, 0, 0}, /* 241 */
#define WIPE_CONFIG_242 WIPE_CONFIG_241+1
- { box_clock_1b[WIPE_B1_242], 1, 0, 0, 0 }, /* 242 */
+ {box_clock_1b[WIPE_B1_242], 1, 0, 0, 0}, /* 242 */
#define WIPE_CONFIG_243 WIPE_CONFIG_242+1
- { box_clock_1b[WIPE_B1_243], 1, 0, 0, 0 }, /* 243 */
+ {box_clock_1b[WIPE_B1_243], 1, 0, 0, 0}, /* 243 */
#define WIPE_CONFIG_244 WIPE_CONFIG_243+1
- { box_clock_1b[WIPE_B1_244], 1, 0, 0, 0 }, /* 244 */
+ {box_clock_1b[WIPE_B1_244], 1, 0, 0, 0}, /* 244 */
#define WIPE_CONFIG_245 WIPE_CONFIG_244+1
- { triangles_2t[WIPE_T2_245], 2, 1, 1, 0 }, /* 245 */
+ {triangles_2t[WIPE_T2_245], 2, 1, 1, 0}, /* 245 */
#define WIPE_CONFIG_246 WIPE_CONFIG_245+1
- { triangles_2t[WIPE_T2_246], 2, 1, 1, 0 }, /* 246 */
+ {triangles_2t[WIPE_T2_246], 2, 1, 1, 0}, /* 246 */
#define WIPE_CONFIG_251 WIPE_CONFIG_246+1
- { box_clock_2b[WIPE_B2_251], 2, 1, 1, 0 }, /* 251 */
+ {box_clock_2b[WIPE_B2_251], 2, 1, 1, 0}, /* 251 */
#define WIPE_CONFIG_252 WIPE_CONFIG_251+1
- { box_clock_2b[WIPE_B2_252], 2, 1, 1, 0 }, /* 252 */
+ {box_clock_2b[WIPE_B2_252], 2, 1, 1, 0}, /* 252 */
#define WIPE_CONFIG_253 WIPE_CONFIG_252+1
- { box_clock_2b[WIPE_B2_253], 2, 1, 1, 0 }, /* 253 */
+ {box_clock_2b[WIPE_B2_253], 2, 1, 1, 0}, /* 253 */
#define WIPE_CONFIG_254 WIPE_CONFIG_253+1
- { box_clock_2b[WIPE_B2_254], 2, 1, 1, 0 }, /* 254 */
+ {box_clock_2b[WIPE_B2_254], 2, 1, 1, 0}, /* 254 */
#define WIPE_CONFIG_261 WIPE_CONFIG_254+1
- { box_clock_8b[WIPE_B8_261], 8, 2, 2, 2 }, /* 261 */
+ {box_clock_8b[WIPE_B8_261], 8, 2, 2, 2}, /* 261 */
#define WIPE_CONFIG_262 WIPE_CONFIG_261+1
- { box_clock_8b[WIPE_B8_262], 8, 2, 2, 2 }, /* 262 */
+ {box_clock_8b[WIPE_B8_262], 8, 2, 2, 2}, /* 262 */
#define WIPE_CONFIG_263 WIPE_CONFIG_262+1
- { box_clock_8b[WIPE_B8_263], 8, 2, 2, 1 }, /* 263 */
+ {box_clock_8b[WIPE_B8_263], 8, 2, 2, 1}, /* 263 */
#define WIPE_CONFIG_264 WIPE_CONFIG_263+1
- { box_clock_8b[WIPE_B8_264], 8, 2, 2, 1 }, /* 264 */
+ {box_clock_8b[WIPE_B8_264], 8, 2, 2, 1}, /* 264 */
};
static void
-gst_wipe_boxes_draw (GstMask *mask)
+gst_wipe_boxes_draw (GstMask * mask)
{
GstWipeConfig *config = mask->user_data;
gint *impacts = config->objects;
@@ -576,30 +565,30 @@ gst_wipe_boxes_draw (GstMask *mask)
for (i = 0; i < config->nobjects; i++) {
switch (impacts[0]) {
case BOX_VERTICAL:
- gst_smpte_paint_vbox (mask->data, mask->width,
- impacts[1] * width, impacts[2] * height, impacts[3] * depth,
- impacts[4] * width, impacts[5] * height, impacts[6] * depth);
+ gst_smpte_paint_vbox (mask->data, mask->width,
+ impacts[1] * width, impacts[2] * height, impacts[3] * depth,
+ impacts[4] * width, impacts[5] * height, impacts[6] * depth);
impacts += 7;
- break;
+ break;
case BOX_HORIZONTAL:
- gst_smpte_paint_hbox (mask->data, mask->width,
- impacts[1] * width, impacts[2] * height, impacts[3] * depth,
- impacts[4] * width, impacts[5] * height, impacts[6] * depth);
+ gst_smpte_paint_hbox (mask->data, mask->width,
+ impacts[1] * width, impacts[2] * height, impacts[3] * depth,
+ impacts[4] * width, impacts[5] * height, impacts[6] * depth);
impacts += 7;
case BOX_CLOCK:
- gst_smpte_paint_box_clock (mask->data, mask->width,
- impacts[1] * width, impacts[2] * height, impacts[3] * depth,
- impacts[4] * width, impacts[5] * height, impacts[6] * depth,
- impacts[7] * width, impacts[8] * height, impacts[9] * depth);
+ gst_smpte_paint_box_clock (mask->data, mask->width,
+ impacts[1] * width, impacts[2] * height, impacts[3] * depth,
+ impacts[4] * width, impacts[5] * height, impacts[6] * depth,
+ impacts[7] * width, impacts[8] * height, impacts[9] * depth);
impacts += 10;
default:
- break;
+ break;
}
}
}
static void
-gst_wipe_triangles_clock_draw (GstMask *mask)
+gst_wipe_triangles_clock_draw (GstMask * mask)
{
GstWipeConfig *config = mask->user_data;
gint *impacts = config->objects;
@@ -610,15 +599,15 @@ gst_wipe_triangles_clock_draw (GstMask *mask)
for (i = 0; i < config->nobjects; i++) {
gst_smpte_paint_triangle_clock (mask->data, mask->width,
- impacts[0] * width, impacts[1] * height, impacts[2] * depth,
- impacts[3] * width, impacts[4] * height, impacts[5] * depth,
- impacts[6] * width, impacts[7] * height, impacts[8] * depth);
+ impacts[0] * width, impacts[1] * height, impacts[2] * depth,
+ impacts[3] * width, impacts[4] * height, impacts[5] * depth,
+ impacts[6] * width, impacts[7] * height, impacts[8] * depth);
impacts += 9;
}
}
static void
-gst_wipe_triangles_draw (GstMask *mask)
+gst_wipe_triangles_draw (GstMask * mask)
{
GstWipeConfig *config = mask->user_data;
gint *impacts = config->objects;
@@ -630,295 +619,295 @@ gst_wipe_triangles_draw (GstMask *mask)
for (i = 0; i < config->nobjects; i++) {
gst_smpte_paint_triangle_linear (mask->data, mask->width,
- impacts[0] * width, impacts[1] * height, impacts[2] * depth,
- impacts[3] * width, impacts[4] * height, impacts[5] * depth,
- impacts[6] * width, impacts[7] * height, impacts[8] * depth);
+ impacts[0] * width, impacts[1] * height, impacts[2] * depth,
+ impacts[3] * width, impacts[4] * height, impacts[5] * depth,
+ impacts[6] * width, impacts[7] * height, impacts[8] * depth);
impacts += 9;
}
}
-static GstMaskDefinition definitions[] = {
- { 1, "bar_wipe_lr",
- "A bar moves from left to right",
- gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_1] },
- { 2, "bar_wipe_tb",
- "A bar moves from top to bottom",
- gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_2] },
- { 3, "box_wipe_tl",
- "A box expands from the upper-left corner to the lower-right corner",
- gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_3] },
- { 4, "box_wipe_tr",
- "A box expands from the upper-right corner to the lower-left corner",
- gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_4] },
- { 5, "box_wipe_br",
- "A box expands from the lower-right corner to the upper-left corner",
- gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_5] },
- { 6, "box_wipe_bl",
- "A box expands from the lower-left corner to the upper-right corner",
+static GstMaskDefinition definitions[] = {
+ {1, "bar_wipe_lr",
+ "A bar moves from left to right",
+ gst_wipe_boxes_draw, _gst_mask_default_destroy,
+ &wipe_config[WIPE_CONFIG_1]},
+ {2, "bar_wipe_tb",
+ "A bar moves from top to bottom",
+ gst_wipe_boxes_draw, _gst_mask_default_destroy,
+ &wipe_config[WIPE_CONFIG_2]},
+ {3, "box_wipe_tl",
+ "A box expands from the upper-left corner to the lower-right corner",
+ gst_wipe_triangles_draw, _gst_mask_default_destroy,
+ &wipe_config[WIPE_CONFIG_3]},
+ {4, "box_wipe_tr",
+ "A box expands from the upper-right corner to the lower-left corner",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_6] },
- { 7 , "four_box_wipe_ci",
- "A box shape expands from each of the four corners toward the center",
+ &wipe_config[WIPE_CONFIG_4]},
+ {5, "box_wipe_br",
+ "A box expands from the lower-right corner to the upper-left corner",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_7] },
- { 8 , "four_box_wipe_co",
- "A box shape expands from the center of each quadrant toward the corners of each quadrant",
+ &wipe_config[WIPE_CONFIG_5]},
+ {6, "box_wipe_bl",
+ "A box expands from the lower-left corner to the upper-right corner",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_8] },
- { 21, "barndoor_v",
- "A central, vertical line splits and expands toward the left and right edges",
- gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_21] },
- { 22, "barndoor_h",
- "A central, horizontal line splits and expands toward the top and bottom edges",
- gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_22] },
- { 23, "box_wipe_tc",
- "A box expands from the top edge's midpoint to the bottom corners",
+ &wipe_config[WIPE_CONFIG_6]},
+ {7, "four_box_wipe_ci",
+ "A box shape expands from each of the four corners toward the center",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_23] },
- { 24, "box_wipe_rc",
- "A box expands from the right edge's midpoint to the left corners",
+ &wipe_config[WIPE_CONFIG_7]},
+ {8, "four_box_wipe_co",
+ "A box shape expands from the center of each quadrant toward the corners of each quadrant",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_24] },
- { 25, "box_wipe_bc",
- "A box expands from the bottom edge's midpoint to the top corners",
+ &wipe_config[WIPE_CONFIG_8]},
+ {21, "barndoor_v",
+ "A central, vertical line splits and expands toward the left and right edges",
+ gst_wipe_boxes_draw, _gst_mask_default_destroy,
+ &wipe_config[WIPE_CONFIG_21]},
+ {22, "barndoor_h",
+ "A central, horizontal line splits and expands toward the top and bottom edges",
+ gst_wipe_boxes_draw, _gst_mask_default_destroy,
+ &wipe_config[WIPE_CONFIG_22]},
+ {23, "box_wipe_tc",
+ "A box expands from the top edge's midpoint to the bottom corners",
+ gst_wipe_triangles_draw, _gst_mask_default_destroy,
+ &wipe_config[WIPE_CONFIG_23]},
+ {24, "box_wipe_rc",
+ "A box expands from the right edge's midpoint to the left corners",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_25] },
- { 26, "box_wipe_lc",
- "A box expands from the left edge's midpoint to the right corners",
+ &wipe_config[WIPE_CONFIG_24]},
+ {25, "box_wipe_bc",
+ "A box expands from the bottom edge's midpoint to the top corners",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_26] },
- { 41, "diagonal_tl",
- "A diagonal line moves from the upper-left corner to the lower-right corner",
+ &wipe_config[WIPE_CONFIG_25]},
+ {26, "box_wipe_lc",
+ "A box expands from the left edge's midpoint to the right corners",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_41] },
- { 42, "diagonal_tr",
- "A diagonal line moves from the upper right corner to the lower-left corner",
+ &wipe_config[WIPE_CONFIG_26]},
+ {41, "diagonal_tl",
+ "A diagonal line moves from the upper-left corner to the lower-right corner",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_42] },
- { 43, "bowtie_v",
- "Two wedge shapes slide in from the top and bottom edges toward the center",
+ &wipe_config[WIPE_CONFIG_41]},
+ {42, "diagonal_tr",
+ "A diagonal line moves from the upper right corner to the lower-left corner",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_43] },
- { 44, "bowtie_h",
- "Two wedge shapes slide in from the left and right edges toward the center",
+ &wipe_config[WIPE_CONFIG_42]},
+ {43, "bowtie_v",
+ "Two wedge shapes slide in from the top and bottom edges toward the center",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_44] },
- { 45, "barndoor_dbl",
- "A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners",
+ &wipe_config[WIPE_CONFIG_43]},
+ {44, "bowtie_h",
+ "Two wedge shapes slide in from the left and right edges toward the center",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_45] },
- { 46, "barndoor_dtl",
- "A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners",
+ &wipe_config[WIPE_CONFIG_44]},
+ {45, "barndoor_dbl",
+ "A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_46] },
- { 47, "misc_diagonal_dbd",
- "Four wedge shapes split from the center and retract toward the four edges",
+ &wipe_config[WIPE_CONFIG_45]},
+ {46, "barndoor_dtl",
+ "A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_47] },
- { 48, "misc_diagonal_dd",
- "A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges",
+ &wipe_config[WIPE_CONFIG_46]},
+ {47, "misc_diagonal_dbd",
+ "Four wedge shapes split from the center and retract toward the four edges",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_48] },
- { 61, "vee_d",
- "A wedge shape moves from top to bottom",
+ &wipe_config[WIPE_CONFIG_47]},
+ {48, "misc_diagonal_dd",
+ "A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_61] },
- { 62, "vee_l",
- "A wedge shape moves from right to left",
+ &wipe_config[WIPE_CONFIG_48]},
+ {61, "vee_d",
+ "A wedge shape moves from top to bottom",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_62] },
- { 63, "vee_u",
- "A wedge shape moves from bottom to top",
+ &wipe_config[WIPE_CONFIG_61]},
+ {62, "vee_l",
+ "A wedge shape moves from right to left",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_63] },
- { 64, "vee_r",
- "A wedge shape moves from left to right",
+ &wipe_config[WIPE_CONFIG_62]},
+ {63, "vee_u",
+ "A wedge shape moves from bottom to top",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_64] },
- { 65, "barnvee_d",
- "A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
+ &wipe_config[WIPE_CONFIG_63]},
+ {64, "vee_r",
+ "A wedge shape moves from left to right",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_65] },
- { 66, "barnvee_l",
- "A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
+ &wipe_config[WIPE_CONFIG_64]},
+ {65, "barnvee_d",
+ "A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_66] },
- { 67, "barnvee_u",
- "A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
+ &wipe_config[WIPE_CONFIG_65]},
+ {66, "barnvee_l",
+ "A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_67] },
- { 68, "barnvee_r",
- "A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
+ &wipe_config[WIPE_CONFIG_66]},
+ {67, "barnvee_u",
+ "A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_68] },
- { 101, "iris_rect",
- "A rectangle expands from the center.",
+ &wipe_config[WIPE_CONFIG_67]},
+ {68, "barnvee_r",
+ "A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
gst_wipe_triangles_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_101] },
- { 201, "clock_cw12",
- "A radial hand sweeps clockwise from the twelve o'clock position",
+ &wipe_config[WIPE_CONFIG_68]},
+ {101, "iris_rect",
+ "A rectangle expands from the center.",
+ gst_wipe_triangles_draw, _gst_mask_default_destroy,
+ &wipe_config[WIPE_CONFIG_101]},
+ {201, "clock_cw12",
+ "A radial hand sweeps clockwise from the twelve o'clock position",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_201] },
- { 202, "clock_cw3",
- "A radial hand sweeps clockwise from the three o'clock position",
+ &wipe_config[WIPE_CONFIG_201]},
+ {202, "clock_cw3",
+ "A radial hand sweeps clockwise from the three o'clock position",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_202] },
- { 203, "clock_cw6",
- "A radial hand sweeps clockwise from the six o'clock position",
+ &wipe_config[WIPE_CONFIG_202]},
+ {203, "clock_cw6",
+ "A radial hand sweeps clockwise from the six o'clock position",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_203] },
- { 204, "clock_cw9",
- "A radial hand sweeps clockwise from the nine o'clock position",
+ &wipe_config[WIPE_CONFIG_203]},
+ {204, "clock_cw9",
+ "A radial hand sweeps clockwise from the nine o'clock position",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_204] },
- { 205, "pinwheel_tbv",
- "Two radial hands sweep clockwise from the twelve and six o'clock positions",
+ &wipe_config[WIPE_CONFIG_204]},
+ {205, "pinwheel_tbv",
+ "Two radial hands sweep clockwise from the twelve and six o'clock positions",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_205] },
- { 206, "pinwheel_tbh",
- "Two radial hands sweep clockwise from the nine and three o'clock positions",
+ &wipe_config[WIPE_CONFIG_205]},
+ {206, "pinwheel_tbh",
+ "Two radial hands sweep clockwise from the nine and three o'clock positions",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_206] },
- { 207, "pinwheel_fb",
- "Four radial hands sweep clockwise",
+ &wipe_config[WIPE_CONFIG_206]},
+ {207, "pinwheel_fb",
+ "Four radial hands sweep clockwise",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_207] },
- { 211, "fan_ct",
- "A fan unfolds from the top edge, the fan axis at the center",
+ &wipe_config[WIPE_CONFIG_207]},
+ {211, "fan_ct",
+ "A fan unfolds from the top edge, the fan axis at the center",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_211] },
- { 212, "fan_cr",
- "A fan unfolds from the right edge, the fan axis at the center",
+ &wipe_config[WIPE_CONFIG_211]},
+ {212, "fan_cr",
+ "A fan unfolds from the right edge, the fan axis at the center",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_212] },
- { 213, "doublefan_fov",
- "Two fans, their axes at the center, unfold from the top and bottom",
+ &wipe_config[WIPE_CONFIG_212]},
+ {213, "doublefan_fov",
+ "Two fans, their axes at the center, unfold from the top and bottom",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_213] },
- { 214, "doublefan_foh",
- "Two fans, their axes at the center, unfold from the left and right",
+ &wipe_config[WIPE_CONFIG_213]},
+ {214, "doublefan_foh",
+ "Two fans, their axes at the center, unfold from the left and right",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_214] },
- { 221, "singlesweep_cwt",
- "A radial hand sweeps clockwise from the top edge's midpoint",
+ &wipe_config[WIPE_CONFIG_214]},
+ {221, "singlesweep_cwt",
+ "A radial hand sweeps clockwise from the top edge's midpoint",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_221] },
- { 222, "singlesweep_cwr",
- "A radial hand sweeps clockwise from the right edge's midpoint",
+ &wipe_config[WIPE_CONFIG_221]},
+ {222, "singlesweep_cwr",
+ "A radial hand sweeps clockwise from the right edge's midpoint",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_222] },
- { 223, "singlesweep_cwb",
- "A radial hand sweeps clockwise from the bottom edge's midpoint",
+ &wipe_config[WIPE_CONFIG_222]},
+ {223, "singlesweep_cwb",
+ "A radial hand sweeps clockwise from the bottom edge's midpoint",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_223] },
- { 224, "singlesweep_cwl",
- "A radial hand sweeps clockwise from the left edge's midpoint",
+ &wipe_config[WIPE_CONFIG_223]},
+ {224, "singlesweep_cwl",
+ "A radial hand sweeps clockwise from the left edge's midpoint",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_224] },
- { 225, "doublesweep_pv",
- "Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints",
+ &wipe_config[WIPE_CONFIG_224]},
+ {225, "doublesweep_pv",
+ "Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_225] },
- { 226, "doublesweep_pd",
- "Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints",
+ &wipe_config[WIPE_CONFIG_225]},
+ {226, "doublesweep_pd",
+ "Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_226] },
- { 227, "doublesweep_ov",
- "Two radial hands attached at the top and bottom edges' midpoints sweep from right to left",
+ &wipe_config[WIPE_CONFIG_226]},
+ {227, "doublesweep_ov",
+ "Two radial hands attached at the top and bottom edges' midpoints sweep from right to left",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_227] },
- { 228, "doublesweep_oh",
- "Two radial hands attached at the left and right edges' midpoints sweep from top to bottom",
+ &wipe_config[WIPE_CONFIG_227]},
+ {228, "doublesweep_oh",
+ "Two radial hands attached at the left and right edges' midpoints sweep from top to bottom",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_228] },
- { 231, "fan_t",
- "A fan unfolds from the bottom, the fan axis at the top edge's midpoint",
+ &wipe_config[WIPE_CONFIG_228]},
+ {231, "fan_t",
+ "A fan unfolds from the bottom, the fan axis at the top edge's midpoint",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_231] },
- { 232, "fan_r",
- "A fan unfolds from the left, the fan axis at the right edge's midpoint",
+ &wipe_config[WIPE_CONFIG_231]},
+ {232, "fan_r",
+ "A fan unfolds from the left, the fan axis at the right edge's midpoint",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_232] },
- { 233, "fan_b",
- "A fan unfolds from the top, the fan axis at the bottom edge's midpoint",
+ &wipe_config[WIPE_CONFIG_232]},
+ {233, "fan_b",
+ "A fan unfolds from the top, the fan axis at the bottom edge's midpoint",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_233] },
- { 234, "fan_l",
- "A fan unfolds from the right, the fan axis at the left edge's midpoint",
+ &wipe_config[WIPE_CONFIG_233]},
+ {234, "fan_l",
+ "A fan unfolds from the right, the fan axis at the left edge's midpoint",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_234] },
- { 235, "doublefan_fiv",
- "Two fans, their axes at the top and bottom, unfold from the center",
+ &wipe_config[WIPE_CONFIG_234]},
+ {235, "doublefan_fiv",
+ "Two fans, their axes at the top and bottom, unfold from the center",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_235] },
- { 236, "doublefan_fih",
- "Two fans, their axes at the left and right, unfold from the center",
+ &wipe_config[WIPE_CONFIG_235]},
+ {236, "doublefan_fih",
+ "Two fans, their axes at the left and right, unfold from the center",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_236] },
- { 241, "singlesweep_cwtl",
- "A radial hand sweeps clockwise from the upper-left corner",
+ &wipe_config[WIPE_CONFIG_236]},
+ {241, "singlesweep_cwtl",
+ "A radial hand sweeps clockwise from the upper-left corner",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_241] },
- { 242, "singlesweep_cwbl",
- "A radial hand sweeps counter-clockwise from the lower-left corner.",
+ &wipe_config[WIPE_CONFIG_241]},
+ {242, "singlesweep_cwbl",
+ "A radial hand sweeps counter-clockwise from the lower-left corner.",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_242] },
- { 243, "singlesweep_cwbr",
- "A radial hand sweeps clockwise from the lower-right corner",
+ &wipe_config[WIPE_CONFIG_242]},
+ {243, "singlesweep_cwbr",
+ "A radial hand sweeps clockwise from the lower-right corner",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_243] },
- { 244, "singlesweep_cwtr",
- "A radial hand sweeps counter-clockwise from the upper-right corner",
+ &wipe_config[WIPE_CONFIG_243]},
+ {244, "singlesweep_cwtr",
+ "A radial hand sweeps counter-clockwise from the upper-right corner",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_244] },
- { 245, "doublesweep_pdtl",
- "Two radial hands attached at the upper-left and lower-right corners sweep down and up",
+ &wipe_config[WIPE_CONFIG_244]},
+ {245, "doublesweep_pdtl",
+ "Two radial hands attached at the upper-left and lower-right corners sweep down and up",
gst_wipe_triangles_clock_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_245] },
- { 246, "doublesweep_pdbl",
- "Two radial hands attached at the lower-left and upper-right corners sweep down and up",
+ &wipe_config[WIPE_CONFIG_245]},
+ {246, "doublesweep_pdbl",
+ "Two radial hands attached at the lower-left and upper-right corners sweep down and up",
gst_wipe_triangles_clock_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_246] },
- { 251, "saloondoor_t",
- "Two radial hands attached at the upper-left and upper-right corners sweep down",
+ &wipe_config[WIPE_CONFIG_246]},
+ {251, "saloondoor_t",
+ "Two radial hands attached at the upper-left and upper-right corners sweep down",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_251] },
- { 252, "saloondoor_l",
- "Two radial hands attached at the upper-left and lower-left corners sweep to the right",
+ &wipe_config[WIPE_CONFIG_251]},
+ {252, "saloondoor_l",
+ "Two radial hands attached at the upper-left and lower-left corners sweep to the right",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_252] },
- { 253, "saloondoor_b",
- "Two radial hands attached at the lower-left and lower-right corners sweep up",
+ &wipe_config[WIPE_CONFIG_252]},
+ {253, "saloondoor_b",
+ "Two radial hands attached at the lower-left and lower-right corners sweep up",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_253] },
- { 254, "saloondoor_r",
- "Two radial hands attached at the upper-right and lower-right corners sweep to the left",
+ &wipe_config[WIPE_CONFIG_253]},
+ {254, "saloondoor_r",
+ "Two radial hands attached at the upper-right and lower-right corners sweep to the left",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_254] },
- { 261, "windshield_r",
- "Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left",
+ &wipe_config[WIPE_CONFIG_254]},
+ {261, "windshield_r",
+ "Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_261] },
- { 262, "windshield_u",
- "Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom",
+ &wipe_config[WIPE_CONFIG_261]},
+ {262, "windshield_u",
+ "Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_262] },
- { 263, "windshield_v",
- "Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top",
+ &wipe_config[WIPE_CONFIG_262]},
+ {263, "windshield_v",
+ "Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_263] },
- { 264, "windshield_h",
- "Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left",
+ &wipe_config[WIPE_CONFIG_263]},
+ {264, "windshield_h",
+ "Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left",
gst_wipe_boxes_draw, _gst_mask_default_destroy,
- &wipe_config[WIPE_CONFIG_264] },
- { 0, NULL, NULL, NULL }
+ &wipe_config[WIPE_CONFIG_264]},
+ {0, NULL, NULL, NULL}
};
void
@@ -931,4 +920,3 @@ _gst_barboxwipes_register (void)
i++;
}
}
-
diff --git a/gst/smpte/gstmask.c b/gst/smpte/gstmask.c
index 13c79b34..0e2cf01f 100644
--- a/gst/smpte/gstmask.c
+++ b/gst/smpte/gstmask.c
@@ -35,25 +35,25 @@ _gst_mask_init (void)
}
static gint
-gst_mask_compare (GstMaskDefinition *def1,
- GstMaskDefinition *def2)
+gst_mask_compare (GstMaskDefinition * def1, GstMaskDefinition * def2)
{
return (def1->type - def2->type);
}
void
-_gst_mask_register (GstMaskDefinition *definition)
+_gst_mask_register (GstMaskDefinition * definition)
{
- masks = g_list_insert_sorted (masks, definition, (GCompareFunc) gst_mask_compare);
+ masks =
+ g_list_insert_sorted (masks, definition, (GCompareFunc) gst_mask_compare);
}
-const GList*
+const GList *
gst_mask_get_definitions (void)
{
return masks;
}
-static GstMaskDefinition*
+static GstMaskDefinition *
gst_mask_find_definition (gint type)
{
GList *walk = masks;
@@ -63,13 +63,13 @@ gst_mask_find_definition (gint type)
if (def->type == type)
return def;
-
+
walk = g_list_next (walk);
}
return NULL;
}
-GstMask*
+GstMask *
gst_mask_factory_new (gint type, gint bpp, gint width, gint height)
{
GstMaskDefinition *definition;
@@ -95,14 +95,14 @@ gst_mask_factory_new (gint type, gint bpp, gint width, gint height)
}
void
-_gst_mask_default_destroy (GstMask *mask)
+_gst_mask_default_destroy (GstMask * mask)
{
g_free (mask->data);
g_free (mask);
}
void
-gst_mask_destroy (GstMask *mask)
+gst_mask_destroy (GstMask * mask)
{
if (mask->destroy_func)
mask->destroy_func (mask);
diff --git a/gst/smpte/gstmask.h b/gst/smpte/gstmask.h
index 6131c624..6f82078f 100644
--- a/gst/smpte/gstmask.h
+++ b/gst/smpte/gstmask.h
@@ -27,37 +27,39 @@
typedef struct _GstMask GstMask;
typedef struct _GstMaskDefinition GstMaskDefinition;
-typedef void (*GstMaskDrawFunc) (GstMask *mask);
-typedef void (*GstMaskDestroyFunc) (GstMask *mask);
-
-struct _GstMaskDefinition {
- gint type;
- gchar *short_name;
- gchar *long_name;
- GstMaskDrawFunc draw_func;
- GstMaskDestroyFunc destroy_func;
- gpointer user_data;
+typedef void (*GstMaskDrawFunc) (GstMask * mask);
+typedef void (*GstMaskDestroyFunc) (GstMask * mask);
+
+struct _GstMaskDefinition
+{
+ gint type;
+ gchar *short_name;
+ gchar *long_name;
+ GstMaskDrawFunc draw_func;
+ GstMaskDestroyFunc destroy_func;
+ gpointer user_data;
};
-struct _GstMask {
- gint type;
- guint32 *data;
- gpointer user_data;
+struct _GstMask
+{
+ gint type;
+ guint32 *data;
+ gpointer user_data;
- gint width;
- gint height;
- gint bpp;
+ gint width;
+ gint height;
+ gint bpp;
- GstMaskDestroyFunc destroy_func;
+ GstMaskDestroyFunc destroy_func;
};
-void _gst_mask_init (void);
-void _gst_mask_register (GstMaskDefinition *definition);
+void _gst_mask_init (void);
+void _gst_mask_register (GstMaskDefinition * definition);
-void _gst_mask_default_destroy (GstMask *mask);
+void _gst_mask_default_destroy (GstMask * mask);
-const GList* gst_mask_get_definitions (void);
-GstMask* gst_mask_factory_new (gint type, gint bpp, gint width, gint height);
-void gst_mask_destroy (GstMask *mask);
+const GList *gst_mask_get_definitions (void);
+GstMask *gst_mask_factory_new (gint type, gint bpp, gint width, gint height);
+void gst_mask_destroy (GstMask * mask);
#endif /* __GST_MASK_H__ */
diff --git a/gst/smpte/gstsmpte.c b/gst/smpte/gstsmpte.c
index 5899a9a1..91b91d9d 100644
--- a/gst/smpte/gstsmpte.c
+++ b/gst/smpte/gstsmpte.c
@@ -34,43 +34,39 @@ static GstElementDetails smpte_details = {
};
static GstStaticPadTemplate gst_smpte_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- GST_VIDEO_CAPS_YUV("I420")
- )
-);
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420")
+ )
+ );
static GstStaticPadTemplate gst_smpte_sink1_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink1",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- GST_VIDEO_CAPS_YUV("I420")
- )
-);
+GST_STATIC_PAD_TEMPLATE ("sink1",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420")
+ )
+ );
static GstStaticPadTemplate gst_smpte_sink2_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink2",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- GST_VIDEO_CAPS_YUV("I420")
- )
-);
+GST_STATIC_PAD_TEMPLATE ("sink2",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420")
+ )
+ );
/* SMPTE signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_TYPE,
ARG_BORDER,
@@ -80,48 +76,51 @@ enum {
#define GST_TYPE_SMPTE_TRANSITION_TYPE (gst_smpte_transition_type_get_type())
static GType
-gst_smpte_transition_type_get_type (void)
+gst_smpte_transition_type_get_type (void)
{
static GType smpte_transition_type = 0;
GEnumValue *smpte_transitions;
if (!smpte_transition_type) {
const GList *definitions;
- gint i=0;
+ gint i = 0;
definitions = gst_mask_get_definitions ();
- smpte_transitions = g_new0 (GEnumValue, g_list_length ((GList *)definitions)+1);
+ smpte_transitions =
+ g_new0 (GEnumValue, g_list_length ((GList *) definitions) + 1);
while (definitions) {
GstMaskDefinition *definition = (GstMaskDefinition *) definitions->data;
+
definitions = g_list_next (definitions);
smpte_transitions[i].value = definition->type;
smpte_transitions[i].value_name = definition->short_name;
smpte_transitions[i].value_nick = definition->long_name;
-
+
i++;
}
- smpte_transition_type =
- g_enum_register_static ("GstSMPTETransitionType", smpte_transitions);
+ smpte_transition_type =
+ g_enum_register_static ("GstSMPTETransitionType", smpte_transitions);
}
return smpte_transition_type;
-}
+}
-static void gst_smpte_class_init (GstSMPTEClass *klass);
-static void gst_smpte_base_init (GstSMPTEClass *klass);
-static void gst_smpte_init (GstSMPTE *smpte);
+static void gst_smpte_class_init (GstSMPTEClass * klass);
+static void gst_smpte_base_init (GstSMPTEClass * klass);
+static void gst_smpte_init (GstSMPTE * smpte);
-static void gst_smpte_loop (GstElement *element);
+static void gst_smpte_loop (GstElement * element);
-static void gst_smpte_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_smpte_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static void gst_smpte_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_smpte_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_smpte_signals[LAST_SIGNAL] = { 0 }; */
static GType
@@ -131,45 +130,46 @@ gst_smpte_get_type (void)
if (!smpte_type) {
static const GTypeInfo smpte_info = {
- sizeof(GstSMPTEClass),
- (GBaseInitFunc)gst_smpte_base_init,
+ sizeof (GstSMPTEClass),
+ (GBaseInitFunc) gst_smpte_base_init,
NULL,
- (GClassInitFunc)gst_smpte_class_init,
+ (GClassInitFunc) gst_smpte_class_init,
NULL,
NULL,
- sizeof(GstSMPTE),
+ sizeof (GstSMPTE),
0,
- (GInstanceInitFunc)gst_smpte_init,
+ (GInstanceInitFunc) gst_smpte_init,
};
- smpte_type = g_type_register_static(GST_TYPE_ELEMENT, "GstSMPTE", &smpte_info, 0);
+ smpte_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstSMPTE", &smpte_info, 0);
}
return smpte_type;
}
static void
-gst_smpte_base_init (GstSMPTEClass *klass)
+gst_smpte_base_init (GstSMPTEClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get(&gst_smpte_sink1_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get(&gst_smpte_sink2_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get(&gst_smpte_src_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&gst_smpte_sink1_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&gst_smpte_sink2_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&gst_smpte_src_template));
gst_element_class_set_details (element_class, &smpte_details);
}
static void
-gst_smpte_class_init (GstSMPTEClass *klass)
+gst_smpte_class_init (GstSMPTEClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gobject_class->set_property = gst_smpte_set_property;
gobject_class->get_property = gst_smpte_get_property;
@@ -177,39 +177,42 @@ gst_smpte_class_init (GstSMPTEClass *klass)
_gst_mask_init ();
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TYPE,
- g_param_spec_enum ("type", "Type", "The type of transition to use",
- GST_TYPE_SMPTE_TRANSITION_TYPE, 1, G_PARAM_READWRITE));
+ g_param_spec_enum ("type", "Type", "The type of transition to use",
+ GST_TYPE_SMPTE_TRANSITION_TYPE, 1, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FPS,
- g_param_spec_float ("fps", "FPS", "Frames per second if no input files are given",
- 0., G_MAXFLOAT, 25., G_PARAM_READWRITE));
+ g_param_spec_float ("fps", "FPS",
+ "Frames per second if no input files are given", 0., G_MAXFLOAT, 25.,
+ G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BORDER,
- g_param_spec_int ("border", "Border", "The border width of the transition",
- 0, G_MAXINT, 0, G_PARAM_READWRITE));
+ g_param_spec_int ("border", "Border",
+ "The border width of the transition", 0, G_MAXINT, 0,
+ G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DEPTH,
- g_param_spec_int ("depth", "Depth", "Depth of the mask in bits",
- 1, 24, 16, G_PARAM_READWRITE));
+ g_param_spec_int ("depth", "Depth", "Depth of the mask in bits", 1, 24,
+ 16, G_PARAM_READWRITE));
}
/* wht yel cya grn mag red blu blk -I Q */
-static int y_colors[] = { 255, 226, 179, 150, 105, 76, 29, 16, 16, 0 };
-static int u_colors[] = { 128, 0, 170, 46, 212, 85, 255, 128, 0, 128 };
-static int v_colors[] = { 128, 155, 0, 21, 235, 255, 107, 128, 128, 255 };
+static int y_colors[] = { 255, 226, 179, 150, 105, 76, 29, 16, 16, 0 };
+static int u_colors[] = { 128, 0, 170, 46, 212, 85, 255, 128, 0, 128 };
+static int v_colors[] = { 128, 155, 0, 21, 235, 255, 107, 128, 128, 255 };
static void
-fill_i420 (guint8 *data, gint width, gint height, gint color)
+fill_i420 (guint8 * data, gint width, gint height, gint color)
{
gint size = width * height, size4 = size >> 2;
guint8 *yp = data;
guint8 *up = data + size;
guint8 *vp = data + size + size4;
-
+
memset (yp, y_colors[color], size);
memset (up, u_colors[color], size4);
memset (vp, v_colors[color], size4);
}
static gboolean
-gst_smpte_update_mask (GstSMPTE *smpte, gint type, gint depth, gint width, gint height)
+gst_smpte_update_mask (GstSMPTE * smpte, gint type, gint depth, gint width,
+ gint height)
{
GstMask *newmask;
@@ -230,7 +233,7 @@ gst_smpte_update_mask (GstSMPTE *smpte, gint type, gint depth, gint width, gint
}
static gboolean
-gst_smpte_sinkconnect (GstPad *pad, const GstCaps *caps)
+gst_smpte_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstSMPTE *smpte;
GstStructure *structure;
@@ -243,29 +246,34 @@ gst_smpte_sinkconnect (GstPad *pad, const GstCaps *caps)
ret = gst_structure_get_int (structure, "width", &smpte->width);
ret &= gst_structure_get_int (structure, "height", &smpte->height);
ret &= gst_structure_get_double (structure, "framerate", &smpte->fps);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
- gst_smpte_update_mask (smpte, smpte->type, smpte->depth, smpte->width, smpte->height);
+ gst_smpte_update_mask (smpte, smpte->type, smpte->depth, smpte->width,
+ smpte->height);
/* forward to the next plugin */
- return gst_pad_try_set_caps(smpte->srcpad, caps);
+ return gst_pad_try_set_caps (smpte->srcpad, caps);
}
-static void
-gst_smpte_init (GstSMPTE *smpte)
+static void
+gst_smpte_init (GstSMPTE * smpte)
{
- smpte->sinkpad1 = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_smpte_sink1_template), "sink1");
+ smpte->sinkpad1 =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_smpte_sink1_template), "sink1");
gst_pad_set_link_function (smpte->sinkpad1, gst_smpte_sinkconnect);
gst_element_add_pad (GST_ELEMENT (smpte), smpte->sinkpad1);
- smpte->sinkpad2 = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_smpte_sink2_template), "sink2");
+ smpte->sinkpad2 =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_smpte_sink2_template), "sink2");
gst_pad_set_link_function (smpte->sinkpad2, gst_smpte_sinkconnect);
gst_element_add_pad (GST_ELEMENT (smpte), smpte->sinkpad2);
- smpte->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get(&gst_smpte_src_template), "src");
+ smpte->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_smpte_src_template), "src");
gst_element_add_pad (GST_ELEMENT (smpte), smpte->srcpad);
gst_element_set_loop_function (GST_ELEMENT (smpte), gst_smpte_loop);
@@ -278,48 +286,53 @@ gst_smpte_init (GstSMPTE *smpte)
smpte->type = 1;
smpte->border = 0;
smpte->depth = 16;
- gst_smpte_update_mask (smpte, smpte->type, smpte->depth, smpte->width, smpte->height);
+ gst_smpte_update_mask (smpte, smpte->type, smpte->depth, smpte->width,
+ smpte->height);
}
static void
-gst_smpte_blend_i420 (guint8 *in1, guint8 *in2, guint8 *out, GstMask *mask,
- gint width, gint height, gint border, gint pos)
+gst_smpte_blend_i420 (guint8 * in1, guint8 * in2, guint8 * out, GstMask * mask,
+ gint width, gint height, gint border, gint pos)
{
guint32 *maskp;
gint value;
gint i, j;
gint min, max;
- guint8 *in1u, *in1v, *in2u, *in2v, *outu, *outv;
+ guint8 *in1u, *in1v, *in2u, *in2v, *outu, *outv;
gint lumsize = width * height;
gint chromsize = lumsize >> 2;
- if (border == 0) border++;
+ if (border == 0)
+ border++;
- min = pos - border;
+ min = pos - border;
max = pos;
- in1u = in1 + lumsize; in1v = in1u + chromsize;
- in2u = in2 + lumsize; in2v = in2u + chromsize;
- outu = out + lumsize; outv = outu + chromsize;
-
+ in1u = in1 + lumsize;
+ in1v = in1u + chromsize;
+ in2u = in2 + lumsize;
+ in2v = in2u + chromsize;
+ outu = out + lumsize;
+ outv = outu + chromsize;
+
maskp = mask->data;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
value = *maskp++;
value = ((CLAMP (value, min, max) - min) << 8) / border;
-
+
*out++ = ((*in1++ * value) + (*in2++ * (256 - value))) >> 8;
if (!(i & 1) && !(j & 1)) {
- *outu++ = ((*in1u++ * value) + (*in2u++ * (256 - value))) >> 8;
- *outv++ = ((*in1v++ * value) + (*in2v++ * (256 - value))) >> 8;
+ *outu++ = ((*in1u++ * value) + (*in2u++ * (256 - value))) >> 8;
+ *outv++ = ((*in1v++ * value) + (*in2v++ * (256 - value))) >> 8;
}
}
}
}
static void
-gst_smpte_loop (GstElement *element)
+gst_smpte_loop (GstElement * element)
{
GstSMPTE *smpte;
GstBuffer *outbuf;
@@ -335,8 +348,7 @@ gst_smpte_loop (GstElement *element)
if (GST_IS_EVENT (in1)) {
gst_pad_push (smpte->srcpad, GST_DATA (in1));
in1 = NULL;
- }
- else
+ } else
ts = GST_BUFFER_TIMESTAMP (in1);
}
if (GST_PAD_IS_USABLE (smpte->sinkpad2) && in2 == NULL) {
@@ -344,8 +356,7 @@ gst_smpte_loop (GstElement *element)
if (GST_IS_EVENT (in2)) {
gst_pad_push (smpte->srcpad, GST_DATA (in2));
in2 = NULL;
- }
- else
+ } else
ts = GST_BUFFER_TIMESTAMP (in2);
}
@@ -358,33 +369,33 @@ gst_smpte_loop (GstElement *element)
fill_i420 (GST_BUFFER_DATA (in2), smpte->width, smpte->height, 0);
}
- if (smpte->position < smpte->duration) {
+ if (smpte->position < smpte->duration) {
outbuf = gst_buffer_new_and_alloc (smpte->width * smpte->height * 3);
if (!GST_PAD_CAPS (smpte->srcpad)) {
GstCaps *caps;
- caps = gst_caps_copy (gst_static_caps_get (
- &gst_smpte_src_template.static_caps));
- gst_caps_set_simple (caps,
- "width", G_TYPE_INT, smpte->width,
- "height", G_TYPE_INT, smpte->height,
- "framerate", G_TYPE_DOUBLE, smpte->fps, NULL);
+
+ caps =
+ gst_caps_copy (gst_static_caps_get (&gst_smpte_src_template.
+ static_caps));
+ gst_caps_set_simple (caps, "width", G_TYPE_INT, smpte->width, "height",
+ G_TYPE_INT, smpte->height, "framerate", G_TYPE_DOUBLE, smpte->fps,
+ NULL);
if (!gst_pad_try_set_caps (smpte->srcpad, caps)) {
- GST_ELEMENT_ERROR (smpte, CORE, NEGOTIATION, (NULL), (NULL));
- return;
+ GST_ELEMENT_ERROR (smpte, CORE, NEGOTIATION, (NULL), (NULL));
+ return;
}
}
- gst_smpte_blend_i420 (GST_BUFFER_DATA (in1),
- GST_BUFFER_DATA (in2),
- GST_BUFFER_DATA (outbuf),
- smpte->mask, smpte->width, smpte->height,
- smpte->border,
- ((1 << smpte->depth) + smpte->border) *
- smpte->position / smpte->duration);
- }
- else {
+ gst_smpte_blend_i420 (GST_BUFFER_DATA (in1),
+ GST_BUFFER_DATA (in2),
+ GST_BUFFER_DATA (outbuf),
+ smpte->mask, smpte->width, smpte->height,
+ smpte->border,
+ ((1 << smpte->depth) + smpte->border) *
+ smpte->position / smpte->duration);
+ } else {
outbuf = in2;
gst_buffer_ref (in2);
}
@@ -401,20 +412,20 @@ gst_smpte_loop (GstElement *element)
}
static void
-gst_smpte_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
+gst_smpte_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstSMPTE *smpte;
- smpte = GST_SMPTE(object);
+ smpte = GST_SMPTE (object);
switch (prop_id) {
case ARG_TYPE:
{
gint type = g_value_get_enum (value);
- gst_smpte_update_mask (smpte, type, smpte->depth,
- smpte->width, smpte->height);
+ gst_smpte_update_mask (smpte, type, smpte->depth,
+ smpte->width, smpte->height);
break;
}
case ARG_BORDER:
@@ -427,8 +438,8 @@ gst_smpte_set_property (GObject *object, guint prop_id,
{
gint depth = g_value_get_int (value);
- gst_smpte_update_mask (smpte, smpte->type, depth,
- smpte->width, smpte->height);
+ gst_smpte_update_mask (smpte, smpte->type, depth,
+ smpte->width, smpte->height);
break;
}
default:
@@ -438,12 +449,12 @@ gst_smpte_set_property (GObject *object, guint prop_id,
}
static void
-gst_smpte_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
+gst_smpte_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
{
GstSMPTE *smpte;
- smpte = GST_SMPTE(object);
+ smpte = GST_SMPTE (object);
switch (prop_id) {
case ARG_TYPE:
@@ -468,20 +479,13 @@ gst_smpte_get_property (GObject *object, guint prop_id,
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- return gst_element_register(plugin, "smpte",
- GST_RANK_NONE, GST_TYPE_SMPTE);
+ return gst_element_register (plugin, "smpte", GST_RANK_NONE, GST_TYPE_SMPTE);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "smpte",
- "Apply the standard SMPTE transitions on video images",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "smpte",
+ "Apply the standard SMPTE transitions on video images",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/smpte/gstsmpte.h b/gst/smpte/gstsmpte.h
index 40844209..762eebf8 100644
--- a/gst/smpte/gstsmpte.h
+++ b/gst/smpte/gstsmpte.h
@@ -38,28 +38,28 @@
typedef struct _GstSMPTE GstSMPTE;
typedef struct _GstSMPTEClass GstSMPTEClass;
-struct _GstSMPTE {
- GstElement element;
+struct _GstSMPTE
+{
+ GstElement element;
- gint format;
- gint width;
- gint height;
- gdouble fps;
+ gint format;
+ gint width;
+ gint height;
+ gdouble fps;
- gint duration;
- gint position;
+ gint duration;
+ gint position;
- GstPad *srcpad,
- *sinkpad1,
- *sinkpad2;
+ GstPad *srcpad, *sinkpad1, *sinkpad2;
- gint type;
- gint border;
- gint depth;
- GstMask *mask;
+ gint type;
+ gint border;
+ gint depth;
+ GstMask *mask;
};
-struct _GstSMPTEClass {
+struct _GstSMPTEClass
+{
GstElementClass parent_class;
};
diff --git a/gst/smpte/paint.c b/gst/smpte/paint.c
index dae3c6f1..fdff77e5 100644
--- a/gst/smpte/paint.c
+++ b/gst/smpte/paint.c
@@ -26,21 +26,20 @@
#include "paint.h"
void
-gst_smpte_paint_vbox (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1)
+gst_smpte_paint_vbox (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0, gint x1, gint y1, gint c1)
{
gint i, j;
gint width, height;
width = x1 - x0;
height = y1 - y0;
-
+
g_assert (width > 0);
g_assert (height > 0);
dest = dest + y0 * stride + x0;
-
+
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
dest[j] = (c1 * j + c0 * (width - j)) / width;
@@ -50,16 +49,15 @@ gst_smpte_paint_vbox (guint32 *dest, gint stride,
}
void
-gst_smpte_paint_hbox (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1)
+gst_smpte_paint_hbox (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0, gint x1, gint y1, gint c1)
{
gint i, j;
gint width, height;
width = x1 - x0;
height = y1 - y0;
-
+
g_assert (width > 0);
g_assert (height > 0);
@@ -68,7 +66,8 @@ gst_smpte_paint_hbox (guint32 *dest, gint stride,
dest = dest + y0 * stride + x0;
for (i = 0; i < height; i++) {
- guint32 value = (c1 * i + c0 * (height - i)) / height;
+ guint32 value = (c1 * i + c0 * (height - i)) / height;
+
for (j = 0; j < width; j++) {
dest[j] = value;
}
@@ -148,29 +147,35 @@ G_STMT_START { \
} G_STMT_END
void
-gst_smpte_paint_triangle_linear (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1, gint x2, gint y2, gint c2)
+gst_smpte_paint_triangle_linear (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0,
+ gint x1, gint y1, gint c1, gint x2, gint y2, gint c2)
{
gint sdxl, sdyl, sdcl, dxlabs, dylabs, dclabs, xrl, yrl, crl, pxl, pyl, pcl;
gint sdxr, sdyr, sdcr, dxrabs, dyrabs, dcrabs, xrr, yrr, crr, pxr, pyr, pcr;
gint i, j, k, seg_start, seg_end;
- if (y0 > y1) { SWAP_INT (x0, x1); SWAP_INT (y0, y1); SWAP_INT (c0, c1); }
- if (y0 > y2) { SWAP_INT (x0, x2); SWAP_INT (y0, y2); SWAP_INT (c0, c2); }
- if (y1 > y2) { SWAP_INT (x1, x2); SWAP_INT (y1, y2); SWAP_INT (c1, c2); }
-
- PREPARE_3D_LINE (x0,y0,c0,x2,y2,c2,
- dxlabs,dylabs,dclabs,
- sdxl, sdyl,sdcl,
- xrl,yrl,crl,
- pxl,pyl,pcl);
-
- PREPARE_3D_LINE (x0,y0,c0,x1,y1,c1,
- dxrabs,dyrabs,dcrabs,
- sdxr, sdyr,sdcr,
- xrr,yrr,crr,
- pxr,pyr,pcr);
+ if (y0 > y1) {
+ SWAP_INT (x0, x1);
+ SWAP_INT (y0, y1);
+ SWAP_INT (c0, c1);
+ }
+ if (y0 > y2) {
+ SWAP_INT (x0, x2);
+ SWAP_INT (y0, y2);
+ SWAP_INT (c0, c2);
+ }
+ if (y1 > y2) {
+ SWAP_INT (x1, x2);
+ SWAP_INT (y1, y2);
+ SWAP_INT (c1, c2);
+ }
+
+ PREPARE_3D_LINE (x0, y0, c0, x2, y2, c2,
+ dxlabs, dylabs, dclabs, sdxl, sdyl, sdcl, xrl, yrl, crl, pxl, pyl, pcl);
+
+ PREPARE_3D_LINE (x0, y0, c0, x1, y1, c1,
+ dxrabs, dyrabs, dcrabs, sdxr, sdyr, sdcr, xrr, yrr, crr, pxr, pyr, pcr);
dest = dest + stride * y0;
seg_start = y0;
@@ -183,37 +188,32 @@ gst_smpte_paint_triangle_linear (guint32 *dest, gint stride,
gint sign = SIGN (e - s);
e += sign;
- for (j = s; j != e; j+=sign) {
- dest[j] = (ec * (j - s) + sc * (e - j)) / (e - s);
+ for (j = s; j != e; j += sign) {
+ dest[j] = (ec * (j - s) + sc * (e - j)) / (e - s);
}
while (pyr == i) {
- STEP_3D_LINE (dxrabs, dyrabs, dcrabs, sdxr, sdyr, sdcr,
- xrr, yrr, crr, pxr, pyr, pcr);
+ STEP_3D_LINE (dxrabs, dyrabs, dcrabs, sdxr, sdyr, sdcr,
+ xrr, yrr, crr, pxr, pyr, pcr);
}
while (pyl == i) {
- STEP_3D_LINE (dxlabs, dylabs, dclabs, sdxl, sdyl, sdcl,
- xrl, yrl, crl, pxl, pyl, pcl);
+ STEP_3D_LINE (dxlabs, dylabs, dclabs, sdxl, sdyl, sdcl,
+ xrl, yrl, crl, pxl, pyl, pcl);
}
dest += stride;
}
- PREPARE_3D_LINE (x1,y1,c1,x2,y2,c2,
- dxrabs,dyrabs,dcrabs,
- sdxr, sdyr,sdcr,
- xrr,yrr,crr,
- pxr,pyr,pcr);
+ PREPARE_3D_LINE (x1, y1, c1, x2, y2, c2,
+ dxrabs, dyrabs, dcrabs, sdxr, sdyr, sdcr, xrr, yrr, crr, pxr, pyr, pcr);
seg_start = y1;
seg_end = y2;
}
}
-static void
-draw_bresenham_line (guint32 *dest, gint stride,
- gint x0, gint y0,
- gint x1, gint y1,
- guint32 col)
+static void
+draw_bresenham_line (guint32 * dest, gint stride,
+ gint x0, gint y0, gint x1, gint y1, guint32 col)
{
gint dx = abs (x1 - x0);
gint dy = abs (y1 - y0);
@@ -224,13 +224,12 @@ draw_bresenham_line (guint32 *dest, gint stride,
x_incr = SIGN (x1 - x0);
y_incr = SIGN (y1 - y0) * stride;
-
- if (dx >= dy) {
+
+ if (dx >= dy) {
dpr = dy << 1;
i = dx;
indep = x_incr;
- }
- else {
+ } else {
dpr = dx << 1;
i = dy;
indep = y_incr;
@@ -242,7 +241,7 @@ draw_bresenham_line (guint32 *dest, gint stride,
for (; i >= 0; i--) {
*dest = col;
- if (P > 0) {
+ if (P > 0) {
dest += x_incr;
dest += y_incr;
P += dpru;
@@ -254,10 +253,9 @@ draw_bresenham_line (guint32 *dest, gint stride,
}
void
-gst_smpte_paint_triangle_clock (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1,
- gint x2, gint y2, gint c2)
+gst_smpte_paint_triangle_clock (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0,
+ gint x1, gint y1, gint c1, gint x2, gint y2, gint c2)
{
gint i;
gint sign;
@@ -265,11 +263,11 @@ gst_smpte_paint_triangle_clock (guint32 *dest, gint stride,
gfloat len1;
angle_s = 0.0;
- angle_e = acos (((x1-x0) * (x2-x0) + (y1-y0) * (y2-y0))/
- (sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)) *
- sqrt ((x2-x0) * (x2-x0) + (y2-y0) * (y2-y0))));
+ angle_e = acos (((x1 - x0) * (x2 - x0) + (y1 - y0) * (y2 - y0)) /
+ (sqrt ((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)) *
+ sqrt ((x2 - x0) * (x2 - x0) + (y2 - y0) * (y2 - y0))));
- len1 = sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0));
+ len1 = sqrt ((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0));
if (x1 == x2) {
sign = SIGN (y2 - y1);
@@ -278,65 +276,57 @@ gst_smpte_paint_triangle_clock (guint32 *dest, gint stride,
if (y1 == i)
angle = 0;
else
- angle = acos (((x1-x0) * (x2-x0) + (y1-y0) * (i-y0)) /
- (len1 * sqrt ((x1-x0) * (x1-x0) + (i-y0) * (i-y0)))) / angle_e;
+ angle = acos (((x1 - x0) * (x2 - x0) + (y1 - y0) * (i - y0)) /
+ (len1 * sqrt ((x1 - x0) * (x1 - x0) + (i - y0) * (i -
+ y0)))) / angle_e;
draw_bresenham_line (dest, stride,
- x0, y0, x1, i,
- (c2 * angle + c1 * (1.0-angle)));
+ x0, y0, x1, i, (c2 * angle + c1 * (1.0 - angle)));
}
- }
- else if (y1 == y2) {
+ } else if (y1 == y2) {
sign = SIGN (x2 - x1);
for (i = x1; i != (x2 + sign); i += sign) {
if (x1 == i)
angle = 0;
else
- angle = acos (((x1-x0) * (i-x0) + (y1-y0) * (y2-y0)) /
- (len1 * sqrt ((i-x0) * (i-x0) + (y2-y0) * (y2-y0)))) / angle_e;
+ angle = acos (((x1 - x0) * (i - x0) + (y1 - y0) * (y2 - y0)) /
+ (len1 * sqrt ((i - x0) * (i - x0) + (y2 - y0) * (y2 -
+ y0)))) / angle_e;
draw_bresenham_line (dest, stride,
- x0, y0, i, y1,
- (c2 * angle + c1 * (1.0-angle)));
+ x0, y0, i, y1, (c2 * angle + c1 * (1.0 - angle)));
}
}
}
void
-gst_smpte_paint_box_clock (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1,
- gint x2, gint y2, gint c2)
+gst_smpte_paint_box_clock (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0,
+ gint x1, gint y1, gint c1, gint x2, gint y2, gint c2)
{
gfloat angle_m, col_m;
gint xv, yv;
- if (x1 == x0) {
+ if (x1 == x0) {
xv = x2;
yv = y1;
} else if (y1 == y0) {
xv = x1;
yv = y2;
- }
- else {
+ } else {
g_warning ("paint box clock: not supported");
return;
}
- angle_m = 2 * acos (((x1-x0) * (xv-x0) + (y1-y0) * (yv-y0))/
- (sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)) *
- sqrt ((xv-x0) * (xv-x0) + (yv-y0) * (yv-y0)))) / M_PI;
-
- col_m = c2 * angle_m + c1 * (1.0-angle_m);
+ angle_m = 2 * acos (((x1 - x0) * (xv - x0) + (y1 - y0) * (yv - y0)) /
+ (sqrt ((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)) *
+ sqrt ((xv - x0) * (xv - x0) + (yv - y0) * (yv - y0)))) / M_PI;
+
+ col_m = c2 * angle_m + c1 * (1.0 - angle_m);
gst_smpte_paint_triangle_clock (dest, stride,
- x0, y0, c0,
- x1, y1, c1,
- xv, yv, col_m);
+ x0, y0, c0, x1, y1, c1, xv, yv, col_m);
gst_smpte_paint_triangle_clock (dest, stride,
- x0, y0, c0,
- xv, yv, col_m,
- x2, y2, c2);
+ x0, y0, c0, xv, yv, col_m, x2, y2, c2);
}
-
diff --git a/gst/smpte/paint.h b/gst/smpte/paint.h
index 4c34cf92..aa9fd425 100644
--- a/gst/smpte/paint.h
+++ b/gst/smpte/paint.h
@@ -22,26 +22,21 @@
#include <glib.h>
-void gst_smpte_paint_vbox (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1);
-void gst_smpte_paint_hbox (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1);
+void gst_smpte_paint_vbox (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0, gint x1, gint y1, gint c1);
+void gst_smpte_paint_hbox (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0, gint x1, gint y1, gint c1);
-void gst_smpte_paint_triangle_linear (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1,
- gint x2, gint y2, gint c2);
+void gst_smpte_paint_triangle_linear (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0,
+ gint x1, gint y1, gint c1, gint x2, gint y2, gint c2);
-void gst_smpte_paint_triangle_clock (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1,
- gint x2, gint y2, gint c2);
+void gst_smpte_paint_triangle_clock (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0,
+ gint x1, gint y1, gint c1, gint x2, gint y2, gint c2);
-void gst_smpte_paint_box_clock (guint32 *dest, gint stride,
- gint x0, gint y0, gint c0,
- gint x1, gint y1, gint c1,
- gint x2, gint y2, gint c2);
+void gst_smpte_paint_box_clock (guint32 * dest, gint stride,
+ gint x0, gint y0, gint c0,
+ gint x1, gint y1, gint c1, gint x2, gint y2, gint c2);
#endif /* __GST_SMPTE_PAINT_H__ */
diff --git a/gst/spectrum/gstspectrum.c b/gst/spectrum/gstspectrum.c
index 920d69ee..aa309f1c 100644
--- a/gst/spectrum/gstspectrum.c
+++ b/gst/spectrum/gstspectrum.c
@@ -25,40 +25,44 @@
#include "gstspectrum.h"
/* elementfactory information */
-static GstElementDetails gst_spectrum_details = GST_ELEMENT_DETAILS (
- "Spectrum analyzer",
- "Filter/Analyzer/Audio",
- "Run an FFT on the audio signal, output spectrum data",
- "Erik Walthinsen <omega@cse.ogi.edu>"
-);
+static GstElementDetails gst_spectrum_details =
+GST_ELEMENT_DETAILS ("Spectrum analyzer",
+ "Filter/Analyzer/Audio",
+ "Run an FFT on the audio signal, output spectrum data",
+ "Erik Walthinsen <omega@cse.ogi.edu>");
/* Spectrum signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_WIDTH,
};
-static void gst_spectrum_base_init (gpointer g_class);
-static void gst_spectrum_class_init (GstSpectrumClass *klass);
-static void gst_spectrum_init (GstSpectrum *spectrum);
+static void gst_spectrum_base_init (gpointer g_class);
+static void gst_spectrum_class_init (GstSpectrumClass * klass);
+static void gst_spectrum_init (GstSpectrum * spectrum);
-static void gst_spectrum_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+static void gst_spectrum_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
-static void gst_spectrum_chain (GstPad *pad, GstData *_data);
+static void gst_spectrum_chain (GstPad * pad, GstData * _data);
#define fixed short
-int gst_spectrum_fix_fft(fixed fr[], fixed fi[], int m, int inverse);
-void gst_spectrum_fix_loud(fixed loud[], fixed fr[], fixed fi[], int n, int scale_shift);
-void gst_spectrum_window(fixed fr[], int n);
+int gst_spectrum_fix_fft (fixed fr[], fixed fi[], int m, int inverse);
+void gst_spectrum_fix_loud (fixed loud[], fixed fr[], fixed fi[], int n,
+ int scale_shift);
+void gst_spectrum_window (fixed fr[], int n);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_spectrum_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -68,17 +72,19 @@ gst_spectrum_get_type (void)
if (!spectrum_type) {
static const GTypeInfo spectrum_info = {
- sizeof(GstSpectrumClass),
+ sizeof (GstSpectrumClass),
gst_spectrum_base_init,
NULL,
- (GClassInitFunc)gst_spectrum_class_init,
+ (GClassInitFunc) gst_spectrum_class_init,
NULL,
NULL,
- sizeof(GstSpectrum),
+ sizeof (GstSpectrum),
0,
- (GInstanceInitFunc)gst_spectrum_init,
+ (GInstanceInitFunc) gst_spectrum_init,
};
- spectrum_type = g_type_register_static(GST_TYPE_ELEMENT, "GstSpectrum", &spectrum_info, 0);
+ spectrum_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstSpectrum", &spectrum_info,
+ 0);
}
return spectrum_type;
}
@@ -91,41 +97,40 @@ gst_spectrum_base_init (gpointer g_class)
gst_element_class_set_details (element_class, &gst_spectrum_details);
}
static void
-gst_spectrum_class_init (GstSpectrumClass *klass)
+gst_spectrum_class_init (GstSpectrumClass * klass)
{
GObjectClass *gobject_class;
- gobject_class = (GObjectClass*)klass;
+ gobject_class = (GObjectClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_WIDTH,
- g_param_spec_int("width","width","width",
- G_MININT,G_MAXINT,0,G_PARAM_WRITABLE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_WIDTH, g_param_spec_int ("width", "width", "width", G_MININT, G_MAXINT, 0, G_PARAM_WRITABLE)); /* CHECKME */
gobject_class->set_property = gst_spectrum_set_property;
}
static void
-gst_spectrum_init (GstSpectrum *spectrum)
+gst_spectrum_init (GstSpectrum * spectrum)
{
- spectrum->sinkpad = gst_pad_new("sink",GST_PAD_SINK);
- gst_element_add_pad(GST_ELEMENT(spectrum),spectrum->sinkpad);
- gst_pad_set_chain_function(spectrum->sinkpad,gst_spectrum_chain);
- spectrum->srcpad = gst_pad_new("src",GST_PAD_SRC);
- gst_element_add_pad(GST_ELEMENT(spectrum),spectrum->srcpad);
+ spectrum->sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
+ gst_element_add_pad (GST_ELEMENT (spectrum), spectrum->sinkpad);
+ gst_pad_set_chain_function (spectrum->sinkpad, gst_spectrum_chain);
+ spectrum->srcpad = gst_pad_new ("src", GST_PAD_SRC);
+ gst_element_add_pad (GST_ELEMENT (spectrum), spectrum->srcpad);
spectrum->width = 75;
}
static void
-gst_spectrum_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_spectrum_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstSpectrum *spectrum;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_SPECTRUM(object));
- spectrum = GST_SPECTRUM(object);
+ g_return_if_fail (GST_IS_SPECTRUM (object));
+ spectrum = GST_SPECTRUM (object);
switch (prop_id) {
case ARG_WIDTH:
@@ -137,48 +142,49 @@ gst_spectrum_set_property (GObject *object, guint prop_id, const GValue *value,
}
static void
-gst_spectrum_chain (GstPad *pad, GstData *_data)
+gst_spectrum_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstSpectrum *spectrum;
gint spec_base, spec_len;
gint16 *re, *im, *loud;
gint16 *samples;
- gint step,pos,i;
+ gint step, pos, i;
guchar *spect;
GstBuffer *newbuf;
- g_return_if_fail(pad != NULL);
- g_return_if_fail(GST_IS_PAD(pad));
- g_return_if_fail(buf != NULL);
+ g_return_if_fail (pad != NULL);
+ g_return_if_fail (GST_IS_PAD (pad));
+ g_return_if_fail (buf != NULL);
spectrum = GST_SPECTRUM (GST_OBJECT_PARENT (pad));
- samples = (gint16 *)GST_BUFFER_DATA(buf);
+ samples = (gint16 *) GST_BUFFER_DATA (buf);
spec_base = 8;
spec_len = 1024;
- im = g_malloc(spec_len * sizeof(gint16));
- g_return_if_fail(im != NULL);
- loud = g_malloc(spec_len * sizeof(gint16));
- g_return_if_fail(loud != NULL);
+ im = g_malloc (spec_len * sizeof (gint16));
+ g_return_if_fail (im != NULL);
+ loud = g_malloc (spec_len * sizeof (gint16));
+ g_return_if_fail (loud != NULL);
- memset(im,0,spec_len * sizeof(gint16));
+ memset (im, 0, spec_len * sizeof (gint16));
/*if (spectrum->meta->channels == 2) { */
- re = g_malloc(spec_len * sizeof(gint16));
- for (i=0;i<spec_len;i++)
- re[i] = (samples[(i*2)] + samples[(i*2)+1]) >> 1;
+ re = g_malloc (spec_len * sizeof (gint16));
+ for (i = 0; i < spec_len; i++)
+ re[i] = (samples[(i * 2)] + samples[(i * 2) + 1]) >> 1;
/*} else */
/* re = samples; */
- gst_spectrum_window(re,spec_len);
- gst_spectrum_fix_fft(re,im,spec_base,FALSE);
- gst_spectrum_fix_loud(loud,re,im,spec_len,0);
- if (re != samples) g_free(re);
- g_free(im);
- step = spec_len / (spectrum->width*2);
- spect = (guchar *)g_malloc(spectrum->width);
- for (i=0,pos=0;i<spectrum->width;i++,pos += step) {
+ gst_spectrum_window (re, spec_len);
+ gst_spectrum_fix_fft (re, im, spec_base, FALSE);
+ gst_spectrum_fix_loud (loud, re, im, spec_len, 0);
+ if (re != samples)
+ g_free (re);
+ g_free (im);
+ step = spec_len / (spectrum->width * 2);
+ spect = (guchar *) g_malloc (spectrum->width);
+ for (i = 0, pos = 0; i < spectrum->width; i++, pos += step) {
if (loud[pos] > -60)
spect[i] = (loud[pos] + 60) / 2;
else
@@ -186,32 +192,27 @@ gst_spectrum_chain (GstPad *pad, GstData *_data)
/* if (spect[i] > 15); */
/* spect[i] = 15; */
}
- g_free(loud);
- gst_buffer_unref(buf);
+ g_free (loud);
+ gst_buffer_unref (buf);
/* g_free(samples); */
- newbuf = gst_buffer_new();
- g_return_if_fail(newbuf != NULL);
- GST_BUFFER_DATA(newbuf) = spect;
- GST_BUFFER_SIZE(newbuf) = spectrum->width;
+ newbuf = gst_buffer_new ();
+ g_return_if_fail (newbuf != NULL);
+ GST_BUFFER_DATA (newbuf) = spect;
+ GST_BUFFER_SIZE (newbuf) = spectrum->width;
- gst_pad_push(spectrum->srcpad,GST_DATA (newbuf));
+ gst_pad_push (spectrum->srcpad, GST_DATA (newbuf));
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- return gst_element_register (plugin, "spectrum", GST_RANK_NONE, GST_TYPE_SPECTRUM);
+ return gst_element_register (plugin, "spectrum", GST_RANK_NONE,
+ GST_TYPE_SPECTRUM);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "spectrum",
- "Run an FFT on the audio signal, output spectrum data",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "spectrum",
+ "Run an FFT on the audio signal, output spectrum data",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/spectrum/gstspectrum.h b/gst/spectrum/gstspectrum.h
index 8cc546ec..23c4ef4b 100644
--- a/gst/spectrum/gstspectrum.h
+++ b/gst/spectrum/gstspectrum.h
@@ -26,8 +26,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_SPECTRUM \
@@ -41,27 +42,29 @@ extern "C" {
#define GST_IS_SPECTRUM_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SPECTRUM))
-typedef struct _GstSpectrum GstSpectrum;
-typedef struct _GstSpectrumClass GstSpectrumClass;
+ typedef struct _GstSpectrum GstSpectrum;
+ typedef struct _GstSpectrumClass GstSpectrumClass;
-struct _GstSpectrum {
- GstElement element;
+ struct _GstSpectrum
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- gint width;
-};
+ gint width;
+ };
-struct _GstSpectrumClass {
- GstElementClass parent_class;
-};
+ struct _GstSpectrumClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_spectrum_get_type(void);
+ GType gst_spectrum_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_SPECTRUM_H__ */
+#endif /* __GST_SPECTRUM_H__ */
diff --git a/gst/udp/gstudp.c b/gst/udp/gstudp.c
index b98e6129..1192f6d7 100644
--- a/gst/udp/gstudp.c
+++ b/gst/udp/gstudp.c
@@ -25,25 +25,20 @@
#include "gstudpsink.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "udpsink", GST_RANK_NONE, GST_TYPE_UDPSINK))
+ if (!gst_element_register (plugin, "udpsink", GST_RANK_NONE,
+ GST_TYPE_UDPSINK))
return FALSE;
-
+
if (!gst_element_register (plugin, "udpsrc", GST_RANK_NONE, GST_TYPE_UDPSRC))
return FALSE;
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "udp",
- "transfer data via UDP",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "udp",
+ "transfer data via UDP",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/udp/gstudp.h b/gst/udp/gstudp.h
index 89103e93..e5fda050 100644
--- a/gst/udp/gstudp.h
+++ b/gst/udp/gstudp.h
@@ -36,7 +36,6 @@ extern "C"
#ifdef __cplusplus
}
-#endif /* __cplusplus */
-
-#endif /* __GST_UDP_H__ */
+#endif /* __cplusplus */
+#endif /* __GST_UDP_H__ */
diff --git a/gst/udp/gstudpsink.c b/gst/udp/gstudpsink.c
index 86238af2..af365613 100644
--- a/gst/udp/gstudpsink.c
+++ b/gst/udp/gstudpsink.c
@@ -28,32 +28,34 @@
#define UDP_DEFAULT_CONTROL 1
/* elementfactory information */
-static GstElementDetails gst_udpsink_details = GST_ELEMENT_DETAILS (
- "UDP packet sender",
- "Sink/Network",
- "Send data over the network via UDP",
- "Wim Taymans <wim.taymans@chello.be>"
-);
+static GstElementDetails gst_udpsink_details =
+GST_ELEMENT_DETAILS ("UDP packet sender",
+ "Sink/Network",
+ "Send data over the network via UDP",
+ "Wim Taymans <wim.taymans@chello.be>");
/* UDPSink signals and args */
-enum {
+enum
+{
FRAME_ENCODED,
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_HOST,
ARG_PORT,
ARG_CONTROL,
ARG_MTU
- /* FILL ME */
+ /* FILL ME */
};
#define GST_TYPE_UDPSINK_CONTROL (gst_udpsink_control_get_type())
static GType
-gst_udpsink_control_get_type(void) {
+gst_udpsink_control_get_type (void)
+{
static GType udpsink_control_type = 0;
static GEnumValue udpsink_control[] = {
{CONTROL_NONE, "1", "none"},
@@ -62,27 +64,29 @@ gst_udpsink_control_get_type(void) {
{CONTROL_ZERO, NULL, NULL},
};
if (!udpsink_control_type) {
- udpsink_control_type = g_enum_register_static("GstUDPSinkControl", udpsink_control);
+ udpsink_control_type =
+ g_enum_register_static ("GstUDPSinkControl", udpsink_control);
}
return udpsink_control_type;
}
-static void gst_udpsink_base_init (gpointer g_class);
-static void gst_udpsink_class_init (GstUDPSink *klass);
-static void gst_udpsink_init (GstUDPSink *udpsink);
+static void gst_udpsink_base_init (gpointer g_class);
+static void gst_udpsink_class_init (GstUDPSink * klass);
+static void gst_udpsink_init (GstUDPSink * udpsink);
-static void gst_udpsink_set_clock (GstElement *element, GstClock *clock);
+static void gst_udpsink_set_clock (GstElement * element, GstClock * clock);
-static void gst_udpsink_chain (GstPad *pad,GstData *_data);
-static GstElementStateReturn gst_udpsink_change_state (GstElement *element);
+static void gst_udpsink_chain (GstPad * pad, GstData * _data);
+static GstElementStateReturn gst_udpsink_change_state (GstElement * element);
-static void gst_udpsink_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_udpsink_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static void gst_udpsink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_udpsink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_udpsink_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -92,18 +96,20 @@ gst_udpsink_get_type (void)
if (!udpsink_type) {
static const GTypeInfo udpsink_info = {
- sizeof(GstUDPSinkClass),
+ sizeof (GstUDPSinkClass),
gst_udpsink_base_init,
NULL,
- (GClassInitFunc)gst_udpsink_class_init,
+ (GClassInitFunc) gst_udpsink_class_init,
NULL,
NULL,
- sizeof(GstUDPSink),
+ sizeof (GstUDPSink),
0,
- (GInstanceInitFunc)gst_udpsink_init,
+ (GInstanceInitFunc) gst_udpsink_init,
NULL
};
- udpsink_type = g_type_register_static (GST_TYPE_ELEMENT, "GstUDPSink", &udpsink_info, 0);
+ udpsink_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstUDPSink", &udpsink_info,
+ 0);
}
return udpsink_type;
}
@@ -117,29 +123,27 @@ gst_udpsink_base_init (gpointer g_class)
}
static void
-gst_udpsink_class_init (GstUDPSink *klass)
+gst_udpsink_class_init (GstUDPSink * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*) klass;
- gstelement_class = (GstElementClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HOST,
- g_param_spec_string ("host", "host",
- "The host/IP/Multicast group to send the packets to",
- UDP_DEFAULT_HOST, G_PARAM_READWRITE));
+ g_param_spec_string ("host", "host",
+ "The host/IP/Multicast group to send the packets to",
+ UDP_DEFAULT_HOST, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PORT,
- g_param_spec_int ("port", "port", "The port to send the packets to",
- 0, 32768, UDP_DEFAULT_PORT, G_PARAM_READWRITE));
+ g_param_spec_int ("port", "port", "The port to send the packets to",
+ 0, 32768, UDP_DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_CONTROL,
- g_param_spec_enum ("control", "control", "The type of control",
- GST_TYPE_UDPSINK_CONTROL, CONTROL_UDP, G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class, ARG_MTU,
- g_param_spec_int ("mtu", "mtu", "maximun transmit unit", G_MININT, G_MAXINT,
- 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_param_spec_enum ("control", "control", "The type of control",
+ GST_TYPE_UDPSINK_CONTROL, CONTROL_UDP, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_MTU, g_param_spec_int ("mtu", "mtu", "maximun transmit unit", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
gobject_class->set_property = gst_udpsink_set_property;
gobject_class->get_property = gst_udpsink_get_property;
@@ -150,7 +154,7 @@ gst_udpsink_class_init (GstUDPSink *klass)
static GstPadLinkReturn
-gst_udpsink_sink_link (GstPad *pad, const GstCaps *caps)
+gst_udpsink_sink_link (GstPad * pad, const GstCaps * caps)
{
GstUDPSink *udpsink;
struct sockaddr_in serv_addr;
@@ -158,27 +162,28 @@ gst_udpsink_sink_link (GstPad *pad, const GstCaps *caps)
int fd;
FILE *f;
guint bc_val;
+
#ifndef GST_DISABLE_LOADSAVE
xmlDocPtr doc;
xmlChar *buf;
int buf_size;
udpsink = GST_UDPSINK (gst_pad_get_parent (pad));
-
- memset(&serv_addr, 0, sizeof(serv_addr));
-
+
+ memset (&serv_addr, 0, sizeof (serv_addr));
+
/* its a name rather than an ipnum */
- serverhost = gethostbyname(udpsink->host);
- if (serverhost == (struct hostent *)0) {
- perror("gethostbyname");
- return GST_PAD_LINK_REFUSED;
+ serverhost = gethostbyname (udpsink->host);
+ if (serverhost == (struct hostent *) 0) {
+ perror ("gethostbyname");
+ return GST_PAD_LINK_REFUSED;
}
-
- memmove(&serv_addr.sin_addr,serverhost->h_addr, serverhost->h_length);
+
+ memmove (&serv_addr.sin_addr, serverhost->h_addr, serverhost->h_length);
serv_addr.sin_family = AF_INET;
- serv_addr.sin_port = htons(udpsink->port+1);
-
+ serv_addr.sin_port = htons (udpsink->port + 1);
+
doc = xmlNewDoc ("1.0");
doc->xmlRootNode = xmlNewDocNode (doc, NULL, "NewCaps", NULL);
@@ -186,66 +191,66 @@ gst_udpsink_sink_link (GstPad *pad, const GstCaps *caps)
switch (udpsink->control) {
case CONTROL_UDP:
- if ((fd = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
- perror("socket");
- return GST_PAD_LINK_REFUSED;
- }
-
- /* We can only do broadcast in udp */
- bc_val = 1;
- setsockopt (fd,SOL_SOCKET, SO_BROADCAST, &bc_val, sizeof (bc_val));
-
- xmlDocDumpMemory(doc, &buf, &buf_size);
-
- if (sendto (fd, buf, buf_size, 0, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1)
- {
- perror("sending");
- return GST_PAD_LINK_REFUSED;
- }
- close (fd);
- break;
+ if ((fd = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
+ perror ("socket");
+ return GST_PAD_LINK_REFUSED;
+ }
+
+ /* We can only do broadcast in udp */
+ bc_val = 1;
+ setsockopt (fd, SOL_SOCKET, SO_BROADCAST, &bc_val, sizeof (bc_val));
+
+ xmlDocDumpMemory (doc, &buf, &buf_size);
+
+ if (sendto (fd, buf, buf_size, 0, (struct sockaddr *) &serv_addr,
+ sizeof (serv_addr)) == -1) {
+ perror ("sending");
+ return GST_PAD_LINK_REFUSED;
+ }
+ close (fd);
+ break;
case CONTROL_TCP:
- if ((fd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
- perror("socket");
- return GST_PAD_LINK_REFUSED;
- }
-
- if (connect(fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) != 0) {
- g_printerr ("udpsink: connect to %s port %d failed: %s\n",
- udpsink->host, udpsink->port, g_strerror(errno));
- return GST_PAD_LINK_REFUSED;
- }
-
- f = fdopen (dup (fd), "wb");
-
- xmlDocDump(f, doc);
- fclose (f);
- close (fd);
- break;
+ if ((fd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
+ perror ("socket");
+ return GST_PAD_LINK_REFUSED;
+ }
+
+ if (connect (fd, (struct sockaddr *) &serv_addr, sizeof (serv_addr)) != 0) {
+ g_printerr ("udpsink: connect to %s port %d failed: %s\n",
+ udpsink->host, udpsink->port, g_strerror (errno));
+ return GST_PAD_LINK_REFUSED;
+ }
+
+ f = fdopen (dup (fd), "wb");
+
+ xmlDocDump (f, doc);
+ fclose (f);
+ close (fd);
+ break;
case CONTROL_NONE:
- return GST_PAD_LINK_OK;
- break;
+ return GST_PAD_LINK_OK;
+ break;
default:
- return GST_PAD_LINK_REFUSED;
- break;
+ return GST_PAD_LINK_REFUSED;
+ break;
}
#endif
-
+
return GST_PAD_LINK_OK;
}
static void
-gst_udpsink_set_clock (GstElement *element, GstClock *clock)
+gst_udpsink_set_clock (GstElement * element, GstClock * clock)
{
GstUDPSink *udpsink;
-
+
udpsink = GST_UDPSINK (element);
udpsink->clock = clock;
}
static void
-gst_udpsink_init (GstUDPSink *udpsink)
+gst_udpsink_init (GstUDPSink * udpsink)
{
/* create the sink and src pads */
udpsink->sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
@@ -257,12 +262,12 @@ gst_udpsink_init (GstUDPSink *udpsink)
udpsink->port = UDP_DEFAULT_PORT;
udpsink->control = CONTROL_UDP;
udpsink->mtu = 1024;
-
+
udpsink->clock = NULL;
}
static void
-gst_udpsink_chain (GstPad *pad, GstData *_data)
+gst_udpsink_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstUDPSink *udpsink;
@@ -273,63 +278,64 @@ gst_udpsink_chain (GstPad *pad, GstData *_data)
g_return_if_fail (buf != NULL);
udpsink = GST_UDPSINK (GST_OBJECT_PARENT (pad));
-
+
if (udpsink->clock && GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
gst_element_wait (GST_ELEMENT (udpsink), GST_BUFFER_TIMESTAMP (buf));
}
-
- tolen = sizeof(udpsink->theiraddr);
-
- /*
- if (sendto (udpsink->sock, GST_BUFFER_DATA (buf),
- GST_BUFFER_SIZE (buf), 0, (struct sockaddr *) &udpsink->theiraddr,
- tolen) == -1) {
- perror("sending");
- }
-*/
- /* MTU */
+
+ tolen = sizeof (udpsink->theiraddr);
+
+ /*
+ if (sendto (udpsink->sock, GST_BUFFER_DATA (buf),
+ GST_BUFFER_SIZE (buf), 0, (struct sockaddr *) &udpsink->theiraddr,
+ tolen) == -1) {
+ perror("sending");
+ }
+ */
+ /* MTU */
for (i = 0; i < GST_BUFFER_SIZE (buf); i += udpsink->mtu) {
if (GST_BUFFER_SIZE (buf) - i > udpsink->mtu) {
- if (sendto (udpsink->sock, GST_BUFFER_DATA (buf) + i,
- udpsink->mtu, 0, (struct sockaddr *) &udpsink->theiraddr,
- tolen) == -1) {
- perror("sending");
- }
- }
- else {
- if (sendto (udpsink->sock, GST_BUFFER_DATA (buf) + i,
- GST_BUFFER_SIZE (buf) -i, 0,
- (struct sockaddr *) &udpsink->theiraddr, tolen) == -1) {
- perror("sending");
- }
+ if (sendto (udpsink->sock, GST_BUFFER_DATA (buf) + i,
+ udpsink->mtu, 0, (struct sockaddr *) &udpsink->theiraddr,
+ tolen) == -1) {
+ perror ("sending");
+ }
+ } else {
+ if (sendto (udpsink->sock, GST_BUFFER_DATA (buf) + i,
+ GST_BUFFER_SIZE (buf) - i, 0,
+ (struct sockaddr *) &udpsink->theiraddr, tolen) == -1) {
+ perror ("sending");
+ }
}
}
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
static void
-gst_udpsink_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_udpsink_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstUDPSink *udpsink;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_UDPSINK(object));
- udpsink = GST_UDPSINK(object);
+ g_return_if_fail (GST_IS_UDPSINK (object));
+ udpsink = GST_UDPSINK (object);
switch (prop_id) {
case ARG_HOST:
- if (udpsink->host != NULL) g_free(udpsink->host);
+ if (udpsink->host != NULL)
+ g_free (udpsink->host);
if (g_value_get_string (value) == NULL)
- udpsink->host = NULL;
+ udpsink->host = NULL;
else
- udpsink->host = g_strdup (g_value_get_string (value));
+ udpsink->host = g_strdup (g_value_get_string (value));
break;
case ARG_PORT:
- udpsink->port = g_value_get_int (value);
+ udpsink->port = g_value_get_int (value);
break;
case ARG_CONTROL:
- udpsink->control = g_value_get_enum (value);
+ udpsink->control = g_value_get_enum (value);
break;
case ARG_MTU:
udpsink->mtu = g_value_get_int (value);
@@ -340,13 +346,14 @@ gst_udpsink_set_property (GObject *object, guint prop_id, const GValue *value, G
}
static void
-gst_udpsink_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_udpsink_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstUDPSink *udpsink;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_UDPSINK(object));
- udpsink = GST_UDPSINK(object);
+ g_return_if_fail (GST_IS_UDPSINK (object));
+ udpsink = GST_UDPSINK (object);
switch (prop_id) {
case ARG_HOST:
@@ -370,67 +377,66 @@ gst_udpsink_get_property (GObject *object, guint prop_id, GValue *value, GParamS
/* create a socket for sending to remote machine */
static gboolean
-gst_udpsink_init_send (GstUDPSink *sink)
+gst_udpsink_init_send (GstUDPSink * sink)
{
struct hostent *he;
struct in_addr addr;
guint bc_val;
memset (&sink->theiraddr, 0, sizeof (sink->theiraddr));
- sink->theiraddr.sin_family = AF_INET; /* host byte order */
- sink->theiraddr.sin_port = htons (sink->port); /* short, network byte order */
+ sink->theiraddr.sin_family = AF_INET; /* host byte order */
+ sink->theiraddr.sin_port = htons (sink->port); /* short, network byte order */
/* if its an IP address */
if (inet_aton (sink->host, &addr)) {
/* check if its a multicast address */
if ((ntohl (addr.s_addr) & 0xe0000000) == 0xe0000000) {
- sink->multi_addr.imr_multiaddr.s_addr = addr.s_addr;
- sink->multi_addr.imr_interface.s_addr = INADDR_ANY;
-
- sink->theiraddr.sin_addr = sink->multi_addr.imr_multiaddr;
-
- /* Joining the multicast group */
- setsockopt (sink->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &sink->multi_addr, sizeof(sink->multi_addr));
+ sink->multi_addr.imr_multiaddr.s_addr = addr.s_addr;
+ sink->multi_addr.imr_interface.s_addr = INADDR_ANY;
+
+ sink->theiraddr.sin_addr = sink->multi_addr.imr_multiaddr;
+
+ /* Joining the multicast group */
+ setsockopt (sink->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &sink->multi_addr,
+ sizeof (sink->multi_addr));
}
-
+
else {
- sink->theiraddr.sin_addr =
- *((struct in_addr *) &addr);
+ sink->theiraddr.sin_addr = *((struct in_addr *) &addr);
}
}
-
+
/* we dont need to lookup for localhost */
- else if (strcmp (sink->host, UDP_DEFAULT_HOST) == 0 &&
- inet_aton ("127.0.0.1", &addr)) {
- sink->theiraddr.sin_addr =
- *((struct in_addr *) &addr);
+ else if (strcmp (sink->host, UDP_DEFAULT_HOST) == 0 &&
+ inet_aton ("127.0.0.1", &addr)) {
+ sink->theiraddr.sin_addr = *((struct in_addr *) &addr);
}
/* if its a hostname */
else if ((he = gethostbyname (sink->host))) {
sink->theiraddr.sin_addr = *((struct in_addr *) he->h_addr);
}
-
+
else {
- perror("hostname lookup error?");
- return FALSE;
+ perror ("hostname lookup error?");
+ return FALSE;
}
if ((sink->sock = socket (AF_INET, SOCK_DGRAM, 0)) == -1) {
- perror("socket");
- return FALSE;
+ perror ("socket");
+ return FALSE;
}
bc_val = 1;
setsockopt (sink->sock, SOL_SOCKET, SO_BROADCAST, &bc_val, sizeof (bc_val));
-
+
GST_FLAG_SET (sink, GST_UDPSINK_OPEN);
return TRUE;
}
static void
-gst_udpsink_close (GstUDPSink *sink)
+gst_udpsink_close (GstUDPSink * sink)
{
close (sink->sock);
@@ -438,7 +444,7 @@ gst_udpsink_close (GstUDPSink *sink)
}
static GstElementStateReturn
-gst_udpsink_change_state (GstElement *element)
+gst_udpsink_change_state (GstElement * element)
{
g_return_val_if_fail (GST_IS_UDPSINK (element), GST_STATE_FAILURE);
@@ -448,7 +454,7 @@ gst_udpsink_change_state (GstElement *element)
} else {
if (!GST_FLAG_IS_SET (element, GST_UDPSINK_OPEN)) {
if (!gst_udpsink_init_send (GST_UDPSINK (element)))
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
}
@@ -457,4 +463,3 @@ gst_udpsink_change_state (GstElement *element)
return GST_STATE_SUCCESS;
}
-
diff --git a/gst/udp/gstudpsink.h b/gst/udp/gstudpsink.h
index f49b4efe..9a08f709 100644
--- a/gst/udp/gstudpsink.h
+++ b/gst/udp/gstudpsink.h
@@ -25,8 +25,9 @@
#include <gst/gst.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#include <stdio.h>
#include <stdlib.h>
@@ -54,45 +55,48 @@ extern "C" {
#define GST_IS_UDPSINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_UDPSINK))
-typedef struct _GstUDPSink GstUDPSink;
-typedef struct _GstUDPSinkClass GstUDPSinkClass;
+ typedef struct _GstUDPSink GstUDPSink;
+ typedef struct _GstUDPSinkClass GstUDPSinkClass;
-typedef enum {
- GST_UDPSINK_OPEN = GST_ELEMENT_FLAG_LAST,
+ typedef enum
+ {
+ GST_UDPSINK_OPEN = GST_ELEMENT_FLAG_LAST,
- GST_UDPSINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
-} GstUDPSinkFlags;
+ GST_UDPSINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
+ } GstUDPSinkFlags;
-struct _GstUDPSink {
- GstElement element;
+ struct _GstUDPSink
+ {
+ GstElement element;
- /* pads */
- GstPad *sinkpad,*srcpad;
+ /* pads */
+ GstPad *sinkpad, *srcpad;
- int sock;
- struct sockaddr_in theiraddr;
- struct ip_mreq multi_addr;
+ int sock;
+ struct sockaddr_in theiraddr;
+ struct ip_mreq multi_addr;
- gint port;
- Gst_UDP_Control control;
- gchar *host;
-
- guint mtu;
-
- GstClock *clock;
-};
+ gint port;
+ Gst_UDP_Control control;
+ gchar *host;
-struct _GstUDPSinkClass {
- GstElementClass parent_class;
+ guint mtu;
-};
+ GstClock *clock;
+ };
-GType gst_udpsink_get_type(void);
+ struct _GstUDPSinkClass
+ {
+ GstElementClass parent_class;
+
+ };
+
+ GType gst_udpsink_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_UDPSINK_H__ */
+#endif /* __GST_UDPSINK_H__ */
diff --git a/gst/udp/gstudpsrc.c b/gst/udp/gstudpsrc.c
index 66bcd268..48e00862 100644
--- a/gst/udp/gstudpsrc.c
+++ b/gst/udp/gstudpsrc.c
@@ -29,30 +29,32 @@
#define UDP_DEFAULT_MULTICAST_GROUP "0.0.0.0"
/* elementfactory information */
-static GstElementDetails gst_udpsrc_details = GST_ELEMENT_DETAILS (
- "UDP packet receiver",
- "Source/Network",
- "Receive data over the network via UDP",
- "Wim Taymans <wim.taymans@chello.be>"
-);
+static GstElementDetails gst_udpsrc_details =
+GST_ELEMENT_DETAILS ("UDP packet receiver",
+ "Source/Network",
+ "Receive data over the network via UDP",
+ "Wim Taymans <wim.taymans@chello.be>");
/* UDPSrc signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_PORT,
ARG_CONTROL,
ARG_MULTICAST_GROUP
- /* FILL ME */
+ /* FILL ME */
};
#define GST_TYPE_UDPSRC_CONTROL (gst_udpsrc_control_get_type())
static GType
-gst_udpsrc_control_get_type(void) {
+gst_udpsrc_control_get_type (void)
+{
static GType udpsrc_control_type = 0;
static GEnumValue udpsrc_control[] = {
{CONTROL_NONE, "1", "none"},
@@ -61,26 +63,27 @@ gst_udpsrc_control_get_type(void) {
{CONTROL_ZERO, NULL, NULL},
};
if (!udpsrc_control_type) {
- udpsrc_control_type = g_enum_register_static("GstUDPSrcControl", udpsrc_control);
+ udpsrc_control_type =
+ g_enum_register_static ("GstUDPSrcControl", udpsrc_control);
}
return udpsrc_control_type;
}
-static void gst_udpsrc_base_init (gpointer g_class);
-static void gst_udpsrc_class_init (GstUDPSrc *klass);
-static void gst_udpsrc_init (GstUDPSrc *udpsrc);
+static void gst_udpsrc_base_init (gpointer g_class);
+static void gst_udpsrc_class_init (GstUDPSrc * klass);
+static void gst_udpsrc_init (GstUDPSrc * udpsrc);
-static GstData* gst_udpsrc_get (GstPad *pad);
-static GstElementStateReturn
- gst_udpsrc_change_state (GstElement *element);
+static GstData *gst_udpsrc_get (GstPad * pad);
+static GstElementStateReturn gst_udpsrc_change_state (GstElement * element);
-static void gst_udpsrc_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_udpsrc_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
-static void gst_udpsrc_set_clock (GstElement *element, GstClock *clock);
+static void gst_udpsrc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_udpsrc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_udpsrc_set_clock (GstElement * element, GstClock * clock);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_udpsrc_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -90,18 +93,19 @@ gst_udpsrc_get_type (void)
if (!udpsrc_type) {
static const GTypeInfo udpsrc_info = {
- sizeof(GstUDPSrcClass),
+ sizeof (GstUDPSrcClass),
gst_udpsrc_base_init,
NULL,
- (GClassInitFunc)gst_udpsrc_class_init,
+ (GClassInitFunc) gst_udpsrc_class_init,
NULL,
NULL,
- sizeof(GstUDPSrc),
+ sizeof (GstUDPSrc),
0,
- (GInstanceInitFunc)gst_udpsrc_init,
+ (GInstanceInitFunc) gst_udpsrc_init,
NULL
};
- udpsrc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstUDPSrc", &udpsrc_info, 0);
+ udpsrc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstUDPSrc", &udpsrc_info, 0);
}
return udpsrc_type;
}
@@ -115,26 +119,26 @@ gst_udpsrc_base_init (gpointer g_class)
}
static void
-gst_udpsrc_class_init (GstUDPSrc *klass)
+gst_udpsrc_class_init (GstUDPSrc * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*) klass;
- gstelement_class = (GstElementClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PORT,
- g_param_spec_int ("port", "port", "The port to receive the packets from",
- 0, 32768, UDP_DEFAULT_PORT, G_PARAM_READWRITE));
+ g_param_spec_int ("port", "port", "The port to receive the packets from",
+ 0, 32768, UDP_DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_CONTROL,
- g_param_spec_enum ("control", "control", "The type of control",
- GST_TYPE_UDPSRC_CONTROL, CONTROL_UDP, G_PARAM_READWRITE));
+ g_param_spec_enum ("control", "control", "The type of control",
+ GST_TYPE_UDPSRC_CONTROL, CONTROL_UDP, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_MULTICAST_GROUP,
- g_param_spec_string ("multicast_group", "multicast_group",
- "The Address of multicast group to join",
- UDP_DEFAULT_MULTICAST_GROUP, G_PARAM_READWRITE));
+ g_param_spec_string ("multicast_group", "multicast_group",
+ "The Address of multicast group to join",
+ UDP_DEFAULT_MULTICAST_GROUP, G_PARAM_READWRITE));
gobject_class->set_property = gst_udpsrc_set_property;
gobject_class->get_property = gst_udpsrc_get_property;
@@ -144,17 +148,17 @@ gst_udpsrc_class_init (GstUDPSrc *klass)
}
static void
-gst_udpsrc_set_clock (GstElement *element, GstClock *clock)
+gst_udpsrc_set_clock (GstElement * element, GstClock * clock)
{
GstUDPSrc *udpsrc;
-
+
udpsrc = GST_UDPSRC (element);
udpsrc->clock = clock;
}
static void
-gst_udpsrc_init (GstUDPSrc *udpsrc)
+gst_udpsrc_init (GstUDPSrc * udpsrc)
{
/* create the src and src pads */
udpsrc->srcpad = gst_pad_new ("src", GST_PAD_SRC);
@@ -171,8 +175,8 @@ gst_udpsrc_init (GstUDPSrc *udpsrc)
udpsrc->first_buf = TRUE;
}
-static GstData*
-gst_udpsrc_get (GstPad *pad)
+static GstData *
+gst_udpsrc_get (GstPad * pad)
{
GstUDPSrc *udpsrc;
GstBuffer *outbuf;
@@ -190,13 +194,13 @@ gst_udpsrc_get (GstPad *pad)
FD_ZERO (&read_fds);
FD_SET (udpsrc->sock, &read_fds);
if (udpsrc->control != CONTROL_NONE) {
- FD_SET (udpsrc->control_sock, &read_fds);
+ FD_SET (udpsrc->control_sock, &read_fds);
}
- max_sock = MAX(udpsrc->sock, udpsrc->control_sock);
+ max_sock = MAX (udpsrc->sock, udpsrc->control_sock);
- if (select (max_sock+1, &read_fds, NULL, NULL, NULL) > 0) {
+ if (select (max_sock + 1, &read_fds, NULL, NULL, NULL) > 0) {
if ((udpsrc->control_sock != -1) &&
- FD_ISSET (udpsrc->control_sock, &read_fds)) {
+ FD_ISSET (udpsrc->control_sock, &read_fds)) {
#ifndef GST_DISABLE_LOADSAVE
guchar *buf;
int ret;
@@ -205,94 +209,94 @@ gst_udpsrc_get (GstPad *pad)
xmlDocPtr doc;
GstCaps *caps;
- buf = g_malloc (1024*10);
+ buf = g_malloc (1024 * 10);
switch (udpsrc->control) {
- case CONTROL_TCP:
- len = sizeof (struct sockaddr);
- fdread = accept (udpsrc->control_sock, &addr, &len);
- if (fdread < 0) {
- perror ("accept");
- }
-
- ret = read (fdread, buf, 1024*10);
- break;
- case CONTROL_UDP:
- len = sizeof (struct sockaddr);
- ret = recvfrom (udpsrc->control_sock, buf, 1024*10, 0, (struct sockaddr *)&tmpaddr, &len);
- if (ret < 0) {
- perror ("recvfrom");
- }
- break;
- case CONTROL_NONE:
+ case CONTROL_TCP:
+ len = sizeof (struct sockaddr);
+ fdread = accept (udpsrc->control_sock, &addr, &len);
+ if (fdread < 0) {
+ perror ("accept");
+ }
+
+ ret = read (fdread, buf, 1024 * 10);
+ break;
+ case CONTROL_UDP:
+ len = sizeof (struct sockaddr);
+ ret =
+ recvfrom (udpsrc->control_sock, buf, 1024 * 10, 0,
+ (struct sockaddr *) &tmpaddr, &len);
+ if (ret < 0) {
+ perror ("recvfrom");
+ }
+ break;
+ case CONTROL_NONE:
default:
- g_free (buf);
- return NULL;
- break;
+ g_free (buf);
+ return NULL;
+ break;
}
buf[ret] = '\0';
- doc = xmlParseMemory(buf, ret);
- caps = gst_caps_load_thyself(doc->xmlRootNode);
+ doc = xmlParseMemory (buf, ret);
+ caps = gst_caps_load_thyself (doc->xmlRootNode);
if (caps == NULL) {
- return NULL;
+ return NULL;
}
-
+
/* foward the connect, we don't signal back the result here... */
if (gst_caps_is_fixed (caps)) {
- gst_pad_try_set_caps (udpsrc->srcpad, caps);
+ gst_pad_try_set_caps (udpsrc->srcpad, caps);
} else {
- GST_ERROR ("caps %" GST_PTR_FORMAT, caps);
- GST_ELEMENT_ERROR (udpsrc, CORE, NEGOTIATION, (NULL), ("Got unfixed caps from peer"));
+ GST_ERROR ("caps %" GST_PTR_FORMAT, caps);
+ GST_ELEMENT_ERROR (udpsrc, CORE, NEGOTIATION, (NULL),
+ ("Got unfixed caps from peer"));
}
#endif
g_free (buf);
outbuf = NULL;
- }
- else {
+ } else {
outbuf = gst_buffer_new ();
GST_BUFFER_DATA (outbuf) = g_malloc (24000);
GST_BUFFER_SIZE (outbuf) = 24000;
if (udpsrc->first_buf) {
- if (udpsrc->clock) {
- GstClockTime current_time;
- GstEvent *discont;
+ if (udpsrc->clock) {
+ GstClockTime current_time;
+ GstEvent *discont;
+
+ current_time = gst_clock_get_time (udpsrc->clock);
- current_time = gst_clock_get_time (udpsrc->clock);
-
- GST_BUFFER_TIMESTAMP (outbuf) = current_time;
+ GST_BUFFER_TIMESTAMP (outbuf) = current_time;
- discont = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME,
- current_time, NULL);
+ discont = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME,
+ current_time, NULL);
- gst_pad_push (udpsrc->srcpad, GST_DATA (discont));
+ gst_pad_push (udpsrc->srcpad, GST_DATA (discont));
}
udpsrc->first_buf = FALSE;
}
-
+
else {
- GST_BUFFER_TIMESTAMP (outbuf) = GST_CLOCK_TIME_NONE;
+ GST_BUFFER_TIMESTAMP (outbuf) = GST_CLOCK_TIME_NONE;
}
len = sizeof (struct sockaddr);
numbytes = recvfrom (udpsrc->sock, GST_BUFFER_DATA (outbuf),
- GST_BUFFER_SIZE (outbuf), 0, (struct sockaddr *)&tmpaddr, &len);
+ GST_BUFFER_SIZE (outbuf), 0, (struct sockaddr *) &tmpaddr, &len);
if (numbytes != -1) {
- GST_BUFFER_SIZE (outbuf) = numbytes;
- }
- else {
+ GST_BUFFER_SIZE (outbuf) = numbytes;
+ } else {
perror ("recvfrom");
- gst_buffer_unref (outbuf);
- outbuf = NULL;
+ gst_buffer_unref (outbuf);
+ outbuf = NULL;
}
-
+
}
- }
- else {
+ } else {
perror ("select");
outbuf = NULL;
}
@@ -301,29 +305,30 @@ gst_udpsrc_get (GstPad *pad)
static void
-gst_udpsrc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_udpsrc_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstUDPSrc *udpsrc;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_UDPSRC(object));
- udpsrc = GST_UDPSRC(object);
+ g_return_if_fail (GST_IS_UDPSRC (object));
+ udpsrc = GST_UDPSRC (object);
switch (prop_id) {
case ARG_PORT:
- udpsrc->port = g_value_get_int (value);
+ udpsrc->port = g_value_get_int (value);
break;
case ARG_MULTICAST_GROUP:
- g_free(udpsrc->multi_group);
-
+ g_free (udpsrc->multi_group);
+
if (g_value_get_string (value) == NULL)
- udpsrc->multi_group = g_strdup (UDP_DEFAULT_MULTICAST_GROUP);
+ udpsrc->multi_group = g_strdup (UDP_DEFAULT_MULTICAST_GROUP);
else
- udpsrc->multi_group = g_strdup (g_value_get_string (value));
-
+ udpsrc->multi_group = g_strdup (g_value_get_string (value));
+
break;
case ARG_CONTROL:
- udpsrc->control = g_value_get_enum (value);
+ udpsrc->control = g_value_get_enum (value);
break;
default:
break;
@@ -331,13 +336,14 @@ gst_udpsrc_set_property (GObject *object, guint prop_id, const GValue *value, GP
}
static void
-gst_udpsrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_udpsrc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstUDPSrc *udpsrc;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_UDPSRC(object));
- udpsrc = GST_UDPSRC(object);
+ g_return_if_fail (GST_IS_UDPSRC (object));
+ udpsrc = GST_UDPSRC (object);
switch (prop_id) {
case ARG_PORT:
@@ -357,92 +363,98 @@ gst_udpsrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
/* create a socket for sending to remote machine */
static gboolean
-gst_udpsrc_init_receive (GstUDPSrc *src)
+gst_udpsrc_init_receive (GstUDPSrc * src)
{
guint bc_val;
- gint reuse=1;
+ gint reuse = 1;
+
memset (&src->myaddr, 0, sizeof (src->myaddr));
- src->myaddr.sin_family = AF_INET; /* host byte order */
- src->myaddr.sin_port = htons (src->port); /* short, network byte order */
+ src->myaddr.sin_family = AF_INET; /* host byte order */
+ src->myaddr.sin_port = htons (src->port); /* short, network byte order */
src->myaddr.sin_addr.s_addr = INADDR_ANY;
if ((src->sock = socket (AF_INET, SOCK_DGRAM, 0)) == -1) {
- perror("socket");
+ perror ("socket");
return FALSE;
}
-
- if (setsockopt(src->sock, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) == -1) {
- perror("setsockopt");
- return FALSE;
+
+ if (setsockopt (src->sock, SOL_SOCKET, SO_REUSEADDR, &reuse,
+ sizeof (reuse)) == -1) {
+ perror ("setsockopt");
+ return FALSE;
}
- if (bind (src->sock, (struct sockaddr *) &src->myaddr, sizeof (src->myaddr)) == -1) {
- perror("bind");
+ if (bind (src->sock, (struct sockaddr *) &src->myaddr,
+ sizeof (src->myaddr)) == -1) {
+ perror ("bind");
return FALSE;
}
if (inet_aton (src->multi_group, &(src->multi_addr.imr_multiaddr))) {
if (src->multi_addr.imr_multiaddr.s_addr) {
src->multi_addr.imr_interface.s_addr = INADDR_ANY;
- setsockopt (src->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &src->multi_addr, sizeof(src->multi_addr));
+ setsockopt (src->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &src->multi_addr,
+ sizeof (src->multi_addr));
}
}
bc_val = 1;
setsockopt (src->sock, SOL_SOCKET, SO_BROADCAST, &bc_val, sizeof (bc_val));
- src->myaddr.sin_port = htons (src->port+1);
-
+ src->myaddr.sin_port = htons (src->port + 1);
+
switch (src->control) {
case CONTROL_TCP:
- if ((src->control_sock = socket (AF_INET, SOCK_STREAM, 0)) == -1) {
- perror("control_socket");
- return FALSE;
- }
-
- if (bind (src->control_sock, (struct sockaddr *) &src->myaddr, sizeof (src->myaddr)) == -1) {
- perror("control_bind");
- return FALSE;
- }
-
- if (listen (src->control_sock, 5) == -1) {
- perror("listen");
- return FALSE;
- }
-
- fcntl (src->control_sock, F_SETFL, O_NONBLOCK);
-
- break;
+ if ((src->control_sock = socket (AF_INET, SOCK_STREAM, 0)) == -1) {
+ perror ("control_socket");
+ return FALSE;
+ }
+
+ if (bind (src->control_sock, (struct sockaddr *) &src->myaddr,
+ sizeof (src->myaddr)) == -1) {
+ perror ("control_bind");
+ return FALSE;
+ }
+
+ if (listen (src->control_sock, 5) == -1) {
+ perror ("listen");
+ return FALSE;
+ }
+
+ fcntl (src->control_sock, F_SETFL, O_NONBLOCK);
+
+ break;
case CONTROL_UDP:
- if ((src->control_sock = socket (AF_INET, SOCK_DGRAM, 0)) == -1) {
- perror("socket");
- return FALSE;
- }
-
- if (bind (src->control_sock, (struct sockaddr *) &src->myaddr, sizeof (src->myaddr)) == -1)
- {
- perror("control_bind");
- return FALSE;
- }
- /* We can only do broadcast in udp */
- bc_val = 1;
- setsockopt (src->control_sock, SOL_SOCKET, SO_BROADCAST, &bc_val, sizeof (bc_val));
- break;
+ if ((src->control_sock = socket (AF_INET, SOCK_DGRAM, 0)) == -1) {
+ perror ("socket");
+ return FALSE;
+ }
+
+ if (bind (src->control_sock, (struct sockaddr *) &src->myaddr,
+ sizeof (src->myaddr)) == -1) {
+ perror ("control_bind");
+ return FALSE;
+ }
+ /* We can only do broadcast in udp */
+ bc_val = 1;
+ setsockopt (src->control_sock, SOL_SOCKET, SO_BROADCAST, &bc_val,
+ sizeof (bc_val));
+ break;
case CONTROL_NONE:
- GST_FLAG_SET (src, GST_UDPSRC_OPEN);
- return TRUE;
- break;
+ GST_FLAG_SET (src, GST_UDPSRC_OPEN);
+ return TRUE;
+ break;
default:
- return FALSE;
- break;
+ return FALSE;
+ break;
}
GST_FLAG_SET (src, GST_UDPSRC_OPEN);
-
+
return TRUE;
}
static void
-gst_udpsrc_close (GstUDPSrc *src)
+gst_udpsrc_close (GstUDPSrc * src)
{
if (src->sock != -1) {
close (src->sock);
@@ -457,7 +469,7 @@ gst_udpsrc_close (GstUDPSrc *src)
}
static GstElementStateReturn
-gst_udpsrc_change_state (GstElement *element)
+gst_udpsrc_change_state (GstElement * element)
{
g_return_val_if_fail (GST_IS_UDPSRC (element), GST_STATE_FAILURE);
@@ -467,7 +479,7 @@ gst_udpsrc_change_state (GstElement *element)
} else {
if (!GST_FLAG_IS_SET (element, GST_UDPSRC_OPEN)) {
if (!gst_udpsrc_init_receive (GST_UDPSRC (element)))
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
}
@@ -476,4 +488,3 @@ gst_udpsrc_change_state (GstElement *element)
return GST_STATE_SUCCESS;
}
-
diff --git a/gst/udp/gstudpsrc.h b/gst/udp/gstudpsrc.h
index f16673df..bb4273e7 100644
--- a/gst/udp/gstudpsrc.h
+++ b/gst/udp/gstudpsrc.h
@@ -24,8 +24,9 @@
#include <gst/gst.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#include <errno.h>
#include <string.h>
@@ -49,44 +50,47 @@ extern "C" {
#define GST_IS_UDPSRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_UDPSRC))
-typedef struct _GstUDPSrc GstUDPSrc;
-typedef struct _GstUDPSrcClass GstUDPSrcClass;
+ typedef struct _GstUDPSrc GstUDPSrc;
+ typedef struct _GstUDPSrcClass GstUDPSrcClass;
-typedef enum {
- GST_UDPSRC_OPEN = GST_ELEMENT_FLAG_LAST,
+ typedef enum
+ {
+ GST_UDPSRC_OPEN = GST_ELEMENT_FLAG_LAST,
- GST_UDPSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
-} GstUDPSrcFlags;
+ GST_UDPSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
+ } GstUDPSrcFlags;
-struct _GstUDPSrc {
- GstElement element;
+ struct _GstUDPSrc
+ {
+ GstElement element;
- /* pads */
- GstPad *sinkpad,*srcpad;
+ /* pads */
+ GstPad *sinkpad, *srcpad;
- int port;
- int sock;
- int control_sock;
- Gst_UDP_Control control;
- gchar *multi_group;
+ int port;
+ int sock;
+ int control_sock;
+ Gst_UDP_Control control;
+ gchar *multi_group;
- struct sockaddr_in myaddr;
- struct ip_mreq multi_addr;
- GstClock *clock;
+ struct sockaddr_in myaddr;
+ struct ip_mreq multi_addr;
+ GstClock *clock;
- gboolean first_buf;
-};
+ gboolean first_buf;
+ };
-struct _GstUDPSrcClass {
- GstElementClass parent_class;
-};
+ struct _GstUDPSrcClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_udpsrc_get_type(void);
+ GType gst_udpsrc_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_UDPSRC_H__ */
+#endif /* __GST_UDPSRC_H__ */
diff --git a/gst/videocrop/gstvideocrop.c b/gst/videocrop/gstvideocrop.c
index 6a90b5b3..f13610bc 100644
--- a/gst/videocrop/gstvideocrop.c
+++ b/gst/videocrop/gstvideocrop.c
@@ -39,39 +39,42 @@
typedef struct _GstVideoCrop GstVideoCrop;
typedef struct _GstVideoCropClass GstVideoCropClass;
-struct _GstVideoCrop {
- GstElement element;
+struct _GstVideoCrop
+{
+ GstElement element;
/* pads */
- GstPad *sinkpad;
- GstPad *srcpad;
+ GstPad *sinkpad;
+ GstPad *srcpad;
/* caps */
- gint width, height;
- gdouble fps;
- gint crop_left, crop_right, crop_top, crop_bottom;
+ gint width, height;
+ gdouble fps;
+ gint crop_left, crop_right, crop_top, crop_bottom;
};
-struct _GstVideoCropClass {
+struct _GstVideoCropClass
+{
GstElementClass parent_class;
};
/* elementfactory information */
-static GstElementDetails gst_video_crop_details = GST_ELEMENT_DETAILS (
- "video crop filter",
- "Filter/Effect/Video",
- "Crops video into a user defined region",
- "Wim Taymans <wim.taymans@chello.be>"
-);
+static GstElementDetails gst_video_crop_details =
+GST_ELEMENT_DETAILS ("video crop filter",
+ "Filter/Effect/Video",
+ "Crops video into a user defined region",
+ "Wim Taymans <wim.taymans@chello.be>");
/* VideoCrop signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_LEFT,
ARG_RIGHT,
@@ -81,40 +84,38 @@ enum {
};
static GstStaticPadTemplate gst_video_crop_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
-);
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
static GstStaticPadTemplate gst_video_crop_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
-);
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
-static void gst_video_crop_base_init (gpointer g_class);
-static void gst_video_crop_class_init (GstVideoCropClass *klass);
-static void gst_video_crop_init (GstVideoCrop *video_crop);
+static void gst_video_crop_base_init (gpointer g_class);
+static void gst_video_crop_class_init (GstVideoCropClass * klass);
+static void gst_video_crop_init (GstVideoCrop * video_crop);
-static void gst_video_crop_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_video_crop_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static void gst_video_crop_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_video_crop_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
static GstPadLinkReturn
- gst_video_crop_sink_link (GstPad *pad, const GstCaps *caps);
-static void gst_video_crop_chain (GstPad *pad, GstData *_data);
+gst_video_crop_sink_link (GstPad * pad, const GstCaps * caps);
+static void gst_video_crop_chain (GstPad * pad, GstData * _data);
-static GstElementStateReturn
- gst_video_crop_change_state (GstElement *element);
+static GstElementStateReturn gst_video_crop_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
+
/* static guint gst_video_crop_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -124,17 +125,19 @@ gst_video_crop_get_type (void)
if (!video_crop_type) {
static const GTypeInfo video_crop_info = {
- sizeof(GstVideoCropClass),
+ sizeof (GstVideoCropClass),
gst_video_crop_base_init,
NULL,
- (GClassInitFunc)gst_video_crop_class_init,
+ (GClassInitFunc) gst_video_crop_class_init,
NULL,
NULL,
- sizeof(GstVideoCrop),
+ sizeof (GstVideoCrop),
0,
- (GInstanceInitFunc)gst_video_crop_init,
+ (GInstanceInitFunc) gst_video_crop_init,
};
- video_crop_type = g_type_register_static(GST_TYPE_ELEMENT, "GstVideoCrop", &video_crop_info, 0);
+ video_crop_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstVideoCrop",
+ &video_crop_info, 0);
}
return video_crop_type;
}
@@ -146,34 +149,34 @@ gst_video_crop_base_init (gpointer g_class)
gst_element_class_set_details (element_class, &gst_video_crop_details);
- gst_element_class_add_pad_template (element_class,
+ gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&gst_video_crop_sink_template));
- gst_element_class_add_pad_template (element_class,
+ gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&gst_video_crop_src_template));
}
static void
-gst_video_crop_class_init (GstVideoCropClass *klass)
+gst_video_crop_class_init (GstVideoCropClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*) klass;
- gstelement_class = (GstElementClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LEFT,
- g_param_spec_int ("left", "Left", "Pixels to crop at left",
- 0, G_MAXINT, 0, G_PARAM_READWRITE));
+ g_param_spec_int ("left", "Left", "Pixels to crop at left",
+ 0, G_MAXINT, 0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_RIGHT,
- g_param_spec_int ("right", "Right", "Pixels to crop at right",
- 0, G_MAXINT, 0, G_PARAM_READWRITE));
+ g_param_spec_int ("right", "Right", "Pixels to crop at right",
+ 0, G_MAXINT, 0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TOP,
- g_param_spec_int ("top", "Top", "Pixels to crop at top",
- 0, G_MAXINT, 0, G_PARAM_READWRITE));
+ g_param_spec_int ("top", "Top", "Pixels to crop at top",
+ 0, G_MAXINT, 0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BOTTOM,
- g_param_spec_int ("bottom", "Bottom", "Pixels to crop at bottom",
- 0, G_MAXINT, 0, G_PARAM_READWRITE));
+ g_param_spec_int ("bottom", "Bottom", "Pixels to crop at bottom",
+ 0, G_MAXINT, 0, G_PARAM_READWRITE));
gobject_class->set_property = gst_video_crop_set_property;
gobject_class->get_property = gst_video_crop_get_property;
@@ -182,17 +185,19 @@ gst_video_crop_class_init (GstVideoCropClass *klass)
}
static void
-gst_video_crop_init (GstVideoCrop *video_crop)
+gst_video_crop_init (GstVideoCrop * video_crop)
{
/* create the sink and src pads */
- video_crop->sinkpad = gst_pad_new_from_template(
- gst_static_pad_template_get (&gst_video_crop_sink_template), "sink");
+ video_crop->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_video_crop_sink_template), "sink");
gst_element_add_pad (GST_ELEMENT (video_crop), video_crop->sinkpad);
gst_pad_set_chain_function (video_crop->sinkpad, gst_video_crop_chain);
gst_pad_set_link_function (video_crop->sinkpad, gst_video_crop_sink_link);
- video_crop->srcpad = gst_pad_new_from_template(
- gst_static_pad_template_get (&gst_video_crop_src_template), "src");
+ video_crop->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_video_crop_src_template), "src");
gst_element_add_pad (GST_ELEMENT (video_crop), video_crop->srcpad);
video_crop->crop_right = 0;
@@ -205,13 +210,14 @@ gst_video_crop_init (GstVideoCrop *video_crop)
/* do we need this function? */
static void
-gst_video_crop_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_video_crop_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstVideoCrop *video_crop;
-
+
/* it's not null if we got it, but it might not be ours */
g_return_if_fail (GST_IS_VIDEO_CROP (object));
-
+
video_crop = GST_VIDEO_CROP (object);
switch (prop_id) {
@@ -233,13 +239,14 @@ gst_video_crop_set_property (GObject *object, guint prop_id, const GValue *value
}
}
static void
-gst_video_crop_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_video_crop_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstVideoCrop *video_crop;
-
+
/* it's not null if we got it, but it might not be ours */
g_return_if_fail (GST_IS_VIDEO_CROP (object));
-
+
video_crop = GST_VIDEO_CROP (object);
switch (prop_id) {
@@ -262,7 +269,7 @@ gst_video_crop_get_property (GObject *object, guint prop_id, GValue *value, GPar
}
static GstPadLinkReturn
-gst_video_crop_sink_link (GstPad *pad, const GstCaps *caps)
+gst_video_crop_sink_link (GstPad * pad, const GstCaps * caps)
{
GstVideoCrop *video_crop;
GstStructure *structure;
@@ -271,7 +278,7 @@ gst_video_crop_sink_link (GstPad *pad, const GstCaps *caps)
video_crop = GST_VIDEO_CROP (gst_pad_get_parent (pad));
structure = gst_caps_get_structure (caps, 0);
- ret = gst_structure_get_int (structure, "width", &video_crop->width);
+ ret = gst_structure_get_int (structure, "width", &video_crop->width);
ret &= gst_structure_get_int (structure, "height", &video_crop->height);
ret &= gst_structure_get_double (structure, "framerate", &video_crop->fps);
@@ -289,28 +296,30 @@ gst_video_crop_sink_link (GstPad *pad, const GstCaps *caps)
#define GST_VIDEO_I420_V_ROWSTRIDE(width) ((width)/2)
static void
-gst_video_crop_i420 (GstVideoCrop *video_crop, GstBuffer *src_buffer, GstBuffer *dest_buffer)
+gst_video_crop_i420 (GstVideoCrop * video_crop, GstBuffer * src_buffer,
+ GstBuffer * dest_buffer)
{
guint8 *src;
guint8 *dest;
guint8 *srcY, *srcU, *srcV;
guint8 *destY, *destU, *destV;
gint out_width = video_crop->width -
- (video_crop->crop_left + video_crop->crop_right);
+ (video_crop->crop_left + video_crop->crop_right);
gint out_height = video_crop->height -
- (video_crop->crop_top + video_crop->crop_bottom);
+ (video_crop->crop_top + video_crop->crop_bottom);
gint src_stride;
gint j;
src = GST_BUFFER_DATA (src_buffer);
dest = GST_BUFFER_DATA (dest_buffer);
- g_return_if_fail(GST_BUFFER_SIZE (dest_buffer) == GST_VIDEO_I420_SIZE(out_width,out_height));
+ g_return_if_fail (GST_BUFFER_SIZE (dest_buffer) ==
+ GST_VIDEO_I420_SIZE (out_width, out_height));
- srcY = src + GST_VIDEO_I420_Y_OFFSET(video_crop->width, video_crop->height);
- destY = dest + GST_VIDEO_I420_Y_OFFSET(out_width, out_height);
+ srcY = src + GST_VIDEO_I420_Y_OFFSET (video_crop->width, video_crop->height);
+ destY = dest + GST_VIDEO_I420_Y_OFFSET (out_width, out_height);
- src_stride = GST_VIDEO_I420_Y_ROWSTRIDE(video_crop->width);
+ src_stride = GST_VIDEO_I420_Y_ROWSTRIDE (video_crop->width);
/* copy Y plane first */
@@ -321,32 +330,32 @@ gst_video_crop_i420 (GstVideoCrop *video_crop, GstBuffer *src_buffer, GstBuffer
destY += out_width;
}
- src_stride = GST_VIDEO_I420_U_ROWSTRIDE(video_crop->width);
+ src_stride = GST_VIDEO_I420_U_ROWSTRIDE (video_crop->width);
- destU = dest + GST_VIDEO_I420_U_OFFSET(out_width, out_height);
- destV = dest + GST_VIDEO_I420_V_OFFSET(out_width, out_height);
+ destU = dest + GST_VIDEO_I420_U_OFFSET (out_width, out_height);
+ destV = dest + GST_VIDEO_I420_V_OFFSET (out_width, out_height);
- srcU = src + GST_VIDEO_I420_U_OFFSET(video_crop->width, video_crop->height);
- srcV = src + GST_VIDEO_I420_V_OFFSET(video_crop->width, video_crop->height);
+ srcU = src + GST_VIDEO_I420_U_OFFSET (video_crop->width, video_crop->height);
+ srcV = src + GST_VIDEO_I420_V_OFFSET (video_crop->width, video_crop->height);
- srcU += src_stride * (video_crop->crop_top/2) + (video_crop->crop_left/2);
- srcV += src_stride * (video_crop->crop_top/2) + (video_crop->crop_left/2);
+ srcU += src_stride * (video_crop->crop_top / 2) + (video_crop->crop_left / 2);
+ srcV += src_stride * (video_crop->crop_top / 2) + (video_crop->crop_left / 2);
- for (j = 0; j < out_height/2; j++) {
+ for (j = 0; j < out_height / 2; j++) {
/* copy U plane */
- memcpy (destU, srcU, out_width/2);
+ memcpy (destU, srcU, out_width / 2);
srcU += src_stride;
- destU += out_width/2;
+ destU += out_width / 2;
/* copy V plane */
- memcpy (destV, srcV, out_width/2);
+ memcpy (destV, srcV, out_width / 2);
srcV += src_stride;
- destV += out_width/2;
+ destV += out_width / 2;
}
}
static void
-gst_video_crop_chain (GstPad *pad, GstData *_data)
+gst_video_crop_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buffer = GST_BUFFER (_data);
GstVideoCrop *video_crop;
@@ -367,9 +376,9 @@ gst_video_crop_chain (GstPad *pad, GstData *_data)
}
new_width = video_crop->width -
- (video_crop->crop_left + video_crop->crop_right);
+ (video_crop->crop_left + video_crop->crop_right);
new_height = video_crop->height -
- (video_crop->crop_top + video_crop->crop_bottom);
+ (video_crop->crop_top + video_crop->crop_bottom);
outbuf = gst_buffer_new_and_alloc ((new_width * new_height * 3) / 2);
GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buffer);
@@ -381,7 +390,7 @@ gst_video_crop_chain (GstPad *pad, GstData *_data)
}
static GstElementStateReturn
-gst_video_crop_change_state (GstElement *element)
+gst_video_crop_change_state (GstElement * element)
{
GstVideoCrop *video_crop;
@@ -408,19 +417,14 @@ gst_video_crop_change_state (GstElement *element)
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- return gst_element_register (plugin, "videocrop", GST_RANK_PRIMARY, GST_TYPE_VIDEO_CROP);
+ return gst_element_register (plugin, "videocrop", GST_RANK_PRIMARY,
+ GST_TYPE_VIDEO_CROP);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "videocrop",
- "Crops video into a user defined region",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "videocrop",
+ "Crops video into a user defined region",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/videofilter/gstgamma.c b/gst/videofilter/gstgamma.c
index 8f4ff28f..7cc2b0fd 100644
--- a/gst/videofilter/gstgamma.c
+++ b/gst/videofilter/gstgamma.c
@@ -49,7 +49,8 @@
typedef struct _GstGamma GstGamma;
typedef struct _GstGammaClass GstGammaClass;
-struct _GstGamma {
+struct _GstGamma
+{
GstVideofilter videofilter;
double gamma;
@@ -60,18 +61,21 @@ struct _GstGamma {
guint8 gamma_table_b[256];
};
-struct _GstGammaClass {
+struct _GstGammaClass
+{
GstVideofilterClass parent_class;
};
/* GstGamma signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_GAMMA,
ARG_GAMMA_R,
@@ -80,18 +84,23 @@ enum {
/* FILL ME */
};
-static void gst_gamma_base_init (gpointer g_class);
-static void gst_gamma_class_init (gpointer g_class, gpointer class_data);
-static void gst_gamma_init (GTypeInstance *instance, gpointer g_class);
+static void gst_gamma_base_init (gpointer g_class);
+static void gst_gamma_class_init (gpointer g_class, gpointer class_data);
+static void gst_gamma_init (GTypeInstance * instance, gpointer g_class);
-static void gst_gamma_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_gamma_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_gamma_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_gamma_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_gamma_planar411(GstVideofilter *videofilter, void *dest, void *src);
-static void gst_gamma_rgb24(GstVideofilter *videofilter, void *dest, void *src);
-static void gst_gamma_rgb32(GstVideofilter *videofilter, void *dest, void *src);
-static void gst_gamma_setup(GstVideofilter *videofilter);
-static void gst_gamma_calculate_tables (GstGamma *gamma);
+static void gst_gamma_planar411 (GstVideofilter * videofilter, void *dest,
+ void *src);
+static void gst_gamma_rgb24 (GstVideofilter * videofilter, void *dest,
+ void *src);
+static void gst_gamma_rgb32 (GstVideofilter * videofilter, void *dest,
+ void *src);
+static void gst_gamma_setup (GstVideofilter * videofilter);
+static void gst_gamma_calculate_tables (GstGamma * gamma);
GType
gst_gamma_get_type (void)
@@ -100,47 +109,46 @@ gst_gamma_get_type (void)
if (!gamma_type) {
static const GTypeInfo gamma_info = {
- sizeof(GstGammaClass),
+ sizeof (GstGammaClass),
gst_gamma_base_init,
NULL,
gst_gamma_class_init,
NULL,
NULL,
- sizeof(GstGamma),
+ sizeof (GstGamma),
0,
gst_gamma_init,
};
- gamma_type = g_type_register_static(GST_TYPE_VIDEOFILTER,
- "GstGamma", &gamma_info, 0);
+ gamma_type = g_type_register_static (GST_TYPE_VIDEOFILTER,
+ "GstGamma", &gamma_info, 0);
}
return gamma_type;
}
static GstVideofilterFormat gst_gamma_formats[] = {
- { "I420", 12, gst_gamma_planar411, },
- { "RGB ", 24, gst_gamma_rgb24, 24, G_BIG_ENDIAN, 0xff0000, 0xff00, 0xff },
- { "RGB ", 32, gst_gamma_rgb32, 24, G_BIG_ENDIAN, 0x00ff00, 0xff0000, 0xff000000 },
+ {"I420", 12, gst_gamma_planar411,},
+ {"RGB ", 24, gst_gamma_rgb24, 24, G_BIG_ENDIAN, 0xff0000, 0xff00, 0xff},
+ {"RGB ", 32, gst_gamma_rgb32, 24, G_BIG_ENDIAN, 0x00ff00, 0xff0000,
+ 0xff000000},
};
-
+
static void
gst_gamma_base_init (gpointer g_class)
{
- static GstElementDetails gamma_details = GST_ELEMENT_DETAILS (
- "Video Gamma Correction",
- "Filter/Effect/Video",
- "Adjusts gamma on a video stream",
- "Arwed v. Merkatz <v.merkatz@gmx.net"
- );
+ static GstElementDetails gamma_details =
+ GST_ELEMENT_DETAILS ("Video Gamma Correction",
+ "Filter/Effect/Video",
+ "Adjusts gamma on a video stream",
+ "Arwed v. Merkatz <v.merkatz@gmx.net");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &gamma_details);
- for(i=0;i<G_N_ELEMENTS(gst_gamma_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
- gst_gamma_formats + i);
+ for (i = 0; i < G_N_ELEMENTS (gst_gamma_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class, gst_gamma_formats + i);
}
gst_videofilter_class_add_pad_templates (GST_VIDEOFILTER_CLASS (g_class));
@@ -155,18 +163,18 @@ gst_gamma_class_init (gpointer g_class, gpointer class_data)
gobject_class = G_OBJECT_CLASS (g_class);
videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
- g_object_class_install_property(gobject_class, ARG_GAMMA,
- g_param_spec_double("gamma", "Gamma", "gamma",
- 0.01, 10, 1, G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_GAMMA_R,
- g_param_spec_double("redgamma", "Gamma_r", "gamma value for the red channel",
- 0.01, 10, 1, G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_GAMMA_G,
- g_param_spec_double("greengamma", "Gamma_g", "gamma value for the green channel",
- 0.01, 10, 1, G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_GAMMA_B,
- g_param_spec_double("bluegamma", "Gamma_b", "gamma value for the blue channel",
- 0.01, 10, 1, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_GAMMA,
+ g_param_spec_double ("gamma", "Gamma", "gamma",
+ 0.01, 10, 1, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_GAMMA_R,
+ g_param_spec_double ("redgamma", "Gamma_r",
+ "gamma value for the red channel", 0.01, 10, 1, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_GAMMA_G,
+ g_param_spec_double ("greengamma", "Gamma_g",
+ "gamma value for the green channel", 0.01, 10, 1, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_GAMMA_B,
+ g_param_spec_double ("bluegamma", "Gamma_b",
+ "gamma value for the blue channel", 0.01, 10, 1, G_PARAM_READWRITE));
gobject_class->set_property = gst_gamma_set_property;
gobject_class->get_property = gst_gamma_get_property;
@@ -175,14 +183,14 @@ gst_gamma_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_gamma_init (GTypeInstance *instance, gpointer g_class)
+gst_gamma_init (GTypeInstance * instance, gpointer g_class)
{
GstGamma *gamma = GST_GAMMA (instance);
GstVideofilter *videofilter;
- GST_DEBUG("gst_gamma_init");
+ GST_DEBUG ("gst_gamma_init");
- videofilter = GST_VIDEOFILTER(gamma);
+ videofilter = GST_VIDEOFILTER (gamma);
/* do stuff */
gamma->gamma = 1;
@@ -193,15 +201,16 @@ gst_gamma_init (GTypeInstance *instance, gpointer g_class)
}
static void
-gst_gamma_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_gamma_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstGamma *gamma;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_GAMMA(object));
- gamma = GST_GAMMA(object);
+ g_return_if_fail (GST_IS_GAMMA (object));
+ gamma = GST_GAMMA (object);
- GST_DEBUG("gst_gamma_set_property");
+ GST_DEBUG ("gst_gamma_set_property");
switch (prop_id) {
case ARG_GAMMA:
gamma->gamma = g_value_get_double (value);
@@ -225,13 +234,14 @@ gst_gamma_set_property (GObject *object, guint prop_id, const GValue *value, GPa
}
static void
-gst_gamma_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_gamma_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstGamma *gamma;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_GAMMA(object));
- gamma = GST_GAMMA(object);
+ g_return_if_fail (GST_IS_GAMMA (object));
+ gamma = GST_GAMMA (object);
switch (prop_id) {
case ARG_GAMMA:
@@ -252,50 +262,42 @@ gst_gamma_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe
}
}
-static gboolean plugin_init (GstPlugin *plugin)
+static gboolean
+plugin_init (GstPlugin * plugin)
{
- if(!gst_library_load("gstvideofilter"))
+ if (!gst_library_load ("gstvideofilter"))
return FALSE;
- return gst_element_register (plugin, "gamma", GST_RANK_NONE,
- GST_TYPE_GAMMA);
+ return gst_element_register (plugin, "gamma", GST_RANK_NONE, GST_TYPE_GAMMA);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "gamma",
- "Changes gamma on video images",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "gamma",
+ "Changes gamma on video images",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
-static void gst_gamma_setup(GstVideofilter *videofilter)
+ static void gst_gamma_setup (GstVideofilter * videofilter)
{
GstGamma *gamma;
- g_return_if_fail(GST_IS_GAMMA(videofilter));
- gamma = GST_GAMMA(videofilter);
+ g_return_if_fail (GST_IS_GAMMA (videofilter));
+ gamma = GST_GAMMA (videofilter);
/* if any setup needs to be done, do it here */
}
static void
-gst_gamma_calculate_tables (GstGamma *gamma)
+gst_gamma_calculate_tables (GstGamma * gamma)
{
int n;
double val;
double exp;
- if (gamma->gamma == 1.0 &&
- gamma->gamma_r == 1.0 &&
- gamma->gamma_g == 1.0 &&
- gamma->gamma_b == 1.0) {
+ if (gamma->gamma == 1.0 &&
+ gamma->gamma_r == 1.0 && gamma->gamma_g == 1.0 && gamma->gamma_b == 1.0) {
GST_VIDEOFILTER (gamma)->passthru = TRUE;
return;
}
@@ -303,77 +305,80 @@ gst_gamma_calculate_tables (GstGamma *gamma)
exp = 1.0 / gamma->gamma;
for (n = 0; n < 256; n++) {
- val = n/255.0;
- val = pow(val, exp);
+ val = n / 255.0;
+ val = pow (val, exp);
val = 255.0 * val;
- gamma->gamma_table[n] = (unsigned char) floor(val + 0.5);
+ gamma->gamma_table[n] = (unsigned char) floor (val + 0.5);
}
exp = 1.0 / gamma->gamma_r;
for (n = 0; n < 256; n++) {
- val = n/255.0;
- val = pow(val, exp);
+ val = n / 255.0;
+ val = pow (val, exp);
val = 255.0 * val;
- gamma->gamma_table_r[n] = (unsigned char) floor(val + 0.5);
+ gamma->gamma_table_r[n] = (unsigned char) floor (val + 0.5);
}
exp = 1.0 / gamma->gamma_g;
for (n = 0; n < 256; n++) {
- val = n/255.0;
- val = pow(val, exp);
+ val = n / 255.0;
+ val = pow (val, exp);
val = 255.0 * val;
- gamma->gamma_table_g[n] = (unsigned char) floor(val + 0.5);
+ gamma->gamma_table_g[n] = (unsigned char) floor (val + 0.5);
}
exp = 1.0 / gamma->gamma_b;
for (n = 0; n < 256; n++) {
- val = n/255.0;
- val = pow(val, exp);
+ val = n / 255.0;
+ val = pow (val, exp);
val = 255.0 * val;
- gamma->gamma_table_b[n] = (unsigned char) floor(val + 0.5);
+ gamma->gamma_table_b[n] = (unsigned char) floor (val + 0.5);
}
}
-static void gst_gamma_planar411(GstVideofilter *videofilter,
- void *dest, void *src)
+static void
+gst_gamma_planar411 (GstVideofilter * videofilter, void *dest, void *src)
{
GstGamma *gamma;
- int width = gst_videofilter_get_input_width(videofilter);
- int height = gst_videofilter_get_input_height(videofilter);
+ int width = gst_videofilter_get_input_width (videofilter);
+ int height = gst_videofilter_get_input_height (videofilter);
- g_return_if_fail(GST_IS_GAMMA(videofilter));
- gamma = GST_GAMMA(videofilter);
+ g_return_if_fail (GST_IS_GAMMA (videofilter));
+ gamma = GST_GAMMA (videofilter);
- memcpy(dest,src,width * height + (width/2) * (height/2) * 2);
+ memcpy (dest, src, width * height + (width / 2) * (height / 2) * 2);
if (gamma->gamma != 1.0) {
{
guint8 *cdest = dest;
guint8 *csrc = src;
- int x,y;
- for (y=0; y < height; y++) {
- for (x=0; x < width; x++) {
- cdest[y*width + x] = gamma->gamma_table[(unsigned char)csrc[y*width + x]];
- }
+ int x, y;
+
+ for (y = 0; y < height; y++) {
+ for (x = 0; x < width; x++) {
+ cdest[y * width + x] =
+ gamma->gamma_table[(unsigned char) csrc[y * width + x]];
+ }
}
}
}
}
-static void gst_gamma_rgb24(GstVideofilter *videofilter, void *dest, void *src)
+static void
+gst_gamma_rgb24 (GstVideofilter * videofilter, void *dest, void *src)
{
GstGamma *gamma;
int i;
int width, height;
guint8 *csrc = src;
guint8 *cdest = dest;
-
- g_return_if_fail(GST_IS_GAMMA(videofilter));
- gamma = GST_GAMMA(videofilter);
- width = gst_videofilter_get_input_width(videofilter);
- height = gst_videofilter_get_input_height(videofilter);
+ g_return_if_fail (GST_IS_GAMMA (videofilter));
+ gamma = GST_GAMMA (videofilter);
+
+ width = gst_videofilter_get_input_width (videofilter);
+ height = gst_videofilter_get_input_height (videofilter);
if (gamma->gamma == 1.0) {
i = 0;
- while ( i < width * height * 3) {
+ while (i < width * height * 3) {
*cdest++ = gamma->gamma_table_r[*csrc++];
*cdest++ = gamma->gamma_table_g[*csrc++];
*cdest++ = gamma->gamma_table_b[*csrc++];
@@ -388,22 +393,23 @@ static void gst_gamma_rgb24(GstVideofilter *videofilter, void *dest, void *src)
}
}
-static void gst_gamma_rgb32(GstVideofilter *videofilter, void *dest, void *src)
+static void
+gst_gamma_rgb32 (GstVideofilter * videofilter, void *dest, void *src)
{
GstGamma *gamma;
int i;
int width, height;
guint8 *csrc = src;
guint8 *cdest = dest;
-
- g_return_if_fail(GST_IS_GAMMA(videofilter));
- gamma = GST_GAMMA(videofilter);
- width = gst_videofilter_get_input_width(videofilter);
- height = gst_videofilter_get_input_height(videofilter);
+ g_return_if_fail (GST_IS_GAMMA (videofilter));
+ gamma = GST_GAMMA (videofilter);
+
+ width = gst_videofilter_get_input_width (videofilter);
+ height = gst_videofilter_get_input_height (videofilter);
if (gamma->gamma == 1.0) {
i = 0;
- while ( i < width * height * 4) {
+ while (i < width * height * 4) {
*cdest++ = gamma->gamma_table_b[*csrc++];
*cdest++ = gamma->gamma_table_g[*csrc++];
*cdest++ = gamma->gamma_table_r[*csrc++];
@@ -415,10 +421,10 @@ static void gst_gamma_rgb32(GstVideofilter *videofilter, void *dest, void *src)
i = 0;
while (i < width * height * 4) {
if ((i % 4) != 3)
- *cdest++ = gamma->gamma_table[*csrc++];
+ *cdest++ = gamma->gamma_table[*csrc++];
else {
- cdest++;
- csrc++;
+ cdest++;
+ csrc++;
}
i++;
}
diff --git a/gst/videofilter/gstvideobalance.c b/gst/videofilter/gstvideobalance.c
index ddbf76b9..2acad7c3 100644
--- a/gst/videofilter/gstvideobalance.c
+++ b/gst/videofilter/gstvideobalance.c
@@ -38,37 +38,43 @@
#include <gst/colorbalance/colorbalance.h>
/* GstVideobalance signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_CONTRAST,
ARG_BRIGHTNESS,
ARG_HUE,
ARG_SATURATION
- /* FILL ME */
+ /* FILL ME */
};
static GstVideofilterClass *parent_class = NULL;
-static void gst_videobalance_base_init (gpointer g_class);
-static void gst_videobalance_class_init (gpointer g_class, gpointer class_data);
-static void gst_videobalance_init (GTypeInstance *instance, gpointer g_class);
+static void gst_videobalance_base_init (gpointer g_class);
+static void gst_videobalance_class_init (gpointer g_class, gpointer class_data);
+static void gst_videobalance_init (GTypeInstance * instance, gpointer g_class);
-static void gst_videobalance_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_videobalance_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_videobalance_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_videobalance_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_videobalance_planar411(GstVideofilter *videofilter, void *dest, void *src);
-static void gst_videobalance_setup(GstVideofilter *videofilter);
+static void gst_videobalance_planar411 (GstVideofilter * videofilter,
+ void *dest, void *src);
+static void gst_videobalance_setup (GstVideofilter * videofilter);
-static void gst_videobalance_interface_init (GstImplementsInterfaceClass *klass);
-static void gst_videobalance_colorbalance_init (GstColorBalanceClass *iface);
+static void gst_videobalance_interface_init (GstImplementsInterfaceClass *
+ klass);
+static void gst_videobalance_colorbalance_init (GstColorBalanceClass * iface);
-static void gst_videobalance_dispose (GObject *object);
-static void gst_videobalance_update_properties (GstVideobalance *videobalance);
+static void gst_videobalance_dispose (GObject * object);
+static void gst_videobalance_update_properties (GstVideobalance * videobalance);
GType
gst_videobalance_get_type (void)
@@ -77,62 +83,61 @@ gst_videobalance_get_type (void)
if (!videobalance_type) {
static const GTypeInfo videobalance_info = {
- sizeof(GstVideobalanceClass),
+ sizeof (GstVideobalanceClass),
gst_videobalance_base_init,
NULL,
gst_videobalance_class_init,
NULL,
NULL,
- sizeof(GstVideobalance),
+ sizeof (GstVideobalance),
0,
gst_videobalance_init,
};
-
+
static const GInterfaceInfo iface_info = {
(GInterfaceInitFunc) gst_videobalance_interface_init,
NULL,
NULL,
};
-
+
static const GInterfaceInfo colorbalance_info = {
(GInterfaceInitFunc) gst_videobalance_colorbalance_init,
NULL,
NULL,
};
-
- videobalance_type = g_type_register_static(GST_TYPE_VIDEOFILTER,
- "GstVideobalance", &videobalance_info, 0);
-
- g_type_add_interface_static (videobalance_type, GST_TYPE_IMPLEMENTS_INTERFACE,
- &iface_info);
+
+ videobalance_type = g_type_register_static (GST_TYPE_VIDEOFILTER,
+ "GstVideobalance", &videobalance_info, 0);
+
+ g_type_add_interface_static (videobalance_type,
+ GST_TYPE_IMPLEMENTS_INTERFACE, &iface_info);
g_type_add_interface_static (videobalance_type, GST_TYPE_COLOR_BALANCE,
- &colorbalance_info);
+ &colorbalance_info);
}
return videobalance_type;
}
static GstVideofilterFormat gst_videobalance_formats[] = {
- { "I420", 12, gst_videobalance_planar411, },
+ {"I420", 12, gst_videobalance_planar411,},
};
-
+
static void
gst_videobalance_base_init (gpointer g_class)
{
- static GstElementDetails videobalance_details = GST_ELEMENT_DETAILS (
- "Video Balance Control",
- "Filter/Effect/Video",
- "Adjusts brightness, contrast, hue, saturation on a video stream",
- "David Schleef <ds@schleef.org>"
- );
+ static GstElementDetails videobalance_details =
+ GST_ELEMENT_DETAILS ("Video Balance Control",
+ "Filter/Effect/Video",
+ "Adjusts brightness, contrast, hue, saturation on a video stream",
+ "David Schleef <ds@schleef.org>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &videobalance_details);
- for(i=0;i<G_N_ELEMENTS(gst_videobalance_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_videobalance_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_videobalance_formats + i);
}
@@ -140,7 +145,7 @@ gst_videobalance_base_init (gpointer g_class)
}
static void
-gst_videobalance_dispose (GObject *object)
+gst_videobalance_dispose (GObject * object)
{
GList *channels = NULL;
GstVideobalance *balance;
@@ -155,19 +160,19 @@ gst_videobalance_dispose (GObject *object)
g_free (balance->tabley);
g_free (balance->tableu);
g_free (balance->tablev);
-
+
channels = balance->channels;
-
- while (channels)
- {
- GstColorBalanceChannel *channel = channels->data;
- g_object_unref (channel);
- channels = g_list_next (channels);
- }
-
+
+ while (channels) {
+ GstColorBalanceChannel *channel = channels->data;
+
+ g_object_unref (channel);
+ channels = g_list_next (channels);
+ }
+
if (balance->channels)
g_list_free (balance->channels);
-
+
G_OBJECT_CLASS (parent_class)->dispose (object);
}
@@ -181,19 +186,18 @@ gst_videobalance_class_init (gpointer g_class, gpointer class_data)
videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
parent_class = g_type_class_ref (GST_TYPE_VIDEOFILTER);
-
- g_object_class_install_property(gobject_class, ARG_CONTRAST,
- g_param_spec_double("contrast","Contrast","contrast",
- 0, 2, 1, G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_BRIGHTNESS,
- g_param_spec_double("brightness","Brightness","brightness",
- -1, 1, 0, G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_HUE,
- g_param_spec_double("hue","Hue","hue",
- -1, 1, 0, G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_SATURATION,
- g_param_spec_double("saturation","Saturation","saturation",
- 0, 2, 1, G_PARAM_READWRITE));
+
+ g_object_class_install_property (gobject_class, ARG_CONTRAST,
+ g_param_spec_double ("contrast", "Contrast", "contrast",
+ 0, 2, 1, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_BRIGHTNESS,
+ g_param_spec_double ("brightness", "Brightness", "brightness",
+ -1, 1, 0, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_HUE,
+ g_param_spec_double ("hue", "Hue", "hue", -1, 1, 0, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_SATURATION,
+ g_param_spec_double ("saturation", "Saturation", "saturation",
+ 0, 2, 1, G_PARAM_READWRITE));
gobject_class->set_property = gst_videobalance_set_property;
gobject_class->get_property = gst_videobalance_get_property;
@@ -202,28 +206,29 @@ gst_videobalance_class_init (gpointer g_class, gpointer class_data)
videofilter_class->setup = gst_videobalance_setup;
#ifdef HAVE_LIBOIL
- oil_init();
+ oil_init ();
#endif
}
static void
-gst_videobalance_init (GTypeInstance *instance, gpointer g_class)
+gst_videobalance_init (GTypeInstance * instance, gpointer g_class)
{
GstVideobalance *videobalance = GST_VIDEOBALANCE (instance);
GstVideofilter *videofilter;
char *channels[4] = { "HUE", "SATURATION",
- "BRIGHTNESS", "CONTRAST" };
+ "BRIGHTNESS", "CONTRAST"
+ };
gint i;
-
- GST_DEBUG("gst_videobalance_init");
- videofilter = GST_VIDEOFILTER(videobalance);
+ GST_DEBUG ("gst_videobalance_init");
+
+ videofilter = GST_VIDEOFILTER (videobalance);
/* do stuff */
- videobalance->contrast = 1.0;
+ videobalance->contrast = 1.0;
videobalance->brightness = 0.0;
videobalance->saturation = 1.0;
- videobalance->hue = 0.0;
+ videobalance->hue = 0.0;
videobalance->needupdate = FALSE;
videofilter->passthru = TRUE;
@@ -235,60 +240,58 @@ gst_videobalance_init (GTypeInstance *instance, gpointer g_class)
videobalance->tableu[i] = g_new (guint8, 256);
videobalance->tablev[i] = g_new (guint8, 256);
}
-
+
/* Generate the channels list */
- for (i = 0; i < (sizeof (channels) / sizeof (char *)); i++)
- {
- GstColorBalanceChannel *channel;
-
- channel = g_object_new (GST_TYPE_COLOR_BALANCE_CHANNEL, NULL);
- channel->label = g_strdup (channels[i]);
- channel->min_value = -1000;
- channel->max_value = 1000;
-
- videobalance->channels = g_list_append (videobalance->channels,
- channel);
- }
+ for (i = 0; i < (sizeof (channels) / sizeof (char *)); i++) {
+ GstColorBalanceChannel *channel;
+
+ channel = g_object_new (GST_TYPE_COLOR_BALANCE_CHANNEL, NULL);
+ channel->label = g_strdup (channels[i]);
+ channel->min_value = -1000;
+ channel->max_value = 1000;
+
+ videobalance->channels = g_list_append (videobalance->channels, channel);
+ }
}
static gboolean
-gst_videobalance_interface_supported (GstImplementsInterface *iface, GType type)
+gst_videobalance_interface_supported (GstImplementsInterface * iface,
+ GType type)
{
g_assert (type == GST_TYPE_COLOR_BALANCE);
return TRUE;
}
static void
-gst_videobalance_interface_init (GstImplementsInterfaceClass *klass)
+gst_videobalance_interface_init (GstImplementsInterfaceClass * klass)
{
klass->supported = gst_videobalance_interface_supported;
}
static const GList *
-gst_videobalance_colorbalance_list_channels (GstColorBalance *balance)
+gst_videobalance_colorbalance_list_channels (GstColorBalance * balance)
{
GstVideobalance *videobalance = GST_VIDEOBALANCE (balance);
-
+
g_return_val_if_fail (videobalance != NULL, NULL);
g_return_val_if_fail (GST_IS_VIDEOBALANCE (videobalance), NULL);
-
+
return videobalance->channels;
}
static void
-gst_videobalance_colorbalance_set_value (GstColorBalance *balance,
- GstColorBalanceChannel *channel,
- gint value)
+gst_videobalance_colorbalance_set_value (GstColorBalance * balance,
+ GstColorBalanceChannel * channel, gint value)
{
GstVideobalance *vb = GST_VIDEOBALANCE (balance);
GstVideofilter *vf = GST_VIDEOFILTER (vb);
-
+
g_return_if_fail (vb != NULL);
g_return_if_fail (GST_IS_VIDEOBALANCE (vb));
g_return_if_fail (GST_IS_VIDEOFILTER (vf));
g_return_if_fail (channel->label != NULL);
-
+
if (!g_ascii_strcasecmp (channel->label, "HUE")) {
vb->hue = (value + 1000.0) * 2.0 / 2000.0 - 1.0;
} else if (!g_ascii_strcasecmp (channel->label, "SATURATION")) {
@@ -298,21 +301,21 @@ gst_videobalance_colorbalance_set_value (GstColorBalance *balance,
} else if (!g_ascii_strcasecmp (channel->label, "CONTRAST")) {
vb->contrast = (value + 1000.0) * 2.0 / 2000.0;
}
-
+
gst_videobalance_update_properties (vb);
}
static gint
-gst_videobalance_colorbalance_get_value (GstColorBalance *balance,
- GstColorBalanceChannel *channel)
+gst_videobalance_colorbalance_get_value (GstColorBalance * balance,
+ GstColorBalanceChannel * channel)
{
GstVideobalance *vb = GST_VIDEOBALANCE (balance);
gint value = 0;
-
+
g_return_val_if_fail (vb != NULL, 0);
g_return_val_if_fail (GST_IS_VIDEOBALANCE (vb), 0);
g_return_val_if_fail (channel->label != NULL, 0);
-
+
if (!g_ascii_strcasecmp (channel->label, "HUE")) {
value = (vb->hue + 1) * 2000.0 / 2.0 - 1000.0;
} else if (!g_ascii_strcasecmp (channel->label, "SATURATION")) {
@@ -322,12 +325,12 @@ gst_videobalance_colorbalance_get_value (GstColorBalance *balance,
} else if (!g_ascii_strcasecmp (channel->label, "CONTRAST")) {
value = vb->contrast * 2000.0 / 2.0 - 1000.0;
}
-
+
return value;
}
static void
-gst_videobalance_colorbalance_init (GstColorBalanceClass *iface)
+gst_videobalance_colorbalance_init (GstColorBalanceClass * iface)
{
GST_COLOR_BALANCE_TYPE (iface) = GST_COLOR_BALANCE_SOFTWARE;
iface->list_channels = gst_videobalance_colorbalance_list_channels;
@@ -336,7 +339,7 @@ gst_videobalance_colorbalance_init (GstColorBalanceClass *iface)
}
static void
-gst_videobalance_update_properties (GstVideobalance *videobalance)
+gst_videobalance_update_properties (GstVideobalance * videobalance)
{
GstVideofilter *vf = GST_VIDEOFILTER (videobalance);
@@ -344,8 +347,7 @@ gst_videobalance_update_properties (GstVideobalance *videobalance)
if (videobalance->contrast == 1.0 &&
videobalance->brightness == 0.0 &&
- videobalance->hue == 0.0 &&
- videobalance->saturation == 1.0) {
+ videobalance->hue == 0.0 && videobalance->saturation == 1.0) {
vf->passthru = TRUE;
} else {
vf->passthru = FALSE;
@@ -353,15 +355,16 @@ gst_videobalance_update_properties (GstVideobalance *videobalance)
}
static void
-gst_videobalance_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_videobalance_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstVideobalance *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOBALANCE(object));
- src = GST_VIDEOBALANCE(object);
+ g_return_if_fail (GST_IS_VIDEOBALANCE (object));
+ src = GST_VIDEOBALANCE (object);
- GST_DEBUG("gst_videobalance_set_property");
+ GST_DEBUG ("gst_videobalance_set_property");
switch (prop_id) {
case ARG_CONTRAST:
src->contrast = g_value_get_double (value);
@@ -383,13 +386,14 @@ gst_videobalance_set_property (GObject *object, guint prop_id, const GValue *val
}
static void
-gst_videobalance_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_videobalance_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstVideobalance *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOBALANCE(object));
- src = GST_VIDEOBALANCE(object);
+ g_return_if_fail (GST_IS_VIDEOBALANCE (object));
+ src = GST_VIDEOBALANCE (object);
switch (prop_id) {
case ARG_CONTRAST:
@@ -410,33 +414,28 @@ gst_videobalance_get_property (GObject *object, guint prop_id, GValue *value, GP
}
}
-static gboolean plugin_init (GstPlugin *plugin)
+static gboolean
+plugin_init (GstPlugin * plugin)
{
- if(!gst_library_load("gstvideofilter"))
+ if (!gst_library_load ("gstvideofilter"))
return FALSE;
return gst_element_register (plugin, "videobalance", GST_RANK_NONE,
GST_TYPE_VIDEOBALANCE);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "videobalance",
- "Changes hue, saturation, brightness etc. on video images",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
-
-static void gst_videobalance_setup(GstVideofilter *videofilter)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "videobalance",
+ "Changes hue, saturation, brightness etc. on video images",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
+
+ static void gst_videobalance_setup (GstVideofilter * videofilter)
{
GstVideobalance *videobalance;
- g_return_if_fail(GST_IS_VIDEOBALANCE(videofilter));
- videobalance = GST_VIDEOBALANCE(videofilter);
+ g_return_if_fail (GST_IS_VIDEOBALANCE (videofilter));
+ videobalance = GST_VIDEOBALANCE (videofilter);
/* if any setup needs to be done, do it here */
@@ -447,7 +446,7 @@ static void gst_videobalance_setup(GstVideofilter *videofilter)
*/
static void
-gst_videobalance_update_tables_planar411 (GstVideobalance *vb)
+gst_videobalance_update_tables_planar411 (GstVideobalance * vb)
{
gint i, j;
gdouble y, u, v, hue_cos, hue_sin;
@@ -471,28 +470,30 @@ gst_videobalance_update_tables_planar411 (GstVideobalance *vb)
* separately. */
for (i = -128; i < 128; i++) {
for (j = -128; j < 128; j++) {
- u = 128 + (( i * hue_cos + j * hue_sin) * vb->saturation);
+ u = 128 + ((i * hue_cos + j * hue_sin) * vb->saturation);
v = 128 + ((-i * hue_sin + j * hue_cos) * vb->saturation);
- if(u < 0)
- u = 0;
+ if (u < 0)
+ u = 0;
else if (u > 255)
- u = 255;
+ u = 255;
if (v < 0)
- v = 0;
+ v = 0;
else if (v > 255)
- v = 255;
- vb->tableu[i+128][j+128] = rint (u);
- vb->tablev[i+128][j+128] = rint (v);
+ v = 255;
+ vb->tableu[i + 128][j + 128] = rint (u);
+ vb->tablev[i + 128][j + 128] = rint (v);
}
}
}
#ifndef HAVE_LIBOIL
-void tablelookup_u8 (guint8 *dest, int dstr, guint8 *src, int sstr,
- guint8 *table, int tstr, int n)
+void
+tablelookup_u8 (guint8 * dest, int dstr, guint8 * src, int sstr,
+ guint8 * table, int tstr, int n)
{
int i;
- for(i=0;i<n;i++){
+
+ for (i = 0; i < n; i++) {
*dest = table[*src * tstr];
dest += dstr;
src += sstr;
@@ -500,16 +501,16 @@ void tablelookup_u8 (guint8 *dest, int dstr, guint8 *src, int sstr,
}
#endif
-static void gst_videobalance_planar411(GstVideofilter *videofilter,
- void *dest, void *src)
+static void
+gst_videobalance_planar411 (GstVideofilter * videofilter, void *dest, void *src)
{
GstVideobalance *videobalance;
int width;
int height;
- int x,y;
+ int x, y;
- g_return_if_fail(GST_IS_VIDEOBALANCE(videofilter));
- videobalance = GST_VIDEOBALANCE(videofilter);
+ g_return_if_fail (GST_IS_VIDEOBALANCE (videofilter));
+ videobalance = GST_VIDEOBALANCE (videofilter);
if (videobalance->needupdate) {
gst_videobalance_update_tables_planar411 (videobalance);
@@ -523,9 +524,9 @@ static void gst_videobalance_planar411(GstVideofilter *videofilter,
guint8 *cdest = dest;
guint8 *csrc = src;
- for(y=0;y<height;y++) {
- tablelookup_u8 (cdest + y*width, 1, csrc + y*width, 1,
- videobalance->tabley, 1, width);
+ for (y = 0; y < height; y++) {
+ tablelookup_u8 (cdest + y * width, 1, csrc + y * width, 1,
+ videobalance->tabley, 1, width);
}
}
@@ -534,17 +535,17 @@ static void gst_videobalance_planar411(GstVideofilter *videofilter,
guint8 *usrc, *vsrc;
guint8 *udest, *vdest;
- usrc = src + width*height;
- udest = dest + width*height;
- vsrc = src + width*height + (width/2)*(height/2);
- vdest = dest + width*height + (width/2)*(height/2);
-
- for(y=0;y<height/2;y++){
- for(x=0;x<width/2;x++){
- u1 = usrc[y*(width/2) + x];
- v1 = vsrc[y*(width/2) + x];
- udest[y*(width/2) + x] = videobalance->tableu[u1][v1];
- vdest[y*(width/2) + x] = videobalance->tablev[u1][v1];
+ usrc = src + width * height;
+ udest = dest + width * height;
+ vsrc = src + width * height + (width / 2) * (height / 2);
+ vdest = dest + width * height + (width / 2) * (height / 2);
+
+ for (y = 0; y < height / 2; y++) {
+ for (x = 0; x < width / 2; x++) {
+ u1 = usrc[y * (width / 2) + x];
+ v1 = vsrc[y * (width / 2) + x];
+ udest[y * (width / 2) + x] = videobalance->tableu[u1][v1];
+ vdest[y * (width / 2) + x] = videobalance->tablev[u1][v1];
}
}
}
diff --git a/gst/videofilter/gstvideobalance.h b/gst/videofilter/gstvideobalance.h
index 45aab910..03a3d066 100644
--- a/gst/videofilter/gstvideobalance.h
+++ b/gst/videofilter/gstvideobalance.h
@@ -28,7 +28,6 @@
G_BEGIN_DECLS
-
#define GST_TYPE_VIDEOBALANCE \
(gst_videobalance_get_type())
#define GST_VIDEOBALANCE(obj) \
@@ -39,30 +38,30 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VIDEOBALANCE))
#define GST_IS_VIDEOBALANCE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VIDEOBALANCE))
-
typedef struct _GstVideobalance GstVideobalance;
typedef struct _GstVideobalanceClass GstVideobalanceClass;
-struct _GstVideobalance {
+struct _GstVideobalance
+{
GstVideofilter videofilter;
- guint8 *tabley, **tableu, **tablev;
+ guint8 *tabley, **tableu, **tablev;
gboolean needupdate;
gdouble contrast;
gdouble brightness;
gdouble hue;
gdouble saturation;
-
+
GList *channels;
};
-struct _GstVideobalanceClass {
+struct _GstVideobalanceClass
+{
GstVideofilterClass parent_class;
};
-GType gst_videobalance_get_type(void);
+GType gst_videobalance_get_type (void);
G_END_DECLS
-
#endif /* __GST_VIDEOBALANCE_H__ */
diff --git a/gst/videofilter/gstvideofilter.c b/gst/videofilter/gstvideofilter.c
index 7ef18e4a..590616bc 100644
--- a/gst/videofilter/gstvideofilter.c
+++ b/gst/videofilter/gstvideofilter.c
@@ -29,27 +29,31 @@
/* GstVideofilter signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_METHOD,
/* FILL ME */
};
-static void gst_videofilter_base_init (gpointer g_class);
-static void gst_videofilter_class_init (gpointer g_class, gpointer class_data);
-static void gst_videofilter_init (GTypeInstance *instance, gpointer g_class);
+static void gst_videofilter_base_init (gpointer g_class);
+static void gst_videofilter_class_init (gpointer g_class, gpointer class_data);
+static void gst_videofilter_init (GTypeInstance * instance, gpointer g_class);
-static void gst_videofilter_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_videofilter_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_videofilter_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_videofilter_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_videofilter_chain (GstPad *pad, GstData *_data);
-GstCaps * gst_videofilter_class_get_capslist(GstVideofilterClass *klass);
-static void gst_videofilter_setup(GstVideofilter *videofilter);
+static void gst_videofilter_chain (GstPad * pad, GstData * _data);
+GstCaps *gst_videofilter_class_get_capslist (GstVideofilterClass * klass);
+static void gst_videofilter_setup (GstVideofilter * videofilter);
static GstElementClass *parent_class = NULL;
@@ -60,23 +64,24 @@ gst_videofilter_get_type (void)
if (!videofilter_type) {
static const GTypeInfo videofilter_info = {
- sizeof(GstVideofilterClass),
+ sizeof (GstVideofilterClass),
gst_videofilter_base_init,
NULL,
gst_videofilter_class_init,
NULL,
NULL,
- sizeof(GstVideofilter),
+ sizeof (GstVideofilter),
0,
gst_videofilter_init,
};
- videofilter_type = g_type_register_static(GST_TYPE_ELEMENT,
+ videofilter_type = g_type_register_static (GST_TYPE_ELEMENT,
"GstVideofilter", &videofilter_info, G_TYPE_FLAG_ABSTRACT);
}
return videofilter_type;
}
-static void gst_videofilter_base_init (gpointer g_class)
+static void
+gst_videofilter_base_init (gpointer g_class)
{
static GstElementDetails videofilter_details = {
"Video scaler",
@@ -87,38 +92,42 @@ static void gst_videofilter_base_init (gpointer g_class)
GstVideofilterClass *klass = (GstVideofilterClass *) g_class;
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- klass->formats = g_ptr_array_new();
+ klass->formats = g_ptr_array_new ();
gst_element_class_set_details (element_class, &videofilter_details);
}
-static void gst_videofilter_class_init (gpointer g_class, gpointer class_data)
+static void
+gst_videofilter_class_init (gpointer g_class, gpointer class_data)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
GstVideofilterClass *klass;
- klass = (GstVideofilterClass *)g_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ klass = (GstVideofilterClass *) g_class;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gobject_class->set_property = gst_videofilter_set_property;
gobject_class->get_property = gst_videofilter_get_property;
}
-static GstStructure *gst_videofilter_format_get_structure(GstVideofilterFormat *format)
+static GstStructure *
+gst_videofilter_format_get_structure (GstVideofilterFormat * format)
{
unsigned int fourcc;
GstStructure *structure;
- if(format->filter_func==NULL)
+ if (format->filter_func == NULL)
return NULL;
- fourcc = GST_MAKE_FOURCC(format->fourcc[0],format->fourcc[1],format->fourcc[2],format->fourcc[3]);
+ fourcc =
+ GST_MAKE_FOURCC (format->fourcc[0], format->fourcc[1], format->fourcc[2],
+ format->fourcc[3]);
- if(format->depth){
+ if (format->depth) {
structure = gst_structure_new ("video/x-raw-rgb",
"depth", G_TYPE_INT, format->depth,
"bpp", G_TYPE_INT, format->bpp,
@@ -126,29 +135,31 @@ static GstStructure *gst_videofilter_format_get_structure(GstVideofilterFormat *
"red_mask", G_TYPE_INT, format->red_mask,
"green_mask", G_TYPE_INT, format->green_mask,
"blue_mask", G_TYPE_INT, format->blue_mask, NULL);
- }else{
+ } else {
structure = gst_structure_new ("video/x-raw-yuv",
"format", GST_TYPE_FOURCC, fourcc, NULL);
}
- gst_structure_set(structure,
+ gst_structure_set (structure,
"height", GST_TYPE_INT_RANGE, 1, G_MAXINT,
"width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
- "framerate", GST_TYPE_DOUBLE_RANGE, 0.0, G_MAXDOUBLE,
- NULL);
+ "framerate", GST_TYPE_DOUBLE_RANGE, 0.0, G_MAXDOUBLE, NULL);
return structure;
}
-GstCaps * gst_videofilter_class_get_capslist(GstVideofilterClass *klass)
+GstCaps *
+gst_videofilter_class_get_capslist (GstVideofilterClass * klass)
{
GstCaps *caps;
GstStructure *structure;
int i;
- caps = gst_caps_new_empty();
- for(i=0;i<klass->formats->len;i++){
- structure = gst_videofilter_format_get_structure(g_ptr_array_index(klass->formats,i));
+ caps = gst_caps_new_empty ();
+ for (i = 0; i < klass->formats->len; i++) {
+ structure =
+ gst_videofilter_format_get_structure (g_ptr_array_index (klass->formats,
+ i));
gst_caps_append_structure (caps, structure);
}
@@ -156,22 +167,24 @@ GstCaps * gst_videofilter_class_get_capslist(GstVideofilterClass *klass)
}
static GstCaps *
-gst_videofilter_getcaps (GstPad *pad)
+gst_videofilter_getcaps (GstPad * pad)
{
GstVideofilter *videofilter;
GstVideofilterClass *klass;
+
//GstCaps *caps;
GstCaps *othercaps;
GstPad *otherpad;
+
//int i;
- GST_DEBUG("gst_videofilter_getcaps");
+ GST_DEBUG ("gst_videofilter_getcaps");
videofilter = GST_VIDEOFILTER (gst_pad_get_parent (pad));
-
- klass = GST_VIDEOFILTER_CLASS(G_OBJECT_GET_CLASS(videofilter));
+
+ klass = GST_VIDEOFILTER_CLASS (G_OBJECT_GET_CLASS (videofilter));
otherpad = (pad == videofilter->srcpad) ? videofilter->sinkpad :
- videofilter->srcpad;
+ videofilter->srcpad;
othercaps = gst_pad_get_allowed_caps (otherpad);
@@ -183,20 +196,22 @@ gst_videofilter_getcaps (GstPad *pad)
* the peer's formats. Create a list of them. */
/* FIXME optimize if peercaps == NULL */
caps = gst_caps_new_empty ();
- for(i=0;i<klass->formats->len;i++){
+ for (i = 0; i < klass->formats->len; i++) {
GstCaps *icaps;
GstCaps *fromcaps;
-
- fromcaps = gst_caps_new_full (gst_videofilter_format_get_structure (
- g_ptr_array_index (klass->formats,i)), NULL);
+
+ fromcaps =
+ gst_caps_new_full (gst_videofilter_format_get_structure
+ (g_ptr_array_index (klass->formats, i)), NULL);
icaps = gst_caps_intersect (fromcaps, peercaps);
- if(icaps != NULL){
+ if (icaps != NULL) {
gst_caps_append (caps, fromcaps);
} else {
gst_caps_free (fromcaps);
}
- if(icaps) gst_caps_free (icaps);
+ if (icaps)
+ gst_caps_free (icaps);
}
gst_caps_free (peercaps);
@@ -205,7 +220,7 @@ gst_videofilter_getcaps (GstPad *pad)
}
static GstPadLinkReturn
-gst_videofilter_link (GstPad *pad, const GstCaps *caps)
+gst_videofilter_link (GstPad * pad, const GstCaps * caps)
{
GstVideofilter *videofilter;
GstStructure *structure;
@@ -215,28 +230,30 @@ gst_videofilter_link (GstPad *pad, const GstCaps *caps)
GstPadLinkReturn lret;
GstPad *otherpad;
- GST_DEBUG("gst_videofilter_src_link");
+ GST_DEBUG ("gst_videofilter_src_link");
videofilter = GST_VIDEOFILTER (gst_pad_get_parent (pad));
otherpad = (pad == videofilter->srcpad) ? videofilter->sinkpad :
- videofilter->srcpad;
+ videofilter->srcpad;
structure = gst_caps_get_structure (caps, 0);
- videofilter->format = gst_videofilter_find_format_by_structure (
- videofilter, structure);
- g_return_val_if_fail(videofilter->format, GST_PAD_LINK_REFUSED);
+ videofilter->format =
+ gst_videofilter_find_format_by_structure (videofilter, structure);
+ g_return_val_if_fail (videofilter->format, GST_PAD_LINK_REFUSED);
ret = gst_structure_get_int (structure, "width", &width);
ret &= gst_structure_get_int (structure, "height", &height);
ret &= gst_structure_get_double (structure, "framerate", &framerate);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
lret = gst_pad_try_set_caps (otherpad, caps);
- if (GST_PAD_LINK_FAILED (lret)) return lret;
+ if (GST_PAD_LINK_FAILED (lret))
+ return lret;
- GST_DEBUG("width %d height %d",width,height);
+ GST_DEBUG ("width %d height %d", width, height);
#if 0
if (pad == videofilter->srcpad) {
@@ -253,41 +270,41 @@ gst_videofilter_link (GstPad *pad, const GstCaps *caps)
videofilter->from_height = height;
videofilter->framerate = framerate;
- gst_videofilter_setup(videofilter);
+ gst_videofilter_setup (videofilter);
return GST_PAD_LINK_OK;
}
static void
-gst_videofilter_init (GTypeInstance *instance, gpointer g_class)
+gst_videofilter_init (GTypeInstance * instance, gpointer g_class)
{
GstVideofilter *videofilter = GST_VIDEOFILTER (instance);
GstPadTemplate *pad_template;
- GST_DEBUG("gst_videofilter_init");
-
- pad_template = gst_element_class_get_pad_template(GST_ELEMENT_CLASS(g_class),
- "sink");
- g_return_if_fail(pad_template != NULL);
- videofilter->sinkpad = gst_pad_new_from_template(pad_template, "sink");
- gst_element_add_pad(GST_ELEMENT(videofilter),videofilter->sinkpad);
- gst_pad_set_chain_function(videofilter->sinkpad,gst_videofilter_chain);
- gst_pad_set_link_function(videofilter->sinkpad,gst_videofilter_link);
- gst_pad_set_getcaps_function(videofilter->sinkpad,gst_videofilter_getcaps);
-
- pad_template = gst_element_class_get_pad_template(GST_ELEMENT_CLASS(g_class),
- "src");
- g_return_if_fail(pad_template != NULL);
- videofilter->srcpad = gst_pad_new_from_template(pad_template, "src");
- gst_element_add_pad(GST_ELEMENT(videofilter),videofilter->srcpad);
- gst_pad_set_link_function(videofilter->srcpad,gst_videofilter_link);
- gst_pad_set_getcaps_function(videofilter->srcpad,gst_videofilter_getcaps);
+ GST_DEBUG ("gst_videofilter_init");
+
+ pad_template =
+ gst_element_class_get_pad_template (GST_ELEMENT_CLASS (g_class), "sink");
+ g_return_if_fail (pad_template != NULL);
+ videofilter->sinkpad = gst_pad_new_from_template (pad_template, "sink");
+ gst_element_add_pad (GST_ELEMENT (videofilter), videofilter->sinkpad);
+ gst_pad_set_chain_function (videofilter->sinkpad, gst_videofilter_chain);
+ gst_pad_set_link_function (videofilter->sinkpad, gst_videofilter_link);
+ gst_pad_set_getcaps_function (videofilter->sinkpad, gst_videofilter_getcaps);
+
+ pad_template =
+ gst_element_class_get_pad_template (GST_ELEMENT_CLASS (g_class), "src");
+ g_return_if_fail (pad_template != NULL);
+ videofilter->srcpad = gst_pad_new_from_template (pad_template, "src");
+ gst_element_add_pad (GST_ELEMENT (videofilter), videofilter->srcpad);
+ gst_pad_set_link_function (videofilter->srcpad, gst_videofilter_link);
+ gst_pad_set_getcaps_function (videofilter->srcpad, gst_videofilter_getcaps);
videofilter->inited = FALSE;
}
static void
-gst_videofilter_chain (GstPad *pad, GstData *_data)
+gst_videofilter_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstVideofilter *videofilter;
@@ -304,62 +321,63 @@ gst_videofilter_chain (GstPad *pad, GstData *_data)
videofilter = GST_VIDEOFILTER (gst_pad_get_parent (pad));
//g_return_if_fail (videofilter->inited);
- data = GST_BUFFER_DATA(buf);
- size = GST_BUFFER_SIZE(buf);
+ data = GST_BUFFER_DATA (buf);
+ size = GST_BUFFER_SIZE (buf);
- if(videofilter->passthru){
- gst_pad_push(videofilter->srcpad, GST_DATA (buf));
+ if (videofilter->passthru) {
+ gst_pad_push (videofilter->srcpad, GST_DATA (buf));
return;
}
- GST_DEBUG ("gst_videofilter_chain: got buffer of %ld bytes in '%s'",size,
- GST_OBJECT_NAME (videofilter));
-
- GST_DEBUG("size=%ld from=%dx%d to=%dx%d fromsize=%ld (should be %d) tosize=%d",
- size,
- videofilter->from_width, videofilter->from_height,
- videofilter->to_width, videofilter->to_height,
- size, videofilter->from_buf_size,
- videofilter->to_buf_size);
+ GST_DEBUG ("gst_videofilter_chain: got buffer of %ld bytes in '%s'", size,
+ GST_OBJECT_NAME (videofilter));
+
+ GST_DEBUG
+ ("size=%ld from=%dx%d to=%dx%d fromsize=%ld (should be %d) tosize=%d",
+ size, videofilter->from_width, videofilter->from_height,
+ videofilter->to_width, videofilter->to_height, size,
+ videofilter->from_buf_size, videofilter->to_buf_size);
g_return_if_fail (size >= videofilter->from_buf_size);
if (size > videofilter->from_buf_size) {
- GST_INFO("buffer size %ld larger than expected (%d)",
- size, videofilter->from_buf_size);
+ GST_INFO ("buffer size %ld larger than expected (%d)",
+ size, videofilter->from_buf_size);
}
- outbuf = gst_pad_alloc_buffer(videofilter->srcpad, GST_BUFFER_OFFSET_NONE,
+ outbuf = gst_pad_alloc_buffer (videofilter->srcpad, GST_BUFFER_OFFSET_NONE,
videofilter->to_buf_size);
- GST_BUFFER_TIMESTAMP(outbuf) = GST_BUFFER_TIMESTAMP(buf);
- GST_BUFFER_DURATION(outbuf) = GST_BUFFER_DURATION(buf);
+ GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
+ GST_BUFFER_DURATION (outbuf) = GST_BUFFER_DURATION (buf);
- g_return_if_fail(videofilter->format);
- GST_DEBUG ("format %s",videofilter->format->fourcc);
+ g_return_if_fail (videofilter->format);
+ GST_DEBUG ("format %s", videofilter->format->fourcc);
videofilter->in_buf = buf;
videofilter->out_buf = outbuf;
- videofilter->format->filter_func(videofilter, GST_BUFFER_DATA(outbuf), data);
+ videofilter->format->filter_func (videofilter, GST_BUFFER_DATA (outbuf),
+ data);
- GST_DEBUG ("gst_videofilter_chain: pushing buffer of %d bytes in '%s'",GST_BUFFER_SIZE(outbuf),
- GST_OBJECT_NAME (videofilter));
+ GST_DEBUG ("gst_videofilter_chain: pushing buffer of %d bytes in '%s'",
+ GST_BUFFER_SIZE (outbuf), GST_OBJECT_NAME (videofilter));
- gst_pad_push(videofilter->srcpad, GST_DATA (outbuf));
+ gst_pad_push (videofilter->srcpad, GST_DATA (outbuf));
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
static void
-gst_videofilter_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_videofilter_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstVideofilter *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOFILTER(object));
- src = GST_VIDEOFILTER(object);
+ g_return_if_fail (GST_IS_VIDEOFILTER (object));
+ src = GST_VIDEOFILTER (object);
- GST_DEBUG("gst_videofilter_set_property");
+ GST_DEBUG ("gst_videofilter_set_property");
switch (prop_id) {
default:
break;
@@ -367,13 +385,14 @@ gst_videofilter_set_property (GObject *object, guint prop_id, const GValue *valu
}
static void
-gst_videofilter_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_videofilter_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstVideofilter *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOFILTER(object));
- src = GST_VIDEOFILTER(object);
+ g_return_if_fail (GST_IS_VIDEOFILTER (object));
+ src = GST_VIDEOFILTER (object);
switch (prop_id) {
default:
@@ -382,36 +401,39 @@ gst_videofilter_get_property (GObject *object, guint prop_id, GValue *value, GPa
}
}
-int gst_videofilter_get_input_width(GstVideofilter *videofilter)
+int
+gst_videofilter_get_input_width (GstVideofilter * videofilter)
{
- g_return_val_if_fail(GST_IS_VIDEOFILTER(videofilter),0);
+ g_return_val_if_fail (GST_IS_VIDEOFILTER (videofilter), 0);
return videofilter->from_width;
}
-int gst_videofilter_get_input_height(GstVideofilter *videofilter)
+int
+gst_videofilter_get_input_height (GstVideofilter * videofilter)
{
- g_return_val_if_fail(GST_IS_VIDEOFILTER(videofilter),0);
+ g_return_val_if_fail (GST_IS_VIDEOFILTER (videofilter), 0);
return videofilter->from_height;
}
-void gst_videofilter_set_output_size(GstVideofilter *videofilter,
+void
+gst_videofilter_set_output_size (GstVideofilter * videofilter,
int width, int height)
{
int ret;
GstCaps *srccaps;
GstStructure *structure;
- g_return_if_fail(GST_IS_VIDEOFILTER(videofilter));
+ g_return_if_fail (GST_IS_VIDEOFILTER (videofilter));
videofilter->to_width = width;
videofilter->to_height = height;
videofilter->to_buf_size = (videofilter->to_width * videofilter->to_height
- * videofilter->format->bpp)/8;
+ * videofilter->format->bpp) / 8;
- srccaps = gst_caps_copy (gst_pad_get_negotiated_caps(videofilter->srcpad));
+ srccaps = gst_caps_copy (gst_pad_get_negotiated_caps (videofilter->srcpad));
structure = gst_caps_get_structure (srccaps, 0);
gst_structure_set (structure, "width", G_TYPE_INT, width,
@@ -424,60 +446,66 @@ void gst_videofilter_set_output_size(GstVideofilter *videofilter,
}
}
-static void gst_videofilter_setup(GstVideofilter *videofilter)
+static void
+gst_videofilter_setup (GstVideofilter * videofilter)
{
GstVideofilterClass *klass;
- klass = GST_VIDEOFILTER_CLASS(G_OBJECT_GET_CLASS(videofilter));
+ klass = GST_VIDEOFILTER_CLASS (G_OBJECT_GET_CLASS (videofilter));
- if(klass->setup){
- klass->setup(videofilter);
+ if (klass->setup) {
+ klass->setup (videofilter);
}
- if(videofilter->to_width == 0){
+ if (videofilter->to_width == 0) {
videofilter->to_width = videofilter->from_width;
}
- if(videofilter->to_height == 0){
+ if (videofilter->to_height == 0) {
videofilter->to_height = videofilter->from_height;
}
- g_return_if_fail(videofilter->format != NULL);
- g_return_if_fail(videofilter->from_width > 0);
- g_return_if_fail(videofilter->from_height > 0);
- g_return_if_fail(videofilter->to_width > 0);
- g_return_if_fail(videofilter->to_height > 0);
+ g_return_if_fail (videofilter->format != NULL);
+ g_return_if_fail (videofilter->from_width > 0);
+ g_return_if_fail (videofilter->from_height > 0);
+ g_return_if_fail (videofilter->to_width > 0);
+ g_return_if_fail (videofilter->to_height > 0);
- videofilter->from_buf_size = (videofilter->from_width * videofilter->from_height *
+ videofilter->from_buf_size =
+ (videofilter->from_width * videofilter->from_height *
videofilter->format->bpp) / 8;
- videofilter->to_buf_size = (videofilter->to_width * videofilter->to_height *
+ videofilter->to_buf_size =
+ (videofilter->to_width * videofilter->to_height *
videofilter->format->bpp) / 8;
videofilter->inited = TRUE;
}
-GstVideofilterFormat *gst_videofilter_find_format_by_structure (
- GstVideofilter *videofilter, const GstStructure *structure)
+GstVideofilterFormat *
+gst_videofilter_find_format_by_structure (GstVideofilter * videofilter,
+ const GstStructure * structure)
{
int i;
GstVideofilterClass *klass;
GstVideofilterFormat *format;
gboolean ret;
- klass = GST_VIDEOFILTER_CLASS(G_OBJECT_GET_CLASS(videofilter));
+ klass = GST_VIDEOFILTER_CLASS (G_OBJECT_GET_CLASS (videofilter));
- g_return_val_if_fail(structure != NULL, NULL);
+ g_return_val_if_fail (structure != NULL, NULL);
if (strcmp (gst_structure_get_name (structure), "video/x-raw-yuv") == 0) {
guint32 fourcc;
ret = gst_structure_get_fourcc (structure, "format", &fourcc);
- if (!ret) return NULL;
- for(i=0;i<klass->formats->len;i++){
+ if (!ret)
+ return NULL;
+ for (i = 0; i < klass->formats->len; i++) {
guint32 format_fourcc;
- format = g_ptr_array_index(klass->formats,i);
+
+ format = g_ptr_array_index (klass->formats, i);
format_fourcc = GST_STR_FOURCC (format->fourcc);
if (format->depth == 0 && format_fourcc == fourcc) {
- return format;
+ return format;
}
}
} else if (strcmp (gst_structure_get_name (structure), "video/x-raw-rgb")
@@ -495,13 +523,14 @@ GstVideofilterFormat *gst_videofilter_find_format_by_structure (
ret &= gst_structure_get_int (structure, "red_mask", &red_mask);
ret &= gst_structure_get_int (structure, "green_mask", &green_mask);
ret &= gst_structure_get_int (structure, "blue_mask", &blue_mask);
- if (!ret) return NULL;
- for(i=0;i<klass->formats->len;i++){
- format = g_ptr_array_index(klass->formats,i);
+ if (!ret)
+ return NULL;
+ for (i = 0; i < klass->formats->len; i++) {
+ format = g_ptr_array_index (klass->formats, i);
if (format->bpp == bpp && format->depth == depth &&
- format->endianness == endianness && format->red_mask == red_mask &&
- format->green_mask == green_mask && format->blue_mask == blue_mask) {
- return format;
+ format->endianness == endianness && format->red_mask == red_mask &&
+ format->green_mask == green_mask && format->blue_mask == blue_mask) {
+ return format;
}
}
}
@@ -509,39 +538,36 @@ GstVideofilterFormat *gst_videofilter_find_format_by_structure (
return NULL;
}
-void gst_videofilter_class_add_format(GstVideofilterClass *videofilterclass,
- GstVideofilterFormat *format)
+void
+gst_videofilter_class_add_format (GstVideofilterClass * videofilterclass,
+ GstVideofilterFormat * format)
{
- g_ptr_array_add(videofilterclass->formats, format);
+ g_ptr_array_add (videofilterclass->formats, format);
}
-void gst_videofilter_class_add_pad_templates (GstVideofilterClass *videofilter_class)
+void
+gst_videofilter_class_add_pad_templates (GstVideofilterClass *
+ videofilter_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (videofilter_class);
gst_element_class_add_pad_template (element_class,
- gst_pad_template_new("src", GST_PAD_SRC, GST_PAD_ALWAYS,
- gst_videofilter_class_get_capslist (videofilter_class)));
+ gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
+ gst_videofilter_class_get_capslist (videofilter_class)));
gst_element_class_add_pad_template (element_class,
- gst_pad_template_new("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
- gst_videofilter_class_get_capslist (videofilter_class)));
+ gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
+ gst_videofilter_class_get_capslist (videofilter_class)));
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "gstvideofilter",
- "Video filter parent class",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "gstvideofilter",
+ "Video filter parent class",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/videofilter/gstvideofilter.h b/gst/videofilter/gstvideofilter.h
index e6c346c0..2c10a211 100644
--- a/gst/videofilter/gstvideofilter.h
+++ b/gst/videofilter/gstvideofilter.h
@@ -25,18 +25,17 @@
#include <gst/gst.h>
-G_BEGIN_DECLS
-
-typedef struct _GstVideofilter GstVideofilter;
+G_BEGIN_DECLS typedef struct _GstVideofilter GstVideofilter;
typedef struct _GstVideofilterClass GstVideofilterClass;
-typedef void (*GstVideofilterFilterFunc)(GstVideofilter *filter,
+typedef void (*GstVideofilterFilterFunc) (GstVideofilter * filter,
void *out_data, void *in_data);
-typedef void (*GstVideofilterSetupFunc)(GstVideofilter *filter);
+typedef void (*GstVideofilterSetupFunc) (GstVideofilter * filter);
typedef struct _GstVideofilterFormat GstVideofilterFormat;
-struct _GstVideofilterFormat {
+struct _GstVideofilterFormat
+{
char *fourcc;
int bpp;
GstVideofilterFilterFunc filter_func;
@@ -58,10 +57,11 @@ struct _GstVideofilterFormat {
#define GST_IS_VIDEOFILTER_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VIDEOFILTER))
-struct _GstVideofilter {
+struct _GstVideofilter
+{
GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
/* video state */
gboolean inited;
@@ -81,28 +81,29 @@ struct _GstVideofilter {
GstBuffer *out_buf;
};
-struct _GstVideofilterClass {
+struct _GstVideofilterClass
+{
GstElementClass parent_class;
GPtrArray *formats;
GstVideofilterSetupFunc setup;
};
-GType gst_videofilter_get_type(void);
+GType gst_videofilter_get_type (void);
-int gst_videofilter_get_input_width(GstVideofilter *videofilter);
-int gst_videofilter_get_input_height(GstVideofilter *videofilter);
-void gst_videofilter_set_output_size(GstVideofilter *videofilter,
+int gst_videofilter_get_input_width (GstVideofilter * videofilter);
+int gst_videofilter_get_input_height (GstVideofilter * videofilter);
+void gst_videofilter_set_output_size (GstVideofilter * videofilter,
int width, int height);
-GstVideofilterFormat *gst_videofilter_find_format_by_structure (GstVideofilter *filter,
- const GstStructure *structure);
-GstCaps *gst_videofilter_class_get_capslist(GstVideofilterClass *videofilterclass);
+GstVideofilterFormat *gst_videofilter_find_format_by_structure (GstVideofilter *
+ filter, const GstStructure * structure);
+GstCaps *gst_videofilter_class_get_capslist (GstVideofilterClass *
+ videofilterclass);
-void gst_videofilter_class_add_format(GstVideofilterClass *videofilterclass,
- GstVideofilterFormat *format);
-void gst_videofilter_class_add_pad_templates (GstVideofilterClass *videofilterclass);
+void gst_videofilter_class_add_format (GstVideofilterClass * videofilterclass,
+ GstVideofilterFormat * format);
+void gst_videofilter_class_add_pad_templates (GstVideofilterClass *
+ videofilterclass);
G_END_DECLS
-
#endif /* __GST_VIDEOFILTER_H__ */
-
diff --git a/gst/videofilter/gstvideoflip.c b/gst/videofilter/gstvideoflip.c
index 3ba70ee8..32157b61 100644
--- a/gst/videofilter/gstvideoflip.c
+++ b/gst/videofilter/gstvideoflip.c
@@ -32,47 +32,54 @@
#include <string.h>
/* GstVideoflip signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_METHOD,
/* FILL ME */
};
-static void gst_videoflip_base_init (gpointer g_class);
-static void gst_videoflip_class_init (gpointer g_class, gpointer class_data);
-static void gst_videoflip_init (GTypeInstance *instance, gpointer g_class);
+static void gst_videoflip_base_init (gpointer g_class);
+static void gst_videoflip_class_init (gpointer g_class, gpointer class_data);
+static void gst_videoflip_init (GTypeInstance * instance, gpointer g_class);
-static void gst_videoflip_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_videoflip_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_videoflip_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_videoflip_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_videoflip_planar411(GstVideofilter *videofilter, void *dest, void *src);
-static void gst_videoflip_setup(GstVideofilter *videofilter);
+static void gst_videoflip_planar411 (GstVideofilter * videofilter, void *dest,
+ void *src);
+static void gst_videoflip_setup (GstVideofilter * videofilter);
#define GST_TYPE_VIDEOFLIP_METHOD (gst_videoflip_method_get_type())
static GType
-gst_videoflip_method_get_type(void)
+gst_videoflip_method_get_type (void)
{
static GType videoflip_method_type = 0;
static GEnumValue videoflip_methods[] = {
- { GST_VIDEOFLIP_METHOD_IDENTITY, "0", "Identity (no rotation)" },
- { GST_VIDEOFLIP_METHOD_90R, "1", "Rotate clockwise 90 degrees" },
- { GST_VIDEOFLIP_METHOD_180, "2", "Rotate 180 degrees" },
- { GST_VIDEOFLIP_METHOD_90L, "3", "Rotate counter-clockwise 90 degrees" },
- { GST_VIDEOFLIP_METHOD_HORIZ, "4", "Flip horizontally" },
- { GST_VIDEOFLIP_METHOD_VERT, "5", "Flip vertically" },
- { GST_VIDEOFLIP_METHOD_TRANS, "6", "Flip across upper left/lower right diagonal" },
- { GST_VIDEOFLIP_METHOD_OTHER, "7", "Flip across upper right/lower left diagonal" },
- { 0, NULL, NULL },
+ {GST_VIDEOFLIP_METHOD_IDENTITY, "0", "Identity (no rotation)"},
+ {GST_VIDEOFLIP_METHOD_90R, "1", "Rotate clockwise 90 degrees"},
+ {GST_VIDEOFLIP_METHOD_180, "2", "Rotate 180 degrees"},
+ {GST_VIDEOFLIP_METHOD_90L, "3", "Rotate counter-clockwise 90 degrees"},
+ {GST_VIDEOFLIP_METHOD_HORIZ, "4", "Flip horizontally"},
+ {GST_VIDEOFLIP_METHOD_VERT, "5", "Flip vertically"},
+ {GST_VIDEOFLIP_METHOD_TRANS, "6",
+ "Flip across upper left/lower right diagonal"},
+ {GST_VIDEOFLIP_METHOD_OTHER, "7",
+ "Flip across upper right/lower left diagonal"},
+ {0, NULL, NULL},
};
- if(!videoflip_method_type){
- videoflip_method_type = g_enum_register_static("GstVideoflipMethod",
- videoflip_methods);
+ if (!videoflip_method_type) {
+ videoflip_method_type = g_enum_register_static ("GstVideoflipMethod",
+ videoflip_methods);
}
return videoflip_method_type;
}
@@ -84,46 +91,45 @@ gst_videoflip_get_type (void)
if (!videoflip_type) {
static const GTypeInfo videoflip_info = {
- sizeof(GstVideoflipClass),
+ sizeof (GstVideoflipClass),
gst_videoflip_base_init,
NULL,
gst_videoflip_class_init,
NULL,
NULL,
- sizeof(GstVideoflip),
+ sizeof (GstVideoflip),
0,
gst_videoflip_init,
};
- videoflip_type = g_type_register_static(GST_TYPE_VIDEOFILTER,
- "GstVideoflip", &videoflip_info, 0);
+ videoflip_type = g_type_register_static (GST_TYPE_VIDEOFILTER,
+ "GstVideoflip", &videoflip_info, 0);
}
return videoflip_type;
}
static GstVideofilterFormat gst_videoflip_formats[] = {
/* planar */
- { "YV12", 12, gst_videoflip_planar411, },
- { "I420", 12, gst_videoflip_planar411, },
- { "IYUV", 12, gst_videoflip_planar411, },
+ {"YV12", 12, gst_videoflip_planar411,},
+ {"I420", 12, gst_videoflip_planar411,},
+ {"IYUV", 12, gst_videoflip_planar411,},
};
static void
gst_videoflip_base_init (gpointer g_class)
{
- static GstElementDetails videoflip_details = GST_ELEMENT_DETAILS (
- "Video Flipper",
- "Filter/Effect/Video",
- "Flips and rotates video",
- "David Schleef <ds@schleef.org>"
- );
+ static GstElementDetails videoflip_details =
+ GST_ELEMENT_DETAILS ("Video Flipper",
+ "Filter/Effect/Video",
+ "Flips and rotates video",
+ "David Schleef <ds@schleef.org>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &videoflip_details);
- for(i=0;i<G_N_ELEMENTS(gst_videoflip_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_videoflip_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_videoflip_formats + i);
}
@@ -139,10 +145,10 @@ gst_videoflip_class_init (gpointer g_class, gpointer class_data)
gobject_class = G_OBJECT_CLASS (g_class);
videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
- g_object_class_install_property(gobject_class, ARG_METHOD,
- g_param_spec_enum("method","method","method",
- GST_TYPE_VIDEOFLIP_METHOD, GST_VIDEOFLIP_METHOD_90R,
- G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_METHOD,
+ g_param_spec_enum ("method", "method", "method",
+ GST_TYPE_VIDEOFLIP_METHOD, GST_VIDEOFLIP_METHOD_90R,
+ G_PARAM_READWRITE));
gobject_class->set_property = gst_videoflip_set_property;
gobject_class->get_property = gst_videoflip_get_property;
@@ -151,33 +157,34 @@ gst_videoflip_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_videoflip_init (GTypeInstance *instance, gpointer g_class)
+gst_videoflip_init (GTypeInstance * instance, gpointer g_class)
{
GstVideoflip *videoflip = GST_VIDEOFLIP (instance);
GstVideofilter *videofilter;
- GST_DEBUG("gst_videoflip_init");
+ GST_DEBUG ("gst_videoflip_init");
- videofilter = GST_VIDEOFILTER(videoflip);
+ videofilter = GST_VIDEOFILTER (videoflip);
/* do stuff */
}
static void
-gst_videoflip_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_videoflip_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstVideoflip *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOFLIP(object));
- src = GST_VIDEOFLIP(object);
+ g_return_if_fail (GST_IS_VIDEOFLIP (object));
+ src = GST_VIDEOFLIP (object);
- GST_DEBUG("gst_videoflip_set_property");
+ GST_DEBUG ("gst_videoflip_set_property");
switch (prop_id) {
case ARG_METHOD:
src->method = g_value_get_enum (value);
/* FIXME is this ok? (threading issues) */
- gst_videoflip_setup(GST_VIDEOFILTER(src));
+ gst_videoflip_setup (GST_VIDEOFILTER (src));
break;
default:
break;
@@ -185,13 +192,14 @@ gst_videoflip_set_property (GObject *object, guint prop_id, const GValue *value,
}
static void
-gst_videoflip_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_videoflip_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstVideoflip *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOFLIP(object));
- src = GST_VIDEOFLIP(object);
+ g_return_if_fail (GST_IS_VIDEOFLIP (object));
+ src = GST_VIDEOFLIP (object);
switch (prop_id) {
case ARG_METHOD:
@@ -203,87 +211,83 @@ gst_videoflip_get_property (GObject *object, guint prop_id, GValue *value, GPara
}
}
-static gboolean plugin_init (GstPlugin *plugin)
+static gboolean
+plugin_init (GstPlugin * plugin)
{
- if(!gst_library_load("gstvideofilter"))
+ if (!gst_library_load ("gstvideofilter"))
return FALSE;
return gst_element_register (plugin, "videoflip", GST_RANK_NONE,
GST_TYPE_VIDEOFLIP);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "videoflip",
- "Flips and rotates video",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "videoflip",
+ "Flips and rotates video",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
-static void gst_videoflip_flip(GstVideoflip *videoflip, unsigned char *dest,
- unsigned char *src, int sw, int sh, int dw, int dh);
+ static void gst_videoflip_flip (GstVideoflip * videoflip,
+ unsigned char *dest, unsigned char *src, int sw, int sh, int dw, int dh);
-static void gst_videoflip_setup (GstVideofilter *videofilter)
+ static void gst_videoflip_setup (GstVideofilter * videofilter)
{
int from_width, from_height;
GstVideoflip *videoflip;
- GST_DEBUG("gst_videoflip_setup");
+ GST_DEBUG ("gst_videoflip_setup");
- videoflip = GST_VIDEOFLIP(videofilter);
+ videoflip = GST_VIDEOFLIP (videofilter);
- from_width = gst_videofilter_get_input_width(videofilter);
- from_height = gst_videofilter_get_input_height(videofilter);
+ from_width = gst_videofilter_get_input_width (videofilter);
+ from_height = gst_videofilter_get_input_height (videofilter);
- if(from_width==0 || from_height==0){
+ if (from_width == 0 || from_height == 0) {
return;
}
- switch(videoflip->method){
+ switch (videoflip->method) {
case GST_VIDEOFLIP_METHOD_90R:
case GST_VIDEOFLIP_METHOD_90L:
case GST_VIDEOFLIP_METHOD_TRANS:
case GST_VIDEOFLIP_METHOD_OTHER:
- gst_videofilter_set_output_size(videofilter, from_height, from_width);
+ gst_videofilter_set_output_size (videofilter, from_height, from_width);
break;
case GST_VIDEOFLIP_METHOD_IDENTITY:
case GST_VIDEOFLIP_METHOD_180:
case GST_VIDEOFLIP_METHOD_HORIZ:
case GST_VIDEOFLIP_METHOD_VERT:
- gst_videofilter_set_output_size(videofilter, from_width, from_height);
+ gst_videofilter_set_output_size (videofilter, from_width, from_height);
break;
default:
- g_assert_not_reached();
+ g_assert_not_reached ();
break;
}
GST_DEBUG ("format=%p \"%s\" from %dx%d to %dx%d",
- videofilter->format, videofilter->format->fourcc,
- from_width, from_height,
- videofilter->to_width, videofilter->to_height);
+ videofilter->format, videofilter->format->fourcc,
+ from_width, from_height, videofilter->to_width, videofilter->to_height);
- if(videoflip->method == GST_VIDEOFLIP_METHOD_IDENTITY){
+ if (videoflip->method == GST_VIDEOFLIP_METHOD_IDENTITY) {
GST_DEBUG ("videoflip: using passthru");
videofilter->passthru = TRUE;
- }else{
+ } else {
videofilter->passthru = FALSE;
}
- videofilter->from_buf_size = (videofilter->from_width * videofilter->from_height
- * videofilter->format->depth) / 8;
- videofilter->to_buf_size = (videofilter->to_width * videofilter->to_height
- * videofilter->format->depth) / 8;
+ videofilter->from_buf_size =
+ (videofilter->from_width * videofilter->from_height *
+ videofilter->format->depth) / 8;
+ videofilter->to_buf_size =
+ (videofilter->to_width * videofilter->to_height *
+ videofilter->format->depth) / 8;
videofilter->inited = TRUE;
}
-static void gst_videoflip_planar411(GstVideofilter *videofilter,
- void *dest, void *src)
+static void
+gst_videoflip_planar411 (GstVideofilter * videofilter, void *dest, void *src)
{
GstVideoflip *videoflip;
int sw;
@@ -291,8 +295,8 @@ static void gst_videoflip_planar411(GstVideofilter *videofilter,
int dw;
int dh;
- g_return_if_fail(GST_IS_VIDEOFLIP(videofilter));
- videoflip = GST_VIDEOFLIP(videofilter);
+ g_return_if_fail (GST_IS_VIDEOFLIP (videofilter));
+ videoflip = GST_VIDEOFLIP (videofilter);
sw = videofilter->from_width;
sh = videofilter->from_height;
@@ -301,78 +305,78 @@ static void gst_videoflip_planar411(GstVideofilter *videofilter,
GST_DEBUG ("videoflip: scaling planar 4:1:1 %dx%d to %dx%d", sw, sh, dw, dh);
- gst_videoflip_flip(videoflip, dest, src, sw, sh, dw, dh);
+ gst_videoflip_flip (videoflip, dest, src, sw, sh, dw, dh);
- src += sw*sh;
- dest += dw*dh;
+ src += sw * sh;
+ dest += dw * dh;
- dh = dh>>1;
- dw = dw>>1;
- sh = sh>>1;
- sw = sw>>1;
+ dh = dh >> 1;
+ dw = dw >> 1;
+ sh = sh >> 1;
+ sw = sw >> 1;
- gst_videoflip_flip(videoflip, dest, src, sw, sh, dw, dh);
+ gst_videoflip_flip (videoflip, dest, src, sw, sh, dw, dh);
- src += sw*sh;
- dest += dw*dh;
+ src += sw * sh;
+ dest += dw * dh;
- gst_videoflip_flip(videoflip, dest, src, sw, sh, dw, dh);
+ gst_videoflip_flip (videoflip, dest, src, sw, sh, dw, dh);
}
static void
-gst_videoflip_flip(GstVideoflip *videoflip, unsigned char *dest,
+gst_videoflip_flip (GstVideoflip * videoflip, unsigned char *dest,
unsigned char *src, int sw, int sh, int dw, int dh)
{
- int x,y;
+ int x, y;
- switch(videoflip->method){
+ switch (videoflip->method) {
case GST_VIDEOFLIP_METHOD_90R:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[(sh - 1 - x)*sw + y];
- }
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[(sh - 1 - x) * sw + y];
+ }
}
break;
case GST_VIDEOFLIP_METHOD_90L:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[x*sw + (sw - 1 - y)];
- }
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[x * sw + (sw - 1 - y)];
+ }
}
break;
case GST_VIDEOFLIP_METHOD_180:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[(sh - 1 - y)*sw + (sw - 1 - x)];
- }
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[(sh - 1 - y) * sw + (sw - 1 - x)];
+ }
}
break;
case GST_VIDEOFLIP_METHOD_HORIZ:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[y*sw + (sw - 1 - x)];
- }
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[y * sw + (sw - 1 - x)];
+ }
}
break;
case GST_VIDEOFLIP_METHOD_VERT:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[(sh - 1 - y)*sw + x];
- }
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[(sh - 1 - y) * sw + x];
+ }
}
break;
case GST_VIDEOFLIP_METHOD_TRANS:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[x*sw + y];
- }
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[x * sw + y];
+ }
}
break;
case GST_VIDEOFLIP_METHOD_OTHER:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[(sh - 1 - x)*sw + (sw - 1 - y)];
- }
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[(sh - 1 - x) * sw + (sw - 1 - y)];
+ }
}
break;
default:
@@ -380,5 +384,3 @@ gst_videoflip_flip(GstVideoflip *videoflip, unsigned char *dest,
break;
}
}
-
-
diff --git a/gst/videofilter/gstvideoflip.h b/gst/videofilter/gstvideoflip.h
index 83b37718..a43d2b4c 100644
--- a/gst/videofilter/gstvideoflip.h
+++ b/gst/videofilter/gstvideoflip.h
@@ -27,9 +27,8 @@
#include "gstvideofilter.h"
-G_BEGIN_DECLS
-
-typedef enum {
+G_BEGIN_DECLS typedef enum
+{
GST_VIDEOFLIP_METHOD_IDENTITY,
GST_VIDEOFLIP_METHOD_90R,
GST_VIDEOFLIP_METHOD_180,
@@ -54,19 +53,19 @@ typedef enum {
typedef struct _GstVideoflip GstVideoflip;
typedef struct _GstVideoflipClass GstVideoflipClass;
-struct _GstVideoflip {
+struct _GstVideoflip
+{
GstVideofilter videofilter;
GstVideoflipMethod method;
};
-struct _GstVideoflipClass {
+struct _GstVideoflipClass
+{
GstVideofilterClass parent_class;
};
-GType gst_videoflip_get_type(void);
+GType gst_videoflip_get_type (void);
G_END_DECLS
-
#endif /* __GST_VIDEOFLIP_H__ */
-
diff --git a/gst/videofilter/gstvideotemplate.c b/gst/videofilter/gstvideotemplate.c
index d4424774..abe699fe 100644
--- a/gst/videofilter/gstvideotemplate.c
+++ b/gst/videofilter/gstvideotemplate.c
@@ -47,36 +47,44 @@
typedef struct _GstVideotemplate GstVideotemplate;
typedef struct _GstVideotemplateClass GstVideotemplateClass;
-struct _GstVideotemplate {
+struct _GstVideotemplate
+{
GstVideofilter videofilter;
};
-struct _GstVideotemplateClass {
+struct _GstVideotemplateClass
+{
GstVideofilterClass parent_class;
};
/* GstVideotemplate signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static void gst_videotemplate_base_init (gpointer g_class);
-static void gst_videotemplate_class_init (gpointer g_class, gpointer class_data);
-static void gst_videotemplate_init (GTypeInstance *instance, gpointer g_class);
+static void gst_videotemplate_base_init (gpointer g_class);
+static void gst_videotemplate_class_init (gpointer g_class,
+ gpointer class_data);
+static void gst_videotemplate_init (GTypeInstance * instance, gpointer g_class);
-static void gst_videotemplate_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_videotemplate_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_videotemplate_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_videotemplate_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_videotemplate_planar411(GstVideofilter *videofilter, void *dest, void *src);
-static void gst_videotemplate_setup(GstVideofilter *videofilter);
+static void gst_videotemplate_planar411 (GstVideofilter * videofilter,
+ void *dest, void *src);
+static void gst_videotemplate_setup (GstVideofilter * videofilter);
GType
gst_videotemplate_get_type (void)
@@ -85,44 +93,43 @@ gst_videotemplate_get_type (void)
if (!videotemplate_type) {
static const GTypeInfo videotemplate_info = {
- sizeof(GstVideotemplateClass),
+ sizeof (GstVideotemplateClass),
gst_videotemplate_base_init,
NULL,
gst_videotemplate_class_init,
NULL,
NULL,
- sizeof(GstVideotemplate),
+ sizeof (GstVideotemplate),
0,
gst_videotemplate_init,
};
- videotemplate_type = g_type_register_static(GST_TYPE_VIDEOFILTER,
- "GstVideotemplate", &videotemplate_info, 0);
+ videotemplate_type = g_type_register_static (GST_TYPE_VIDEOFILTER,
+ "GstVideotemplate", &videotemplate_info, 0);
}
return videotemplate_type;
}
static GstVideofilterFormat gst_videotemplate_formats[] = {
- { "I420", 12, gst_videotemplate_planar411, },
+ {"I420", 12, gst_videotemplate_planar411,},
};
-
+
static void
gst_videotemplate_base_init (gpointer g_class)
{
- static GstElementDetails videotemplate_details = GST_ELEMENT_DETAILS (
- "Video Filter Template",
- "Filter/Effect/Video",
- "Template for a video filter",
- "David Schleef <ds@schleef.org>"
- );
+ static GstElementDetails videotemplate_details =
+ GST_ELEMENT_DETAILS ("Video Filter Template",
+ "Filter/Effect/Video",
+ "Template for a video filter",
+ "David Schleef <ds@schleef.org>");
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstVideofilterClass *videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
int i;
-
+
gst_element_class_set_details (element_class, &videotemplate_details);
- for(i=0;i<G_N_ELEMENTS(gst_videotemplate_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_videotemplate_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_videotemplate_formats + i);
}
@@ -139,10 +146,10 @@ gst_videotemplate_class_init (gpointer g_class, gpointer class_data)
videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
#if 0
- g_object_class_install_property(gobject_class, ARG_METHOD,
- g_param_spec_enum("method","method","method",
- GST_TYPE_VIDEOTEMPLATE_METHOD, GST_VIDEOTEMPLATE_METHOD_1,
- G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_METHOD,
+ g_param_spec_enum ("method", "method", "method",
+ GST_TYPE_VIDEOTEMPLATE_METHOD, GST_VIDEOTEMPLATE_METHOD_1,
+ G_PARAM_READWRITE));
#endif
gobject_class->set_property = gst_videotemplate_set_property;
@@ -152,28 +159,29 @@ gst_videotemplate_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_videotemplate_init (GTypeInstance *instance, gpointer g_class)
+gst_videotemplate_init (GTypeInstance * instance, gpointer g_class)
{
GstVideotemplate *videotemplate = GST_VIDEOTEMPLATE (instance);
GstVideofilter *videofilter;
- GST_DEBUG("gst_videotemplate_init");
+ GST_DEBUG ("gst_videotemplate_init");
- videofilter = GST_VIDEOFILTER(videotemplate);
+ videofilter = GST_VIDEOFILTER (videotemplate);
/* do stuff */
}
static void
-gst_videotemplate_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_videotemplate_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstVideotemplate *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOTEMPLATE(object));
- src = GST_VIDEOTEMPLATE(object);
+ g_return_if_fail (GST_IS_VIDEOTEMPLATE (object));
+ src = GST_VIDEOTEMPLATE (object);
- GST_DEBUG("gst_videotemplate_set_property");
+ GST_DEBUG ("gst_videotemplate_set_property");
switch (prop_id) {
#if 0
case ARG_METHOD:
@@ -186,13 +194,14 @@ gst_videotemplate_set_property (GObject *object, guint prop_id, const GValue *va
}
static void
-gst_videotemplate_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_videotemplate_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstVideotemplate *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOTEMPLATE(object));
- src = GST_VIDEOTEMPLATE(object);
+ g_return_if_fail (GST_IS_VIDEOTEMPLATE (object));
+ src = GST_VIDEOTEMPLATE (object);
switch (prop_id) {
#if 0
@@ -206,50 +215,45 @@ gst_videotemplate_get_property (GObject *object, guint prop_id, GValue *value, G
}
}
-static gboolean plugin_init (GstPlugin *plugin)
+static gboolean
+plugin_init (GstPlugin * plugin)
{
- if(!gst_library_load("gstvideofilter"))
+ if (!gst_library_load ("gstvideofilter"))
return FALSE;
return gst_element_register (plugin, "videotemplate", GST_RANK_NONE,
GST_TYPE_VIDEOTEMPLATE);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "videotemplate",
- "Template for a video filter",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
-
-static void gst_videotemplate_setup(GstVideofilter *videofilter)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "videotemplate",
+ "Template for a video filter",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
+
+ static void gst_videotemplate_setup (GstVideofilter * videofilter)
{
GstVideotemplate *videotemplate;
- g_return_if_fail(GST_IS_VIDEOTEMPLATE(videofilter));
- videotemplate = GST_VIDEOTEMPLATE(videofilter);
+ g_return_if_fail (GST_IS_VIDEOTEMPLATE (videofilter));
+ videotemplate = GST_VIDEOTEMPLATE (videofilter);
/* if any setup needs to be done, do it here */
}
-static void gst_videotemplate_planar411(GstVideofilter *videofilter,
+static void
+gst_videotemplate_planar411 (GstVideofilter * videofilter,
void *dest, void *src)
{
GstVideotemplate *videotemplate;
- int width = gst_videofilter_get_input_width(videofilter);
- int height = gst_videofilter_get_input_height(videofilter);
+ int width = gst_videofilter_get_input_width (videofilter);
+ int height = gst_videofilter_get_input_height (videofilter);
- g_return_if_fail(GST_IS_VIDEOTEMPLATE(videofilter));
- videotemplate = GST_VIDEOTEMPLATE(videofilter);
+ g_return_if_fail (GST_IS_VIDEOTEMPLATE (videofilter));
+ videotemplate = GST_VIDEOTEMPLATE (videofilter);
/* do something interesting here. This simply copies the source
* to the destination. */
- memcpy(dest,src,width * height + (width/2) * (height/2) * 2);
+ memcpy (dest, src, width * height + (width / 2) * (height / 2) * 2);
}
-
diff --git a/gst/videoflip/gstvideoflip.c b/gst/videoflip/gstvideoflip.c
index 0f20f47b..9c7816de 100644
--- a/gst/videoflip/gstvideoflip.c
+++ b/gst/videoflip/gstvideoflip.c
@@ -28,34 +28,37 @@
/* elementfactory information */
-static GstElementDetails videoflip_details = GST_ELEMENT_DETAILS (
- "Video scaler",
- "Filter/Effect/Video",
- "Resizes video",
- "Wim Taymans <wim.taymans@chello.be>"
-);
+static GstElementDetails videoflip_details =
+GST_ELEMENT_DETAILS ("Video scaler",
+ "Filter/Effect/Video",
+ "Resizes video",
+ "Wim Taymans <wim.taymans@chello.be>");
/* GstVideoflip signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_METHOD,
/* FILL ME */
};
-static void gst_videoflip_base_init (gpointer g_class);
-static void gst_videoflip_class_init (GstVideoflipClass *klass);
-static void gst_videoflip_init (GstVideoflip *videoflip);
+static void gst_videoflip_base_init (gpointer g_class);
+static void gst_videoflip_class_init (GstVideoflipClass * klass);
+static void gst_videoflip_init (GstVideoflip * videoflip);
-static void gst_videoflip_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_videoflip_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_videoflip_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_videoflip_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_videoflip_chain (GstPad *pad, GstData *_data);
-static GstCaps * gst_videoflip_get_capslist(void);
+static void gst_videoflip_chain (GstPad * pad, GstData * _data);
+static GstCaps *gst_videoflip_get_capslist (void);
static GstElementClass *parent_class = NULL;
@@ -63,50 +66,50 @@ static GstElementClass *parent_class = NULL;
#define GST_TYPE_VIDEOFLIP_METHOD (gst_videoflip_method_get_type())
static GType
-gst_videoflip_method_get_type(void)
+gst_videoflip_method_get_type (void)
{
static GType videoflip_method_type = 0;
static GEnumValue videoflip_methods[] = {
- { GST_VIDEOFLIP_METHOD_IDENTITY, "0", "Identity (no rotation)" },
- { GST_VIDEOFLIP_METHOD_90R, "1", "Rotate right 90 degrees" },
- { GST_VIDEOFLIP_METHOD_180, "2", "Rotate 180 degrees" },
- { GST_VIDEOFLIP_METHOD_90L, "3", "Rotate left 90 degrees" },
- { GST_VIDEOFLIP_METHOD_HORIZ, "4", "Flip horizontally" },
- { GST_VIDEOFLIP_METHOD_VERT, "5", "Flip vertically" },
- { GST_VIDEOFLIP_METHOD_TRANS, "6", "Flip across upper left/lower right diagonal" },
- { GST_VIDEOFLIP_METHOD_OTHER, "7", "Flip across upper right/lower left diagonal" },
- { 0, NULL, NULL },
+ {GST_VIDEOFLIP_METHOD_IDENTITY, "0", "Identity (no rotation)"},
+ {GST_VIDEOFLIP_METHOD_90R, "1", "Rotate right 90 degrees"},
+ {GST_VIDEOFLIP_METHOD_180, "2", "Rotate 180 degrees"},
+ {GST_VIDEOFLIP_METHOD_90L, "3", "Rotate left 90 degrees"},
+ {GST_VIDEOFLIP_METHOD_HORIZ, "4", "Flip horizontally"},
+ {GST_VIDEOFLIP_METHOD_VERT, "5", "Flip vertically"},
+ {GST_VIDEOFLIP_METHOD_TRANS, "6",
+ "Flip across upper left/lower right diagonal"},
+ {GST_VIDEOFLIP_METHOD_OTHER, "7",
+ "Flip across upper right/lower left diagonal"},
+ {0, NULL, NULL},
};
- if(!videoflip_method_type){
- videoflip_method_type = g_enum_register_static("GstVideoflipMethod",
+ if (!videoflip_method_type) {
+ videoflip_method_type = g_enum_register_static ("GstVideoflipMethod",
videoflip_methods);
}
return videoflip_method_type;
}
static GstPadTemplate *
-gst_videoflip_src_template_factory(void)
+gst_videoflip_src_template_factory (void)
{
/* well, actually RGB too, but since there's no RGB format anyway */
GstCaps *caps = gst_caps_from_string ("video/x-raw-yuv, "
- "width = (int) [ 0, MAX ], "
- "height = (int) [ 0, MAX ], "
- "framerate = (double) [ 0, MAX ]");
+ "width = (int) [ 0, MAX ], "
+ "height = (int) [ 0, MAX ], " "framerate = (double) [ 0, MAX ]");
- caps = gst_caps_intersect(caps, gst_videoflip_get_capslist ());
+ caps = gst_caps_intersect (caps, gst_videoflip_get_capslist ());
return gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, caps);
}
static GstPadTemplate *
-gst_videoflip_sink_template_factory(void)
+gst_videoflip_sink_template_factory (void)
{
GstCaps *caps = gst_caps_from_string ("video/x-raw-yuv, "
- "width = (int) [ 0, MAX ], "
- "height = (int) [ 0, MAX ], "
- "framerate = (double) [ 0, MAX ]");
+ "width = (int) [ 0, MAX ], "
+ "height = (int) [ 0, MAX ], " "framerate = (double) [ 0, MAX ]");
- caps = gst_caps_intersect(caps, gst_videoflip_get_capslist ());
+ caps = gst_caps_intersect (caps, gst_videoflip_get_capslist ());
return gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, caps);
}
@@ -118,17 +121,19 @@ gst_videoflip_get_type (void)
if (!videoflip_type) {
static const GTypeInfo videoflip_info = {
- sizeof(GstVideoflipClass),
+ sizeof (GstVideoflipClass),
gst_videoflip_base_init,
NULL,
- (GClassInitFunc)gst_videoflip_class_init,
+ (GClassInitFunc) gst_videoflip_class_init,
NULL,
NULL,
- sizeof(GstVideoflip),
+ sizeof (GstVideoflip),
0,
- (GInstanceInitFunc)gst_videoflip_init,
+ (GInstanceInitFunc) gst_videoflip_init,
};
- videoflip_type = g_type_register_static(GST_TYPE_ELEMENT, "GstVideoflip", &videoflip_info, 0);
+ videoflip_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstVideoflip",
+ &videoflip_info, 0);
}
return videoflip_type;
}
@@ -146,20 +151,20 @@ gst_videoflip_base_init (gpointer g_class)
gst_videoflip_src_template_factory ());
}
static void
-gst_videoflip_class_init (GstVideoflipClass *klass)
+gst_videoflip_class_init (GstVideoflipClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_METHOD,
- g_param_spec_enum("method","method","method",
- GST_TYPE_VIDEOFLIP_METHOD, GST_VIDEOFLIP_METHOD_90R,
- G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_METHOD,
+ g_param_spec_enum ("method", "method", "method",
+ GST_TYPE_VIDEOFLIP_METHOD, GST_VIDEOFLIP_METHOD_90R,
+ G_PARAM_READWRITE));
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gobject_class->set_property = gst_videoflip_set_property;
gobject_class->get_property = gst_videoflip_get_property;
@@ -167,14 +172,14 @@ gst_videoflip_class_init (GstVideoflipClass *klass)
}
static GstCaps *
-gst_videoflip_get_capslist(void)
+gst_videoflip_get_capslist (void)
{
GstCaps *caps;
GstStructure *structure;
int i;
caps = gst_caps_new_empty ();
- for(i=0;i<videoflip_n_formats;i++){
+ for (i = 0; i < videoflip_n_formats; i++) {
structure = videoflip_get_cap (videoflip_formats + i);
gst_caps_append_structure (caps, structure);
}
@@ -183,7 +188,7 @@ gst_videoflip_get_capslist(void)
}
static GstCaps *
-gst_videoflip_sink_getcaps (GstPad *pad)
+gst_videoflip_sink_getcaps (GstPad * pad)
{
GstVideoflip *videoflip;
GstCaps *capslist = NULL;
@@ -194,11 +199,11 @@ gst_videoflip_sink_getcaps (GstPad *pad)
GST_DEBUG ("gst_videoflip_sink_getcaps");
videoflip = GST_VIDEOFLIP (gst_pad_get_parent (pad));
-
+
/* get list of peer's caps */
- if(pad == videoflip->srcpad){
+ if (pad == videoflip->srcpad) {
peercaps = gst_pad_get_allowed_caps (videoflip->sinkpad);
- }else{
+ } else {
peercaps = gst_pad_get_allowed_caps (videoflip->srcpad);
}
@@ -206,21 +211,20 @@ gst_videoflip_sink_getcaps (GstPad *pad)
* doesn't understand. */
/* Look through our list of caps and find those that match with
* the peer's formats. Create a list of them. */
- for(i=0;i<videoflip_n_formats;i++){
- GstCaps *fromcaps = gst_caps_new_full(videoflip_get_cap(
- videoflip_formats + i), NULL);
- if(gst_caps_is_always_compatible(fromcaps, peercaps)){
- gst_caps_append(capslist, fromcaps);
+ for (i = 0; i < videoflip_n_formats; i++) {
+ GstCaps *fromcaps =
+ gst_caps_new_full (videoflip_get_cap (videoflip_formats + i), NULL);
+ if (gst_caps_is_always_compatible (fromcaps, peercaps)) {
+ gst_caps_append (capslist, fromcaps);
}
}
gst_caps_free (peercaps);
sizecaps = gst_caps_from_string ("video/x-raw-yuv, "
- "width = (int) [ 0, MAX ], "
- "height = (int) [ 0, MAX ], "
- "framerate = (double) [ 0, MAX ]");
+ "width = (int) [ 0, MAX ], "
+ "height = (int) [ 0, MAX ], " "framerate = (double) [ 0, MAX ]");
- caps = gst_caps_intersect(capslist, sizecaps);
+ caps = gst_caps_intersect (capslist, sizecaps);
gst_caps_free (sizecaps);
return caps;
@@ -228,7 +232,7 @@ gst_videoflip_sink_getcaps (GstPad *pad)
static GstPadLinkReturn
-gst_videoflip_src_link (GstPad *pad, const GstCaps *caps)
+gst_videoflip_src_link (GstPad * pad, const GstCaps * caps)
{
GstVideoflip *videoflip;
GstStructure *structure;
@@ -236,22 +240,23 @@ gst_videoflip_src_link (GstPad *pad, const GstCaps *caps)
GST_DEBUG ("gst_videoflip_src_link");
videoflip = GST_VIDEOFLIP (gst_pad_get_parent (pad));
-
+
structure = gst_caps_get_structure (caps, 0);
videoflip->format = videoflip_find_by_caps (caps);
- g_return_val_if_fail(videoflip->format, GST_PAD_LINK_REFUSED);
+ g_return_val_if_fail (videoflip->format, GST_PAD_LINK_REFUSED);
ret = gst_structure_get_int (structure, "width", &videoflip->to_width);
ret &= gst_structure_get_int (structure, "height", &videoflip->to_height);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
return GST_PAD_LINK_OK;
}
static GstPadLinkReturn
-gst_videoflip_sink_link (GstPad *pad, const GstCaps *caps)
+gst_videoflip_sink_link (GstPad * pad, const GstCaps * caps)
{
GstVideoflip *videoflip;
GstStructure *structure;
@@ -259,37 +264,37 @@ gst_videoflip_sink_link (GstPad *pad, const GstCaps *caps)
GST_DEBUG ("gst_videoflip_sink_link");
videoflip = GST_VIDEOFLIP (gst_pad_get_parent (pad));
-
+
structure = gst_caps_get_structure (caps, 0);
videoflip->format = videoflip_find_by_caps (caps);
- g_return_val_if_fail(videoflip->format, GST_PAD_LINK_REFUSED);
+ g_return_val_if_fail (videoflip->format, GST_PAD_LINK_REFUSED);
ret = gst_structure_get_int (structure, "width", &videoflip->from_width);
ret &= gst_structure_get_int (structure, "height", &videoflip->from_height);
- if (!ret) return GST_PAD_LINK_REFUSED;
+ if (!ret)
+ return GST_PAD_LINK_REFUSED;
return GST_PAD_LINK_OK;
}
static void
-gst_videoflip_init (GstVideoflip *videoflip)
+gst_videoflip_init (GstVideoflip * videoflip)
{
GST_DEBUG ("gst_videoflip_init");
- videoflip->sinkpad = gst_pad_new_from_template (
- gst_videoflip_sink_template_factory(),
- "sink");
- gst_element_add_pad(GST_ELEMENT(videoflip),videoflip->sinkpad);
- gst_pad_set_chain_function(videoflip->sinkpad,gst_videoflip_chain);
- gst_pad_set_link_function(videoflip->sinkpad,gst_videoflip_sink_link);
- gst_pad_set_getcaps_function(videoflip->sinkpad,gst_videoflip_sink_getcaps);
-
- videoflip->srcpad = gst_pad_new_from_template (
- gst_videoflip_src_template_factory(),
- "src");
- gst_element_add_pad(GST_ELEMENT(videoflip),videoflip->srcpad);
- gst_pad_set_link_function(videoflip->srcpad,gst_videoflip_src_link);
+ videoflip->sinkpad =
+ gst_pad_new_from_template (gst_videoflip_sink_template_factory (),
+ "sink");
+ gst_element_add_pad (GST_ELEMENT (videoflip), videoflip->sinkpad);
+ gst_pad_set_chain_function (videoflip->sinkpad, gst_videoflip_chain);
+ gst_pad_set_link_function (videoflip->sinkpad, gst_videoflip_sink_link);
+ gst_pad_set_getcaps_function (videoflip->sinkpad, gst_videoflip_sink_getcaps);
+
+ videoflip->srcpad =
+ gst_pad_new_from_template (gst_videoflip_src_template_factory (), "src");
+ gst_element_add_pad (GST_ELEMENT (videoflip), videoflip->srcpad);
+ gst_pad_set_link_function (videoflip->srcpad, gst_videoflip_src_link);
//gst_pad_set_getcaps_function(videoflip->srcpad,gst_videoflip_getcaps);
videoflip->inited = FALSE;
@@ -298,7 +303,7 @@ gst_videoflip_init (GstVideoflip *videoflip)
static void
-gst_videoflip_chain (GstPad *pad, GstData *_data)
+gst_videoflip_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstVideoflip *videoflip;
@@ -315,54 +320,54 @@ gst_videoflip_chain (GstPad *pad, GstData *_data)
videoflip = GST_VIDEOFLIP (gst_pad_get_parent (pad));
g_return_if_fail (videoflip->inited);
- data = GST_BUFFER_DATA(buf);
- size = GST_BUFFER_SIZE(buf);
+ data = GST_BUFFER_DATA (buf);
+ size = GST_BUFFER_SIZE (buf);
- if(videoflip->passthru){
- gst_pad_push(videoflip->srcpad, GST_DATA (buf));
+ if (videoflip->passthru) {
+ gst_pad_push (videoflip->srcpad, GST_DATA (buf));
return;
}
- GST_DEBUG ("gst_videoflip_chain: got buffer of %ld bytes in '%s'",size,
- GST_OBJECT_NAME (videoflip));
-
- GST_DEBUG ("size=%ld from=%dx%d to=%dx%d fromsize=%ld (should be %d) tosize=%d",
- size,
- videoflip->from_width, videoflip->from_height,
- videoflip->to_width, videoflip->to_height,
- size, videoflip->from_buf_size,
- videoflip->to_buf_size);
+ GST_DEBUG ("gst_videoflip_chain: got buffer of %ld bytes in '%s'", size,
+ GST_OBJECT_NAME (videoflip));
+
+ GST_DEBUG
+ ("size=%ld from=%dx%d to=%dx%d fromsize=%ld (should be %d) tosize=%d",
+ size, videoflip->from_width, videoflip->from_height, videoflip->to_width,
+ videoflip->to_height, size, videoflip->from_buf_size,
+ videoflip->to_buf_size);
g_return_if_fail (size == videoflip->from_buf_size);
- outbuf = gst_buffer_new();
+ outbuf = gst_buffer_new ();
/* FIXME: handle bufferpools */
- GST_BUFFER_SIZE(outbuf) = videoflip->to_buf_size;
- GST_BUFFER_DATA(outbuf) = g_malloc (videoflip->to_buf_size);
- GST_BUFFER_TIMESTAMP(outbuf) = GST_BUFFER_TIMESTAMP(buf);
+ GST_BUFFER_SIZE (outbuf) = videoflip->to_buf_size;
+ GST_BUFFER_DATA (outbuf) = g_malloc (videoflip->to_buf_size);
+ GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
- g_return_if_fail(videoflip->format);
- GST_DEBUG ("format %s",videoflip->format->fourcc);
- g_return_if_fail(videoflip->format->scale);
+ g_return_if_fail (videoflip->format);
+ GST_DEBUG ("format %s", videoflip->format->fourcc);
+ g_return_if_fail (videoflip->format->scale);
- videoflip->format->scale(videoflip, GST_BUFFER_DATA(outbuf), data);
+ videoflip->format->scale (videoflip, GST_BUFFER_DATA (outbuf), data);
- GST_DEBUG ("gst_videoflip_chain: pushing buffer of %d bytes in '%s'",GST_BUFFER_SIZE(outbuf),
- GST_OBJECT_NAME (videoflip));
+ GST_DEBUG ("gst_videoflip_chain: pushing buffer of %d bytes in '%s'",
+ GST_BUFFER_SIZE (outbuf), GST_OBJECT_NAME (videoflip));
- gst_pad_push(videoflip->srcpad, GST_DATA (outbuf));
+ gst_pad_push (videoflip->srcpad, GST_DATA (outbuf));
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
static void
-gst_videoflip_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_videoflip_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstVideoflip *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOFLIP(object));
- src = GST_VIDEOFLIP(object);
+ g_return_if_fail (GST_IS_VIDEOFLIP (object));
+ src = GST_VIDEOFLIP (object);
GST_DEBUG ("gst_videoflip_set_property");
switch (prop_id) {
@@ -375,13 +380,14 @@ gst_videoflip_set_property (GObject *object, guint prop_id, const GValue *value,
}
static void
-gst_videoflip_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_videoflip_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstVideoflip *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_VIDEOFLIP(object));
- src = GST_VIDEOFLIP(object);
+ g_return_if_fail (GST_IS_VIDEOFLIP (object));
+ src = GST_VIDEOFLIP (object);
switch (prop_id) {
case ARG_METHOD:
@@ -395,19 +401,13 @@ gst_videoflip_get_property (GObject *object, guint prop_id, GValue *value, GPara
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- return gst_element_register (plugin, "videoflip", GST_RANK_NONE, GST_TYPE_VIDEOFLIP);
+ return gst_element_register (plugin, "videoflip", GST_RANK_NONE,
+ GST_TYPE_VIDEOFLIP);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "videoflip",
- "Resizes video",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "videoflip",
+ "Resizes video", plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/videoflip/gstvideoflip.h b/gst/videoflip/gstvideoflip.h
index b14b0bd3..4d28ac66 100644
--- a/gst/videoflip/gstvideoflip.h
+++ b/gst/videoflip/gstvideoflip.h
@@ -25,9 +25,8 @@
#include <gst/gst.h>
-G_BEGIN_DECLS
-
-typedef enum {
+G_BEGIN_DECLS typedef enum
+{
GST_VIDEOFLIP_METHOD_IDENTITY,
GST_VIDEOFLIP_METHOD_90R,
GST_VIDEOFLIP_METHOD_180,
@@ -53,10 +52,11 @@ typedef enum {
typedef struct _GstVideoflip GstVideoflip;
typedef struct _GstVideoflipClass GstVideoflipClass;
-struct _GstVideoflip {
+struct _GstVideoflip
+{
GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
gboolean force_size;
gint forced_width;
@@ -78,16 +78,16 @@ struct _GstVideoflip {
gint to_buf_size;
};
-struct _GstVideoflipClass {
+struct _GstVideoflipClass
+{
GstElementClass parent_class;
};
-GType gst_videoflip_get_type(void);
+GType gst_videoflip_get_type (void);
+
+void gst_videoflip_setup (GstVideoflip *);
-void gst_videoflip_setup(GstVideoflip *);
#define gst_videoflip_scale(scale, src, dest) (scale)->scale_cc((scale), (src), (dest))
G_END_DECLS
-
#endif /* __GST_VIDEOFLIP_H__ */
-
diff --git a/gst/videoflip/videoflip.c b/gst/videoflip/videoflip.c
index 7956165d..16db2102 100644
--- a/gst/videoflip/videoflip.c
+++ b/gst/videoflip/videoflip.c
@@ -30,40 +30,44 @@
#include "gstvideoflip.h"
-static void gst_videoflip_planar411 (GstVideoflip *scale, unsigned char *dest, unsigned char *src);
+static void gst_videoflip_planar411 (GstVideoflip * scale, unsigned char *dest,
+ unsigned char *src);
-static void gst_videoflip_flip(GstVideoflip *videoflip, unsigned char *dest,
+static void gst_videoflip_flip (GstVideoflip * videoflip, unsigned char *dest,
unsigned char *src, int sw, int sh, int dw, int dh);
struct videoflip_format_struct videoflip_formats[] = {
- /* planar */
- { "YV12", 12, gst_videoflip_planar411, },
- { "I420", 12, gst_videoflip_planar411, },
+ /* planar */
+ {"YV12", 12, gst_videoflip_planar411,},
+ {"I420", 12, gst_videoflip_planar411,},
};
-int videoflip_n_formats = sizeof(videoflip_formats)/sizeof(videoflip_formats[0]);
+int videoflip_n_formats =
+ sizeof (videoflip_formats) / sizeof (videoflip_formats[0]);
GstStructure *
-videoflip_get_cap(struct videoflip_format_struct *format)
+videoflip_get_cap (struct videoflip_format_struct *format)
{
unsigned int fourcc;
GstStructure *structure;
- if(format->scale==NULL)
+ if (format->scale == NULL)
return NULL;
- fourcc = GST_MAKE_FOURCC(format->fourcc[0],format->fourcc[1],format->fourcc[2],format->fourcc[3]);
+ fourcc =
+ GST_MAKE_FOURCC (format->fourcc[0], format->fourcc[1], format->fourcc[2],
+ format->fourcc[3]);
- if(format->bpp){
- structure = gst_structure_new("video/x-raw-rgb",
+ if (format->bpp) {
+ structure = gst_structure_new ("video/x-raw-rgb",
"depth", G_TYPE_INT, format->bpp,
"bpp", G_TYPE_INT, format->depth,
"endianness", G_TYPE_INT, format->endianness,
"red_mask", G_TYPE_INT, format->red_mask,
"green_mask", G_TYPE_INT, format->green_mask,
"blue_mask", G_TYPE_INT, format->blue_mask, NULL);
- }else{
- structure = gst_structure_new("video/x-raw-yuv",
+ } else {
+ structure = gst_structure_new ("video/x-raw-yuv",
"format", GST_TYPE_FOURCC, fourcc, NULL);
}
@@ -71,24 +75,24 @@ videoflip_get_cap(struct videoflip_format_struct *format)
}
struct videoflip_format_struct *
-videoflip_find_by_caps(const GstCaps *caps)
+videoflip_find_by_caps (const GstCaps * caps)
{
int i;
GST_DEBUG ("finding %p", caps);
- g_return_val_if_fail(caps != NULL, NULL);
+ g_return_val_if_fail (caps != NULL, NULL);
- for (i = 0; i < videoflip_n_formats; i++){
+ for (i = 0; i < videoflip_n_formats; i++) {
GstCaps *c;
c = gst_caps_new_full (videoflip_get_cap (videoflip_formats + i), NULL);
- if(c){
- if(gst_caps_is_always_compatible(caps, c)){
- gst_caps_free(c);
- return videoflip_formats + i;
+ if (c) {
+ if (gst_caps_is_always_compatible (caps, c)) {
+ gst_caps_free (c);
+ return videoflip_formats + i;
}
- gst_caps_free(c);
+ gst_caps_free (c);
}
}
@@ -96,13 +100,13 @@ videoflip_find_by_caps(const GstCaps *caps)
}
void
-gst_videoflip_setup (GstVideoflip *videoflip)
+gst_videoflip_setup (GstVideoflip * videoflip)
{
- if(videoflip->from_width==0 || videoflip->from_height==0){
+ if (videoflip->from_width == 0 || videoflip->from_height == 0) {
return;
}
- switch(videoflip->method){
+ switch (videoflip->method) {
case GST_VIDEOFLIP_METHOD_90R:
case GST_VIDEOFLIP_METHOD_90L:
case GST_VIDEOFLIP_METHOD_TRANS:
@@ -123,11 +127,11 @@ gst_videoflip_setup (GstVideoflip *videoflip)
}
GST_DEBUG ("format=%p \"%s\" from %dx%d to %dx%d",
- videoflip->format, videoflip->format->fourcc,
- videoflip->from_width, videoflip->from_height,
- videoflip->to_width, videoflip->to_height);
+ videoflip->format, videoflip->format->fourcc,
+ videoflip->from_width, videoflip->from_height,
+ videoflip->to_width, videoflip->to_height);
- if(videoflip->method == GST_VIDEOFLIP_METHOD_IDENTITY){
+ if (videoflip->method == GST_VIDEOFLIP_METHOD_IDENTITY) {
GST_DEBUG ("videoflip: using passthru");
videoflip->passthru = TRUE;
videoflip->inited = TRUE;
@@ -135,15 +139,16 @@ gst_videoflip_setup (GstVideoflip *videoflip)
}
videoflip->from_buf_size = (videoflip->from_width * videoflip->from_height
- * videoflip->format->depth) / 8;
+ * videoflip->format->depth) / 8;
videoflip->to_buf_size = (videoflip->to_width * videoflip->to_height
- * videoflip->format->depth) / 8;
+ * videoflip->format->depth) / 8;
videoflip->inited = TRUE;
}
static void
-gst_videoflip_planar411 (GstVideoflip *scale, unsigned char *dest, unsigned char *src)
+gst_videoflip_planar411 (GstVideoflip * scale, unsigned char *dest,
+ unsigned char *src)
{
int sw = scale->from_width;
int sh = scale->from_height;
@@ -152,77 +157,77 @@ gst_videoflip_planar411 (GstVideoflip *scale, unsigned char *dest, unsigned char
GST_DEBUG ("videoflip: scaling planar 4:1:1 %dx%d to %dx%d", sw, sh, dw, dh);
- gst_videoflip_flip(scale, dest, src, sw, sh, dw, dh);
+ gst_videoflip_flip (scale, dest, src, sw, sh, dw, dh);
- src += sw*sh;
- dest += dw*dh;
+ src += sw * sh;
+ dest += dw * dh;
- dh = dh>>1;
- dw = dw>>1;
- sh = sh>>1;
- sw = sw>>1;
+ dh = dh >> 1;
+ dw = dw >> 1;
+ sh = sh >> 1;
+ sw = sw >> 1;
- gst_videoflip_flip(scale, dest, src, sw, sh, dw, dh);
+ gst_videoflip_flip (scale, dest, src, sw, sh, dw, dh);
- src += sw*sh;
- dest += dw*dh;
+ src += sw * sh;
+ dest += dw * dh;
- gst_videoflip_flip(scale, dest, src, sw, sh, dw, dh);
+ gst_videoflip_flip (scale, dest, src, sw, sh, dw, dh);
}
static void
-gst_videoflip_flip(GstVideoflip *videoflip, unsigned char *dest,
+gst_videoflip_flip (GstVideoflip * videoflip, unsigned char *dest,
unsigned char *src, int sw, int sh, int dw, int dh)
{
- int x,y;
+ int x, y;
- switch(videoflip->method){
+ switch (videoflip->method) {
case GST_VIDEOFLIP_METHOD_90R:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[(sh - 1 - x)*sw + y];
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[(sh - 1 - x) * sw + y];
}
}
break;
case GST_VIDEOFLIP_METHOD_90L:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[x*sw + (sw - 1 - y)];
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[x * sw + (sw - 1 - y)];
}
}
break;
case GST_VIDEOFLIP_METHOD_180:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[(sh - 1 - y)*sw + (sw - 1 - x)];
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[(sh - 1 - y) * sw + (sw - 1 - x)];
}
}
break;
case GST_VIDEOFLIP_METHOD_HORIZ:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[y*sw + (sw - 1 - x)];
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[y * sw + (sw - 1 - x)];
}
}
break;
case GST_VIDEOFLIP_METHOD_VERT:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[(sh - 1 - y)*sw + x];
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[(sh - 1 - y) * sw + x];
}
}
break;
case GST_VIDEOFLIP_METHOD_TRANS:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[x*sw + y];
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[x * sw + y];
}
}
break;
case GST_VIDEOFLIP_METHOD_OTHER:
- for(y=0;y<dh;y++){
- for(x=0;x<dw;x++){
- dest[y*dw + x] = src[(sh - 1 - x)*sw + (sw - 1 - y)];
+ for (y = 0; y < dh; y++) {
+ for (x = 0; x < dw; x++) {
+ dest[y * dw + x] = src[(sh - 1 - x) * sw + (sw - 1 - y)];
}
}
break;
@@ -231,4 +236,3 @@ gst_videoflip_flip(GstVideoflip *videoflip, unsigned char *dest,
break;
}
}
-
diff --git a/gst/videoflip/videoflip.h b/gst/videoflip/videoflip.h
index e912fe98..a6bd5fb7 100644
--- a/gst/videoflip/videoflip.h
+++ b/gst/videoflip/videoflip.h
@@ -23,24 +23,24 @@
#include "gstvideoflip.h"
-struct videoflip_format_struct {
- char *fourcc;
- int depth;
- void (*scale)(GstVideoflip *,unsigned char *dest, unsigned char *src);
- int bpp;
- unsigned int endianness;
- unsigned int red_mask;
- unsigned int green_mask;
- unsigned int blue_mask;
+struct videoflip_format_struct
+{
+ char *fourcc;
+ int depth;
+ void (*scale) (GstVideoflip *, unsigned char *dest, unsigned char *src);
+ int bpp;
+ unsigned int endianness;
+ unsigned int red_mask;
+ unsigned int green_mask;
+ unsigned int blue_mask;
};
extern struct videoflip_format_struct videoflip_formats[];
extern int videoflip_n_formats;
-GstStructure *videoflip_get_cap(struct videoflip_format_struct *format);
+GstStructure *videoflip_get_cap (struct videoflip_format_struct *format);
-struct videoflip_format_struct *videoflip_find_by_caps(const GstCaps *caps);
+struct videoflip_format_struct *videoflip_find_by_caps (const GstCaps * caps);
#endif
-
diff --git a/gst/wavenc/gstwavenc.c b/gst/wavenc/gstwavenc.c
index 8a2d4ba0..757330f0 100644
--- a/gst/wavenc/gstwavenc.c
+++ b/gst/wavenc/gstwavenc.c
@@ -27,10 +27,10 @@
#include <gstwavenc.h>
#include <riff.h>
-static void gst_wavenc_base_init (gpointer g_class);
-static void gst_wavenc_class_init (GstWavEncClass *klass);
-static void gst_wavenc_init (GstWavEnc *wavenc);
-static void gst_wavenc_chain (GstPad *pad, GstData *_data);
+static void gst_wavenc_base_init (gpointer g_class);
+static void gst_wavenc_class_init (GstWavEncClass * klass);
+static void gst_wavenc_init (GstWavEnc * wavenc);
+static void gst_wavenc_chain (GstPad * pad, GstData * _data);
#define WAVE_FORMAT_PCM 0x0001
@@ -42,65 +42,63 @@ static void gst_wavenc_chain (GstPad *pad, GstData *_data);
#define WRITE_U16(buf, x) *(buf) = (unsigned char) (x&0xff);\
*((buf)+1) = (unsigned char)((x>>8)&0xff);
-struct riff_struct {
- guint8 id[4]; /* RIFF */
- guint32 len;
- guint8 wav_id[4]; /* WAVE */
+struct riff_struct
+{
+ guint8 id[4]; /* RIFF */
+ guint32 len;
+ guint8 wav_id[4]; /* WAVE */
};
-struct chunk_struct {
- guint8 id[4];
- guint32 len;
+struct chunk_struct
+{
+ guint8 id[4];
+ guint32 len;
};
-struct common_struct {
- guint16 wFormatTag;
- guint16 wChannels;
- guint32 dwSamplesPerSec;
- guint32 dwAvgBytesPerSec;
- guint16 wBlockAlign;
- guint16 wBitsPerSample; /* Only for PCM */
+struct common_struct
+{
+ guint16 wFormatTag;
+ guint16 wChannels;
+ guint32 dwSamplesPerSec;
+ guint32 dwAvgBytesPerSec;
+ guint16 wBlockAlign;
+ guint16 wBitsPerSample; /* Only for PCM */
};
-struct wave_header {
- struct riff_struct riff;
- struct chunk_struct format;
- struct common_struct common;
- struct chunk_struct data;
+struct wave_header
+{
+ struct riff_struct riff;
+ struct chunk_struct format;
+ struct common_struct common;
+ struct chunk_struct data;
};
-static GstElementDetails gst_wavenc_details = GST_ELEMENT_DETAILS (
- "WAV encoder",
- "Codec/Encoder/Audio",
- "Encode raw audio into WAV",
- "Iain Holmes <iain@prettypeople.org>"
-);
-
-static GstStaticPadTemplate sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "rate = (int) [ 1, MAX ], "
- "channels = (int) [ 1, MAX ], "
- "endianness = (int) LITTLE_ENDIAN, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "signed = (boolean) true"
- )
-);
-
-static GstStaticPadTemplate src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-wav")
-);
-
-enum {
- PROP_0,
+static GstElementDetails gst_wavenc_details =
+GST_ELEMENT_DETAILS ("WAV encoder",
+ "Codec/Encoder/Audio",
+ "Encode raw audio into WAV",
+ "Iain Holmes <iain@prettypeople.org>");
+
+static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "rate = (int) [ 1, MAX ], "
+ "channels = (int) [ 1, MAX ], "
+ "endianness = (int) LITTLE_ENDIAN, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, " "signed = (boolean) true")
+ );
+
+static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-wav")
+ );
+
+enum
+{
+ PROP_0,
};
static GstElementClass *parent_class = NULL;
@@ -112,14 +110,14 @@ gst_wavenc_get_type (void)
if (type == 0) {
static const GTypeInfo info = {
- sizeof (GstWavEncClass),
- gst_wavenc_base_init,
+ sizeof (GstWavEncClass),
+ gst_wavenc_base_init,
+ NULL,
+ (GClassInitFunc) gst_wavenc_class_init,
NULL,
- (GClassInitFunc) gst_wavenc_class_init,
- NULL,
NULL,
- sizeof (GstWavEnc),
- 0,
+ sizeof (GstWavEnc),
+ 0,
(GInstanceInitFunc) gst_wavenc_init
};
@@ -130,10 +128,10 @@ gst_wavenc_get_type (void)
}
static GstElementStateReturn
-gst_wavenc_change_state (GstElement *element)
+gst_wavenc_change_state (GstElement * element)
{
GstWavEnc *wavenc = GST_WAVENC (element);
-
+
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_PAUSED_TO_READY:
wavenc->setup = FALSE;
@@ -151,19 +149,17 @@ gst_wavenc_change_state (GstElement *element)
}
static void
-set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
{
- GstWavEnc *enc;
-
- enc = GST_WAVENC (object);
-
- switch (prop_id) {
- default:
- break;
- }
+ GstWavEnc *enc;
+
+ enc = GST_WAVENC (object);
+
+ switch (prop_id) {
+ default:
+ break;
+ }
}
static void
@@ -172,32 +168,32 @@ gst_wavenc_base_init (gpointer g_class)
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
gst_element_class_set_details (element_class, &gst_wavenc_details);
-
+
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_factory));
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&sink_factory));
}
static void
-gst_wavenc_class_init (GstWavEncClass *klass)
+gst_wavenc_class_init (GstWavEncClass * klass)
{
GstElementClass *element_class;
GObjectClass *object_class;
-
+
element_class = (GstElementClass *) klass;
object_class = (GObjectClass *) klass;
object_class->set_property = set_property;
-
+
element_class->change_state = gst_wavenc_change_state;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
}
static gboolean
-gst_wavenc_setup (GstWavEnc *wavenc)
+gst_wavenc_setup (GstWavEnc * wavenc)
{
struct wave_header wave;
- gint size = 0x7fffffff; /* Use a bogus size initially */
+ gint size = 0x7fffffff; /* Use a bogus size initially */
wave.common.wChannels = wavenc->channels;
wave.common.wBitsPerSample = wavenc->bits;
@@ -214,8 +210,11 @@ gst_wavenc_setup (GstWavEnc *wavenc)
wave.format.len = 16;
wave.common.wFormatTag = WAVE_FORMAT_PCM;
- wave.common.dwAvgBytesPerSec = wave.common.wChannels * wave.common.dwSamplesPerSec * (wave.common.wBitsPerSample >> 3);
- wave.common.wBlockAlign = wave.common.wChannels * (wave.common.wBitsPerSample >> 3);
+ wave.common.dwAvgBytesPerSec =
+ wave.common.wChannels * wave.common.dwSamplesPerSec *
+ (wave.common.wBitsPerSample >> 3);
+ wave.common.wBlockAlign =
+ wave.common.wChannels * (wave.common.wBitsPerSample >> 3);
strncpy (wave.data.id, "data", 4);
wave.data.len = size - 44;
@@ -239,7 +238,7 @@ gst_wavenc_setup (GstWavEnc *wavenc)
}
static GstPadLinkReturn
-gst_wavenc_sinkconnect (GstPad *pad, const GstCaps *caps)
+gst_wavenc_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstWavEnc *wavenc;
GstStructure *structure;
@@ -248,9 +247,9 @@ gst_wavenc_sinkconnect (GstPad *pad, const GstCaps *caps)
structure = gst_caps_get_structure (caps, 0);
- gst_structure_get_int (structure, "channels", &wavenc->channels);
- gst_structure_get_int (structure, "rate", &wavenc->rate);
- gst_structure_get_int (structure, "depth", &wavenc->bits);
+ gst_structure_get_int (structure, "channels", &wavenc->channels);
+ gst_structure_get_int (structure, "rate", &wavenc->rate);
+ gst_structure_get_int (structure, "depth", &wavenc->bits);
gst_wavenc_setup (wavenc);
@@ -262,324 +261,328 @@ gst_wavenc_sinkconnect (GstPad *pad, const GstCaps *caps)
}
static void
-gst_wavenc_stop_file (GstWavEnc *wavenc)
+gst_wavenc_stop_file (GstWavEnc * wavenc)
{
GstEvent *event;
GstBuffer *outbuf;
-
- event = gst_event_new_seek (GST_FORMAT_BYTES |
- GST_SEEK_METHOD_SET, 0);
+
+ event = gst_event_new_seek (GST_FORMAT_BYTES | GST_SEEK_METHOD_SET, 0);
gst_pad_send_event (GST_PAD_PEER (wavenc->srcpad), event);
-
+
outbuf = gst_buffer_new_and_alloc (WAV_HEADER_LEN);
WRITE_U32 (wavenc->header + 4, wavenc->length);
memcpy (GST_BUFFER_DATA (outbuf), wavenc->header, WAV_HEADER_LEN);
-
+
gst_pad_push (wavenc->srcpad, GST_DATA (outbuf));
}
static void
-gst_wavenc_init (GstWavEnc *wavenc)
+gst_wavenc_init (GstWavEnc * wavenc)
{
GstElementClass *klass = GST_ELEMENT_GET_CLASS (wavenc);
- wavenc->sinkpad = gst_pad_new_from_template (
- gst_element_class_get_pad_template (klass, "sink"), "sink");
+ wavenc->sinkpad =
+ gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
+ "sink"), "sink");
gst_element_add_pad (GST_ELEMENT (wavenc), wavenc->sinkpad);
gst_pad_set_chain_function (wavenc->sinkpad, gst_wavenc_chain);
gst_pad_set_link_function (wavenc->sinkpad, gst_wavenc_sinkconnect);
-
- wavenc->srcpad = gst_pad_new_from_template (
- gst_element_class_get_pad_template (klass, "src"), "src");
+
+ wavenc->srcpad =
+ gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
+ "src"), "src");
gst_element_add_pad (GST_ELEMENT (wavenc), wavenc->srcpad);
wavenc->setup = FALSE;
wavenc->flush_header = TRUE;
-
+
GST_FLAG_SET (wavenc, GST_ELEMENT_EVENT_AWARE);
}
-struct _maps {
- guint32 id;
- char *name;
+struct _maps
+{
+ guint32 id;
+ char *name;
} maps[] = {
- { GST_RIFF_INFO_IARL, "Location" },
- { GST_RIFF_INFO_IART, "Artist" },
- { GST_RIFF_INFO_ICMS, "Commissioner" },
- { GST_RIFF_INFO_ICMT, "Comment" },
- { GST_RIFF_INFO_ICOP, "Copyright" },
- { GST_RIFF_INFO_ICRD, "Creation Date" },
- { GST_RIFF_INFO_IENG, "Engineer" },
- { GST_RIFF_INFO_IGNR, "Genre" },
- { GST_RIFF_INFO_IKEY, "Keywords" },
- { GST_RIFF_INFO_INAM, "Title" }, /* Name */
- { GST_RIFF_INFO_IPRD, "Product" },
- { GST_RIFF_INFO_ISBJ, "Subject" },
- { GST_RIFF_INFO_ISFT, "Software" },
- { GST_RIFF_INFO_ITCH, "Technician" },
- { 0, NULL }
+ {
+ GST_RIFF_INFO_IARL, "Location"}, {
+ GST_RIFF_INFO_IART, "Artist"}, {
+ GST_RIFF_INFO_ICMS, "Commissioner"}, {
+ GST_RIFF_INFO_ICMT, "Comment"}, {
+ GST_RIFF_INFO_ICOP, "Copyright"}, {
+ GST_RIFF_INFO_ICRD, "Creation Date"}, {
+ GST_RIFF_INFO_IENG, "Engineer"}, {
+ GST_RIFF_INFO_IGNR, "Genre"}, {
+ GST_RIFF_INFO_IKEY, "Keywords"}, {
+ GST_RIFF_INFO_INAM, "Title"}, /* Name */
+ {
+ GST_RIFF_INFO_IPRD, "Product"}, {
+ GST_RIFF_INFO_ISBJ, "Subject"}, {
+ GST_RIFF_INFO_ISFT, "Software"}, {
+ GST_RIFF_INFO_ITCH, "Technician"}, {
+ 0, NULL}
};
#if 0
static guint32
get_id_from_name (const char *name)
{
- int i;
+ int i;
- for (i = 0; maps[i].name; i++) {
- if (strcasecmp (maps[i].name, name) == 0) {
- return maps[i].id;
- }
- }
+ for (i = 0; maps[i].name; i++) {
+ if (strcasecmp (maps[i].name, name) == 0) {
+ return maps[i].id;
+ }
+ }
- return 0;
+ return 0;
}
static void
-write_metadata (GstWavEnc *wavenc)
+write_metadata (GstWavEnc * wavenc)
{
- GString *info_str;
- GList *props;
- int total = 4;
- gboolean need_to_write = FALSE;
-
- info_str = g_string_new ("LIST INFO");
-
- for (props = wavenc->metadata->properties->properties; props; props = props->next) {
- GstPropsEntry *entry = props->data;
- const char *name;
- guint32 id;
-
- name = gst_props_entry_get_name (entry);
- id = get_id_from_name (name);
- if (id != 0) {
- const char *text;
- char *tmp;
- int len, req, i;
-
- need_to_write = TRUE; /* We've got at least one entry */
-
- gst_props_entry_get_string (entry, &text);
- len = strlen (text) + 1; /* The length in the file includes the \0 */
-
- tmp = g_strdup_printf (GST_FOURCC_FORMAT "%d%s", GST_FOURCC_ARGS (id),
- GUINT32_TO_LE (len), text);
- g_string_append (info_str, tmp);
- g_free (tmp);
-
- /* Check that we end on an even boundary */
- req = ((len + 8) + 1) & ~1;
- for (i = 0; i < req - len; i++) {
- g_string_append_printf (info_str, "%c", 0);
- }
-
- total += req;
- }
- }
-
- if (need_to_write) {
- GstBuffer *buf;
- /* Now we've got all the strings together, we can write our length in */
- info_str->str[4] = GUINT32_TO_LE (total);
-
- buf = gst_buffer_new ();
- gst_buffer_set_data (buf, info_str->str, info_str->len);
-
- gst_pad_push (wavenc->srcpad, GST_DATA (buf));
- g_string_free (info_str, FALSE);
- }
+ GString *info_str;
+ GList *props;
+ int total = 4;
+ gboolean need_to_write = FALSE;
+
+ info_str = g_string_new ("LIST INFO");
+
+ for (props = wavenc->metadata->properties->properties; props;
+ props = props->next) {
+ GstPropsEntry *entry = props->data;
+ const char *name;
+ guint32 id;
+
+ name = gst_props_entry_get_name (entry);
+ id = get_id_from_name (name);
+ if (id != 0) {
+ const char *text;
+ char *tmp;
+ int len, req, i;
+
+ need_to_write = TRUE; /* We've got at least one entry */
+
+ gst_props_entry_get_string (entry, &text);
+ len = strlen (text) + 1; /* The length in the file includes the \0 */
+
+ tmp = g_strdup_printf (GST_FOURCC_FORMAT "%d%s", GST_FOURCC_ARGS (id),
+ GUINT32_TO_LE (len), text);
+ g_string_append (info_str, tmp);
+ g_free (tmp);
+
+ /* Check that we end on an even boundary */
+ req = ((len + 8) + 1) & ~1;
+ for (i = 0; i < req - len; i++) {
+ g_string_append_printf (info_str, "%c", 0);
+ }
+
+ total += req;
+ }
+ }
+
+ if (need_to_write) {
+ GstBuffer *buf;
+
+ /* Now we've got all the strings together, we can write our length in */
+ info_str->str[4] = GUINT32_TO_LE (total);
+
+ buf = gst_buffer_new ();
+ gst_buffer_set_data (buf, info_str->str, info_str->len);
+
+ gst_pad_push (wavenc->srcpad, GST_DATA (buf));
+ g_string_free (info_str, FALSE);
+ }
}
static void
-write_cues (GstWavEnc *wavenc)
+write_cues (GstWavEnc * wavenc)
{
- GString *cue_string, *point_string;
- GstBuffer *buf;
- GList *cue_list, *c;
- int num_cues, total = 4;
-
- if (gst_props_get (wavenc->metadata->properties,
- "cues", &cue_list,
- NULL) == FALSE) {
- /* No cues, move along please, nothing to see here */
- return;
- }
-
- /* Space for 'cue ', chunk size and number of cuepoints */
- cue_string = g_string_new ("cue ");
+ GString *cue_string, *point_string;
+ GstBuffer *buf;
+ GList *cue_list, *c;
+ int num_cues, total = 4;
+
+ if (gst_props_get (wavenc->metadata->properties,
+ "cues", &cue_list, NULL) == FALSE) {
+ /* No cues, move along please, nothing to see here */
+ return;
+ }
+
+ /* Space for 'cue ', chunk size and number of cuepoints */
+ cue_string = g_string_new ("cue ");
#define CUEPOINT_SIZE 24
- point_string = g_string_sized_new (CUEPOINT_SIZE);
-
- for (c = cue_list, num_cues = 0; c; c = c->next, num_cues++) {
- GstCaps *cue_caps = c->data;
- guint32 pos;
-
- gst_props_get (cue_caps->properties, "position", &pos, NULL);
-
- point_string->str[0] = GUINT32_TO_LE (num_cues + 1);
- point_string->str[4] = GUINT32_TO_LE (0);
- /* Fixme: There is probably a macro for this */
- point_string->str[8] = 'd';
- point_string->str[9] = 'a';
- point_string->str[10] = 't';
- point_string->str[11] = 'a';
- point_string->str[12] = GUINT32_TO_LE (0);
- point_string->str[16] = GUINT32_TO_LE (0);
- point_string->str[20] = GUINT32_TO_LE (pos);
-
- total += CUEPOINT_SIZE;
- }
-
- /* Set the length and chunk size */
- cue_string->str[4] = GUINT32_TO_LE (total);
- cue_string->str[8] = GUINT32_TO_LE (num_cues);
- /* Stick the cue points on the end */
- g_string_append (cue_string, point_string->str);
- g_string_free (point_string, TRUE);
-
- buf = gst_buffer_new ();
- gst_buffer_set_data (buf, cue_string->str, cue_string->len);
-
- gst_pad_push (wavenc->srcpad, GST_DATA (buf));
- g_string_free (cue_string, FALSE);
+ point_string = g_string_sized_new (CUEPOINT_SIZE);
+
+ for (c = cue_list, num_cues = 0; c; c = c->next, num_cues++) {
+ GstCaps *cue_caps = c->data;
+ guint32 pos;
+
+ gst_props_get (cue_caps->properties, "position", &pos, NULL);
+
+ point_string->str[0] = GUINT32_TO_LE (num_cues + 1);
+ point_string->str[4] = GUINT32_TO_LE (0);
+ /* Fixme: There is probably a macro for this */
+ point_string->str[8] = 'd';
+ point_string->str[9] = 'a';
+ point_string->str[10] = 't';
+ point_string->str[11] = 'a';
+ point_string->str[12] = GUINT32_TO_LE (0);
+ point_string->str[16] = GUINT32_TO_LE (0);
+ point_string->str[20] = GUINT32_TO_LE (pos);
+
+ total += CUEPOINT_SIZE;
+ }
+
+ /* Set the length and chunk size */
+ cue_string->str[4] = GUINT32_TO_LE (total);
+ cue_string->str[8] = GUINT32_TO_LE (num_cues);
+ /* Stick the cue points on the end */
+ g_string_append (cue_string, point_string->str);
+ g_string_free (point_string, TRUE);
+
+ buf = gst_buffer_new ();
+ gst_buffer_set_data (buf, cue_string->str, cue_string->len);
+
+ gst_pad_push (wavenc->srcpad, GST_DATA (buf));
+ g_string_free (cue_string, FALSE);
}
static void
-write_labels (GstWavEnc *wavenc)
+write_labels (GstWavEnc * wavenc)
{
- GstBuffer *buf;
- GString *info_str;
- int total = 4;
- GList *caps;
-
- info_str = g_string_new ("LIST adtl");
- if (gst_props_get (wavenc->metadata->properties, "ltxts", &caps, NULL)) {
- GList *p;
- int i;
-
- for (p = caps, i = 1; p; p = p->next, i++) {
- GstCaps *ltxt_caps = p->data;
- GString *ltxt;
- char *label = NULL;
- int len, req, j;
-
- gst_props_get (ltxt_caps->properties, "name", &label, NULL);
- len = strlen (label);
+ GstBuffer *buf;
+ GString *info_str;
+ int total = 4;
+ GList *caps;
+
+ info_str = g_string_new ("LIST adtl");
+ if (gst_props_get (wavenc->metadata->properties, "ltxts", &caps, NULL)) {
+ GList *p;
+ int i;
+
+ for (p = caps, i = 1; p; p = p->next, i++) {
+ GstCaps *ltxt_caps = p->data;
+ GString *ltxt;
+ char *label = NULL;
+ int len, req, j;
+
+ gst_props_get (ltxt_caps->properties, "name", &label, NULL);
+ len = strlen (label);
#define LTXT_SIZE 28
- ltxt = g_string_new ("ltxt ");
- ltxt->str[8] = GUINT32_TO_LE (i); /* Identifier */
- ltxt->str[12] = GUINT32_TO_LE (0); /* Sample Length */
- ltxt->str[16] = GUINT32_TO_LE (0); /* FIXME: Don't save the purpose yet */
- ltxt->str[20] = GUINT16_TO_LE (0); /* Country */
- ltxt->str[22] = GUINT16_TO_LE (0); /* Language */
- ltxt->str[24] = GUINT16_TO_LE (0); /* Dialect */
- ltxt->str[26] = GUINT16_TO_LE (0); /* Code Page */
- g_string_append (ltxt, label);
- g_free (label);
-
- len += LTXT_SIZE;
-
- ltxt->str[4] = GUINT32_TO_LE (len);
-
- /* Check that we end on an even boundary */
- req = ((len + 8) + 1) & ~1;
- for (j = 0; j < req - len; j++) {
- g_string_append_printf (ltxt, "%c", 0);
- }
-
- total += req;
-
- g_string_append (info_str, ltxt->str);
- g_string_free (ltxt, TRUE);
- }
- }
-
- if (gst_props_get (wavenc->metadata->properties, "labels", &caps, NULL)) {
- GList *p;
- int i;
-
- for (p = caps, i = 1; p; p = p->next, i++) {
- GstCaps *labl_caps = p->data;
- GString *labl;
- char *label = NULL;
- int len, req, j;
-
- gst_props_get (labl_caps->properties, "name", &label, NULL);
- len = strlen (label);
+ ltxt = g_string_new ("ltxt ");
+ ltxt->str[8] = GUINT32_TO_LE (i); /* Identifier */
+ ltxt->str[12] = GUINT32_TO_LE (0); /* Sample Length */
+ ltxt->str[16] = GUINT32_TO_LE (0); /* FIXME: Don't save the purpose yet */
+ ltxt->str[20] = GUINT16_TO_LE (0); /* Country */
+ ltxt->str[22] = GUINT16_TO_LE (0); /* Language */
+ ltxt->str[24] = GUINT16_TO_LE (0); /* Dialect */
+ ltxt->str[26] = GUINT16_TO_LE (0); /* Code Page */
+ g_string_append (ltxt, label);
+ g_free (label);
+
+ len += LTXT_SIZE;
+
+ ltxt->str[4] = GUINT32_TO_LE (len);
+
+ /* Check that we end on an even boundary */
+ req = ((len + 8) + 1) & ~1;
+ for (j = 0; j < req - len; j++) {
+ g_string_append_printf (ltxt, "%c", 0);
+ }
+
+ total += req;
+
+ g_string_append (info_str, ltxt->str);
+ g_string_free (ltxt, TRUE);
+ }
+ }
+
+ if (gst_props_get (wavenc->metadata->properties, "labels", &caps, NULL)) {
+ GList *p;
+ int i;
+
+ for (p = caps, i = 1; p; p = p->next, i++) {
+ GstCaps *labl_caps = p->data;
+ GString *labl;
+ char *label = NULL;
+ int len, req, j;
+
+ gst_props_get (labl_caps->properties, "name", &label, NULL);
+ len = strlen (label);
#define LABL_SIZE 4
- labl = g_string_new ("labl ");
- labl->str[8] = GUINT32_TO_LE (i);
- g_string_append (labl, label);
- g_free (label);
-
- len += LABL_SIZE;
+ labl = g_string_new ("labl ");
+ labl->str[8] = GUINT32_TO_LE (i);
+ g_string_append (labl, label);
+ g_free (label);
- labl->str[4] = GUINT32_TO_LE (len);
+ len += LABL_SIZE;
- /* Check our size */
- req = ((len + 8) + 1) & ~1;
- for (j = 0; j < req - len; j++) {
- g_string_append_printf (labl, "%c", 0);
- }
+ labl->str[4] = GUINT32_TO_LE (len);
- total += req;
+ /* Check our size */
+ req = ((len + 8) + 1) & ~1;
+ for (j = 0; j < req - len; j++) {
+ g_string_append_printf (labl, "%c", 0);
+ }
- g_string_append (info_str, labl->str);
- g_string_free (labl, TRUE);
- }
- }
+ total += req;
- if (gst_props_get (wavenc->metadata->properties, "notes", &caps, NULL)) {
- GList *p;
- int i;
+ g_string_append (info_str, labl->str);
+ g_string_free (labl, TRUE);
+ }
+ }
+
+ if (gst_props_get (wavenc->metadata->properties, "notes", &caps, NULL)) {
+ GList *p;
+ int i;
- for (p = caps, i = 1; p; p = p->next, i++) {
- GstCaps *note_caps = p->data;
- GString *note;
- char *label = NULL;
- int len, req, j;
+ for (p = caps, i = 1; p; p = p->next, i++) {
+ GstCaps *note_caps = p->data;
+ GString *note;
+ char *label = NULL;
+ int len, req, j;
- gst_props_get (note_caps->properties, "name", &label, NULL);
- len = strlen (label);
+ gst_props_get (note_caps->properties, "name", &label, NULL);
+ len = strlen (label);
#define NOTE_SIZE 4
- note = g_string_new ("note ");
- note->str[8] = GUINT32_TO_LE (i);
- g_string_append (note, label);
- g_free (label);
+ note = g_string_new ("note ");
+ note->str[8] = GUINT32_TO_LE (i);
+ g_string_append (note, label);
+ g_free (label);
- len += NOTE_SIZE;
+ len += NOTE_SIZE;
- note->str[4] = GUINT32_TO_LE (len);
+ note->str[4] = GUINT32_TO_LE (len);
- /* Size check */
- req = ((len + 8) + 1) & ~1;
- for (j = 0; j < req - len; j++) {
- g_string_append_printf (note, "%c", 0);
- }
+ /* Size check */
+ req = ((len + 8) + 1) & ~1;
+ for (j = 0; j < req - len; j++) {
+ g_string_append_printf (note, "%c", 0);
+ }
- total += req;
+ total += req;
- g_string_append (info_str, note->str);
- g_string_free (note, TRUE);
- }
- }
+ g_string_append (info_str, note->str);
+ g_string_free (note, TRUE);
+ }
+ }
- info_str->str[4] = GUINT32_TO_LE (total);
+ info_str->str[4] = GUINT32_TO_LE (total);
- buf = gst_buffer_new ();
- gst_buffer_set_data (buf, info_str->str, info_str->len);
+ buf = gst_buffer_new ();
+ gst_buffer_set_data (buf, info_str->str, info_str->len);
- gst_pad_push (wavenc->srcpad, GST_DATA (buf));
- g_string_free (info_str, FALSE);
+ gst_pad_push (wavenc->srcpad, GST_DATA (buf));
+ g_string_free (info_str, FALSE);
}
#endif
static void
-gst_wavenc_chain (GstPad *pad,
- GstData *_data)
+gst_wavenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstWavEnc *wavenc;
@@ -588,41 +591,41 @@ gst_wavenc_chain (GstPad *pad,
if (!wavenc->setup) {
gst_buffer_unref (buf);
- GST_ELEMENT_ERROR (wavenc, CORE, NEGOTIATION, (NULL), ("encoder not initialised (input is not audio?)"));
+ GST_ELEMENT_ERROR (wavenc, CORE, NEGOTIATION, (NULL),
+ ("encoder not initialised (input is not audio?)"));
return;
}
- if (GST_IS_EVENT (buf)) {
- if (GST_EVENT_TYPE (buf) == GST_EVENT_EOS) {
- wavenc->pad_eos = TRUE;
+ if (GST_IS_EVENT (buf)) {
+ if (GST_EVENT_TYPE (buf) == GST_EVENT_EOS) {
+ wavenc->pad_eos = TRUE;
#if 0
- /* Write our metadata if we have any */
- if (wavenc->metadata) {
- write_metadata (wavenc);
- write_cues (wavenc);
- write_labels (wavenc);
- }
+ /* Write our metadata if we have any */
+ if (wavenc->metadata) {
+ write_metadata (wavenc);
+ write_cues (wavenc);
+ write_labels (wavenc);
+ }
#endif
-
- gst_wavenc_stop_file (wavenc);
- gst_pad_push (wavenc->srcpad,
- GST_DATA (gst_event_new (GST_EVENT_EOS)));
- gst_element_set_eos (GST_ELEMENT (wavenc));
- } else {
- gst_pad_event_default (wavenc->srcpad, GST_EVENT (buf));
- }
- return;
- }
+
+ gst_wavenc_stop_file (wavenc);
+ gst_pad_push (wavenc->srcpad, GST_DATA (gst_event_new (GST_EVENT_EOS)));
+ gst_element_set_eos (GST_ELEMENT (wavenc));
+ } else {
+ gst_pad_event_default (wavenc->srcpad, GST_EVENT (buf));
+ }
+ return;
+ }
if (GST_PAD_IS_USABLE (wavenc->srcpad)) {
if (wavenc->flush_header) {
GstBuffer *outbuf;
-
+
outbuf = gst_buffer_new_and_alloc (WAV_HEADER_LEN);
memcpy (GST_BUFFER_DATA (outbuf), wavenc->header, WAV_HEADER_LEN);
GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
-
+
gst_pad_push (wavenc->srcpad, GST_DATA (outbuf));
wavenc->flush_header = FALSE;
}
@@ -633,20 +636,14 @@ gst_wavenc_chain (GstPad *pad,
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- return gst_element_register (plugin, "wavenc", GST_RANK_NONE, GST_TYPE_WAVENC);
+ return gst_element_register (plugin, "wavenc", GST_RANK_NONE,
+ GST_TYPE_WAVENC);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "wavenc",
- "Encode raw audio into WAV",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
-
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "wavenc",
+ "Encode raw audio into WAV",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/wavenc/gstwavenc.h b/gst/wavenc/gstwavenc.h
index 8810001a..7711a25d 100644
--- a/gst/wavenc/gstwavenc.h
+++ b/gst/wavenc/gstwavenc.h
@@ -25,7 +25,6 @@
#include <gst/gst.h>
G_BEGIN_DECLS
-
#define GST_TYPE_WAVENC \
(gst_wavenc_get_type())
#define GST_WAVENC(obj) \
@@ -36,17 +35,17 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WAVENC))
#define GST_IS_WAVENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_WAVENC))
-
typedef struct _GstWavEnc GstWavEnc;
typedef struct _GstWavEncClass GstWavEncClass;
#define WAV_HEADER_LEN 44
-struct _GstWavEnc {
+struct _GstWavEnc
+{
GstElement element;
/* pads */
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
/* useful audio data */
guint bits;
@@ -54,15 +53,15 @@ struct _GstWavEnc {
guint channels;
guint width;
guint32 length;
-
+
gboolean setup, flush_header, pad_eos;
guchar header[WAV_HEADER_LEN];
};
-struct _GstWavEncClass {
+struct _GstWavEncClass
+{
GstElementClass parent_class;
};
G_END_DECLS
-
#endif /* __GST_ENC_H__ */
diff --git a/gst/wavenc/riff.h b/gst/wavenc/riff.h
index 141ed1fa..bf18a1fe 100644
--- a/gst/wavenc/riff.h
+++ b/gst/wavenc/riff.h
@@ -24,11 +24,12 @@
#include <gst/gst.h>
-typedef enum {
- GST_RIFF_OK = 0,
+typedef enum
+{
+ GST_RIFF_OK = 0,
GST_RIFF_ENOTRIFF = -1,
- GST_RIFF_EINVAL = -2,
- GST_RIFF_ENOMEM = -3
+ GST_RIFF_EINVAL = -2,
+ GST_RIFF_ENOMEM = -3
} GstRiffReturn;
#define MAKE_FOUR_CC(a,b,c,d) GST_MAKE_FOURCC(a,b,c,d)
@@ -81,29 +82,29 @@ typedef enum {
#define GST_RIFF_FCCH_MSVC MAKE_FOUR_CC('M','S','V','C')
/* INFO types - see http://www.saettler.com/RIFFMCI/riffmci.html */
-#define GST_RIFF_INFO_IARL MAKE_FOUR_CC('I','A','R','L') /* location */
-#define GST_RIFF_INFO_IART MAKE_FOUR_CC('I','A','R','T') /* artist */
-#define GST_RIFF_INFO_ICMS MAKE_FOUR_CC('I','C','M','S') /* commissioned */
-#define GST_RIFF_INFO_ICMT MAKE_FOUR_CC('I','C','M','T') /* comment */
-#define GST_RIFF_INFO_ICOP MAKE_FOUR_CC('I','C','O','P') /* copyright */
-#define GST_RIFF_INFO_ICRD MAKE_FOUR_CC('I','C','R','D') /* creation date */
-#define GST_RIFF_INFO_ICRP MAKE_FOUR_CC('I','C','R','P') /* cropped */
-#define GST_RIFF_INFO_IDIM MAKE_FOUR_CC('I','D','I','M') /* dimensions */
-#define GST_RIFF_INFO_IDPI MAKE_FOUR_CC('I','D','P','I') /* dots-per-inch */
-#define GST_RIFF_INFO_IENG MAKE_FOUR_CC('I','E','N','G') /* engineer(s) */
-#define GST_RIFF_INFO_IGNR MAKE_FOUR_CC('I','G','N','R') /* genre */
-#define GST_RIFF_INFO_IKEY MAKE_FOUR_CC('I','K','E','Y') /* keywords */
-#define GST_RIFF_INFO_ILGT MAKE_FOUR_CC('I','L','G','T') /* lightness */
-#define GST_RIFF_INFO_IMED MAKE_FOUR_CC('I','M','E','D') /* medium */
-#define GST_RIFF_INFO_INAM MAKE_FOUR_CC('I','N','A','M') /* name */
-#define GST_RIFF_INFO_IPLT MAKE_FOUR_CC('I','P','L','T') /* palette setting */
-#define GST_RIFF_INFO_IPRD MAKE_FOUR_CC('I','P','R','D') /* product */
-#define GST_RIFF_INFO_ISBJ MAKE_FOUR_CC('I','S','B','J') /* subject */
-#define GST_RIFF_INFO_ISFT MAKE_FOUR_CC('I','S','F','T') /* software */
-#define GST_RIFF_INFO_ISHP MAKE_FOUR_CC('I','S','H','P') /* sharpness */
-#define GST_RIFF_INFO_ISRC MAKE_FOUR_CC('I','S','R','C') /* source */
-#define GST_RIFF_INFO_ISRF MAKE_FOUR_CC('I','S','R','F') /* source form */
-#define GST_RIFF_INFO_ITCH MAKE_FOUR_CC('I','T','C','H') /* technician(s) */
+#define GST_RIFF_INFO_IARL MAKE_FOUR_CC('I','A','R','L') /* location */
+#define GST_RIFF_INFO_IART MAKE_FOUR_CC('I','A','R','T') /* artist */
+#define GST_RIFF_INFO_ICMS MAKE_FOUR_CC('I','C','M','S') /* commissioned */
+#define GST_RIFF_INFO_ICMT MAKE_FOUR_CC('I','C','M','T') /* comment */
+#define GST_RIFF_INFO_ICOP MAKE_FOUR_CC('I','C','O','P') /* copyright */
+#define GST_RIFF_INFO_ICRD MAKE_FOUR_CC('I','C','R','D') /* creation date */
+#define GST_RIFF_INFO_ICRP MAKE_FOUR_CC('I','C','R','P') /* cropped */
+#define GST_RIFF_INFO_IDIM MAKE_FOUR_CC('I','D','I','M') /* dimensions */
+#define GST_RIFF_INFO_IDPI MAKE_FOUR_CC('I','D','P','I') /* dots-per-inch */
+#define GST_RIFF_INFO_IENG MAKE_FOUR_CC('I','E','N','G') /* engineer(s) */
+#define GST_RIFF_INFO_IGNR MAKE_FOUR_CC('I','G','N','R') /* genre */
+#define GST_RIFF_INFO_IKEY MAKE_FOUR_CC('I','K','E','Y') /* keywords */
+#define GST_RIFF_INFO_ILGT MAKE_FOUR_CC('I','L','G','T') /* lightness */
+#define GST_RIFF_INFO_IMED MAKE_FOUR_CC('I','M','E','D') /* medium */
+#define GST_RIFF_INFO_INAM MAKE_FOUR_CC('I','N','A','M') /* name */
+#define GST_RIFF_INFO_IPLT MAKE_FOUR_CC('I','P','L','T') /* palette setting */
+#define GST_RIFF_INFO_IPRD MAKE_FOUR_CC('I','P','R','D') /* product */
+#define GST_RIFF_INFO_ISBJ MAKE_FOUR_CC('I','S','B','J') /* subject */
+#define GST_RIFF_INFO_ISFT MAKE_FOUR_CC('I','S','F','T') /* software */
+#define GST_RIFF_INFO_ISHP MAKE_FOUR_CC('I','S','H','P') /* sharpness */
+#define GST_RIFF_INFO_ISRC MAKE_FOUR_CC('I','S','R','C') /* source */
+#define GST_RIFF_INFO_ISRF MAKE_FOUR_CC('I','S','R','F') /* source form */
+#define GST_RIFF_INFO_ITCH MAKE_FOUR_CC('I','T','C','H') /* technician(s) */
/*********Chunk Names***************/
#define GST_RIFF_FF00 MAKE_FOUR_CC(0xFF,0xFF,0x00,0x00)
@@ -182,7 +183,7 @@ typedef enum {
#define GST_RIFF_v422 MAKE_FOUR_CC( 'v', '4', '2', '2')
#define GST_RIFF_V422 MAKE_FOUR_CC( 'V', '4', '2', '2')
#define GST_RIFF_mvi1 MAKE_FOUR_CC( 'm', 'v', 'i', '1')
-#define GST_RIFF_MPIX MAKE_FOUR_CC(0x04,0x00, 'i', '1') /* MotionPixels munged their id */
+#define GST_RIFF_MPIX MAKE_FOUR_CC(0x04,0x00, 'i', '1') /* MotionPixels munged their id */
#define GST_RIFF_AURA MAKE_FOUR_CC( 'A', 'U', 'R', 'A')
#define GST_RIFF_DMB1 MAKE_FOUR_CC( 'D', 'M', 'B', '1')
#define GST_RIFF_dmb1 MAKE_FOUR_CC( 'd', 'm', 'b', '1')
@@ -218,7 +219,7 @@ typedef enum {
#define GST_RIFF_rpza MAKE_FOUR_CC( 'r', 'p', 'z', 'a')
/* And this here's the mistakes that need to be supported */
-#define GST_RIFF_azpr MAKE_FOUR_CC( 'a', 'z', 'p', 'r') /* recognize Apple's rpza mangled? */
+#define GST_RIFF_azpr MAKE_FOUR_CC( 'a', 'z', 'p', 'r') /* recognize Apple's rpza mangled? */
/*********** FND in MJPG **********/
#define GST_RIFF_ISFT MAKE_FOUR_CC( 'I', 'S', 'F', 'T')
@@ -231,21 +232,22 @@ typedef enum {
#define GST_RIFF_rec MAKE_FOUR_CC( 'r', 'e', 'c', ' ')
/* common data structures */
-struct _gst_riff_avih {
- guint32 us_frame; /* microsec per frame */
- guint32 max_bps; /* byte/s overall */
- guint32 pad_gran; /* pad_gran (???) */
+struct _gst_riff_avih
+{
+ guint32 us_frame; /* microsec per frame */
+ guint32 max_bps; /* byte/s overall */
+ guint32 pad_gran; /* pad_gran (???) */
guint32 flags;
/* flags values */
-#define GST_RIFF_AVIH_HASINDEX 0x00000010 /* has idx1 chunk */
-#define GST_RIFF_AVIH_MUSTUSEINDEX 0x00000020 /* must use idx1 chunk to determine order */
-#define GST_RIFF_AVIH_ISINTERLEAVED 0x00000100 /* AVI file is interleaved */
-#define GST_RIFF_AVIH_WASCAPTUREFILE 0x00010000 /* specially allocated used for capturing real time video */
-#define GST_RIFF_AVIH_COPYRIGHTED 0x00020000 /* contains copyrighted data */
- guint32 tot_frames; /* # of frames (all) */
- guint32 init_frames; /* initial frames (???) */
+#define GST_RIFF_AVIH_HASINDEX 0x00000010 /* has idx1 chunk */
+#define GST_RIFF_AVIH_MUSTUSEINDEX 0x00000020 /* must use idx1 chunk to determine order */
+#define GST_RIFF_AVIH_ISINTERLEAVED 0x00000100 /* AVI file is interleaved */
+#define GST_RIFF_AVIH_WASCAPTUREFILE 0x00010000 /* specially allocated used for capturing real time video */
+#define GST_RIFF_AVIH_COPYRIGHTED 0x00020000 /* contains copyrighted data */
+ guint32 tot_frames; /* # of frames (all) */
+ guint32 init_frames; /* initial frames (???) */
guint32 streams;
- guint32 bufsize; /* suggested buffer size */
+ guint32 bufsize; /* suggested buffer size */
guint32 width;
guint32 height;
guint32 scale;
@@ -254,26 +256,28 @@ struct _gst_riff_avih {
guint32 length;
};
-struct _gst_riff_strh {
- guint32 type; /* stream type */
- guint32 fcc_handler; /* fcc_handler */
+struct _gst_riff_strh
+{
+ guint32 type; /* stream type */
+ guint32 fcc_handler; /* fcc_handler */
guint32 flags;
/* flags values */
#define GST_RIFF_STRH_DISABLED 0x000000001
#define GST_RIFF_STRH_VIDEOPALCHANGES 0x000010000
guint32 priority;
- guint32 init_frames; /* initial frames (???) */
+ guint32 init_frames; /* initial frames (???) */
guint32 scale;
guint32 rate;
guint32 start;
guint32 length;
- guint32 bufsize; /* suggested buffer size */
+ guint32 bufsize; /* suggested buffer size */
guint32 quality;
guint32 samplesize;
/* XXX 16 bytes ? */
};
-struct _gst_riff_strf_vids { /* == BitMapInfoHeader */
+struct _gst_riff_strf_vids
+{ /* == BitMapInfoHeader */
guint32 size;
guint32 width;
guint32 height;
@@ -283,13 +287,14 @@ struct _gst_riff_strf_vids { /* == BitMapInfoHeader */
guint32 image_size;
guint32 xpels_meter;
guint32 ypels_meter;
- guint32 num_colors; /* used colors */
- guint32 imp_colors; /* important colors */
+ guint32 num_colors; /* used colors */
+ guint32 imp_colors; /* important colors */
/* may be more for some codecs */
};
-struct _gst_riff_strf_auds { /* == WaveHeader (?) */
+struct _gst_riff_strf_auds
+{ /* == WaveHeader (?) */
guint16 format;
/**** from public Microsoft RIFF docs ******/
#define GST_RIFF_WAVE_FORMAT_UNKNOWN (0x0000)
@@ -328,7 +333,8 @@ struct _gst_riff_strf_auds { /* == WaveHeader (?) */
guint16 size;
};
-struct _gst_riff_strf_iavs {
+struct _gst_riff_strf_iavs
+{
guint32 DVAAuxSrc;
guint32 DVAAuxCtl;
guint32 DVAAuxSrc1;
@@ -339,26 +345,30 @@ struct _gst_riff_strf_iavs {
guint32 DVReserved2;
};
-struct _gst_riff_riff {
+struct _gst_riff_riff
+{
guint32 id;
guint32 size;
guint32 type;
};
-struct _gst_riff_list {
+struct _gst_riff_list
+{
guint32 id;
guint32 size;
guint32 type;
};
-struct _gst_riff_labl {
+struct _gst_riff_labl
+{
guint32 id;
guint32 size;
guint32 identifier;
};
-struct _gst_riff_ltxt {
+struct _gst_riff_ltxt
+{
guint32 id;
guint32 size;
@@ -371,14 +381,16 @@ struct _gst_riff_ltxt {
guint16 codepage;
};
-struct _gst_riff_note {
+struct _gst_riff_note
+{
guint32 id;
guint32 size;
guint32 identifier;
};
-struct _gst_riff_cuepoints {
+struct _gst_riff_cuepoints
+{
guint32 identifier;
guint32 position;
guint32 id;
@@ -387,19 +399,22 @@ struct _gst_riff_cuepoints {
guint32 offset;
};
-struct _gst_riff_cue {
+struct _gst_riff_cue
+{
guint32 id;
guint32 size;
- guint32 cuepoints; /* Number of cue points held in the data */
+ guint32 cuepoints; /* Number of cue points held in the data */
};
-struct _gst_riff_chunk {
+struct _gst_riff_chunk
+{
guint32 id;
guint32 size;
};
-struct _gst_riff_index_entry {
+struct _gst_riff_index_entry
+{
guint32 id;
guint32 flags;
#define GST_RIFF_IF_LIST (0x00000001L)
@@ -410,29 +425,31 @@ struct _gst_riff_index_entry {
guint32 size;
};
-struct _gst_riff_dmlh {
+struct _gst_riff_dmlh
+{
guint32 totalframes;
};
-typedef struct _gst_riff_riff gst_riff_riff;
-typedef struct _gst_riff_list gst_riff_list;
-typedef struct _gst_riff_chunk gst_riff_chunk;
-typedef struct _gst_riff_index_entry gst_riff_index_entry;
-
-typedef struct _gst_riff_avih gst_riff_avih;
-typedef struct _gst_riff_strh gst_riff_strh;
-typedef struct _gst_riff_strf_vids gst_riff_strf_vids;
-typedef struct _gst_riff_strf_auds gst_riff_strf_auds;
-typedef struct _gst_riff_strf_iavs gst_riff_strf_iavs;
-typedef struct _gst_riff_dmlh gst_riff_dmlh;
-typedef struct _GstRiffChunk GstRiffChunk;
-
-struct _GstRiffChunk {
+typedef struct _gst_riff_riff gst_riff_riff;
+typedef struct _gst_riff_list gst_riff_list;
+typedef struct _gst_riff_chunk gst_riff_chunk;
+typedef struct _gst_riff_index_entry gst_riff_index_entry;
+
+typedef struct _gst_riff_avih gst_riff_avih;
+typedef struct _gst_riff_strh gst_riff_strh;
+typedef struct _gst_riff_strf_vids gst_riff_strf_vids;
+typedef struct _gst_riff_strf_auds gst_riff_strf_auds;
+typedef struct _gst_riff_strf_iavs gst_riff_strf_iavs;
+typedef struct _gst_riff_dmlh gst_riff_dmlh;
+typedef struct _GstRiffChunk GstRiffChunk;
+
+struct _GstRiffChunk
+{
gulong offset;
guint32 id;
guint32 size;
- guint32 form; /* for list chunks */
+ guint32 form; /* for list chunks */
gchar *data;
};
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
index 889d6514..c2f6a00f 100644
--- a/gst/wavparse/gstwavparse.c
+++ b/gst/wavparse/gstwavparse.c
@@ -26,161 +26,161 @@
#include <gstwavparse.h>
-static void gst_wavparse_base_init (gpointer g_class);
-static void gst_wavparse_class_init (GstWavParseClass *klass);
-static void gst_wavparse_init (GstWavParse *wavparse);
-
-static GstElementStateReturn
- gst_wavparse_change_state (GstElement *element);
-
-static const GstFormat* gst_wavparse_get_formats (GstPad *pad);
-static const GstQueryType *
- gst_wavparse_get_query_types (GstPad *pad);
-static gboolean gst_wavparse_pad_query (GstPad *pad,
- GstQueryType type,
- GstFormat *format,
- gint64 *value);
-static gboolean gst_wavparse_pad_convert (GstPad *pad,
- GstFormat src_format,
- gint64 src_value,
- GstFormat *dest_format,
- gint64 *dest_value);
-
-static void gst_wavparse_loop (GstElement *element);
-static const GstEventMask*
- gst_wavparse_get_event_masks (GstPad *pad);
-static gboolean gst_wavparse_srcpad_event (GstPad *pad, GstEvent *event);
-static void gst_wavparse_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_wavparse_base_init (gpointer g_class);
+static void gst_wavparse_class_init (GstWavParseClass * klass);
+static void gst_wavparse_init (GstWavParse * wavparse);
+
+static GstElementStateReturn gst_wavparse_change_state (GstElement * element);
+
+static const GstFormat *gst_wavparse_get_formats (GstPad * pad);
+static const GstQueryType *gst_wavparse_get_query_types (GstPad * pad);
+static gboolean gst_wavparse_pad_query (GstPad * pad,
+ GstQueryType type, GstFormat * format, gint64 * value);
+static gboolean gst_wavparse_pad_convert (GstPad * pad,
+ GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+
+static void gst_wavparse_loop (GstElement * element);
+static const GstEventMask *gst_wavparse_get_event_masks (GstPad * pad);
+static gboolean gst_wavparse_srcpad_event (GstPad * pad, GstEvent * event);
+static void gst_wavparse_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
/* elementfactory information */
-static GstElementDetails gst_wavparse_details = GST_ELEMENT_DETAILS (
- ".wav demuxer",
- "Codec/Demuxer",
- "Parse a .wav file into raw audio",
- "Erik Walthinsen <omega@cse.ogi.edu>"
-);
+static GstElementDetails gst_wavparse_details =
+GST_ELEMENT_DETAILS (".wav demuxer",
+ "Codec/Demuxer",
+ "Parse a .wav file into raw audio",
+ "Erik Walthinsen <omega@cse.ogi.edu>");
static GstStaticPadTemplate sink_template_factory =
-GST_STATIC_PAD_TEMPLATE (
- "wavparse_sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-wav")
-);
+GST_STATIC_PAD_TEMPLATE ("wavparse_sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-wav")
+ );
static GstStaticPadTemplate src_template_factory =
-GST_STATIC_PAD_TEMPLATE (
- "wavparse_src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- "audio/x-raw-int, "
- "endianness = (int) little_endian, "
- "signed = (boolean) { true, false }, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "rate = (int) [ 8000, 48000 ], "
- "channels = (int) [ 1, 2 ]; "
- "audio/mpeg, "
- "mpegversion = (int) 1, "
- "layer = (int) [ 1, 3 ], "
- "rate = (int) [ 8000, 48000 ], "
- "channels = (int) [ 1, 2 ]; "
- "audio/x-alaw, "
- "rate = (int) [ 8000, 48000 ], "
- "channels = (int) [ 1, 2 ]; "
- "audio/x-mulaw, "
- "rate = (int) [ 8000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
+ GST_STATIC_PAD_TEMPLATE ("wavparse_src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) little_endian, "
+ "signed = (boolean) { true, false }, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, "
+ "rate = (int) [ 8000, 48000 ], "
+ "channels = (int) [ 1, 2 ]; "
+ "audio/mpeg, "
+ "mpegversion = (int) 1, "
+ "layer = (int) [ 1, 3 ], "
+ "rate = (int) [ 8000, 48000 ], "
+ "channels = (int) [ 1, 2 ]; "
+ "audio/x-alaw, "
+ "rate = (int) [ 8000, 48000 ], "
+ "channels = (int) [ 1, 2 ]; "
+ "audio/x-mulaw, "
+ "rate = (int) [ 8000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
/* WavParse signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
PROP_0,
};
static GstElementClass *parent_class = NULL;
+
/*static guint gst_wavparse_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_wavparse_get_type (void)
+gst_wavparse_get_type (void)
{
static GType wavparse_type = 0;
if (!wavparse_type) {
static const GTypeInfo wavparse_info = {
- sizeof(GstWavParseClass),
+ sizeof (GstWavParseClass),
gst_wavparse_base_init,
NULL,
(GClassInitFunc) gst_wavparse_class_init,
NULL,
NULL,
- sizeof(GstWavParse),
+ sizeof (GstWavParse),
0,
(GInstanceInitFunc) gst_wavparse_init,
};
- wavparse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstWavParse", &wavparse_info, 0);
+ wavparse_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstWavParse", &wavparse_info,
+ 0);
}
return wavparse_type;
}
static void
-gst_wavparse_base_init (gpointer g_class)
+gst_wavparse_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
+
gst_element_class_set_details (element_class, &gst_wavparse_details);
/* register src pads */
- gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template_factory));
- gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_template_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&sink_template_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&src_template_factory));
}
static void
-gst_wavparse_class_init (GstWavParseClass *klass)
+gst_wavparse_class_init (GstWavParseClass * klass)
{
GstElementClass *gstelement_class;
GObjectClass *object_class;
-
- gstelement_class = (GstElementClass*) klass;
+
+ gstelement_class = (GstElementClass *) klass;
object_class = (GObjectClass *) klass;
-
+
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
object_class->get_property = gst_wavparse_get_property;
gstelement_class->change_state = gst_wavparse_change_state;
}
-static void
-gst_wavparse_init (GstWavParse *wavparse)
+static void
+gst_wavparse_init (GstWavParse * wavparse)
{
/* sink */
- wavparse->sinkpad = gst_pad_new_from_template (gst_static_pad_template_get (&sink_template_factory), "sink");
+ wavparse->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&sink_template_factory), "sink");
gst_element_add_pad (GST_ELEMENT (wavparse), wavparse->sinkpad);
gst_pad_set_formats_function (wavparse->sinkpad, gst_wavparse_get_formats);
gst_pad_set_convert_function (wavparse->sinkpad, gst_wavparse_pad_convert);
- gst_pad_set_query_type_function (wavparse->sinkpad,
- gst_wavparse_get_query_types);
+ gst_pad_set_query_type_function (wavparse->sinkpad,
+ gst_wavparse_get_query_types);
gst_pad_set_query_function (wavparse->sinkpad, gst_wavparse_pad_query);
/* source */
- wavparse->srcpad = gst_pad_new_from_template (gst_static_pad_template_get (&src_template_factory), "src");
+ wavparse->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&src_template_factory), "src");
gst_pad_use_explicit_caps (wavparse->srcpad);
gst_element_add_pad (GST_ELEMENT (wavparse), wavparse->srcpad);
gst_pad_set_formats_function (wavparse->srcpad, gst_wavparse_get_formats);
gst_pad_set_convert_function (wavparse->srcpad, gst_wavparse_pad_convert);
gst_pad_set_query_type_function (wavparse->srcpad,
- gst_wavparse_get_query_types);
+ gst_wavparse_get_query_types);
gst_pad_set_query_function (wavparse->srcpad, gst_wavparse_pad_query);
gst_pad_set_event_function (wavparse->srcpad, gst_wavparse_srcpad_event);
- gst_pad_set_event_mask_function (wavparse->srcpad, gst_wavparse_get_event_masks);
+ gst_pad_set_event_mask_function (wavparse->srcpad,
+ gst_wavparse_get_event_masks);
gst_element_set_loop_function (GST_ELEMENT (wavparse), gst_wavparse_loop);
@@ -191,25 +191,22 @@ gst_wavparse_init (GstWavParse *wavparse)
}
static void
-gst_wavparse_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+gst_wavparse_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
{
GstWavParse *wavparse;
wavparse = GST_WAVPARSE (object);
switch (prop_id) {
- default:
- break;
+ default:
+ break;
}
}
#if 0
static void
-gst_wavparse_parse_adtl (GstWavParse *wavparse,
- int len)
+gst_wavparse_parse_adtl (GstWavParse * wavparse, int len)
{
guint32 got_bytes;
GstByteStream *bs = wavparse->bs;
@@ -225,14 +222,15 @@ gst_wavparse_parse_adtl (GstWavParse *wavparse,
GList *caps = NULL;
props = wavparse->metadata->properties;
-
+
while (len > 0) {
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, sizeof (gst_riff_chunk));
+ got_bytes =
+ gst_bytestream_peek_bytes (bs, &tempdata, sizeof (gst_riff_chunk));
if (got_bytes != sizeof (gst_riff_chunk)) {
return;
}
temp_chunk = (gst_riff_chunk *) tempdata;
-
+
chunk.id = GUINT32_FROM_LE (temp_chunk->id);
chunk.size = GUINT32_FROM_LE (temp_chunk->size);
@@ -241,148 +239,149 @@ gst_wavparse_parse_adtl (GstWavParse *wavparse,
len -= sizeof (gst_riff_chunk);
continue;
}
-
- switch (chunk.id) {
- case GST_RIFF_adtl_labl:
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, sizeof (struct _gst_riff_labl));
- if (got_bytes != sizeof (struct _gst_riff_labl)) {
- return;
- }
-
- temp_labl = (struct _gst_riff_labl *) tempdata;
- labl.id = GUINT32_FROM_LE (temp_labl->id);
- labl.size = GUINT32_FROM_LE (temp_labl->size);
- labl.identifier = GUINT32_FROM_LE (temp_labl->identifier);
-
- gst_bytestream_flush (bs, sizeof (struct _gst_riff_labl));
- len -= sizeof (struct _gst_riff_labl);
-
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, labl.size - 4);
- if (got_bytes != labl.size - 4) {
- return;
- }
- label_name = (char *) tempdata;
-
- gst_bytestream_flush (bs, ((labl.size - 4) + 1) & ~1);
- len -= (( (labl.size - 4) + 1) & ~1);
-
- new_caps = gst_caps_new ("label",
- "application/x-gst-metadata",
- gst_props_new (
- "identifier", G_TYPE_INT (labl.identifier),
- "name", G_TYPE_STRING (label_name),
- NULL));
-
- if (gst_props_get (props, "labels", &caps, NULL)) {
- caps = g_list_append (caps, new_caps);
- } else {
- caps = g_list_append (NULL, new_caps);
-
- entry = gst_props_entry_new ("labels", GST_PROPS_GLIST (caps));
- gst_props_add_entry (props, entry);
- }
-
- break;
-
- case GST_RIFF_adtl_ltxt:
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, sizeof (struct _gst_riff_ltxt));
- if (got_bytes != sizeof (struct _gst_riff_ltxt)) {
+ switch (chunk.id) {
+ case GST_RIFF_adtl_labl:
+ got_bytes =
+ gst_bytestream_peek_bytes (bs, &tempdata,
+ sizeof (struct _gst_riff_labl));
+ if (got_bytes != sizeof (struct _gst_riff_labl)) {
+ return;
+ }
+
+ temp_labl = (struct _gst_riff_labl *) tempdata;
+ labl.id = GUINT32_FROM_LE (temp_labl->id);
+ labl.size = GUINT32_FROM_LE (temp_labl->size);
+ labl.identifier = GUINT32_FROM_LE (temp_labl->identifier);
+
+ gst_bytestream_flush (bs, sizeof (struct _gst_riff_labl));
+ len -= sizeof (struct _gst_riff_labl);
+
+ got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, labl.size - 4);
+ if (got_bytes != labl.size - 4) {
+ return;
+ }
+
+ label_name = (char *) tempdata;
+
+ gst_bytestream_flush (bs, ((labl.size - 4) + 1) & ~1);
+ len -= (((labl.size - 4) + 1) & ~1);
+
+ new_caps = gst_caps_new ("label",
+ "application/x-gst-metadata",
+ gst_props_new ("identifier", G_TYPE_INT (labl.identifier),
+ "name", G_TYPE_STRING (label_name), NULL));
+
+ if (gst_props_get (props, "labels", &caps, NULL)) {
+ caps = g_list_append (caps, new_caps);
+ } else {
+ caps = g_list_append (NULL, new_caps);
+
+ entry = gst_props_entry_new ("labels", GST_PROPS_GLIST (caps));
+ gst_props_add_entry (props, entry);
+ }
+
+ break;
+
+ case GST_RIFF_adtl_ltxt:
+ got_bytes =
+ gst_bytestream_peek_bytes (bs, &tempdata,
+ sizeof (struct _gst_riff_ltxt));
+ if (got_bytes != sizeof (struct _gst_riff_ltxt)) {
+ return;
+ }
+
+ temp_ltxt = (struct _gst_riff_ltxt *) tempdata;
+ ltxt.id = GUINT32_FROM_LE (temp_ltxt->id);
+ ltxt.size = GUINT32_FROM_LE (temp_ltxt->size);
+ ltxt.identifier = GUINT32_FROM_LE (temp_ltxt->identifier);
+ ltxt.length = GUINT32_FROM_LE (temp_ltxt->length);
+ ltxt.purpose = GUINT32_FROM_LE (temp_ltxt->purpose);
+ ltxt.country = GUINT16_FROM_LE (temp_ltxt->country);
+ ltxt.language = GUINT16_FROM_LE (temp_ltxt->language);
+ ltxt.dialect = GUINT16_FROM_LE (temp_ltxt->dialect);
+ ltxt.codepage = GUINT16_FROM_LE (temp_ltxt->codepage);
+
+ gst_bytestream_flush (bs, sizeof (struct _gst_riff_ltxt));
+ len -= sizeof (struct _gst_riff_ltxt);
+
+ if (ltxt.size - 20 > 0) {
+ got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, ltxt.size - 20);
+ if (got_bytes != ltxt.size - 20) {
+ return;
+ }
+
+ gst_bytestream_flush (bs, ((ltxt.size - 20) + 1) & ~1);
+ len -= (((ltxt.size - 20) + 1) & ~1);
+
+ label_name = (char *) tempdata;
+ } else {
+ label_name = "";
+ }
+
+ new_caps = gst_caps_new ("ltxt",
+ "application/x-gst-metadata",
+ gst_props_new ("identifier", G_TYPE_INT (ltxt.identifier),
+ "name", G_TYPE_STRING (label_name),
+ "length", G_TYPE_INT (ltxt.length), NULL));
+
+ if (gst_props_get (props, "ltxts", &caps, NULL)) {
+ caps = g_list_append (caps, new_caps);
+ } else {
+ caps = g_list_append (NULL, new_caps);
+
+ entry = gst_props_entry_new ("ltxts", GST_PROPS_GLIST (caps));
+ gst_props_add_entry (props, entry);
+ }
+
+ break;
+
+ case GST_RIFF_adtl_note:
+ got_bytes =
+ gst_bytestream_peek_bytes (bs, &tempdata,
+ sizeof (struct _gst_riff_note));
+ if (got_bytes != sizeof (struct _gst_riff_note)) {
+ return;
+ }
+
+ temp_note = (struct _gst_riff_note *) tempdata;
+ note.id = GUINT32_FROM_LE (temp_note->id);
+ note.size = GUINT32_FROM_LE (temp_note->size);
+ note.identifier = GUINT32_FROM_LE (temp_note->identifier);
+
+ gst_bytestream_flush (bs, sizeof (struct _gst_riff_note));
+ len -= sizeof (struct _gst_riff_note);
+
+ got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, note.size - 4);
+ if (got_bytes != note.size - 4) {
+ return;
+ }
+
+ gst_bytestream_flush (bs, ((note.size - 4) + 1) & ~1);
+ len -= (((note.size - 4) + 1) & ~1);
+
+ label_name = (char *) tempdata;
+
+ new_caps = gst_caps_new ("note",
+ "application/x-gst-metadata",
+ gst_props_new ("identifier", G_TYPE_INT (note.identifier),
+ "name", G_TYPE_STRING (label_name), NULL));
+
+ if (gst_props_get (props, "notes", &caps, NULL)) {
+ caps = g_list_append (caps, new_caps);
+ } else {
+ caps = g_list_append (NULL, new_caps);
+
+ entry = gst_props_entry_new ("notes", GST_PROPS_GLIST (caps));
+ gst_props_add_entry (props, entry);
+ }
+
+ break;
+
+ default:
+ g_print ("Unknown chunk: " GST_FOURCC_FORMAT "\n",
+ GST_FOURCC_ARGS (chunk.id));
return;
- }
-
- temp_ltxt = (struct _gst_riff_ltxt *) tempdata;
- ltxt.id = GUINT32_FROM_LE (temp_ltxt->id);
- ltxt.size = GUINT32_FROM_LE (temp_ltxt->size);
- ltxt.identifier = GUINT32_FROM_LE (temp_ltxt->identifier);
- ltxt.length = GUINT32_FROM_LE (temp_ltxt->length);
- ltxt.purpose = GUINT32_FROM_LE (temp_ltxt->purpose);
- ltxt.country = GUINT16_FROM_LE (temp_ltxt->country);
- ltxt.language = GUINT16_FROM_LE (temp_ltxt->language);
- ltxt.dialect = GUINT16_FROM_LE (temp_ltxt->dialect);
- ltxt.codepage = GUINT16_FROM_LE (temp_ltxt->codepage);
-
- gst_bytestream_flush (bs, sizeof (struct _gst_riff_ltxt));
- len -= sizeof (struct _gst_riff_ltxt);
-
- if (ltxt.size - 20 > 0) {
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, ltxt.size - 20);
- if (got_bytes != ltxt.size - 20) {
- return;
- }
-
- gst_bytestream_flush (bs, ((ltxt.size - 20) + 1) & ~1);
- len -= (( (ltxt.size - 20) + 1) & ~1);
-
- label_name = (char *) tempdata;
- } else {
- label_name = "";
- }
-
- new_caps = gst_caps_new ("ltxt",
- "application/x-gst-metadata",
- gst_props_new (
- "identifier", G_TYPE_INT (ltxt.identifier),
- "name", G_TYPE_STRING (label_name),
- "length", G_TYPE_INT (ltxt.length),
- NULL));
-
- if (gst_props_get (props, "ltxts", &caps, NULL)) {
- caps = g_list_append (caps, new_caps);
- } else {
- caps = g_list_append (NULL, new_caps);
-
- entry = gst_props_entry_new ("ltxts", GST_PROPS_GLIST (caps));
- gst_props_add_entry (props, entry);
- }
-
- break;
-
- case GST_RIFF_adtl_note:
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, sizeof (struct _gst_riff_note));
- if (got_bytes != sizeof (struct _gst_riff_note)) {
- return;
- }
-
- temp_note = (struct _gst_riff_note *) tempdata;
- note.id = GUINT32_FROM_LE (temp_note->id);
- note.size = GUINT32_FROM_LE (temp_note->size);
- note.identifier = GUINT32_FROM_LE (temp_note->identifier);
-
- gst_bytestream_flush (bs, sizeof (struct _gst_riff_note));
- len -= sizeof (struct _gst_riff_note);
-
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, note.size - 4);
- if (got_bytes != note.size - 4) {
- return;
- }
-
- gst_bytestream_flush (bs, ((note.size - 4) + 1) & ~1);
- len -= (( (note.size - 4) + 1) & ~1);
-
- label_name = (char *) tempdata;
-
- new_caps = gst_caps_new ("note",
- "application/x-gst-metadata",
- gst_props_new (
- "identifier", G_TYPE_INT (note.identifier),
- "name", G_TYPE_STRING (label_name),
- NULL));
-
- if (gst_props_get (props, "notes", &caps, NULL)) {
- caps = g_list_append (caps, new_caps);
- } else {
- caps = g_list_append (NULL, new_caps);
-
- entry = gst_props_entry_new ("notes", GST_PROPS_GLIST (caps));
- gst_props_add_entry (props, entry);
- }
-
- break;
-
- default:
- g_print ("Unknown chunk: " GST_FOURCC_FORMAT "\n", GST_FOURCC_ARGS(chunk.id));
- return;
}
}
@@ -392,19 +391,19 @@ gst_wavparse_parse_adtl (GstWavParse *wavparse,
#if 0
static void
-gst_wavparse_parse_info (GstWavParse *wavparse,
- int len)
+gst_wavparse_parse_info (GstWavParse * wavparse, int len)
{
gst_riff_chunk *temp_chunk, chunk;
GstByteStream *bs = wavparse->bs;
guint8 *tempdata;
guint32 got_bytes;
char *name, *type;
-
+
while (len > 0) {
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, sizeof (gst_riff_chunk));
+ got_bytes =
+ gst_bytestream_peek_bytes (bs, &tempdata, sizeof (gst_riff_chunk));
temp_chunk = (gst_riff_chunk *) tempdata;
-
+
chunk.id = GUINT32_FROM_LE (temp_chunk->id);
chunk.size = GUINT32_FROM_LE (temp_chunk->size);
@@ -412,87 +411,87 @@ gst_wavparse_parse_info (GstWavParse *wavparse,
if (got_bytes != sizeof (gst_riff_chunk)) {
return;
}
-
+
/* move our pointer on past the header */
len -= sizeof (gst_riff_chunk);
-
+
if (chunk.size == 0) {
continue;
}
-
+
got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, chunk.size);
name = (char *) tempdata;
if (got_bytes != chunk.size) {
return;
}
-
+
/* move our pointer on past the data ... on an even boundary */
- gst_bytestream_flush (bs, (chunk.size + 1) & ~1);
+ gst_bytestream_flush (bs, (chunk.size + 1) & ~1);
len -= ((chunk.size + 1) & ~1);
/* We now have an info string in 'name' of type chunk.id
- find type */
switch (chunk.id) {
- case GST_RIFF_INFO_IARL:
- type = "Location";
- break;
-
- case GST_RIFF_INFO_IART:
- type = "Artist";
- break;
-
- case GST_RIFF_INFO_ICMS:
- type = "Commissioner";
- break;
-
- case GST_RIFF_INFO_ICMT:
- type = "Comment";
- break;
-
- case GST_RIFF_INFO_ICOP:
- type = "Copyright";
- break;
-
- case GST_RIFF_INFO_ICRD:
- type = "Creation Date";
- break;
-
- case GST_RIFF_INFO_IENG:
- type = "Engineer";
- break;
-
- case GST_RIFF_INFO_IGNR:
- type = "Genre";
- break;
-
- case GST_RIFF_INFO_IKEY:
- type = "Keywords";
- break;
-
- case GST_RIFF_INFO_INAM:
- type = "Title"; /* name */
- break;
-
- case GST_RIFF_INFO_IPRD:
- type = "Product";
- break;
-
- case GST_RIFF_INFO_ISBJ:
- type = "Subject";
- break;
-
- case GST_RIFF_INFO_ISFT:
- type = "Software";
- break;
-
- case GST_RIFF_INFO_ITCH:
- type = "Technician";
- break;
-
- default:
- g_print ("Unknown: %4.4s\n", (char *) &chunk.id);
- type = NULL;
- break;
+ case GST_RIFF_INFO_IARL:
+ type = "Location";
+ break;
+
+ case GST_RIFF_INFO_IART:
+ type = "Artist";
+ break;
+
+ case GST_RIFF_INFO_ICMS:
+ type = "Commissioner";
+ break;
+
+ case GST_RIFF_INFO_ICMT:
+ type = "Comment";
+ break;
+
+ case GST_RIFF_INFO_ICOP:
+ type = "Copyright";
+ break;
+
+ case GST_RIFF_INFO_ICRD:
+ type = "Creation Date";
+ break;
+
+ case GST_RIFF_INFO_IENG:
+ type = "Engineer";
+ break;
+
+ case GST_RIFF_INFO_IGNR:
+ type = "Genre";
+ break;
+
+ case GST_RIFF_INFO_IKEY:
+ type = "Keywords";
+ break;
+
+ case GST_RIFF_INFO_INAM:
+ type = "Title"; /* name */
+ break;
+
+ case GST_RIFF_INFO_IPRD:
+ type = "Product";
+ break;
+
+ case GST_RIFF_INFO_ISBJ:
+ type = "Subject";
+ break;
+
+ case GST_RIFF_INFO_ISFT:
+ type = "Software";
+ break;
+
+ case GST_RIFF_INFO_ITCH:
+ type = "Technician";
+ break;
+
+ default:
+ g_print ("Unknown: %4.4s\n", (char *) &chunk.id);
+ type = NULL;
+ break;
}
if (type) {
@@ -509,8 +508,7 @@ gst_wavparse_parse_info (GstWavParse *wavparse,
#if 0
static void
-gst_wavparse_parse_cues (GstWavParse *wavparse,
- int len)
+gst_wavparse_parse_cues (GstWavParse * wavparse, int len)
{
guint32 got_bytes;
GstByteStream *bs = wavparse->bs;
@@ -523,8 +521,10 @@ gst_wavparse_parse_cues (GstWavParse *wavparse,
while (len > 0) {
int required;
-
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, sizeof (struct _gst_riff_cue));
+
+ got_bytes =
+ gst_bytestream_peek_bytes (bs, &tempdata,
+ sizeof (struct _gst_riff_cue));
temp_cue = (struct _gst_riff_cue *) tempdata;
/* fixup for our big endian friends */
@@ -548,33 +548,31 @@ gst_wavparse_parse_cues (GstWavParse *wavparse,
return;
}
- len -= ( ((cue.size - 4) + 1) & ~1);
+ len -= (((cue.size - 4) + 1) & ~1);
/* now we have an array of struct _gst_riff_cuepoints in tempdata */
points = (struct _gst_riff_cuepoints *) tempdata;
-
+
for (i = 0; i < cue.cuepoints; i++) {
GstCaps *caps;
caps = gst_caps_new ("cues",
- "application/x-gst-metadata",
- gst_props_new (
- "identifier", G_TYPE_INT (points[i].identifier),
- "position", G_TYPE_INT (points[i].offset),
- NULL));
+ "application/x-gst-metadata",
+ gst_props_new ("identifier", G_TYPE_INT (points[i].identifier),
+ "position", G_TYPE_INT (points[i].offset), NULL));
cues = g_list_append (cues, caps);
}
-
+
entry = gst_props_entry_new ("cues", GST_PROPS_GLIST (cues));
gst_props_add_entry (wavparse->metadata->properties, entry);
}
-
+
g_object_notify (G_OBJECT (wavparse), "metadata");
}
#endif
static void
-gst_wavparse_parse_fmt (GstWavParse *wavparse, guint size)
+gst_wavparse_parse_fmt (GstWavParse * wavparse, guint size)
{
GstWavParseFormat *format;
GstCaps *caps = NULL;
@@ -582,7 +580,8 @@ gst_wavparse_parse_fmt (GstWavParse *wavparse, guint size)
GstByteStream *bs = wavparse->bs;
guint32 got_bytes;
- got_bytes = gst_bytestream_peek_bytes (bs, &fmtdata, sizeof (GstWavParseFormat));
+ got_bytes =
+ gst_bytestream_peek_bytes (bs, &fmtdata, sizeof (GstWavParseFormat));
format = (GstWavParseFormat *) fmtdata;
if (got_bytes == sizeof (GstWavParseFormat)) {
@@ -596,49 +595,47 @@ gst_wavparse_parse_fmt (GstWavParse *wavparse, guint size)
/* set the caps on the src pad */
/* FIXME: handle all of the other formats as well */
switch (wavparse->format) {
- case GST_RIFF_WAVE_FORMAT_ALAW:
- case GST_RIFF_WAVE_FORMAT_MULAW: {
- char *mime = (wavparse->format == GST_RIFF_WAVE_FORMAT_ALAW) ?
- "audio/x-alaw" : "audio/x-mulaw";
- if (wavparse->width != 8) {
- g_warning ("Ignoring invalid width %d", wavparse->width);
- return;
+ case GST_RIFF_WAVE_FORMAT_ALAW:
+ case GST_RIFF_WAVE_FORMAT_MULAW:{
+ char *mime = (wavparse->format == GST_RIFF_WAVE_FORMAT_ALAW) ?
+ "audio/x-alaw" : "audio/x-mulaw";
+ if (wavparse->width != 8) {
+ g_warning ("Ignoring invalid width %d", wavparse->width);
+ return;
+ }
+
+ caps = gst_caps_new_simple (mime,
+ "rate", G_TYPE_INT, wavparse->rate,
+ "channels", G_TYPE_INT, wavparse->channels, NULL);
}
-
- caps = gst_caps_new_simple (mime,
- "rate", G_TYPE_INT, wavparse->rate,
- "channels", G_TYPE_INT, wavparse->channels,
- NULL);
- }
- break;
-
- case GST_RIFF_WAVE_FORMAT_PCM:
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
- "signed", G_TYPE_BOOLEAN, (wavparse->width > 8) ? TRUE : FALSE,
- "width", G_TYPE_INT, wavparse->width,
- "depth", G_TYPE_INT, wavparse->width,
- "rate", G_TYPE_INT, wavparse->rate,
- "channels", G_TYPE_INT, wavparse->channels,
- NULL);
- break;
-
- case GST_RIFF_WAVE_FORMAT_MPEGL12:
- case GST_RIFF_WAVE_FORMAT_MPEGL3: {
- int layer = (wavparse->format == GST_RIFF_WAVE_FORMAT_MPEGL12) ? 2 : 3;
-
- caps = gst_caps_new_simple ("audio/mpeg",
- "mpegversion", G_TYPE_INT, 1,
- "layer", G_TYPE_INT, layer,
- "rate", G_TYPE_INT, wavparse->rate,
- "channels", G_TYPE_INT, wavparse->channels,
- NULL);
- }
- break;
-
- default:
- GST_ELEMENT_ERROR (wavparse, STREAM, NOT_IMPLEMENTED, (NULL), ("format %d not handled", wavparse->format));
- return;
+ break;
+
+ case GST_RIFF_WAVE_FORMAT_PCM:
+ caps = gst_caps_new_simple ("audio/x-raw-int",
+ "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
+ "signed", G_TYPE_BOOLEAN, (wavparse->width > 8) ? TRUE : FALSE,
+ "width", G_TYPE_INT, wavparse->width,
+ "depth", G_TYPE_INT, wavparse->width,
+ "rate", G_TYPE_INT, wavparse->rate,
+ "channels", G_TYPE_INT, wavparse->channels, NULL);
+ break;
+
+ case GST_RIFF_WAVE_FORMAT_MPEGL12:
+ case GST_RIFF_WAVE_FORMAT_MPEGL3:{
+ int layer = (wavparse->format == GST_RIFF_WAVE_FORMAT_MPEGL12) ? 2 : 3;
+
+ caps = gst_caps_new_simple ("audio/mpeg",
+ "mpegversion", G_TYPE_INT, 1,
+ "layer", G_TYPE_INT, layer,
+ "rate", G_TYPE_INT, wavparse->rate,
+ "channels", G_TYPE_INT, wavparse->channels, NULL);
+ }
+ break;
+
+ default:
+ GST_ELEMENT_ERROR (wavparse, STREAM, NOT_IMPLEMENTED, (NULL),
+ ("format %d not handled", wavparse->format));
+ return;
}
if (caps) {
@@ -651,42 +648,42 @@ gst_wavparse_parse_fmt (GstWavParse *wavparse, guint size)
}
static gboolean
-gst_wavparse_handle_sink_event (GstWavParse *wavparse)
+gst_wavparse_handle_sink_event (GstWavParse * wavparse)
{
guint32 remaining;
GstEvent *event;
GstEventType type;
gboolean res = TRUE;
-
+
gst_bytestream_get_status (wavparse->bs, &remaining, &event);
-
+
type = event ? GST_EVENT_TYPE (event) : GST_EVENT_UNKNOWN;
GST_DEBUG ("wavparse: event %p %d", event, type);
-
+
switch (type) {
- case GST_EVENT_EOS:
- gst_bytestream_flush (wavparse->bs, remaining);
- gst_pad_event_default (wavparse->sinkpad, event);
- res = FALSE;
- goto done;
-
- case GST_EVENT_FLUSH:
- g_warning ("Wavparse: Flush event");
- break;
-
- default:
- g_warning ("Wavparse: Unhandled event %d", type);
- break;
+ case GST_EVENT_EOS:
+ gst_bytestream_flush (wavparse->bs, remaining);
+ gst_pad_event_default (wavparse->sinkpad, event);
+ res = FALSE;
+ goto done;
+
+ case GST_EVENT_FLUSH:
+ g_warning ("Wavparse: Flush event");
+ break;
+
+ default:
+ g_warning ("Wavparse: Unhandled event %d", type);
+ break;
}
gst_event_unref (event);
- done:
+done:
return res;
}
-
+
static void
-gst_wavparse_loop (GstElement *element)
+gst_wavparse_loop (GstElement * element)
{
GstWavParse *wavparse;
gst_riff_riff chunk;
@@ -700,25 +697,24 @@ gst_wavparse_loop (GstElement *element)
if (wavparse->seek_pending) {
GST_DEBUG ("wavparse: seek pending to %" G_GINT64_FORMAT " %08llx",
- wavparse->seek_offset,
- (unsigned long long) wavparse->seek_offset);
-
+ wavparse->seek_offset, (unsigned long long) wavparse->seek_offset);
+
if (!gst_bytestream_seek (bs, wavparse->seek_offset, GST_SEEK_METHOD_SET)) {
GST_INFO ("wavparse: Could not seek");
}
-
+
wavparse->seek_pending = FALSE;
}
-
+
if (wavparse->state == GST_WAVPARSE_DATA) {
GstBuffer *buf;
int desired;
-
+
/* This seems to want the whole chunk,
Will this screw up streaming?
Does anyone care about streaming wavs?
FIXME: Should we have a decent buffer size? */
-
+
#define MAX_BUFFER_SIZE 1024
if (wavparse->dataleft > 0) {
@@ -726,15 +722,16 @@ gst_wavparse_loop (GstElement *element)
got_bytes = gst_bytestream_peek (bs, &buf, desired);
if (got_bytes != desired) {
- /* EOS? */
- GstEvent *event;
- guint32 remaining;
- gst_bytestream_get_status (bs, &remaining, &event);
- if (event && GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
- gst_pad_event_default (wavparse->sinkpad, event);
- } else {
- GST_ELEMENT_ERROR (element, RESOURCE, READ, (NULL), (NULL));
- }
+ /* EOS? */
+ GstEvent *event;
+ guint32 remaining;
+
+ gst_bytestream_get_status (bs, &remaining, &event);
+ if (event && GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
+ gst_pad_event_default (wavparse->sinkpad, event);
+ } else {
+ GST_ELEMENT_ERROR (element, RESOURCE, READ, (NULL), (NULL));
+ }
return;
}
@@ -742,7 +739,7 @@ gst_wavparse_loop (GstElement *element)
wavparse->byteoffset += got_bytes;
gst_bytestream_flush (bs, got_bytes);
-
+
gst_pad_push (wavparse->srcpad, GST_DATA (buf));
return;
} else {
@@ -754,51 +751,53 @@ gst_wavparse_loop (GstElement *element)
gst_riff_riff *temp_chunk;
guint8 *tempdata;
guint32 skipsize;
-
+
/* read first two dwords to get chunktype and size */
while (TRUE) {
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, sizeof (gst_riff_chunk));
+ got_bytes =
+ gst_bytestream_peek_bytes (bs, &tempdata, sizeof (gst_riff_chunk));
temp_chunk = (gst_riff_riff *) tempdata;
if (got_bytes < sizeof (gst_riff_chunk)) {
- if (!gst_wavparse_handle_sink_event (wavparse)) {
- return;
- }
+ if (!gst_wavparse_handle_sink_event (wavparse)) {
+ return;
+ }
} else {
- break;
+ break;
}
}
-
+
chunk.id = GUINT32_FROM_LE (temp_chunk->id);
chunk.size = GUINT32_FROM_LE (temp_chunk->size);
switch (chunk.id) {
- case GST_RIFF_TAG_RIFF:
- case GST_RIFF_TAG_LIST:
- /* Read complete list chunk */
- while (TRUE) {
- got_bytes = gst_bytestream_peek_bytes (bs, &tempdata, sizeof (gst_riff_list));
- temp_chunk = (gst_riff_riff *) tempdata;
- if (got_bytes < sizeof (gst_riff_list)) {
- if (!gst_wavparse_handle_sink_event (wavparse)) {
- return;
+ case GST_RIFF_TAG_RIFF:
+ case GST_RIFF_TAG_LIST:
+ /* Read complete list chunk */
+ while (TRUE) {
+ got_bytes =
+ gst_bytestream_peek_bytes (bs, &tempdata, sizeof (gst_riff_list));
+ temp_chunk = (gst_riff_riff *) tempdata;
+ if (got_bytes < sizeof (gst_riff_list)) {
+ if (!gst_wavparse_handle_sink_event (wavparse)) {
+ return;
+ }
+ } else {
+ break;
}
- } else {
- break;
}
- }
-
- chunk.type = GUINT32_FROM_LE (temp_chunk->type);
- skipsize = sizeof (gst_riff_list);
- break;
- case GST_RIFF_TAG_cue:
- skipsize = 0;
- break;
-
- default:
- skipsize = sizeof (gst_riff_chunk);
- break;
+ chunk.type = GUINT32_FROM_LE (temp_chunk->type);
+ skipsize = sizeof (gst_riff_list);
+ break;
+
+ case GST_RIFF_TAG_cue:
+ skipsize = 0;
+ break;
+
+ default:
+ skipsize = sizeof (gst_riff_chunk);
+ break;
}
gst_bytestream_flush (bs, skipsize);
} while (FALSE);
@@ -807,75 +806,74 @@ gst_wavparse_loop (GstElement *element)
flush = (chunk.size + 1) & ~1;
switch (wavparse->state) {
- case GST_WAVPARSE_START:
- if (chunk.id != GST_RIFF_TAG_RIFF &&
- chunk.type != GST_RIFF_RIFF_WAVE) {
- GST_ELEMENT_ERROR (element, STREAM, WRONG_TYPE, (NULL),
- ("chunk.id %08x chunk.type %08x", chunk.id, chunk.type));
- return;
- }
-
- wavparse->state = GST_WAVPARSE_OTHER;
- /* We are not going to flush lists */
- flush = 0;
- break;
-
- case GST_WAVPARSE_OTHER:
- GST_DEBUG ("riff tag: %4.4s %08x", (char *) &chunk.id, chunk.size);
-
- switch (chunk.id) {
- case GST_RIFF_TAG_data:
- wavparse->state = GST_WAVPARSE_DATA;
- wavparse->dataleft = chunk.size;
- wavparse->byteoffset = 0;
- flush = 0;
- break;
-
- case GST_RIFF_TAG_fmt:
- gst_wavparse_parse_fmt (wavparse, chunk.size);
+ case GST_WAVPARSE_START:
+ if (chunk.id != GST_RIFF_TAG_RIFF && chunk.type != GST_RIFF_RIFF_WAVE) {
+ GST_ELEMENT_ERROR (element, STREAM, WRONG_TYPE, (NULL),
+ ("chunk.id %08x chunk.type %08x", chunk.id, chunk.type));
+ return;
+ }
+
+ wavparse->state = GST_WAVPARSE_OTHER;
+ /* We are not going to flush lists */
flush = 0;
break;
- case GST_RIFF_TAG_cue:
- //gst_wavparse_parse_cues (wavparse, chunk.size);
- break;
-
- case GST_RIFF_TAG_LIST:
- GST_DEBUG ("list type: %4.4s", (char *) &chunk.type);
- switch (chunk.type) {
- case GST_RIFF_LIST_INFO:
- //gst_wavparse_parse_info (wavparse, chunk.size - 4);
- //flush = 0;
+ case GST_WAVPARSE_OTHER:
+ GST_DEBUG ("riff tag: %4.4s %08x", (char *) &chunk.id, chunk.size);
- break;
-
- case GST_RIFF_LIST_adtl:
- //gst_wavparse_parse_adtl (wavparse, chunk.size - 4);
- //flush = 0;
- break;
+ switch (chunk.id) {
+ case GST_RIFF_TAG_data:
+ wavparse->state = GST_WAVPARSE_DATA;
+ wavparse->dataleft = chunk.size;
+ wavparse->byteoffset = 0;
+ flush = 0;
+ break;
- default:
- //flush = 0;
- break;
+ case GST_RIFF_TAG_fmt:
+ gst_wavparse_parse_fmt (wavparse, chunk.size);
+ flush = 0;
+ break;
+
+ case GST_RIFF_TAG_cue:
+ //gst_wavparse_parse_cues (wavparse, chunk.size);
+ break;
+
+ case GST_RIFF_TAG_LIST:
+ GST_DEBUG ("list type: %4.4s", (char *) &chunk.type);
+ switch (chunk.type) {
+ case GST_RIFF_LIST_INFO:
+ //gst_wavparse_parse_info (wavparse, chunk.size - 4);
+ //flush = 0;
+
+ break;
+
+ case GST_RIFF_LIST_adtl:
+ //gst_wavparse_parse_adtl (wavparse, chunk.size - 4);
+ //flush = 0;
+ break;
+
+ default:
+ //flush = 0;
+ break;
+ }
+
+ default:
+ GST_DEBUG (" ***** unknown chunkid %08x", chunk.id);
+ //flush = 0;
+ break;
}
-
+ break;
+
+ case GST_WAVPARSE_DATA:
+ /* Should have been handled up there ^^^^ */
+ flush = 0;
+ break;
+
default:
- GST_DEBUG (" ***** unknown chunkid %08x", chunk.id);
- //flush = 0;
- break;
- }
- break;
-
- case GST_WAVPARSE_DATA:
- /* Should have been handled up there ^^^^ */
- flush = 0;
- break;
-
- default:
- /* Unknown */
- g_warning ("Unknown state %d\n", wavparse->state);
- //GST_DEBUG (" ***** unknown chunkid %08x", chunk.id);
- break;
+ /* Unknown */
+ g_warning ("Unknown state %d\n", wavparse->state);
+ //GST_DEBUG (" ***** unknown chunkid %08x", chunk.id);
+ break;
}
if (flush > 0) {
@@ -888,18 +886,18 @@ gst_wavparse_loop (GstElement *element)
gst_bytestream_get_status (bs, &remaining, &event);
gst_event_unref (event);
- }
+ }
}
}
/* convert and query stuff */
static const GstFormat *
-gst_wavparse_get_formats (GstPad *pad)
+gst_wavparse_get_formats (GstPad * pad)
{
static GstFormat formats[] = {
GST_FORMAT_TIME,
GST_FORMAT_BYTES,
- GST_FORMAT_DEFAULT, /* a "frame", ie a set of samples per Hz */
+ GST_FORMAT_DEFAULT, /* a "frame", ie a set of samples per Hz */
0,
0
};
@@ -907,9 +905,9 @@ gst_wavparse_get_formats (GstPad *pad)
}
static gboolean
-gst_wavparse_pad_convert (GstPad *pad,
- GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value)
+gst_wavparse_pad_convert (GstPad * pad,
+ GstFormat src_format, gint64 src_value,
+ GstFormat * dest_format, gint64 * dest_value)
{
gint bytes_per_sample;
glong byterate;
@@ -919,11 +917,11 @@ gst_wavparse_pad_convert (GstPad *pad,
gboolean dest_format_ok = FALSE;
wavparse = GST_WAVPARSE (gst_pad_get_parent (pad));
-
+
bytes_per_sample = wavparse->channels * wavparse->width / 8;
if (bytes_per_sample == 0) {
GST_DEBUG ("bytes_per_sample 0, probably an mp3 - channels %d, width %d",
- wavparse->channels, wavparse->width);
+ wavparse->channels, wavparse->width);
return FALSE;
}
byterate = (glong) (bytes_per_sample * wavparse->rate);
@@ -936,8 +934,12 @@ gst_wavparse_pad_convert (GstPad *pad,
formats = gst_pad_get_formats (pad);
while (formats && *formats) {
- if (src_format == *formats) { src_format_ok = TRUE; }
- if (*dest_format == *formats) { dest_format_ok = TRUE; }
+ if (src_format == *formats) {
+ src_format_ok = TRUE;
+ }
+ if (*dest_format == *formats) {
+ dest_format_ok = TRUE;
+ }
formats++;
}
if (!src_format_ok || !dest_format_ok) {
@@ -949,23 +951,23 @@ gst_wavparse_pad_convert (GstPad *pad,
switch (src_format) {
case GST_FORMAT_BYTES:
if (*dest_format == GST_FORMAT_DEFAULT)
- *dest_value = src_value / bytes_per_sample;
+ *dest_value = src_value / bytes_per_sample;
else if (*dest_format == GST_FORMAT_TIME)
- *dest_value = src_value * GST_SECOND / byterate;
+ *dest_value = src_value * GST_SECOND / byterate;
else {
- GST_DEBUG ("can't convert from bytes to other than units/time");
- return FALSE;
+ GST_DEBUG ("can't convert from bytes to other than units/time");
+ return FALSE;
}
break;
case GST_FORMAT_DEFAULT:
if (*dest_format == GST_FORMAT_BYTES)
- *dest_value = src_value * bytes_per_sample;
+ *dest_value = src_value * bytes_per_sample;
else if (*dest_format == GST_FORMAT_TIME)
- *dest_value = src_value * GST_SECOND / wavparse->rate;
+ *dest_value = src_value * GST_SECOND / wavparse->rate;
else {
- GST_DEBUG ("can't convert from units to other than bytes/time");
- return FALSE;
+ GST_DEBUG ("can't convert from units to other than bytes/time");
+ return FALSE;
}
break;
case GST_FORMAT_TIME:
@@ -974,8 +976,8 @@ gst_wavparse_pad_convert (GstPad *pad,
else if (*dest_format == GST_FORMAT_DEFAULT)
*dest_value = src_value * wavparse->rate / GST_SECOND;
else {
- GST_DEBUG ("can't convert from time to other than bytes/units");
- return FALSE;
+ GST_DEBUG ("can't convert from time to other than bytes/units");
+ return FALSE;
}
*dest_value = *dest_value & ~(bytes_per_sample - 1);
@@ -986,9 +988,9 @@ gst_wavparse_pad_convert (GstPad *pad,
}
return TRUE;
}
-
+
static const GstQueryType *
-gst_wavparse_get_query_types (GstPad *pad)
+gst_wavparse_get_query_types (GstPad * pad)
{
static const GstQueryType types[] = {
GST_QUERY_TOTAL,
@@ -1000,8 +1002,8 @@ gst_wavparse_get_query_types (GstPad *pad)
/* handle queries for location and length in requested format */
static gboolean
-gst_wavparse_pad_query (GstPad *pad, GstQueryType type,
- GstFormat *format, gint64 *value)
+gst_wavparse_pad_query (GstPad * pad, GstQueryType type,
+ GstFormat * format, gint64 * value)
{
GstFormat peer_format = GST_FORMAT_BYTES;
gint64 peer_value;
@@ -1010,16 +1012,16 @@ gst_wavparse_pad_query (GstPad *pad, GstQueryType type,
/* probe sink's peer pad, convert value, and that's it :) */
/* FIXME: ideally we'd loop over possible formats of peer instead
* of only using BYTE */
-
+
/* only support byte, time and unit queries */
wavparse = GST_WAVPARSE (gst_pad_get_parent (pad));
- if (!gst_pad_query (GST_PAD_PEER (wavparse->sinkpad), type,
- &peer_format, &peer_value)) {
+ if (!gst_pad_query (GST_PAD_PEER (wavparse->sinkpad), type,
+ &peer_format, &peer_value)) {
GST_DEBUG ("Could not query sink pad's peer");
return FALSE;
}
if (!gst_pad_convert (wavparse->sinkpad, peer_format, peer_value,
- format, value)) {
+ format, value)) {
GST_DEBUG ("Could not convert sink pad's peer");
return FALSE;
}
@@ -1027,19 +1029,18 @@ gst_wavparse_pad_query (GstPad *pad, GstQueryType type,
return TRUE;
}
-static const GstEventMask*
-gst_wavparse_get_event_masks (GstPad *pad)
-{
+static const GstEventMask *
+gst_wavparse_get_event_masks (GstPad * pad)
+{
static const GstEventMask gst_wavparse_src_event_masks[] = {
- { GST_EVENT_SEEK, GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH },
- { 0, }
+ {GST_EVENT_SEEK, GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH},
+ {0,}
};
return gst_wavparse_src_event_masks;
-}
+}
static gboolean
-gst_wavparse_srcpad_event (GstPad *pad, GstEvent *event)
+gst_wavparse_srcpad_event (GstPad * pad, GstEvent * event)
{
#if 0
GstWavParse *wavparse = GST_WAVPARSE (GST_PAD_PARENT (pad));
@@ -1059,15 +1060,13 @@ gst_wavparse_srcpad_event (GstPad *pad, GstEvent *event)
}
format = GST_FORMAT_BYTES;
-
+
/* bring format to bytes for the peer element,
* FIXME be smarter here */
- res = gst_pad_convert (pad,
- GST_EVENT_SEEK_FORMAT (event),
- GST_EVENT_SEEK_OFFSET (event),
- &format,
- &byteoffset);
-
+ res = gst_pad_convert (pad,
+ GST_EVENT_SEEK_FORMAT (event),
+ GST_EVENT_SEEK_OFFSET (event), &format, &byteoffset);
+
if (res) {
/* ok, seek worked, update our state */
wavparse->seek_offset = byteoffset;
@@ -1088,7 +1087,7 @@ gst_wavparse_srcpad_event (GstPad *pad, GstEvent *event)
}
static GstElementStateReturn
-gst_wavparse_change_state (GstElement *element)
+gst_wavparse_change_state (GstElement * element)
{
GstWavParse *wavparse = GST_WAVPARSE (element);
@@ -1121,23 +1120,18 @@ gst_wavparse_change_state (GstElement *element)
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_library_load ("gstbytestream")) {
return FALSE;
}
- return gst_element_register (plugin, "wavparse", GST_RANK_SECONDARY, GST_TYPE_WAVPARSE);
+ return gst_element_register (plugin, "wavparse", GST_RANK_SECONDARY,
+ GST_TYPE_WAVPARSE);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "wavparse",
- "Parse a .wav file into raw audio",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "wavparse",
+ "Parse a .wav file into raw audio",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/wavparse/gstwavparse.h b/gst/wavparse/gstwavparse.h
index 3893a293..b8cdd2de 100644
--- a/gst/wavparse/gstwavparse.h
+++ b/gst/wavparse/gstwavparse.h
@@ -27,8 +27,9 @@
#include <gst/bytestream/bytestream.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_WAVPARSE \
@@ -44,59 +45,62 @@ extern "C" {
#define GST_WAVPARSE_UNKNOWN 0 /* initialized state */
-#define GST_WAVPARSE_START 1 /* At the start */
+#define GST_WAVPARSE_START 1 /* At the start */
#define GST_WAVPARSE_DATA 2 /* in data region */
#define GST_WAVPARSE_OTHER 3 /* in unknown region */
-
-typedef struct _GstWavParse GstWavParse;
-typedef struct _GstWavParseClass GstWavParseClass;
-
-struct _GstWavParse {
- GstElement element;
-
- GstByteStream *bs;
- /* pads */
- GstPad *sinkpad,*srcpad;
-
- /* WAVE decoding state */
- gint state;
-
- /* format of audio, see defines below */
- gint format;
-
- /* useful audio data */
- gint bps;
- gint rate;
- gint channels;
- gint width;
-
- int dataleft;
- int byteoffset;
-
- gboolean seek_pending;
- guint64 seek_offset;
-
- GstBuffer *buf;
-};
-
-struct _GstWavParseClass {
- GstElementClass parent_class;
-};
-
-GType gst_wavparse_get_type(void);
-
-typedef struct _GstWavParseFormat GstWavParseFormat;
-
-struct _GstWavParseFormat {
- gint16 wFormatTag;
- guint16 wChannels;
- guint32 dwSamplesPerSec;
- guint32 dwAvgBytesPerSec;
- guint16 wBlockAlign;
- guint16 wBitsPerSample;
-};
-
-
+
+ typedef struct _GstWavParse GstWavParse;
+ typedef struct _GstWavParseClass GstWavParseClass;
+
+ struct _GstWavParse
+ {
+ GstElement element;
+
+ GstByteStream *bs;
+ /* pads */
+ GstPad *sinkpad, *srcpad;
+
+ /* WAVE decoding state */
+ gint state;
+
+ /* format of audio, see defines below */
+ gint format;
+
+ /* useful audio data */
+ gint bps;
+ gint rate;
+ gint channels;
+ gint width;
+
+ int dataleft;
+ int byteoffset;
+
+ gboolean seek_pending;
+ guint64 seek_offset;
+
+ GstBuffer *buf;
+ };
+
+ struct _GstWavParseClass
+ {
+ GstElementClass parent_class;
+ };
+
+ GType gst_wavparse_get_type (void);
+
+ typedef struct _GstWavParseFormat GstWavParseFormat;
+
+ struct _GstWavParseFormat
+ {
+ gint16 wFormatTag;
+ guint16 wChannels;
+ guint32 dwSamplesPerSec;
+ guint32 dwAvgBytesPerSec;
+ guint16 wBlockAlign;
+ guint16 wBitsPerSample;
+ };
+
+
/**** from public Microsoft RIFF docs ******/
#define GST_RIFF_WAVE_FORMAT_UNKNOWN (0x0000)
#define GST_RIFF_WAVE_FORMAT_PCM (0x0001)
@@ -129,7 +133,7 @@ struct _GstWavParseFormat {
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_WAVPARSE_H__ */
+#endif /* __GST_WAVPARSE_H__ */
diff --git a/gst/wavparse/riff.h b/gst/wavparse/riff.h
index 141ed1fa..bf18a1fe 100644
--- a/gst/wavparse/riff.h
+++ b/gst/wavparse/riff.h
@@ -24,11 +24,12 @@
#include <gst/gst.h>
-typedef enum {
- GST_RIFF_OK = 0,
+typedef enum
+{
+ GST_RIFF_OK = 0,
GST_RIFF_ENOTRIFF = -1,
- GST_RIFF_EINVAL = -2,
- GST_RIFF_ENOMEM = -3
+ GST_RIFF_EINVAL = -2,
+ GST_RIFF_ENOMEM = -3
} GstRiffReturn;
#define MAKE_FOUR_CC(a,b,c,d) GST_MAKE_FOURCC(a,b,c,d)
@@ -81,29 +82,29 @@ typedef enum {
#define GST_RIFF_FCCH_MSVC MAKE_FOUR_CC('M','S','V','C')
/* INFO types - see http://www.saettler.com/RIFFMCI/riffmci.html */
-#define GST_RIFF_INFO_IARL MAKE_FOUR_CC('I','A','R','L') /* location */
-#define GST_RIFF_INFO_IART MAKE_FOUR_CC('I','A','R','T') /* artist */
-#define GST_RIFF_INFO_ICMS MAKE_FOUR_CC('I','C','M','S') /* commissioned */
-#define GST_RIFF_INFO_ICMT MAKE_FOUR_CC('I','C','M','T') /* comment */
-#define GST_RIFF_INFO_ICOP MAKE_FOUR_CC('I','C','O','P') /* copyright */
-#define GST_RIFF_INFO_ICRD MAKE_FOUR_CC('I','C','R','D') /* creation date */
-#define GST_RIFF_INFO_ICRP MAKE_FOUR_CC('I','C','R','P') /* cropped */
-#define GST_RIFF_INFO_IDIM MAKE_FOUR_CC('I','D','I','M') /* dimensions */
-#define GST_RIFF_INFO_IDPI MAKE_FOUR_CC('I','D','P','I') /* dots-per-inch */
-#define GST_RIFF_INFO_IENG MAKE_FOUR_CC('I','E','N','G') /* engineer(s) */
-#define GST_RIFF_INFO_IGNR MAKE_FOUR_CC('I','G','N','R') /* genre */
-#define GST_RIFF_INFO_IKEY MAKE_FOUR_CC('I','K','E','Y') /* keywords */
-#define GST_RIFF_INFO_ILGT MAKE_FOUR_CC('I','L','G','T') /* lightness */
-#define GST_RIFF_INFO_IMED MAKE_FOUR_CC('I','M','E','D') /* medium */
-#define GST_RIFF_INFO_INAM MAKE_FOUR_CC('I','N','A','M') /* name */
-#define GST_RIFF_INFO_IPLT MAKE_FOUR_CC('I','P','L','T') /* palette setting */
-#define GST_RIFF_INFO_IPRD MAKE_FOUR_CC('I','P','R','D') /* product */
-#define GST_RIFF_INFO_ISBJ MAKE_FOUR_CC('I','S','B','J') /* subject */
-#define GST_RIFF_INFO_ISFT MAKE_FOUR_CC('I','S','F','T') /* software */
-#define GST_RIFF_INFO_ISHP MAKE_FOUR_CC('I','S','H','P') /* sharpness */
-#define GST_RIFF_INFO_ISRC MAKE_FOUR_CC('I','S','R','C') /* source */
-#define GST_RIFF_INFO_ISRF MAKE_FOUR_CC('I','S','R','F') /* source form */
-#define GST_RIFF_INFO_ITCH MAKE_FOUR_CC('I','T','C','H') /* technician(s) */
+#define GST_RIFF_INFO_IARL MAKE_FOUR_CC('I','A','R','L') /* location */
+#define GST_RIFF_INFO_IART MAKE_FOUR_CC('I','A','R','T') /* artist */
+#define GST_RIFF_INFO_ICMS MAKE_FOUR_CC('I','C','M','S') /* commissioned */
+#define GST_RIFF_INFO_ICMT MAKE_FOUR_CC('I','C','M','T') /* comment */
+#define GST_RIFF_INFO_ICOP MAKE_FOUR_CC('I','C','O','P') /* copyright */
+#define GST_RIFF_INFO_ICRD MAKE_FOUR_CC('I','C','R','D') /* creation date */
+#define GST_RIFF_INFO_ICRP MAKE_FOUR_CC('I','C','R','P') /* cropped */
+#define GST_RIFF_INFO_IDIM MAKE_FOUR_CC('I','D','I','M') /* dimensions */
+#define GST_RIFF_INFO_IDPI MAKE_FOUR_CC('I','D','P','I') /* dots-per-inch */
+#define GST_RIFF_INFO_IENG MAKE_FOUR_CC('I','E','N','G') /* engineer(s) */
+#define GST_RIFF_INFO_IGNR MAKE_FOUR_CC('I','G','N','R') /* genre */
+#define GST_RIFF_INFO_IKEY MAKE_FOUR_CC('I','K','E','Y') /* keywords */
+#define GST_RIFF_INFO_ILGT MAKE_FOUR_CC('I','L','G','T') /* lightness */
+#define GST_RIFF_INFO_IMED MAKE_FOUR_CC('I','M','E','D') /* medium */
+#define GST_RIFF_INFO_INAM MAKE_FOUR_CC('I','N','A','M') /* name */
+#define GST_RIFF_INFO_IPLT MAKE_FOUR_CC('I','P','L','T') /* palette setting */
+#define GST_RIFF_INFO_IPRD MAKE_FOUR_CC('I','P','R','D') /* product */
+#define GST_RIFF_INFO_ISBJ MAKE_FOUR_CC('I','S','B','J') /* subject */
+#define GST_RIFF_INFO_ISFT MAKE_FOUR_CC('I','S','F','T') /* software */
+#define GST_RIFF_INFO_ISHP MAKE_FOUR_CC('I','S','H','P') /* sharpness */
+#define GST_RIFF_INFO_ISRC MAKE_FOUR_CC('I','S','R','C') /* source */
+#define GST_RIFF_INFO_ISRF MAKE_FOUR_CC('I','S','R','F') /* source form */
+#define GST_RIFF_INFO_ITCH MAKE_FOUR_CC('I','T','C','H') /* technician(s) */
/*********Chunk Names***************/
#define GST_RIFF_FF00 MAKE_FOUR_CC(0xFF,0xFF,0x00,0x00)
@@ -182,7 +183,7 @@ typedef enum {
#define GST_RIFF_v422 MAKE_FOUR_CC( 'v', '4', '2', '2')
#define GST_RIFF_V422 MAKE_FOUR_CC( 'V', '4', '2', '2')
#define GST_RIFF_mvi1 MAKE_FOUR_CC( 'm', 'v', 'i', '1')
-#define GST_RIFF_MPIX MAKE_FOUR_CC(0x04,0x00, 'i', '1') /* MotionPixels munged their id */
+#define GST_RIFF_MPIX MAKE_FOUR_CC(0x04,0x00, 'i', '1') /* MotionPixels munged their id */
#define GST_RIFF_AURA MAKE_FOUR_CC( 'A', 'U', 'R', 'A')
#define GST_RIFF_DMB1 MAKE_FOUR_CC( 'D', 'M', 'B', '1')
#define GST_RIFF_dmb1 MAKE_FOUR_CC( 'd', 'm', 'b', '1')
@@ -218,7 +219,7 @@ typedef enum {
#define GST_RIFF_rpza MAKE_FOUR_CC( 'r', 'p', 'z', 'a')
/* And this here's the mistakes that need to be supported */
-#define GST_RIFF_azpr MAKE_FOUR_CC( 'a', 'z', 'p', 'r') /* recognize Apple's rpza mangled? */
+#define GST_RIFF_azpr MAKE_FOUR_CC( 'a', 'z', 'p', 'r') /* recognize Apple's rpza mangled? */
/*********** FND in MJPG **********/
#define GST_RIFF_ISFT MAKE_FOUR_CC( 'I', 'S', 'F', 'T')
@@ -231,21 +232,22 @@ typedef enum {
#define GST_RIFF_rec MAKE_FOUR_CC( 'r', 'e', 'c', ' ')
/* common data structures */
-struct _gst_riff_avih {
- guint32 us_frame; /* microsec per frame */
- guint32 max_bps; /* byte/s overall */
- guint32 pad_gran; /* pad_gran (???) */
+struct _gst_riff_avih
+{
+ guint32 us_frame; /* microsec per frame */
+ guint32 max_bps; /* byte/s overall */
+ guint32 pad_gran; /* pad_gran (???) */
guint32 flags;
/* flags values */
-#define GST_RIFF_AVIH_HASINDEX 0x00000010 /* has idx1 chunk */
-#define GST_RIFF_AVIH_MUSTUSEINDEX 0x00000020 /* must use idx1 chunk to determine order */
-#define GST_RIFF_AVIH_ISINTERLEAVED 0x00000100 /* AVI file is interleaved */
-#define GST_RIFF_AVIH_WASCAPTUREFILE 0x00010000 /* specially allocated used for capturing real time video */
-#define GST_RIFF_AVIH_COPYRIGHTED 0x00020000 /* contains copyrighted data */
- guint32 tot_frames; /* # of frames (all) */
- guint32 init_frames; /* initial frames (???) */
+#define GST_RIFF_AVIH_HASINDEX 0x00000010 /* has idx1 chunk */
+#define GST_RIFF_AVIH_MUSTUSEINDEX 0x00000020 /* must use idx1 chunk to determine order */
+#define GST_RIFF_AVIH_ISINTERLEAVED 0x00000100 /* AVI file is interleaved */
+#define GST_RIFF_AVIH_WASCAPTUREFILE 0x00010000 /* specially allocated used for capturing real time video */
+#define GST_RIFF_AVIH_COPYRIGHTED 0x00020000 /* contains copyrighted data */
+ guint32 tot_frames; /* # of frames (all) */
+ guint32 init_frames; /* initial frames (???) */
guint32 streams;
- guint32 bufsize; /* suggested buffer size */
+ guint32 bufsize; /* suggested buffer size */
guint32 width;
guint32 height;
guint32 scale;
@@ -254,26 +256,28 @@ struct _gst_riff_avih {
guint32 length;
};
-struct _gst_riff_strh {
- guint32 type; /* stream type */
- guint32 fcc_handler; /* fcc_handler */
+struct _gst_riff_strh
+{
+ guint32 type; /* stream type */
+ guint32 fcc_handler; /* fcc_handler */
guint32 flags;
/* flags values */
#define GST_RIFF_STRH_DISABLED 0x000000001
#define GST_RIFF_STRH_VIDEOPALCHANGES 0x000010000
guint32 priority;
- guint32 init_frames; /* initial frames (???) */
+ guint32 init_frames; /* initial frames (???) */
guint32 scale;
guint32 rate;
guint32 start;
guint32 length;
- guint32 bufsize; /* suggested buffer size */
+ guint32 bufsize; /* suggested buffer size */
guint32 quality;
guint32 samplesize;
/* XXX 16 bytes ? */
};
-struct _gst_riff_strf_vids { /* == BitMapInfoHeader */
+struct _gst_riff_strf_vids
+{ /* == BitMapInfoHeader */
guint32 size;
guint32 width;
guint32 height;
@@ -283,13 +287,14 @@ struct _gst_riff_strf_vids { /* == BitMapInfoHeader */
guint32 image_size;
guint32 xpels_meter;
guint32 ypels_meter;
- guint32 num_colors; /* used colors */
- guint32 imp_colors; /* important colors */
+ guint32 num_colors; /* used colors */
+ guint32 imp_colors; /* important colors */
/* may be more for some codecs */
};
-struct _gst_riff_strf_auds { /* == WaveHeader (?) */
+struct _gst_riff_strf_auds
+{ /* == WaveHeader (?) */
guint16 format;
/**** from public Microsoft RIFF docs ******/
#define GST_RIFF_WAVE_FORMAT_UNKNOWN (0x0000)
@@ -328,7 +333,8 @@ struct _gst_riff_strf_auds { /* == WaveHeader (?) */
guint16 size;
};
-struct _gst_riff_strf_iavs {
+struct _gst_riff_strf_iavs
+{
guint32 DVAAuxSrc;
guint32 DVAAuxCtl;
guint32 DVAAuxSrc1;
@@ -339,26 +345,30 @@ struct _gst_riff_strf_iavs {
guint32 DVReserved2;
};
-struct _gst_riff_riff {
+struct _gst_riff_riff
+{
guint32 id;
guint32 size;
guint32 type;
};
-struct _gst_riff_list {
+struct _gst_riff_list
+{
guint32 id;
guint32 size;
guint32 type;
};
-struct _gst_riff_labl {
+struct _gst_riff_labl
+{
guint32 id;
guint32 size;
guint32 identifier;
};
-struct _gst_riff_ltxt {
+struct _gst_riff_ltxt
+{
guint32 id;
guint32 size;
@@ -371,14 +381,16 @@ struct _gst_riff_ltxt {
guint16 codepage;
};
-struct _gst_riff_note {
+struct _gst_riff_note
+{
guint32 id;
guint32 size;
guint32 identifier;
};
-struct _gst_riff_cuepoints {
+struct _gst_riff_cuepoints
+{
guint32 identifier;
guint32 position;
guint32 id;
@@ -387,19 +399,22 @@ struct _gst_riff_cuepoints {
guint32 offset;
};
-struct _gst_riff_cue {
+struct _gst_riff_cue
+{
guint32 id;
guint32 size;
- guint32 cuepoints; /* Number of cue points held in the data */
+ guint32 cuepoints; /* Number of cue points held in the data */
};
-struct _gst_riff_chunk {
+struct _gst_riff_chunk
+{
guint32 id;
guint32 size;
};
-struct _gst_riff_index_entry {
+struct _gst_riff_index_entry
+{
guint32 id;
guint32 flags;
#define GST_RIFF_IF_LIST (0x00000001L)
@@ -410,29 +425,31 @@ struct _gst_riff_index_entry {
guint32 size;
};
-struct _gst_riff_dmlh {
+struct _gst_riff_dmlh
+{
guint32 totalframes;
};
-typedef struct _gst_riff_riff gst_riff_riff;
-typedef struct _gst_riff_list gst_riff_list;
-typedef struct _gst_riff_chunk gst_riff_chunk;
-typedef struct _gst_riff_index_entry gst_riff_index_entry;
-
-typedef struct _gst_riff_avih gst_riff_avih;
-typedef struct _gst_riff_strh gst_riff_strh;
-typedef struct _gst_riff_strf_vids gst_riff_strf_vids;
-typedef struct _gst_riff_strf_auds gst_riff_strf_auds;
-typedef struct _gst_riff_strf_iavs gst_riff_strf_iavs;
-typedef struct _gst_riff_dmlh gst_riff_dmlh;
-typedef struct _GstRiffChunk GstRiffChunk;
-
-struct _GstRiffChunk {
+typedef struct _gst_riff_riff gst_riff_riff;
+typedef struct _gst_riff_list gst_riff_list;
+typedef struct _gst_riff_chunk gst_riff_chunk;
+typedef struct _gst_riff_index_entry gst_riff_index_entry;
+
+typedef struct _gst_riff_avih gst_riff_avih;
+typedef struct _gst_riff_strh gst_riff_strh;
+typedef struct _gst_riff_strf_vids gst_riff_strf_vids;
+typedef struct _gst_riff_strf_auds gst_riff_strf_auds;
+typedef struct _gst_riff_strf_iavs gst_riff_strf_iavs;
+typedef struct _gst_riff_dmlh gst_riff_dmlh;
+typedef struct _GstRiffChunk GstRiffChunk;
+
+struct _GstRiffChunk
+{
gulong offset;
guint32 id;
guint32 size;
- guint32 form; /* for list chunks */
+ guint32 form; /* for list chunks */
gchar *data;
};