summaryrefslogtreecommitdiffstats
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
parent1e83b097f7b732ae49e294a5a398bdc3e88854a8 (diff)
gst-indent
Original commit message from CVS: gst-indent
-rw-r--r--ChangeLog4
-rw-r--r--examples/capsfilter/capsfilter1.c19
-rw-r--r--examples/dynparams/filter.c294
-rw-r--r--examples/gstplay/player.c46
-rw-r--r--examples/indexing/indexmpeg.c141
-rw-r--r--examples/seeking/cdparanoia.c60
-rw-r--r--examples/seeking/cdplayer.c104
-rw-r--r--examples/seeking/seek.c291
-rw-r--r--examples/seeking/spider_seek.c127
-rw-r--r--examples/seeking/vorbisfile.c81
-rw-r--r--examples/stats/mp2ogg.c41
-rw-r--r--examples/switch/switcher.c49
-rw-r--r--ext/aalib/gstaasink.c295
-rw-r--r--ext/aalib/gstaasink.h66
-rw-r--r--ext/dv/gstdvdec.h85
-rw-r--r--ext/esd/esdmon.c228
-rw-r--r--ext/esd/esdmon.h23
-rw-r--r--ext/esd/esdsink.c240
-rw-r--r--ext/esd/esdsink.h47
-rw-r--r--ext/esd/gstesd.c31
-rw-r--r--ext/flac/flac_compat.h2
-rw-r--r--ext/flac/gstflac.c28
-rw-r--r--ext/flac/gstflacdec.c513
-rw-r--r--ext/flac/gstflacdec.h55
-rw-r--r--ext/flac/gstflacenc.c646
-rw-r--r--ext/flac/gstflacenc.h57
-rw-r--r--ext/flac/gstflactag.c230
-rw-r--r--ext/gdk_pixbuf/gst_loader.c144
-rw-r--r--ext/gdk_pixbuf/gstgdkanimation.c340
-rw-r--r--ext/gdk_pixbuf/gstgdkanimation.h72
-rw-r--r--ext/gdk_pixbuf/gstgdkpixbuf.c304
-rw-r--r--ext/gdk_pixbuf/gstgdkpixbuf.h9
-rw-r--r--ext/jpeg/gstjpeg.c27
-rw-r--r--ext/jpeg/gstjpegdec.c360
-rw-r--r--ext/jpeg/gstjpegdec.h67
-rw-r--r--ext/jpeg/gstjpegenc.c226
-rw-r--r--ext/jpeg/gstjpegenc.h69
-rw-r--r--ext/ladspa/gstladspa.c820
-rw-r--r--ext/ladspa/gstladspa.h78
-rw-r--r--ext/ladspa/load.c121
-rw-r--r--ext/ladspa/search.c92
-rw-r--r--ext/ladspa/utils.h18
-rw-r--r--ext/libcaca/gstcacasink.c254
-rw-r--r--ext/libcaca/gstcacasink.h60
-rw-r--r--ext/libpng/gstpng.c14
-rw-r--r--ext/libpng/gstpngenc.c115
-rw-r--r--ext/libpng/gstpngenc.h47
-rw-r--r--ext/mikmod/drv_gst.c118
-rw-r--r--ext/mikmod/gstmikmod.c382
-rw-r--r--ext/mikmod/gstmikmod.h115
-rw-r--r--ext/mikmod/mikmod_reader.c99
-rw-r--r--ext/mikmod/mikmod_types.c318
-rw-r--r--ext/mikmod/mikmod_types.h35
-rw-r--r--ext/pango/gsttextoverlay.c901
-rw-r--r--ext/pango/gsttextoverlay.h73
-rw-r--r--ext/pango/gsttimeoverlay.c170
-rw-r--r--ext/pango/gsttimeoverlay.h12
-rw-r--r--ext/raw1394/gst1394.c22
-rw-r--r--ext/raw1394/gstdv1394src.c408
-rw-r--r--ext/raw1394/gstdv1394src.h63
-rw-r--r--ext/shout2/gstshout2.c660
-rw-r--r--ext/shout2/gstshout2.h64
-rw-r--r--ext/speex/gstspeex.c25
-rw-r--r--ext/speex/gstspeexdec.c125
-rw-r--r--ext/speex/gstspeexdec.h33
-rw-r--r--ext/speex/gstspeexenc.c133
-rw-r--r--ext/speex/gstspeexenc.h60
-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
-rw-r--r--sys/oss/gstossaudio.c24
-rw-r--r--sys/oss/gstosselement.c570
-rw-r--r--sys/oss/gstosselement.h82
-rw-r--r--sys/oss/gstossmixer.c207
-rw-r--r--sys/oss/gstossmixer.h23
-rw-r--r--sys/oss/gstosssink.c397
-rw-r--r--sys/oss/gstosssink.h40
-rw-r--r--sys/oss/gstosssrc.c332
-rw-r--r--sys/oss/gstosssrc.h30
-rw-r--r--sys/v4l2/gstv4l2.c22
-rw-r--r--sys/v4l2/gstv4l2colorbalance.c60
-rw-r--r--sys/v4l2/gstv4l2colorbalance.h12
-rw-r--r--sys/v4l2/gstv4l2element.c731
-rw-r--r--sys/v4l2/gstv4l2element.h68
-rw-r--r--sys/v4l2/gstv4l2src.c856
-rw-r--r--sys/v4l2/gstv4l2src.h97
-rw-r--r--sys/v4l2/gstv4l2tuner.c108
-rw-r--r--sys/v4l2/gstv4l2tuner.h28
-rw-r--r--sys/v4l2/gstv4l2xoverlay.c40
-rw-r--r--sys/v4l2/gstv4l2xoverlay.h13
-rw-r--r--sys/v4l2/v4l2-overlay_calls.c144
-rw-r--r--sys/v4l2/v4l2_calls.c942
-rw-r--r--sys/v4l2/v4l2_calls.h60
-rw-r--r--sys/v4l2/v4l2src_calls.c304
-rw-r--r--sys/v4l2/v4l2src_calls.h41
-rw-r--r--tests/examples/spectrum/demo-osssrc.c78
-rw-r--r--tests/old/examples/switch/switcher.c49
228 files changed, 20902 insertions, 20677 deletions
diff --git a/ChangeLog b/ChangeLog
index f7605747..ca8989c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2004-03-14 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * *.c, *.h: run gst-indent
+
2004-03-14 Benjamin Otte <otte@gnome.org>
* gst/modplug/gstmodplug.cc:
diff --git a/examples/capsfilter/capsfilter1.c b/examples/capsfilter/capsfilter1.c
index 4d71109f..46e127a2 100644
--- a/examples/capsfilter/capsfilter1.c
+++ b/examples/capsfilter/capsfilter1.c
@@ -6,7 +6,7 @@
* connection would use the I420 format (assuming Xv is enabled) */
static void
-new_pad_func (GstElement *element, GstPad *newpad, gpointer data)
+new_pad_func (GstElement * element, GstPad * newpad, gpointer data)
{
GstElement *pipeline = (GstElement *) data;
GstElement *queue = gst_bin_get_by_name (GST_BIN (pipeline), "queue");
@@ -19,7 +19,7 @@ new_pad_func (GstElement *element, GstPad *newpad, gpointer data)
}
gint
-main (gint argc, gchar *argv[])
+main (gint argc, gchar * argv[])
{
GstElement *pipeline;
GstElement *filesrc;
@@ -44,7 +44,8 @@ main (gint argc, gchar *argv[])
g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
demux = gst_element_factory_make ("mpegdemux", "demux");
g_return_val_if_fail (demux, -1);
- g_signal_connect (G_OBJECT (demux), "new_pad", G_CALLBACK (new_pad_func), pipeline);
+ g_signal_connect (G_OBJECT (demux), "new_pad", G_CALLBACK (new_pad_func),
+ pipeline);
thread = gst_thread_new ("thread");
queue = gst_element_factory_make ("queue", "queue");
@@ -58,7 +59,7 @@ main (gint argc, gchar *argv[])
gst_bin_add (GST_BIN (pipeline), filesrc);
gst_bin_add (GST_BIN (pipeline), demux);
-
+
gst_bin_add (GST_BIN (thread), queue);
gst_bin_add (GST_BIN (thread), mpeg2dec);
gst_bin_add (GST_BIN (thread), colorspace);
@@ -70,11 +71,9 @@ main (gint argc, gchar *argv[])
gst_element_link (mpeg2dec, "src", colorspace, "sink");
/* force RGB data passing between colorspace and xvideosink */
res = gst_element_link_filtered (colorspace, "src", xvideosink, "sink",
- GST_CAPS_NEW (
- "filtercaps",
- "video/raw",
- "format", GST_PROPS_FOURCC (GST_STR_FOURCC ("RGB "))
- ));
+ GST_CAPS_NEW ("filtercaps",
+ "video/raw", "format", GST_PROPS_FOURCC (GST_STR_FOURCC ("RGB "))
+ ));
if (!res) {
g_print ("could not connect colorspace and xvideosink\n");
return -1;
@@ -83,7 +82,7 @@ main (gint argc, gchar *argv[])
gst_element_set_state (pipeline, GST_STATE_PLAYING);
while (gst_bin_iterate (GST_BIN (pipeline)));
-
+
gst_element_set_state (pipeline, GST_STATE_NULL);
return 0;
diff --git a/examples/dynparams/filter.c b/examples/dynparams/filter.c
index ed0dd5aa..982a4c7a 100644
--- a/examples/dynparams/filter.c
+++ b/examples/dynparams/filter.c
@@ -18,13 +18,13 @@ struct _filter_ui
GtkWidget *window; /* top-level interface window */
GtkWidget *buttons; /* all of the control buttons */
- GtkWidget *parse, *play, *stop; /* control buttons */
-
+ GtkWidget *parse, *play, *stop; /* control buttons */
+
GtkWidget *feedback; /* here's where we'll tell you stuff */
GtkTextBuffer *fb_buffer; /* feedback buffer */
GtkWidget *selection; /* the place to input element stuff */
- GtkWidget *input, *filter, *output; /* the selection widgets */
-
+ GtkWidget *input, *filter, *output; /* the selection widgets */
+
GtkWidget *control; /* the dynamically generated control UI */
};
@@ -33,13 +33,13 @@ typedef struct _filter_ui _filter_ui_t;
/* back-end data */
struct _filter_data
{
- _filter_ui_t *ui; /* the UI data */
+ _filter_ui_t *ui; /* the UI data */
gchar *input_pipe, *output_pipe, *filter_element;
gchar *pipe_string;
GList *filter_choices;
gboolean playing;
- GstElement *input, *output; /* these are in and out bins */
+ GstElement *input, *output; /* these are in and out bins */
GstElement *pipeline;
GstElement *filter;
};
@@ -47,17 +47,18 @@ struct _filter_data
typedef struct _filter_data _filter_data_t;
/* internal prototypes when they can't be avoided */
-void cb_remove_and_destroy (GtkWidget *widget, gpointer user_data);
-//void cb_dynparm_value_changed (GtkWidget *widget, gpointer user_data);
-void cb_dynparm_value_changed (GtkRange *range, GstDParam *dparam);
+void cb_remove_and_destroy (GtkWidget * widget, gpointer user_data);
+
+//void cb_dynparm_value_changed (GtkWidget *widget, gpointer user_data);
+void cb_dynparm_value_changed (GtkRange * range, GstDParam * dparam);
/* GStreamer helper functions go here */
-
+
/* go through a bin, finding the one pad that is unconnected in the given
* direction, and return a ghost pad */
GstPad *
-gst_bin_find_unconnected_pad (GstBin *bin, GstPadDirection direction,
- gchar *name)
+gst_bin_find_unconnected_pad (GstBin * bin, GstPadDirection direction,
+ gchar * name)
{
GstPad *pad = NULL;
GList *elements = NULL;
@@ -67,39 +68,36 @@ gst_bin_find_unconnected_pad (GstBin *bin, GstPadDirection direction,
g_print ("DEBUG: find_unconnected start\n");
elements = (GList *) gst_bin_get_list (bin);
/* traverse all elements looking for unconnected pads */
- while (elements && pad == NULL)
- {
+ while (elements && pad == NULL) {
element = GST_ELEMENT (elements->data);
g_print ("DEBUG: looking in element %s\n", gst_element_get_name (element));
pads = gst_element_get_pad_list (element);
- while (pads)
- {
+ while (pads) {
/* check if the direction matches */
- if (GST_PAD_DIRECTION (GST_PAD (pads->data)) == direction)
- {
- if (GST_PAD_PEER (GST_PAD (pads->data)) == NULL)
- {
+ if (GST_PAD_DIRECTION (GST_PAD (pads->data)) == direction) {
+ if (GST_PAD_PEER (GST_PAD (pads->data)) == NULL) {
/* found it ! */
g_print ("DEBUG: found an unconnected pad !\n");
pad = GST_PAD (pads->data);
}
}
- if (pad) break; /* found one already */
+ if (pad)
+ break; /* found one already */
pads = g_list_next (pads);
}
elements = g_list_next (elements);
}
g_print ("DEBUG: find_unconnected stop\n");
- if (pad == NULL) /* we didn't find it at all */
+ if (pad == NULL) /* we didn't find it at all */
return NULL;
-
+
pad = gst_ghost_pad_new (name, pad);
return pad;
}
void
-ui_feedback_add_text (_filter_ui_t *ui, const gchar *text)
+ui_feedback_add_text (_filter_ui_t * ui, const gchar * text)
{
GtkTextIter iter;
@@ -108,7 +106,7 @@ ui_feedback_add_text (_filter_ui_t *ui, const gchar *text)
}
void
-ui_feedback_add (_filter_ui_t *ui, const gchar *format, ...)
+ui_feedback_add (_filter_ui_t * ui, const gchar * format, ...)
{
va_list args;
gchar *buffer = NULL;
@@ -121,7 +119,7 @@ ui_feedback_add (_filter_ui_t *ui, const gchar *format, ...)
}
void
-ui_feedback_clear (_filter_ui_t *ui)
+ui_feedback_clear (_filter_ui_t * ui)
{
gtk_text_buffer_set_text (ui->fb_buffer, "", 0);
}
@@ -129,7 +127,7 @@ ui_feedback_clear (_filter_ui_t *ui)
/* create the control widget using the element's dynparams
* control is a vbox which we need to empty first */
void
-ui_control_create (GstElement *element, GtkWidget *control, _filter_ui_t *ui)
+ui_control_create (GstElement * element, GtkWidget * control, _filter_ui_t * ui)
{
GtkWidget *hbox = NULL;
GtkWidget *widget = NULL;
@@ -137,70 +135,63 @@ ui_control_create (GstElement *element, GtkWidget *control, _filter_ui_t *ui)
GstDParam *dparam = NULL;
GParamSpec **specs = NULL;
int i = 0;
-
+
g_assert (GTK_IS_VBOX (control));
/* empty control vbox */
g_print ("DEBUG: emptying control widget\n");
- gtk_container_foreach (GTK_CONTAINER (control), cb_remove_and_destroy,
- (gpointer) control);
+ gtk_container_foreach (GTK_CONTAINER (control), cb_remove_and_destroy,
+ (gpointer) control);
g_print ("DEBUG: adding label to control widget\n");
widget = gtk_label_new ("Dynamic Parameters");
gtk_container_add (GTK_CONTAINER (control), widget);
gtk_widget_show (widget);
-
- if ((dpman = gst_dpman_get_manager (element)))
- {
+
+ if ((dpman = gst_dpman_get_manager (element))) {
ui_feedback_add (ui, "Found Dynamic Parameters on filter element.\n");
specs = gst_dpman_list_dparam_specs (dpman);
- for (i = 0; specs[i] != NULL; ++i)
- {
+ for (i = 0; specs[i] != NULL; ++i) {
hbox = gtk_hbox_new (FALSE, 0);
widget = gtk_label_new (g_param_spec_get_name (specs[i]));
gtk_container_add (GTK_CONTAINER (hbox), widget);
gtk_widget_show (widget);
- switch (G_PARAM_SPEC_VALUE_TYPE (specs[i]))
- {
- case G_TYPE_INT64:
+ switch (G_PARAM_SPEC_VALUE_TYPE (specs[i])) {
+ case G_TYPE_INT64:
widget = gtk_hscale_new_with_range (
- (gdouble) (((GParamSpecInt64*)specs[i])->minimum),
- (gdouble) (((GParamSpecInt64*)specs[i])->maximum),
- 1.0);
+ (gdouble) (((GParamSpecInt64 *) specs[i])->minimum),
+ (gdouble) (((GParamSpecInt64 *) specs[i])->maximum), 1.0);
gtk_range_set_value (GTK_RANGE (widget),
- (gdouble) ((GParamSpecInt64*)specs[i])->default_value);
- break;
+ (gdouble) ((GParamSpecInt64 *) specs[i])->default_value);
+ break;
case G_TYPE_INT:
widget = gtk_hscale_new_with_range (
- (gdouble) (((GParamSpecInt*)specs[i])->minimum),
- (gdouble) (((GParamSpecInt*)specs[i])->maximum),
- 1.0);
+ (gdouble) (((GParamSpecInt *) specs[i])->minimum),
+ (gdouble) (((GParamSpecInt *) specs[i])->maximum), 1.0);
gtk_range_set_value (GTK_RANGE (widget),
- (gdouble) ((GParamSpecInt*)specs[i])->default_value);
- break;
- case G_TYPE_FLOAT:
+ (gdouble) ((GParamSpecInt *) specs[i])->default_value);
+ break;
+ case G_TYPE_FLOAT:
widget = gtk_hscale_new_with_range (
- (gdouble) (((GParamSpecFloat*)specs[i])->minimum),
- (gdouble) (((GParamSpecFloat*)specs[i])->maximum),
- 0.00001);
+ (gdouble) (((GParamSpecFloat *) specs[i])->minimum),
+ (gdouble) (((GParamSpecFloat *) specs[i])->maximum), 0.00001);
gtk_range_set_value (GTK_RANGE (widget),
- (gdouble) ((GParamSpecFloat*)specs[i])->default_value);
+ (gdouble) ((GParamSpecFloat *) specs[i])->default_value);
break;
}
/* create the dparam object */
dparam = gst_dpsmooth_new (G_PARAM_SPEC_VALUE_TYPE (specs[i]));
g_object_set (G_OBJECT (dparam), "update_period", 2000000LL, NULL);
- g_assert (gst_dpman_attach_dparam (dpman,
- (gchar *) g_param_spec_get_name (specs[i]),
- dparam));
- gst_dpman_set_mode(dpman, "asynchronous");
+ g_assert (gst_dpman_attach_dparam (dpman,
+ (gchar *) g_param_spec_get_name (specs[i]), dparam));
+ gst_dpman_set_mode (dpman, "asynchronous");
g_signal_connect (widget, "value-changed",
- G_CALLBACK (cb_dynparm_value_changed), dparam);
+ G_CALLBACK (cb_dynparm_value_changed), dparam);
cb_dynparm_value_changed (GTK_RANGE (widget), dparam);
-
+
gtk_container_add (GTK_CONTAINER (hbox), widget);
- gtk_widget_show (widget);
+ gtk_widget_show (widget);
}
gtk_container_add (GTK_CONTAINER (control), hbox);
gtk_widget_show (hbox);
@@ -209,7 +200,7 @@ ui_control_create (GstElement *element, GtkWidget *control, _filter_ui_t *ui)
/* all the pretty callbacks gather here please */
void
-cb_remove_and_destroy (GtkWidget *widget, gpointer user_data)
+cb_remove_and_destroy (GtkWidget * widget, gpointer user_data)
{
GtkContainer *container = GTK_CONTAINER (user_data);
@@ -220,55 +211,51 @@ cb_remove_and_destroy (GtkWidget *widget, gpointer user_data)
/* when the scale associated with a dparam changes, respond */
void
-cb_dynparm_value_changed (GtkRange *range, GstDParam *dparam)
+cb_dynparm_value_changed (GtkRange * range, GstDParam * dparam)
{
/*
- GstDParam *dparam = GST_DPARAM (user_data);
- GtkHScale *adj = GTK_HSCALE (widget);
- */
+ GstDParam *dparam = GST_DPARAM (user_data);
+ GtkHScale *adj = GTK_HSCALE (widget);
+ */
gdouble value = 0.0;
+
g_assert (GST_IS_DPARAM (dparam));
g_assert (GTK_IS_RANGE (range));
value = gtk_range_get_value (range);
- g_print ("DEBUG: setting value to %f\n", value);
+ g_print ("DEBUG: setting value to %f\n", value);
- switch (G_PARAM_SPEC_VALUE_TYPE (GST_DPARAM_PARAM_SPEC (dparam)))
- {
+ switch (G_PARAM_SPEC_VALUE_TYPE (GST_DPARAM_PARAM_SPEC (dparam))) {
case G_TYPE_INT64:
- g_object_set (G_OBJECT (dparam), "value_int64",
- (gint64) value, NULL);
+ g_object_set (G_OBJECT (dparam), "value_int64", (gint64) value, NULL);
break;
case G_TYPE_INT:
- g_object_set (G_OBJECT (dparam), "value_int",
- (gint) value, NULL);
+ g_object_set (G_OBJECT (dparam), "value_int", (gint) value, NULL);
break;
case G_TYPE_FLOAT:
- g_object_set (G_OBJECT (dparam), "value_float",
- (gfloat) value, NULL);
+ g_object_set (G_OBJECT (dparam), "value_float", (gfloat) value, NULL);
break;
}
}
-
+
void
-cb_entry_activate (GtkEntry *entry, gpointer user_data)
+cb_entry_activate (GtkEntry * entry, gpointer user_data)
{
g_print ("DEBUG: oi ! you activated an entry !\n");
g_print ("DEBUG: pipeline: %s\n", gtk_entry_get_text (entry));
}
void
-cb_play_clicked (GtkButton *button, gpointer *user_data)
+cb_play_clicked (GtkButton * button, gpointer * user_data)
{
_filter_data_t *fd = (_filter_data_t *) user_data;
g_return_if_fail (GST_IS_PIPELINE (fd->pipeline));
- if (GST_STATE (fd->pipeline) == GST_STATE_PLAYING)
- {
+ if (GST_STATE (fd->pipeline) == GST_STATE_PLAYING) {
ui_feedback_add (fd->ui, "Pipeline is already playing !\n");
return;
}
@@ -276,12 +263,11 @@ cb_play_clicked (GtkButton *button, gpointer *user_data)
}
void
-cb_stop_clicked (GtkButton *button, gpointer *user_data)
+cb_stop_clicked (GtkButton * button, gpointer * user_data)
{
_filter_data_t *fd = (_filter_data_t *) user_data;
- if (GST_STATE (fd->pipeline) != GST_STATE_PLAYING)
- {
+ if (GST_STATE (fd->pipeline) != GST_STATE_PLAYING) {
ui_feedback_add (fd->ui, "Pipeline is not playing !\n");
return;
}
@@ -289,67 +275,72 @@ cb_stop_clicked (GtkButton *button, gpointer *user_data)
}
void
-cb_parse_clicked (GtkButton *button, gpointer *user_data)
+cb_parse_clicked (GtkButton * button, gpointer * user_data)
{
_filter_data_t *fd = (_filter_data_t *) user_data;
GtkCombo *filter = GTK_COMBO (fd->ui->filter);
GError *error = NULL;
GstPad *src_pad, *sink_pad;
-
+
g_print ("DEBUG: you pressed parse.\n");
ui_feedback_clear (fd->ui);
ui_feedback_add (fd->ui, "Parsing pipeline ...\n");
- if (fd->input_pipe) g_free (fd->input_pipe);
- if (fd->output_pipe) g_free (fd->output_pipe);
- if (fd->filter_element) g_free (fd->filter_element);
+ if (fd->input_pipe)
+ g_free (fd->input_pipe);
+ if (fd->output_pipe)
+ g_free (fd->output_pipe);
+ if (fd->filter_element)
+ g_free (fd->filter_element);
fd->input_pipe = g_strdup_printf ("bin.( %s )",
- gtk_entry_get_text (GTK_ENTRY (fd->ui->input)));
+ gtk_entry_get_text (GTK_ENTRY (fd->ui->input)));
fd->output_pipe = g_strdup_printf ("bin.( %s )",
- gtk_entry_get_text (GTK_ENTRY (fd->ui->output)));
+ gtk_entry_get_text (GTK_ENTRY (fd->ui->output)));
/* gtkcombo.h says I can access the entry field directly */
- fd->filter_element = g_strdup (gtk_entry_get_text (GTK_ENTRY (filter->entry)));
- g_print ("Input pipeline :\t%s (%d)\n", fd->input_pipe, (int)strlen (fd->input_pipe));
- g_print ("Filter element :\t%s (%d)\n", fd->filter_element, (int)strlen (fd->filter_element));
- g_print ("Output pipeline :\t%s (%d)\n", fd->output_pipe, (int)strlen (fd->output_pipe));
+ fd->filter_element =
+ g_strdup (gtk_entry_get_text (GTK_ENTRY (filter->entry)));
+ g_print ("Input pipeline :\t%s (%d)\n", fd->input_pipe,
+ (int) strlen (fd->input_pipe));
+ g_print ("Filter element :\t%s (%d)\n", fd->filter_element,
+ (int) strlen (fd->filter_element));
+ g_print ("Output pipeline :\t%s (%d)\n", fd->output_pipe,
+ (int) strlen (fd->output_pipe));
/* try to create in and out bins */
- if (strlen (fd->input_pipe) == 0)
- {
+ if (strlen (fd->input_pipe) == 0) {
ui_feedback_add (fd->ui, "Error : try setting an input pipe.\n");
return;
}
- if (fd->input) gst_object_unref (GST_OBJECT (fd->input));
+ if (fd->input)
+ gst_object_unref (GST_OBJECT (fd->input));
fd->input = GST_ELEMENT (gst_parse_launch (fd->input_pipe, &error));
- if (error)
- {
- ui_feedback_add (fd->ui, "Error : parsing input pipeline : %s\n",
- error->message);
+ if (error) {
+ ui_feedback_add (fd->ui, "Error : parsing input pipeline : %s\n",
+ error->message);
g_error_free (error);
return;
}
-
- if (strlen (fd->output_pipe) == 0)
- {
+
+ if (strlen (fd->output_pipe) == 0) {
ui_feedback_add (fd->ui, "Error : try setting an output pipe.\n");
return;
}
- if (fd->output) gst_object_unref (GST_OBJECT (fd->output));
+ if (fd->output)
+ gst_object_unref (GST_OBJECT (fd->output));
fd->output = GST_ELEMENT (gst_parse_launch (fd->output_pipe, &error));
- if (error)
- {
- ui_feedback_add (fd->ui, "Error : parsing output pipeline : %s\n",
- error->message);
+ if (error) {
+ ui_feedback_add (fd->ui, "Error : parsing output pipeline : %s\n",
+ error->message);
g_error_free (error);
return;
}
/* try to create filter */
- if (fd->filter) gst_object_unref (GST_OBJECT (fd->filter));
+ if (fd->filter)
+ gst_object_unref (GST_OBJECT (fd->filter));
fd->filter = gst_element_factory_make (fd->filter_element, "filter");
- if (fd->filter == NULL)
- {
+ if (fd->filter == NULL) {
ui_feedback_add (fd->ui, "Error : could not create element %s\n",
- fd->filter_element);
+ fd->filter_element);
return;
}
@@ -360,35 +351,33 @@ cb_parse_clicked (GtkButton *button, gpointer *user_data)
fd->pipeline = gst_thread_new ("toplevel");
/* add the players to it */
- gst_bin_add_many (GST_BIN (fd->pipeline),
- fd->input, fd->filter,
- fd->output, NULL);
+ gst_bin_add_many (GST_BIN (fd->pipeline),
+ fd->input, fd->filter, fd->output, NULL);
/* connect filter to input and output bin */
- src_pad = gst_bin_find_unconnected_pad (GST_BIN (fd->input), GST_PAD_SRC,
- "source");
- if (src_pad == NULL)
- {
- ui_feedback_add (fd->ui,
- "Error : could not find an unconnected source pad !\n");
+ src_pad = gst_bin_find_unconnected_pad (GST_BIN (fd->input), GST_PAD_SRC,
+ "source");
+ if (src_pad == NULL) {
+ ui_feedback_add (fd->ui,
+ "Error : could not find an unconnected source pad !\n");
return;
}
- sink_pad = gst_bin_find_unconnected_pad (GST_BIN (fd->output), GST_PAD_SINK,
- "sink");
- if (sink_pad == NULL)
- {
- ui_feedback_add (fd->ui,
- "Error : could not find an unconnected sink pad !\n");
+ sink_pad = gst_bin_find_unconnected_pad (GST_BIN (fd->output), GST_PAD_SINK,
+ "sink");
+ if (sink_pad == NULL) {
+ ui_feedback_add (fd->ui,
+ "Error : could not find an unconnected sink pad !\n");
return;
}
gst_element_add_pad (fd->input, src_pad);
gst_element_add_pad (fd->output, sink_pad);
gst_element_link_many (fd->input, fd->filter, fd->output, NULL);
-
- if (fd->pipe_string) g_free (fd->pipe_string);
+
+ if (fd->pipe_string)
+ g_free (fd->pipe_string);
fd->pipe_string = g_strdup_printf ("%s ! %s ! %s", fd->input_pipe,
- fd->filter_element, fd->output_pipe);
+ fd->filter_element, fd->output_pipe);
g_print ("Pipeline : %s\n", fd->pipe_string);
ui_feedback_add (fd->ui, "Complete parsed pipeline: %s\n", fd->pipe_string);
@@ -404,12 +393,12 @@ get_filter_choices (void)
choices = g_list_append (choices, "volume");
choices = g_list_append (choices, "ladspa_lpf");
choices = g_list_append (choices, "ladspa_hpf");
-
+
return choices;
}
void
-init_data (_filter_data_t *fd)
+init_data (_filter_data_t * fd)
{
fd->input_pipe = NULL;
fd->output_pipe = NULL;
@@ -426,11 +415,11 @@ init_data (_filter_data_t *fd)
}
void
-create_ui (_filter_ui_t *fui, _filter_data_t *fd)
+create_ui (_filter_ui_t * fui, _filter_data_t * fd)
{
GtkWidget *widget; /* temporary widget */
GtkWidget *vbox; /* temporary vbox */
-
+
g_print ("DEBUG: creating top-level window\n");
fui->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
widget = gtk_vbox_new (FALSE, 0);
@@ -452,22 +441,22 @@ create_ui (_filter_ui_t *fui, _filter_data_t *fd)
fui->parse = gtk_button_new_with_label ("Parse");
gtk_container_add (GTK_CONTAINER (fui->buttons), fui->parse);
g_signal_connect (G_OBJECT (fui->parse), "clicked",
- G_CALLBACK (cb_parse_clicked), fd);
+ G_CALLBACK (cb_parse_clicked), fd);
fui->play = gtk_button_new_with_label ("Play");
gtk_container_add (GTK_CONTAINER (fui->buttons), fui->play);
g_signal_connect (G_OBJECT (fui->play), "clicked",
- G_CALLBACK (cb_play_clicked), fd);
+ G_CALLBACK (cb_play_clicked), fd);
fui->stop = gtk_button_new_with_label ("Stop");
gtk_container_add (GTK_CONTAINER (fui->buttons), fui->stop);
g_signal_connect (G_OBJECT (fui->stop), "clicked",
- G_CALLBACK (cb_stop_clicked), fd);
+ G_CALLBACK (cb_stop_clicked), fd);
/* feedback widget */
fui->fb_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (fui->feedback));
- gtk_text_buffer_set_text (fui->fb_buffer,
- "Hello, and welcome to the GStreamer filter demo app !\n"\
+ gtk_text_buffer_set_text (fui->fb_buffer,
+ "Hello, and welcome to the GStreamer filter demo app !\n"
"I'll be your feedback window for today.\n", -1);
-
+
/* selection widget */
vbox = gtk_vbox_new (FALSE, 0);
widget = gtk_label_new ("Input Pipe");
@@ -476,8 +465,8 @@ create_ui (_filter_ui_t *fui, _filter_data_t *fd)
gtk_entry_set_text (GTK_ENTRY (fui->input), "sinesrc");
gtk_container_add (GTK_CONTAINER (vbox), fui->input);
gtk_container_add (GTK_CONTAINER (fui->selection), vbox);
- g_signal_connect (G_OBJECT (fui->input), "activate",
- G_CALLBACK (cb_entry_activate), NULL);
+ g_signal_connect (G_OBJECT (fui->input), "activate",
+ G_CALLBACK (cb_entry_activate), NULL);
vbox = gtk_vbox_new (FALSE, 0);
widget = gtk_label_new ("Filter");
@@ -491,18 +480,18 @@ create_ui (_filter_ui_t *fui, _filter_data_t *fd)
widget = gtk_label_new ("Output Pipe");
gtk_container_add (GTK_CONTAINER (vbox), widget);
fui->output = gtk_entry_new ();
- gtk_entry_set_text (GTK_ENTRY (fui->output), "osssink fragment=1572872"); /* fixme: gconf default ? */
+ gtk_entry_set_text (GTK_ENTRY (fui->output), "osssink fragment=1572872"); /* fixme: gconf default ? */
gtk_container_add (GTK_CONTAINER (vbox), fui->output);
gtk_container_add (GTK_CONTAINER (fui->selection), vbox);
- g_signal_connect (G_OBJECT (fui->output), "activate",
- G_CALLBACK (cb_entry_activate), NULL);
+ g_signal_connect (G_OBJECT (fui->output), "activate",
+ G_CALLBACK (cb_entry_activate), NULL);
/* control widget is dynamically generated */
/*
- g_print ("DEBUG: labeling control area.\n");
- widget = gtk_label_new ("This is the big control area.");
- gtk_container_add (GTK_CONTAINER (fui->control), widget);
- */
+ g_print ("DEBUG: labeling control area.\n");
+ widget = gtk_label_new ("This is the big control area.");
+ gtk_container_add (GTK_CONTAINER (fui->control), widget);
+ */
}
@@ -511,8 +500,8 @@ main (int argc, char *argv[])
{
_filter_data_t filter_data;
_filter_ui_t filter_ui;
-
-
+
+
gtk_init (&argc, &argv);
gst_init (&argc, &argv);
gst_control_init (&argc, &argv);
@@ -524,7 +513,6 @@ main (int argc, char *argv[])
gtk_widget_show_all (filter_ui.window);
gtk_main ();
-
+
return 0;
}
-
diff --git a/examples/gstplay/player.c b/examples/gstplay/player.c
index 32001a90..3272778b 100644
--- a/examples/gstplay/player.c
+++ b/examples/gstplay/player.c
@@ -16,14 +16,14 @@
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
-
+
#include <gst/play/play.h>
static GMainLoop *loop = NULL;
static gint64 length = 0;
static void
-print_tag (const GstTagList *list, const gchar *tag, gpointer unused)
+print_tag (const GstTagList * list, const gchar * tag, gpointer unused)
{
gint i, count;
@@ -31,14 +31,14 @@ print_tag (const GstTagList *list, const gchar *tag, gpointer unused)
for (i = 0; i < count; i++) {
gchar *str;
-
+
if (gst_tag_get_type (tag) == G_TYPE_STRING) {
g_assert (gst_tag_list_get_string_index (list, tag, i, &str));
} else {
- str = g_strdup_value_contents (
- gst_tag_list_get_value_index (list, tag, i));
+ str =
+ g_strdup_value_contents (gst_tag_list_get_value_index (list, tag, i));
}
-
+
if (i == 0) {
g_print ("%15s: %s\n", gst_tag_get_nick (tag), str);
} else {
@@ -50,46 +50,46 @@ print_tag (const GstTagList *list, const gchar *tag, gpointer unused)
}
static void
-got_found_tag (GstPlay *play,GstElement *source, GstTagList *tag_list)
+got_found_tag (GstPlay * play, GstElement * source, GstTagList * tag_list)
{
gst_tag_list_foreach (tag_list, print_tag, NULL);
}
static void
-got_time_tick (GstPlay *play, gint64 time_nanos)
+got_time_tick (GstPlay * play, gint64 time_nanos)
{
g_print ("time tick %f\n", time_nanos / (float) GST_SECOND);
}
static void
-got_stream_length (GstPlay *play, gint64 length_nanos)
+got_stream_length (GstPlay * play, gint64 length_nanos)
{
g_print ("got length %llu\n", length_nanos);
length = length_nanos;
}
static void
-got_video_size (GstPlay *play, gint width, gint height)
+got_video_size (GstPlay * play, gint width, gint height)
{
g_print ("got video size %d, %d\n", width, height);
}
static void
-got_eos (GstPlay *play)
+got_eos (GstPlay * play)
{
g_print ("End Of Stream\n");
g_main_loop_quit (loop);
}
static gboolean
-seek_timer (GstPlay *play)
+seek_timer (GstPlay * play)
{
gst_play_seek_to_time (play, length / 2);
return FALSE;
}
static gboolean
-idle_iterate (GstPlay *play)
+idle_iterate (GstPlay * play)
{
gst_bin_iterate (GST_BIN (play));
return (GST_STATE (GST_ELEMENT (play)) == GST_STATE_PLAYING);
@@ -114,8 +114,7 @@ main (int argc, char *argv[])
/* Creating the GstPlay object */
play = gst_play_new (&error);
- if (error)
- {
+ if (error) {
g_print ("Error: could not create play object:\n%s\n", error->message);
g_error_free (error);
return 1;
@@ -140,17 +139,16 @@ main (int argc, char *argv[])
/* gst_xml_write_file (GST_ELEMENT (play), stdout); */
g_signal_connect (G_OBJECT (play), "time_tick",
- G_CALLBACK (got_time_tick), NULL);
+ G_CALLBACK (got_time_tick), NULL);
g_signal_connect (G_OBJECT (play), "stream_length",
- G_CALLBACK (got_stream_length), NULL);
+ G_CALLBACK (got_stream_length), NULL);
g_signal_connect (G_OBJECT (play), "have_video_size",
- G_CALLBACK (got_video_size), NULL);
+ G_CALLBACK (got_video_size), NULL);
g_signal_connect (G_OBJECT (play), "found_tag",
- G_CALLBACK (got_found_tag), NULL);
+ G_CALLBACK (got_found_tag), NULL);
g_signal_connect (G_OBJECT (play), "error",
- G_CALLBACK (gst_element_default_error), NULL);
- g_signal_connect (G_OBJECT (play), "eos",
- G_CALLBACK (got_eos), NULL);
+ G_CALLBACK (gst_element_default_error), NULL);
+ g_signal_connect (G_OBJECT (play), "eos", G_CALLBACK (got_eos), NULL);
/* Change state to PLAYING */
gst_element_set_state (GST_ELEMENT (play), GST_STATE_PLAYING);
@@ -163,9 +161,9 @@ main (int argc, char *argv[])
g_print ("setting pipeline to ready\n");
gst_element_set_state (GST_ELEMENT (play), GST_STATE_READY);
-
+
/* unref
- gst_object_unref (GST_OBJECT (play)); */
+ gst_object_unref (GST_OBJECT (play)); */
exit (0);
}
diff --git a/examples/indexing/indexmpeg.c b/examples/indexing/indexmpeg.c
index 29b89280..48a7ca23 100644
--- a/examples/indexing/indexmpeg.c
+++ b/examples/indexing/indexmpeg.c
@@ -24,26 +24,26 @@ static gboolean verbose = FALSE;
static gboolean quiet = FALSE;
static void
-entry_added (GstIndex *index, GstIndexEntry *entry)
+entry_added (GstIndex * index, GstIndexEntry * entry)
{
switch (entry->type) {
case GST_INDEX_ENTRY_ID:
- g_print ("id %d describes writer %s\n", entry->id,
- GST_INDEX_ID_DESCRIPTION (entry));
+ g_print ("id %d describes writer %s\n", entry->id,
+ GST_INDEX_ID_DESCRIPTION (entry));
break;
case GST_INDEX_ENTRY_FORMAT:
- g_print ("%d: registered format %d for %s\n", entry->id,
- GST_INDEX_FORMAT_FORMAT (entry),
- GST_INDEX_FORMAT_KEY (entry));
+ g_print ("%d: registered format %d for %s\n", entry->id,
+ GST_INDEX_FORMAT_FORMAT (entry), GST_INDEX_FORMAT_KEY (entry));
break;
case GST_INDEX_ENTRY_ASSOCIATION:
{
gint i;
- g_print ("%p, %d: %08x ", entry, entry->id, GST_INDEX_ASSOC_FLAGS (entry));
+ g_print ("%p, %d: %08x ", entry, entry->id,
+ GST_INDEX_ASSOC_FLAGS (entry));
for (i = 0; i < GST_INDEX_NASSOCS (entry); i++) {
- g_print ("%d %lld ", GST_INDEX_ASSOC_FORMAT (entry, i),
- GST_INDEX_ASSOC_VALUE (entry, i));
+ g_print ("%d %lld ", GST_INDEX_ASSOC_FORMAT (entry, i),
+ GST_INDEX_ASSOC_VALUE (entry, i));
}
g_print ("\n");
break;
@@ -55,15 +55,15 @@ entry_added (GstIndex *index, GstIndexEntry *entry)
typedef struct
{
- const gchar *padname;
- GstPad *target;
- GstElement *bin;
- GstElement *pipeline;
- GstIndex *index;
+ const gchar *padname;
+ GstPad *target;
+ GstElement *bin;
+ GstElement *pipeline;
+ GstIndex *index;
} dyn_link;
static void
-dynamic_link (GstPadTemplate *templ, GstPad *newpad, gpointer data)
+dynamic_link (GstPadTemplate * templ, GstPad * newpad, gpointer data)
{
dyn_link *link = (dyn_link *) data;
@@ -77,27 +77,25 @@ dynamic_link (GstPadTemplate *templ, GstPad *newpad, gpointer data)
}
static void
-setup_dynamic_linking (GstElement *pipeline,
- GstElement *element,
- const gchar *padname,
- GstPad *target,
- GstElement *bin,
- GstIndex *index)
+setup_dynamic_linking (GstElement * pipeline,
+ GstElement * element,
+ const gchar * padname, GstPad * target, GstElement * bin, GstIndex * index)
{
dyn_link *link;
link = g_new0 (dyn_link, 1);
- link->padname = g_strdup (padname);
- link->target = target;
- link->bin = bin;
- link->pipeline = pipeline;
- link->index = index;
-
- g_signal_connect (G_OBJECT (element), "new_pad", G_CALLBACK (dynamic_link), link);
+ link->padname = g_strdup (padname);
+ link->target = target;
+ link->bin = bin;
+ link->pipeline = pipeline;
+ link->index = index;
+
+ g_signal_connect (G_OBJECT (element), "new_pad", G_CALLBACK (dynamic_link),
+ link);
}
-static GstElement*
-make_mpeg_systems_pipeline (const gchar *path, GstIndex *index)
+static GstElement *
+make_mpeg_systems_pipeline (const gchar * path, GstIndex * index)
{
GstElement *pipeline;
GstElement *src, *demux;
@@ -117,12 +115,12 @@ make_mpeg_systems_pipeline (const gchar *path, GstIndex *index)
}
gst_element_link_pads (src, "src", demux, "sink");
-
+
return pipeline;
}
-static GstElement*
-make_mpeg_decoder_pipeline (const gchar *path, GstIndex *index)
+static GstElement *
+make_mpeg_decoder_pipeline (const gchar * path, GstIndex * index)
{
GstElement *pipeline;
GstElement *src, *demux;
@@ -145,29 +143,27 @@ make_mpeg_decoder_pipeline (const gchar *path, GstIndex *index)
video_decoder = gst_element_factory_make ("mpeg2dec", "video_decoder");
gst_bin_add (GST_BIN (video_bin), video_decoder);
-
- setup_dynamic_linking (pipeline, demux, "video_00",
- gst_element_get_pad (video_decoder, "sink"),
- video_bin, index);
+
+ setup_dynamic_linking (pipeline, demux, "video_00",
+ gst_element_get_pad (video_decoder, "sink"), video_bin, index);
audio_bin = gst_bin_new ("audio_bin");
audio_decoder = gst_element_factory_make ("mad", "audio_decoder");
- setup_dynamic_linking (pipeline, demux, "audio_00",
- gst_element_get_pad (audio_decoder, "sink"),
- audio_bin, index);
+ setup_dynamic_linking (pipeline, demux, "audio_00",
+ gst_element_get_pad (audio_decoder, "sink"), audio_bin, index);
gst_bin_add (GST_BIN (audio_bin), audio_decoder);
if (index) {
gst_element_set_index (pipeline, index);
}
-
+
return pipeline;
}
static void
-print_progress (GstPad *pad)
+print_progress (GstPad * pad)
{
gint i = 0;
gchar status[53];
@@ -181,14 +177,14 @@ print_progress (GstPad *pad)
format = GST_FORMAT_PERCENT;
res = gst_pad_query (pad, GST_QUERY_POSITION, &format, &value);
if (res) {
- percent = value / (2 * GST_FORMAT_PERCENT_SCALE);
+ percent = value / (2 * GST_FORMAT_PERCENT_SCALE);
}
-
+
for (i = 0; i < percent; i++) {
- status[i+1] = '=';
+ status[i + 1] = '=';
}
for (i = percent; i < 50; i++) {
- status[i+1] = ' ';
+ status[i + 1] = ' ';
}
status[51] = '|';
status[52] = 0;
@@ -196,8 +192,8 @@ print_progress (GstPad *pad)
g_print ("%s\r", status);
}
-gint
-main (gint argc, gchar *argv[])
+gint
+main (gint argc, gchar * argv[])
{
GstElement *pipeline;
GstElement *src;
@@ -208,27 +204,28 @@ main (gint argc, gchar *argv[])
gboolean res;
GstElement *sink;
struct poptOption options[] = {
- { "verbose", 'v', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &verbose, 0,
- "Print index entries", NULL},
- { "quiet", 'q', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &quiet, 0,
- "don't print progress bar", NULL},
- POPT_TABLEEND
- };
+ {"verbose", 'v', POPT_ARG_NONE | POPT_ARGFLAG_STRIP, &verbose, 0,
+ "Print index entries", NULL},
+ {"quiet", 'q', POPT_ARG_NONE | POPT_ARGFLAG_STRIP, &quiet, 0,
+ "don't print progress bar", NULL},
+ POPT_TABLEEND
+ };
if (!gst_init_check_with_popt_table (&argc, &argv, options) || argc < 3) {
- g_print ("usage: %s [-v] <type> <filename> \n"
- " type can be: 0 mpeg_systems\n"
- " 1 mpeg_decoder\n"
- " -v : report added index entries\n"
- " -q : don't print progress\n" , argv[0]);
+ g_print ("usage: %s [-v] <type> <filename> \n"
+ " type can be: 0 mpeg_systems\n"
+ " 1 mpeg_decoder\n"
+ " -v : report added index entries\n"
+ " -q : don't print progress\n", argv[0]);
return -1;
}
/* create index that elements can fill */
index = gst_index_factory_make ("memindex");
if (index) {
- if (verbose)
- g_signal_connect (G_OBJECT (index), "entry_added", G_CALLBACK (entry_added), NULL);
+ if (verbose)
+ g_signal_connect (G_OBJECT (index), "entry_added",
+ G_CALLBACK (entry_added), NULL);
g_object_set (G_OBJECT (index), "resolver", 1, NULL);
}
@@ -247,10 +244,10 @@ main (gint argc, gchar *argv[])
}
/* setup some default info/error handlers */
- g_signal_connect (G_OBJECT (pipeline), "deep_notify",
- G_CALLBACK (gst_element_default_deep_notify), NULL);
- g_signal_connect (G_OBJECT (pipeline), "error",
- G_CALLBACK (gst_element_default_error), NULL);
+ g_signal_connect (G_OBJECT (pipeline), "deep_notify",
+ G_CALLBACK (gst_element_default_deep_notify), NULL);
+ g_signal_connect (G_OBJECT (pipeline), "error",
+ G_CALLBACK (gst_element_default_error), NULL);
/* get a pad to perform progress reporting on */
src = gst_bin_get_by_name (GST_BIN (pipeline), "src");
@@ -259,7 +256,7 @@ main (gint argc, gchar *argv[])
/* prepare for iteration */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
- g_print ("indexing %s...\n", argv [2]);
+ g_print ("indexing %s...\n", argv[2]);
/* run through the complete stream to let it generate an index */
while (gst_bin_iterate (GST_BIN (pipeline))) {
if (!quiet && (count % 1000 == 0)) {
@@ -285,24 +282,23 @@ main (gint argc, gchar *argv[])
gint total_tm;
gst_index_get_writer_id (index, GST_OBJECT (src), &id);
-
+
entry = gst_index_get_assoc_entry (index, id, GST_INDEX_LOOKUP_BEFORE, 0,
- GST_FORMAT_TIME, G_MAXINT64);
+ GST_FORMAT_TIME, G_MAXINT64);
g_assert (entry);
gst_index_entry_assoc_map (entry, GST_FORMAT_TIME, &result);
total_tm = result * 60 / GST_SECOND;
g_print ("total time = %.2fs\n", total_tm / 60.0);
}
-
+
pad = gst_element_get_pad (src, "src");
sink = gst_element_factory_make ("fakesink", "sink");
gst_element_link_pads (src, "src", sink, "sink");
gst_bin_add (GST_BIN (pipeline), sink);
- g_print ("seeking %s...\n", argv [2]);
+ g_print ("seeking %s...\n", argv[2]);
event = gst_event_new_seek (GST_FORMAT_TIME |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH, 5 * GST_SECOND);
+ GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH, 5 * GST_SECOND);
res = gst_pad_send_event (pad, event);
if (!res) {
@@ -322,4 +318,3 @@ main (gint argc, gchar *argv[])
return 1;
}
-
diff --git a/examples/seeking/cdparanoia.c b/examples/seeking/cdparanoia.c
index 646c121c..e750f346 100644
--- a/examples/seeking/cdparanoia.c
+++ b/examples/seeking/cdparanoia.c
@@ -3,7 +3,7 @@
#include <string.h>
static void
-get_position_info (GstElement *cdparanoia)
+get_position_info (GstElement * cdparanoia)
{
GstFormat track_format;
const GstFormat *formats;
@@ -24,14 +24,13 @@ get_position_info (GstElement *cdparanoia)
definition = gst_format_get_details (*formats);
format = *formats;
- res = gst_pad_query (pad, GST_QUERY_POSITION,
- &format, &position);
+ res = gst_pad_query (pad, GST_QUERY_POSITION, &format, &position);
if (format == GST_FORMAT_TIME) {
position /= GST_SECOND;
- g_print ("%s: %lld:%02lld", definition->nick, position/60, position%60);
- }
- else {
+ g_print ("%s: %lld:%02lld", definition->nick, position / 60,
+ position % 60);
+ } else {
g_print ("%s: %lld", definition->nick, position);
}
@@ -44,7 +43,7 @@ get_position_info (GstElement *cdparanoia)
}
static void
-get_track_info (GstElement *cdparanoia)
+get_track_info (GstElement * cdparanoia)
{
GstFormat track_format;
gint64 total_tracks = 0, total_time = 0;
@@ -52,7 +51,7 @@ get_track_info (GstElement *cdparanoia)
const GstFormat *formats;
gint i;
gint64 time_count = 0;
-
+
track_format = gst_format_get_by_nick ("track");
g_assert (track_format != 0);
@@ -66,26 +65,24 @@ get_track_info (GstElement *cdparanoia)
gint64 total;
GstFormat format;
gboolean res;
-
+
definition = gst_format_get_details (*formats);
format = *formats;
- res = gst_pad_query (pad, GST_QUERY_TOTAL,
- &format, &total);
+ res = gst_pad_query (pad, GST_QUERY_TOTAL, &format, &total);
if (res) {
if (format == GST_FORMAT_TIME) {
total /= GST_SECOND;
- g_print ("%s total: %lld:%02lld\n", definition->nick, total/60, total%60);
- }
- else
- g_print ("%s total: %lld\n", definition->nick, total);
+ g_print ("%s total: %lld:%02lld\n", definition->nick, total / 60,
+ total % 60);
+ } else
+ g_print ("%s total: %lld\n", definition->nick, total);
if (format == track_format)
total_tracks = total;
else if (format == GST_FORMAT_TIME)
total_time = total;
- }
- else
+ } else
g_print ("failed to get %s total\n", definition->nick);
formats++;
@@ -102,11 +99,9 @@ get_track_info (GstElement *cdparanoia)
GstFormat format;
format = GST_FORMAT_TIME;
- res = gst_pad_convert (pad, track_format, i,
- &format, &time);
+ res = gst_pad_convert (pad, track_format, i, &format, &time);
time /= GST_SECOND;
- }
- else {
+ } else {
time = total_time;
res = TRUE;
}
@@ -117,14 +112,12 @@ get_track_info (GstElement *cdparanoia)
if (i > 0) {
gint64 length = time - time_count;
- g_print ("track %d: %lld:%02lld -> %lld:%02lld, length: %lld:%02lld\n",
- i-1,
- time_count / 60, time_count % 60,
- time / 60, time % 60,
- length / 60, length % 60);
+ g_print ("track %d: %lld:%02lld -> %lld:%02lld, length: %lld:%02lld\n",
+ i - 1,
+ time_count / 60, time_count % 60,
+ time / 60, time % 60, length / 60, length % 60);
}
- }
- else {
+ } else {
g_print ("could not get time for track %d\n", i);
}
@@ -161,7 +154,7 @@ main (int argc, char **argv)
gst_element_link_pads (cdparanoia, "src", osssink, "sink");
g_signal_connect (G_OBJECT (pipeline), "deep_notify",
- G_CALLBACK (gst_element_default_deep_notify), NULL);
+ G_CALLBACK (gst_element_default_deep_notify), NULL);
gst_element_set_state (pipeline, GST_STATE_PAUSED);
@@ -177,9 +170,7 @@ main (int argc, char **argv)
g_print ("playing from track 3\n");
/* seek to track3 */
event = gst_event_new_seek (track_format |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH,
- 3);
+ GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH, 3);
res = gst_pad_send_event (pad, event);
if (!res)
@@ -198,9 +189,8 @@ main (int argc, char **argv)
g_print ("\nplaying from second 25 to second 29\n");
/* seek to some seconds */
event = gst_event_new_segment_seek (GST_FORMAT_TIME |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH,
- 25 * GST_SECOND, 29 * GST_SECOND);
+ GST_SEEK_METHOD_SET |
+ GST_SEEK_FLAG_FLUSH, 25 * GST_SECOND, 29 * GST_SECOND);
res = gst_pad_send_event (pad, event);
if (!res)
g_warning ("seek failed");
diff --git a/examples/seeking/cdplayer.c b/examples/seeking/cdplayer.c
index 6ce55471..1e823cc5 100644
--- a/examples/seeking/cdplayer.c
+++ b/examples/seeking/cdplayer.c
@@ -15,11 +15,11 @@ static guint update_id;
#define UPDATE_INTERVAL 500
-static GstElement*
-make_cdaudio_pipeline (void)
+static GstElement *
+make_cdaudio_pipeline (void)
{
GstElement *cdaudio;
-
+
cdaudio = gst_element_factory_make ("cdaudio", "cdaudio");
g_assert (cdaudio != NULL);
@@ -28,9 +28,8 @@ make_cdaudio_pipeline (void)
return cdaudio;
}
-static gchar*
-format_value (GtkScale *scale,
- gdouble value)
+static gchar *
+format_value (GtkScale * scale, gdouble value)
{
gint64 real;
gint64 seconds;
@@ -41,9 +40,7 @@ format_value (GtkScale *scale,
subseconds = (gint64) real / (GST_SECOND / 100);
return g_strdup_printf ("%02lld:%02lld:%02lld",
- seconds/60,
- seconds%60,
- subseconds%100);
+ seconds / 60, seconds % 60, subseconds % 100);
}
typedef struct
@@ -52,13 +49,12 @@ typedef struct
const GstFormat format;
} seek_format;
-static seek_format seek_formats[] =
-{
- { "tim", GST_FORMAT_TIME },
- { "byt", GST_FORMAT_BYTES },
- { "buf", GST_FORMAT_BUFFERS },
- { "def", GST_FORMAT_DEFAULT },
- { NULL, 0 },
+static seek_format seek_formats[] = {
+ {"tim", GST_FORMAT_TIME},
+ {"byt", GST_FORMAT_BYTES},
+ {"buf", GST_FORMAT_BUFFERS},
+ {"def", GST_FORMAT_DEFAULT},
+ {NULL, 0},
};
@@ -80,10 +76,9 @@ query_durations ()
format = seek_formats[i].format;
res = gst_element_query (element, GST_QUERY_TOTAL, &format, &value);
if (res) {
- g_print ("%s %13lld | ", seek_formats[i].name, value);
- }
- else {
- g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
+ g_print ("%s %13lld | ", seek_formats[i].name, value);
+ } else {
+ g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
}
i++;
}
@@ -110,10 +105,9 @@ query_positions ()
format = seek_formats[i].format;
res = gst_element_query (element, GST_QUERY_POSITION, &format, &value);
if (res) {
- g_print ("%s %13lld | ", seek_formats[i].name, value);
- }
- else {
- g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
+ g_print ("%s %13lld | ", seek_formats[i].name, value);
+ } else {
+ g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
}
i++;
}
@@ -123,7 +117,7 @@ query_positions ()
}
static gboolean
-update_scale (gpointer data)
+update_scale (gpointer data)
{
GstClock *clock;
guint64 position = 0;
@@ -134,6 +128,7 @@ update_scale (gpointer data)
if (seekable_elements) {
GstElement *element = GST_ELEMENT (seekable_elements->data);
+
gst_element_query (element, GST_QUERY_TOTAL, &format, &duration);
}
if (clock)
@@ -141,7 +136,8 @@ update_scale (gpointer data)
if (stats) {
if (clock)
- g_print ("clock: %13llu (%s)\n", position, gst_object_get_name (GST_OBJECT (clock)));
+ g_print ("clock: %13llu (%s)\n", position,
+ gst_object_get_name (GST_OBJECT (clock)));
query_durations ();
query_positions ();
}
@@ -167,7 +163,7 @@ iterate (gpointer data)
}
static gboolean
-start_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
+start_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
{
gst_element_set_state (pipeline, GST_STATE_PAUSED);
gtk_timeout_remove (update_id);
@@ -176,7 +172,7 @@ start_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
}
static gboolean
-stop_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
+stop_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
{
gint64 real = gtk_range_get_value (GTK_RANGE (widget)) * duration / 100;
gboolean res;
@@ -188,8 +184,7 @@ stop_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
g_print ("seek to %lld on element %s\n", real, GST_ELEMENT_NAME (seekable));
s_event = gst_event_new_seek (GST_FORMAT_TIME |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH, real);
+ GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH, real);
res = gst_element_send_event (seekable, s_event);
@@ -199,7 +194,8 @@ stop_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
gst_element_set_state (pipeline, GST_STATE_PLAYING);
if (!GST_FLAG_IS_SET (pipeline, GST_BIN_SELF_SCHEDULABLE))
gtk_idle_add ((GtkFunction) iterate, pipeline);
- update_id = gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
+ update_id =
+ gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
return FALSE;
}
@@ -211,7 +207,8 @@ play_cb (GtkButton * button, gpointer data)
gst_element_set_state (pipeline, GST_STATE_PLAYING);
if (!GST_FLAG_IS_SET (pipeline, GST_BIN_SELF_SCHEDULABLE))
gtk_idle_add ((GtkFunction) iterate, pipeline);
- update_id = gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
+ update_id =
+ gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
}
}
@@ -236,22 +233,23 @@ stop_cb (GtkButton * button, gpointer data)
int
main (int argc, char **argv)
{
- GtkWidget *window, *hbox, *vbox,
- *play_button, *pause_button, *stop_button,
- *hscale;
+ GtkWidget *window, *hbox, *vbox,
+ *play_button, *pause_button, *stop_button, *hscale;
struct poptOption options[] = {
- {"stats", 's', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &stats, 0,
- "Show element stats", NULL},
- POPT_TABLEEND
- };
+ {"stats", 's', POPT_ARG_NONE | POPT_ARGFLAG_STRIP, &stats, 0,
+ "Show element stats", NULL},
+ POPT_TABLEEND
+ };
gst_init_with_popt_table (&argc, &argv, options);
gtk_init (&argc, &argv);
pipeline = make_cdaudio_pipeline ();
- g_signal_connect (pipeline, "deep_notify", G_CALLBACK (gst_element_default_deep_notify), NULL);
- g_signal_connect (pipeline, "error", G_CALLBACK (gst_element_default_error), NULL);
+ g_signal_connect (pipeline, "deep_notify",
+ G_CALLBACK (gst_element_default_deep_notify), NULL);
+ g_signal_connect (pipeline, "error", G_CALLBACK (gst_element_default_error),
+ NULL);
/* initialize gui elements ... */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@@ -261,17 +259,18 @@ main (int argc, char **argv)
pause_button = gtk_button_new_with_label ("pause");
stop_button = gtk_button_new_with_label ("stop");
- adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.00, 100.0, 0.1, 1.0, 1.0));
+ adjustment =
+ GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.00, 100.0, 0.1, 1.0, 1.0));
hscale = gtk_hscale_new (adjustment);
gtk_scale_set_digits (GTK_SCALE (hscale), 2);
gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS);
- gtk_signal_connect(GTK_OBJECT(hscale),
- "button_press_event", G_CALLBACK (start_seek), pipeline);
- gtk_signal_connect(GTK_OBJECT(hscale),
- "button_release_event", G_CALLBACK (stop_seek), pipeline);
- gtk_signal_connect(GTK_OBJECT(hscale),
- "format_value", G_CALLBACK (format_value), pipeline);
+ gtk_signal_connect (GTK_OBJECT (hscale),
+ "button_press_event", G_CALLBACK (start_seek), pipeline);
+ gtk_signal_connect (GTK_OBJECT (hscale),
+ "button_release_event", G_CALLBACK (stop_seek), pipeline);
+ gtk_signal_connect (GTK_OBJECT (hscale),
+ "format_value", G_CALLBACK (format_value), pipeline);
/* do the packing stuff ... */
gtk_window_set_default_size (GTK_WINDOW (window), 96, 96);
@@ -283,9 +282,12 @@ main (int argc, char **argv)
gtk_box_pack_start (GTK_BOX (vbox), hscale, TRUE, TRUE, 2);
/* connect things ... */
- g_signal_connect (G_OBJECT (play_button), "clicked", G_CALLBACK (play_cb), pipeline);
- g_signal_connect (G_OBJECT (pause_button), "clicked", G_CALLBACK (pause_cb), pipeline);
- g_signal_connect (G_OBJECT (stop_button), "clicked", G_CALLBACK (stop_cb), pipeline);
+ g_signal_connect (G_OBJECT (play_button), "clicked", G_CALLBACK (play_cb),
+ pipeline);
+ g_signal_connect (G_OBJECT (pause_button), "clicked", G_CALLBACK (pause_cb),
+ pipeline);
+ g_signal_connect (G_OBJECT (stop_button), "clicked", G_CALLBACK (stop_cb),
+ pipeline);
g_signal_connect (G_OBJECT (window), "delete_event", gtk_main_quit, NULL);
/* show the gui. */
diff --git a/examples/seeking/seek.c b/examples/seeking/seek.c
index 2ad1ca7f..34a6958d 100644
--- a/examples/seeking/seek.c
+++ b/examples/seeking/seek.c
@@ -25,26 +25,25 @@ static guint update_id;
typedef struct
{
- const gchar *padname;
- GstPad *target;
- GstElement *bin;
+ const gchar *padname;
+ GstPad *target;
+ GstElement *bin;
} dyn_link;
static GstElement *
-gst_element_factory_make_or_warn (gchar *type, gchar *name)
+gst_element_factory_make_or_warn (gchar * type, gchar * name)
{
GstElement *element = gst_element_factory_make (type, name);
if (!element) {
- g_warning ("Failed to create element %s of type %s",
- name, type);
+ g_warning ("Failed to create element %s of type %s", name, type);
}
return element;
}
static void
-dynamic_link (GstPadTemplate *templ, GstPad *newpad, gpointer data)
+dynamic_link (GstPadTemplate * templ, GstPad * newpad, gpointer data)
{
dyn_link *connect = (dyn_link *) data;
@@ -60,25 +59,27 @@ dynamic_link (GstPadTemplate *templ, GstPad *newpad, gpointer data)
}
static void
-setup_dynamic_link (GstElement *element, const gchar *padname, GstPad *target, GstElement *bin)
+setup_dynamic_link (GstElement * element, const gchar * padname,
+ GstPad * target, GstElement * bin)
{
dyn_link *connect;
connect = g_new0 (dyn_link, 1);
- connect->padname = g_strdup (padname);
- connect->target = target;
- connect->bin = bin;
+ connect->padname = g_strdup (padname);
+ connect->target = target;
+ connect->bin = bin;
- g_signal_connect (G_OBJECT (element), "new_pad", G_CALLBACK (dynamic_link), connect);
+ g_signal_connect (G_OBJECT (element), "new_pad", G_CALLBACK (dynamic_link),
+ connect);
}
-static GstElement*
-make_mod_pipeline (const gchar *location)
+static GstElement *
+make_mod_pipeline (const gchar * location)
{
GstElement *pipeline;
GstElement *src, *decoder, *audiosink;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -103,13 +104,13 @@ make_mod_pipeline (const gchar *location)
return pipeline;
}
-static GstElement*
-make_dv_pipeline (const gchar *location)
+static GstElement *
+make_dv_pipeline (const gchar * location)
{
GstElement *pipeline;
GstElement *src, *decoder, *audiosink, *videosink;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -140,13 +141,13 @@ make_dv_pipeline (const gchar *location)
return pipeline;
}
-static GstElement*
-make_wav_pipeline (const gchar *location)
+static GstElement *
+make_wav_pipeline (const gchar * location)
{
GstElement *pipeline;
GstElement *src, *decoder, *audiosink;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -171,13 +172,13 @@ make_wav_pipeline (const gchar *location)
return pipeline;
}
-static GstElement*
-make_flac_pipeline (const gchar *location)
+static GstElement *
+make_flac_pipeline (const gchar * location)
{
GstElement *pipeline;
GstElement *src, *decoder, *audiosink;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -202,13 +203,13 @@ make_flac_pipeline (const gchar *location)
return pipeline;
}
-static GstElement*
-make_sid_pipeline (const gchar *location)
+static GstElement *
+make_sid_pipeline (const gchar * location)
{
GstElement *pipeline;
GstElement *src, *decoder, *audiosink;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -233,13 +234,13 @@ make_sid_pipeline (const gchar *location)
return pipeline;
}
-static GstElement*
-make_parse_pipeline (const gchar *location)
+static GstElement *
+make_parse_pipeline (const gchar * location)
{
GstElement *pipeline;
GstElement *src, *parser, *fakesink;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -265,13 +266,13 @@ make_parse_pipeline (const gchar *location)
return pipeline;
}
-static GstElement*
-make_vorbis_pipeline (const gchar *location)
+static GstElement *
+make_vorbis_pipeline (const gchar * location)
{
GstElement *pipeline;
GstElement *src, *decoder, *audiosink;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -296,13 +297,13 @@ make_vorbis_pipeline (const gchar *location)
return pipeline;
}
-static GstElement*
-make_mp3_pipeline (const gchar *location)
+static GstElement *
+make_mp3_pipeline (const gchar * location)
{
GstElement *pipeline;
GstElement *src, *decoder, *osssink, *queue, *audio_thread;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -335,14 +336,15 @@ make_mp3_pipeline (const gchar *location)
return pipeline;
}
-static GstElement*
-make_avi_pipeline (const gchar *location)
+static GstElement *
+make_avi_pipeline (const gchar * location)
{
GstElement *pipeline, *audio_bin, *video_bin;
GstElement *src, *demux, *a_decoder, *v_decoder, *audiosink, *videosink;
- GstElement *a_queue = NULL, *audio_thread = NULL, *v_queue = NULL, *video_thread = NULL;
+ GstElement *a_queue = NULL, *audio_thread = NULL, *v_queue =
+ NULL, *video_thread = NULL;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -369,12 +371,14 @@ make_avi_pipeline (const gchar *location)
gst_bin_add (GST_BIN (audio_thread), audiosink);
gst_element_set_state (audio_bin, GST_STATE_PAUSED);
- setup_dynamic_link (demux, "audio_00", gst_element_get_pad (a_decoder, "sink"), audio_bin);
+ setup_dynamic_link (demux, "audio_00", gst_element_get_pad (a_decoder,
+ "sink"), audio_bin);
seekable = gst_element_get_pad (a_queue, "src");
seekable_pads = g_list_prepend (seekable_pads, seekable);
rate_pads = g_list_prepend (rate_pads, seekable);
- rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (a_decoder, "sink"));
+ rate_pads =
+ g_list_prepend (rate_pads, gst_element_get_pad (a_decoder, "sink"));
video_bin = gst_bin_new ("v_decoder_bin");
//v_decoder = gst_element_factory_make_or_warn ("identity", "v_dec");
@@ -395,25 +399,27 @@ make_avi_pipeline (const gchar *location)
gst_element_set_state (video_bin, GST_STATE_PAUSED);
- setup_dynamic_link (demux, "video_00", gst_element_get_pad (v_decoder, "sink"), video_bin);
+ setup_dynamic_link (demux, "video_00", gst_element_get_pad (v_decoder,
+ "sink"), video_bin);
seekable = gst_element_get_pad (v_queue, "src");
seekable_pads = g_list_prepend (seekable_pads, seekable);
rate_pads = g_list_prepend (rate_pads, seekable);
- rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (v_decoder, "sink"));
+ rate_pads =
+ g_list_prepend (rate_pads, gst_element_get_pad (v_decoder, "sink"));
return pipeline;
}
-static GstElement*
-make_mpeg_pipeline (const gchar *location)
+static GstElement *
+make_mpeg_pipeline (const gchar * location)
{
GstElement *pipeline, *audio_bin, *video_bin;
GstElement *src, *demux, *a_decoder, *v_decoder, *v_filter;
GstElement *audiosink, *videosink;
GstElement *a_queue, *audio_thread, *v_queue, *video_thread;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -441,12 +447,14 @@ make_mpeg_pipeline (const gchar *location)
gst_bin_add (GST_BIN (audio_thread), a_queue);
gst_bin_add (GST_BIN (audio_thread), audiosink);
- setup_dynamic_link (demux, "audio_00", gst_element_get_pad (a_decoder, "sink"), audio_bin);
+ setup_dynamic_link (demux, "audio_00", gst_element_get_pad (a_decoder,
+ "sink"), audio_bin);
seekable = gst_element_get_pad (a_queue, "src");
seekable_pads = g_list_prepend (seekable_pads, seekable);
rate_pads = g_list_prepend (rate_pads, seekable);
- rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (a_decoder, "sink"));
+ rate_pads =
+ g_list_prepend (rate_pads, gst_element_get_pad (a_decoder, "sink"));
video_bin = gst_bin_new ("v_decoder_bin");
v_decoder = gst_element_factory_make_or_warn ("mpeg2dec", "v_dec");
@@ -456,30 +464,32 @@ make_mpeg_pipeline (const gchar *location)
v_filter = gst_element_factory_make_or_warn ("colorspace", "v_filter");
videosink = gst_element_factory_make_or_warn ("xvideosink", "v_sink");
gst_element_link_many (v_decoder, v_queue, v_filter, NULL);
-
+
gst_element_link (v_filter, videosink);
gst_bin_add_many (GST_BIN (video_bin), v_decoder, video_thread, NULL);
gst_bin_add_many (GST_BIN (video_thread), v_queue, v_filter, videosink, NULL);
- setup_dynamic_link (demux, "video_00", gst_element_get_pad (v_decoder, "sink"), video_bin);
+ setup_dynamic_link (demux, "video_00", gst_element_get_pad (v_decoder,
+ "sink"), video_bin);
seekable = gst_element_get_pad (v_queue, "src");
seekable_pads = g_list_prepend (seekable_pads, seekable);
rate_pads = g_list_prepend (rate_pads, seekable);
- rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (v_decoder, "sink"));
+ rate_pads =
+ g_list_prepend (rate_pads, gst_element_get_pad (v_decoder, "sink"));
return pipeline;
}
-static GstElement*
-make_mpegnt_pipeline (const gchar *location)
+static GstElement *
+make_mpegnt_pipeline (const gchar * location)
{
GstElement *pipeline, *audio_bin, *video_bin;
GstElement *src, *demux, *a_decoder, *v_decoder, *v_filter;
GstElement *audiosink, *videosink;
GstElement *a_queue, *audio_thread;
GstPad *seekable;
-
+
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make_or_warn (SOURCE, "src");
@@ -508,40 +518,43 @@ make_mpegnt_pipeline (const gchar *location)
gst_bin_add (GST_BIN (audio_thread), a_queue);
gst_bin_add (GST_BIN (audio_thread), audiosink);
- setup_dynamic_link (demux, "audio_00", gst_element_get_pad (a_decoder, "sink"), audio_bin);
+ setup_dynamic_link (demux, "audio_00", gst_element_get_pad (a_decoder,
+ "sink"), audio_bin);
seekable = gst_element_get_pad (a_queue, "src");
seekable_pads = g_list_prepend (seekable_pads, seekable);
rate_pads = g_list_prepend (rate_pads, seekable);
- rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (a_decoder, "sink"));
+ rate_pads =
+ g_list_prepend (rate_pads, gst_element_get_pad (a_decoder, "sink"));
video_bin = gst_bin_new ("v_decoder_bin");
v_decoder = gst_element_factory_make_or_warn ("mpeg2dec", "v_dec");
v_filter = gst_element_factory_make_or_warn ("colorspace", "v_filter");
videosink = gst_element_factory_make_or_warn ("xvideosink", "v_sink");
gst_element_link_many (v_decoder, v_filter, videosink, NULL);
-
+
gst_bin_add_many (GST_BIN (video_bin), v_decoder, v_filter, videosink, NULL);
- setup_dynamic_link (demux, "video_00", gst_element_get_pad (v_decoder, "sink"), video_bin);
+ setup_dynamic_link (demux, "video_00", gst_element_get_pad (v_decoder,
+ "sink"), video_bin);
seekable = gst_element_get_pad (v_decoder, "src");
seekable_pads = g_list_prepend (seekable_pads, seekable);
rate_pads = g_list_prepend (rate_pads, seekable);
- rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (v_decoder, "sink"));
+ rate_pads =
+ g_list_prepend (rate_pads, gst_element_get_pad (v_decoder, "sink"));
return pipeline;
}
-static GstElement*
-make_playerbin_pipeline (const gchar *location)
+static GstElement *
+make_playerbin_pipeline (const gchar * location)
{
return NULL;
}
-static gchar*
-format_value (GtkScale *scale,
- gdouble value)
+static gchar *
+format_value (GtkScale * scale, gdouble value)
{
gint64 real;
gint64 seconds;
@@ -552,9 +565,7 @@ format_value (GtkScale *scale,
subseconds = (gint64) real / (GST_SECOND / 100);
return g_strdup_printf ("%02lld:%02lld:%02lld",
- seconds/60,
- seconds%60,
- subseconds%100);
+ seconds / 60, seconds % 60, subseconds % 100);
}
typedef struct
@@ -563,13 +574,12 @@ typedef struct
const GstFormat format;
} seek_format;
-static seek_format seek_formats[] =
-{
- { "tim", GST_FORMAT_TIME },
- { "byt", GST_FORMAT_BYTES },
- { "buf", GST_FORMAT_BUFFERS },
- { "def", GST_FORMAT_DEFAULT },
- { NULL, 0 },
+static seek_format seek_formats[] = {
+ {"tim", GST_FORMAT_TIME},
+ {"byt", GST_FORMAT_BYTES},
+ {"buf", GST_FORMAT_BUFFERS},
+ {"def", GST_FORMAT_DEFAULT},
+ {NULL, 0},
};
G_GNUC_UNUSED static void
@@ -588,13 +598,10 @@ query_rates (void)
format = seek_formats[i].format;
- if (gst_pad_convert (pad, GST_FORMAT_TIME, GST_SECOND,
- &format, &value))
- {
- g_print ("%s %13lld | ", seek_formats[i].name, value);
- }
- else {
- g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
+ if (gst_pad_convert (pad, GST_FORMAT_TIME, GST_SECOND, &format, &value)) {
+ g_print ("%s %13lld | ", seek_formats[i].name, value);
+ } else {
+ g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
}
i++;
@@ -623,15 +630,14 @@ query_durations ()
format = seek_formats[i].format;
res = gst_pad_query (pad, GST_QUERY_TOTAL, &format, &value);
if (res) {
- g_print ("%s %13lld | ", seek_formats[i].name, value);
- }
- else {
- g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
+ g_print ("%s %13lld | ", seek_formats[i].name, value);
+ } else {
+ g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
}
i++;
}
g_print (" %s:%s\n", GST_DEBUG_PAD_NAME (pad));
-
+
walk = g_list_next (walk);
}
}
@@ -654,10 +660,9 @@ query_positions ()
format = seek_formats[i].format;
res = gst_pad_query (pad, GST_QUERY_POSITION, &format, &value);
if (res) {
- g_print ("%s %13lld | ", seek_formats[i].name, value);
- }
- else {
- g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
+ g_print ("%s %13lld | ", seek_formats[i].name, value);
+ } else {
+ g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
}
i++;
}
@@ -668,7 +673,7 @@ query_positions ()
}
static gboolean
-update_scale (gpointer data)
+update_scale (gpointer data)
{
GstClock *clock;
guint64 position;
@@ -679,12 +684,14 @@ update_scale (gpointer data)
if (seekable_pads) {
GstPad *pad = GST_PAD (seekable_pads->data);
+
gst_pad_query (pad, GST_QUERY_TOTAL, &format, &duration);
}
position = gst_clock_get_time (clock);
if (stats) {
- g_print ("clock: %13llu (%s)\n", position, gst_object_get_name (GST_OBJECT (clock)));
+ g_print ("clock: %13llu (%s)\n", position,
+ gst_object_get_name (GST_OBJECT (clock)));
query_durations ();
query_positions ();
query_rates ();
@@ -711,7 +718,7 @@ iterate (gpointer data)
}
static gboolean
-start_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
+start_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
{
gst_element_set_state (pipeline, GST_STATE_PAUSED);
gtk_timeout_remove (update_id);
@@ -720,21 +727,23 @@ start_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
}
static gboolean
-stop_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
+stop_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
{
gint64 real = gtk_range_get_value (GTK_RANGE (widget)) * duration / 100;
gboolean res;
GstEvent *s_event;
+
#ifdef PAD_SEEK
GList *walk = seekable_pads;
while (walk) {
GstPad *seekable = GST_PAD (walk->data);
- g_print ("seek to %lld on pad %s:%s\n", real, GST_DEBUG_PAD_NAME (seekable));
- s_event = gst_event_new_seek (GST_FORMAT_TIME |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH, real);
+ g_print ("seek to %lld on pad %s:%s\n", real,
+ GST_DEBUG_PAD_NAME (seekable));
+ s_event =
+ gst_event_new_seek (GST_FORMAT_TIME | GST_SEEK_METHOD_SET |
+ GST_SEEK_FLAG_FLUSH, real);
res = gst_pad_send_event (seekable, s_event);
@@ -746,10 +755,11 @@ stop_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
while (walk) {
GstElement *seekable = GST_ELEMENT (walk->data);
- g_print ("seek to %lld on element %s\n", real, gst_element_get_name (seekable));
- s_event = gst_event_new_seek (GST_FORMAT_TIME |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH, real);
+ g_print ("seek to %lld on element %s\n", real,
+ gst_element_get_name (seekable));
+ s_event =
+ gst_event_new_seek (GST_FORMAT_TIME | GST_SEEK_METHOD_SET |
+ GST_SEEK_FLAG_FLUSH, real);
res = gst_element_send_event (seekable, s_event);
@@ -759,7 +769,8 @@ stop_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
gst_element_set_state (pipeline, GST_STATE_PLAYING);
gtk_idle_add ((GtkFunction) iterate, pipeline);
- update_id = gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
+ update_id =
+ gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
return FALSE;
}
@@ -770,7 +781,8 @@ play_cb (GtkButton * button, gpointer data)
if (gst_element_get_state (pipeline) != GST_STATE_PLAYING) {
gst_element_set_state (pipeline, GST_STATE_PLAYING);
gtk_idle_add ((GtkFunction) iterate, pipeline);
- update_id = gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
+ update_id =
+ gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
}
}
@@ -795,23 +807,23 @@ stop_cb (GtkButton * button, gpointer data)
typedef struct
{
gchar *name;
- GstElement* (*func) (const gchar *location);
+ GstElement *(*func) (const gchar * location);
} Pipeline;
static Pipeline pipelines[] = {
- { "mp3", make_mp3_pipeline },
- { "avi", make_avi_pipeline },
- { "mpeg1", make_mpeg_pipeline },
- { "mpegparse", make_parse_pipeline },
- { "vorbis", make_vorbis_pipeline },
- { "sid", make_sid_pipeline },
- { "flac", make_flac_pipeline },
- { "wav", make_wav_pipeline },
- { "mod", make_mod_pipeline },
- { "dv", make_dv_pipeline },
- { "mpeg1nothreads", make_mpegnt_pipeline },
- { "playerbin", make_playerbin_pipeline },
- { NULL, NULL},
+ {"mp3", make_mp3_pipeline},
+ {"avi", make_avi_pipeline},
+ {"mpeg1", make_mpeg_pipeline},
+ {"mpegparse", make_parse_pipeline},
+ {"vorbis", make_vorbis_pipeline},
+ {"sid", make_sid_pipeline},
+ {"flac", make_flac_pipeline},
+ {"wav", make_wav_pipeline},
+ {"mod", make_mod_pipeline},
+ {"dv", make_dv_pipeline},
+ {"mpeg1nothreads", make_mpegnt_pipeline},
+ {"playerbin", make_playerbin_pipeline},
+ {NULL, NULL},
};
#define NUM_TYPES ((sizeof (pipelines) / sizeof (Pipeline)) - 1)
@@ -832,16 +844,15 @@ print_usage (int argc, char **argv)
int
main (int argc, char **argv)
{
- GtkWidget *window, *hbox, *vbox,
- *play_button, *pause_button, *stop_button,
- *hscale;
+ GtkWidget *window, *hbox, *vbox,
+ *play_button, *pause_button, *stop_button, *hscale;
struct poptOption options[] = {
- { "stats", 's', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &stats, 0,
- "Show pad stats", NULL },
+ {"stats", 's', POPT_ARG_NONE | POPT_ARGFLAG_STRIP, &stats, 0,
+ "Show pad stats", NULL},
POPT_TABLEEND
};
gint type;
-
+
gst_init_with_popt_table (&argc, &argv, options);
gtk_init (&argc, &argv);
@@ -868,17 +879,18 @@ main (int argc, char **argv)
pause_button = gtk_button_new_with_label ("pause");
stop_button = gtk_button_new_with_label ("stop");
- adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.00, 100.0, 0.1, 1.0, 1.0));
+ adjustment =
+ GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.00, 100.0, 0.1, 1.0, 1.0));
hscale = gtk_hscale_new (adjustment);
gtk_scale_set_digits (GTK_SCALE (hscale), 2);
gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS);
- gtk_signal_connect(GTK_OBJECT(hscale),
- "button_press_event", G_CALLBACK (start_seek), pipeline);
- gtk_signal_connect(GTK_OBJECT(hscale),
- "button_release_event", G_CALLBACK (stop_seek), pipeline);
- gtk_signal_connect(GTK_OBJECT(hscale),
- "format_value", G_CALLBACK (format_value), pipeline);
+ gtk_signal_connect (GTK_OBJECT (hscale),
+ "button_press_event", G_CALLBACK (start_seek), pipeline);
+ gtk_signal_connect (GTK_OBJECT (hscale),
+ "button_release_event", G_CALLBACK (stop_seek), pipeline);
+ gtk_signal_connect (GTK_OBJECT (hscale),
+ "format_value", G_CALLBACK (format_value), pipeline);
/* do the packing stuff ... */
gtk_window_set_default_size (GTK_WINDOW (window), 96, 96);
@@ -890,16 +902,21 @@ main (int argc, char **argv)
gtk_box_pack_start (GTK_BOX (vbox), hscale, TRUE, TRUE, 2);
/* connect things ... */
- g_signal_connect (G_OBJECT (play_button), "clicked", G_CALLBACK (play_cb), pipeline);
- g_signal_connect (G_OBJECT (pause_button), "clicked", G_CALLBACK (pause_cb), pipeline);
- g_signal_connect (G_OBJECT (stop_button), "clicked", G_CALLBACK (stop_cb), pipeline);
+ g_signal_connect (G_OBJECT (play_button), "clicked", G_CALLBACK (play_cb),
+ pipeline);
+ g_signal_connect (G_OBJECT (pause_button), "clicked", G_CALLBACK (pause_cb),
+ pipeline);
+ g_signal_connect (G_OBJECT (stop_button), "clicked", G_CALLBACK (stop_cb),
+ pipeline);
g_signal_connect (G_OBJECT (window), "delete_event", gtk_main_quit, NULL);
/* show the gui. */
gtk_widget_show_all (window);
- g_signal_connect (pipeline, "deep_notify", G_CALLBACK (gst_element_default_deep_notify), NULL);
- g_signal_connect (pipeline, "error", G_CALLBACK (gst_element_default_error), NULL);
+ g_signal_connect (pipeline, "deep_notify",
+ G_CALLBACK (gst_element_default_deep_notify), NULL);
+ g_signal_connect (pipeline, "error", G_CALLBACK (gst_element_default_error),
+ NULL);
gtk_main ();
diff --git a/examples/seeking/spider_seek.c b/examples/seeking/spider_seek.c
index a21aac16..d2c2c6b2 100644
--- a/examples/seeking/spider_seek.c
+++ b/examples/seeking/spider_seek.c
@@ -19,19 +19,19 @@ static guint update_id;
#define UPDATE_INTERVAL 500
-static GstElement*
-make_spider_pipeline (const gchar *location, gboolean thread)
+static GstElement *
+make_spider_pipeline (const gchar * location, gboolean thread)
{
GstElement *pipeline;
- GstElement *src, *decoder, *audiosink, *videosink, *a_thread, *v_thread, *a_queue, *v_queue;
-
+ GstElement *src, *decoder, *audiosink, *videosink, *a_thread, *v_thread,
+ *a_queue, *v_queue;
+
if (thread) {
pipeline = gst_thread_new ("app");
- }
- else {
+ } else {
pipeline = gst_pipeline_new ("app");
}
-
+
src = gst_element_factory_make (SOURCE, "src");
decoder = gst_element_factory_make ("spider", "decoder");
@@ -64,15 +64,16 @@ make_spider_pipeline (const gchar *location, gboolean thread)
seekable_elements = g_list_prepend (seekable_elements, videosink);
seekable_elements = g_list_prepend (seekable_elements, audiosink);
- rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (audiosink, "sink"));
- rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (videosink, "sink"));
+ rate_pads =
+ g_list_prepend (rate_pads, gst_element_get_pad (audiosink, "sink"));
+ rate_pads =
+ g_list_prepend (rate_pads, gst_element_get_pad (videosink, "sink"));
return pipeline;
}
-static gchar*
-format_value (GtkScale *scale,
- gdouble value)
+static gchar *
+format_value (GtkScale * scale, gdouble value)
{
gint64 real;
gint64 seconds;
@@ -83,9 +84,7 @@ format_value (GtkScale *scale,
subseconds = (gint64) real / (GST_SECOND / 100);
return g_strdup_printf ("%02lld:%02lld:%02lld",
- seconds/60,
- seconds%60,
- subseconds%100);
+ seconds / 60, seconds % 60, subseconds % 100);
}
typedef struct
@@ -94,13 +93,12 @@ typedef struct
const GstFormat format;
} seek_format;
-static seek_format seek_formats[] =
-{
- { "tim", GST_FORMAT_TIME },
- { "byt", GST_FORMAT_BYTES },
- { "buf", GST_FORMAT_BUFFERS },
- { "def", GST_FORMAT_DEFAULT },
- { NULL, 0 },
+static seek_format seek_formats[] = {
+ {"tim", GST_FORMAT_TIME},
+ {"byt", GST_FORMAT_BYTES},
+ {"buf", GST_FORMAT_BUFFERS},
+ {"def", GST_FORMAT_DEFAULT},
+ {NULL, 0},
};
G_GNUC_UNUSED static void
@@ -119,13 +117,10 @@ query_rates (void)
format = seek_formats[i].format;
- if (gst_pad_convert (pad, GST_FORMAT_TIME, GST_SECOND,
- &format, &value))
- {
- g_print ("%s %13lld | ", seek_formats[i].name, value);
- }
- else {
- g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
+ if (gst_pad_convert (pad, GST_FORMAT_TIME, GST_SECOND, &format, &value)) {
+ g_print ("%s %13lld | ", seek_formats[i].name, value);
+ } else {
+ g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
}
i++;
@@ -154,10 +149,9 @@ query_durations ()
format = seek_formats[i].format;
res = gst_element_query (element, GST_QUERY_TOTAL, &format, &value);
if (res) {
- g_print ("%s %13lld | ", seek_formats[i].name, value);
- }
- else {
- g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
+ g_print ("%s %13lld | ", seek_formats[i].name, value);
+ } else {
+ g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
}
i++;
}
@@ -184,10 +178,9 @@ query_positions ()
format = seek_formats[i].format;
res = gst_element_query (element, GST_QUERY_POSITION, &format, &value);
if (res) {
- g_print ("%s %13lld | ", seek_formats[i].name, value);
- }
- else {
- g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
+ g_print ("%s %13lld | ", seek_formats[i].name, value);
+ } else {
+ g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
}
i++;
}
@@ -197,7 +190,7 @@ query_positions ()
}
static gboolean
-update_scale (gpointer data)
+update_scale (gpointer data)
{
GstClock *clock;
guint64 position;
@@ -208,12 +201,14 @@ update_scale (gpointer data)
if (seekable_elements) {
GstElement *element = GST_ELEMENT (seekable_elements->data);
+
gst_element_query (element, GST_QUERY_TOTAL, &format, &duration);
}
position = gst_clock_get_time (clock);
if (stats) {
- g_print ("clock: %13llu (%s)\n", position, gst_object_get_name (GST_OBJECT (clock)));
+ g_print ("clock: %13llu (%s)\n", position,
+ gst_object_get_name (GST_OBJECT (clock)));
query_durations ();
query_positions ();
query_rates ();
@@ -239,7 +234,7 @@ iterate (gpointer data)
}
static gboolean
-start_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
+start_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
{
gst_element_set_state (pipeline, GST_STATE_PAUSED);
gtk_timeout_remove (update_id);
@@ -248,7 +243,7 @@ start_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
}
static gboolean
-stop_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
+stop_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
{
gint64 real = gtk_range_get_value (GTK_RANGE (widget)) * duration / 100;
gboolean res;
@@ -260,8 +255,7 @@ stop_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
g_print ("seek to %lld on element %s\n", real, GST_ELEMENT_NAME (seekable));
s_event = gst_event_new_seek (GST_FORMAT_TIME |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH, real);
+ GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH, real);
res = gst_element_send_event (seekable, s_event);
@@ -271,7 +265,8 @@ stop_seek (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
gst_element_set_state (pipeline, GST_STATE_PLAYING);
if (!GST_FLAG_IS_SET (pipeline, GST_BIN_SELF_SCHEDULABLE))
gtk_idle_add ((GtkFunction) iterate, pipeline);
- update_id = gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
+ update_id =
+ gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
return FALSE;
}
@@ -283,7 +278,8 @@ play_cb (GtkButton * button, gpointer data)
gst_element_set_state (pipeline, GST_STATE_PLAYING);
if (!GST_FLAG_IS_SET (pipeline, GST_BIN_SELF_SCHEDULABLE))
gtk_idle_add ((GtkFunction) iterate, pipeline);
- update_id = gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
+ update_id =
+ gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);
}
}
@@ -308,17 +304,16 @@ stop_cb (GtkButton * button, gpointer data)
int
main (int argc, char **argv)
{
- GtkWidget *window, *hbox, *vbox,
- *play_button, *pause_button, *stop_button,
- *hscale;
+ GtkWidget *window, *hbox, *vbox,
+ *play_button, *pause_button, *stop_button, *hscale;
gboolean threaded = FALSE;
struct poptOption options[] = {
- {"threaded", 't', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &threaded, 0,
- "Run the pipeline in a toplevel thread", NULL},
- {"stats", 's', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &stats, 0,
- "Show element stats", NULL},
- POPT_TABLEEND
- };
+ {"threaded", 't', POPT_ARG_NONE | POPT_ARGFLAG_STRIP, &threaded, 0,
+ "Run the pipeline in a toplevel thread", NULL},
+ {"stats", 's', POPT_ARG_NONE | POPT_ARGFLAG_STRIP, &stats, 0,
+ "Show element stats", NULL},
+ POPT_TABLEEND
+ };
gst_init_with_popt_table (&argc, &argv, options);
gtk_init (&argc, &argv);
@@ -338,17 +333,18 @@ main (int argc, char **argv)
pause_button = gtk_button_new_with_label ("pause");
stop_button = gtk_button_new_with_label ("stop");
- adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.00, 100.0, 0.1, 1.0, 1.0));
+ adjustment =
+ GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.00, 100.0, 0.1, 1.0, 1.0));
hscale = gtk_hscale_new (adjustment);
gtk_scale_set_digits (GTK_SCALE (hscale), 2);
gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS);
- gtk_signal_connect(GTK_OBJECT(hscale),
- "button_press_event", G_CALLBACK (start_seek), pipeline);
- gtk_signal_connect(GTK_OBJECT(hscale),
- "button_release_event", G_CALLBACK (stop_seek), pipeline);
- gtk_signal_connect(GTK_OBJECT(hscale),
- "format_value", G_CALLBACK (format_value), pipeline);
+ gtk_signal_connect (GTK_OBJECT (hscale),
+ "button_press_event", G_CALLBACK (start_seek), pipeline);
+ gtk_signal_connect (GTK_OBJECT (hscale),
+ "button_release_event", G_CALLBACK (stop_seek), pipeline);
+ gtk_signal_connect (GTK_OBJECT (hscale),
+ "format_value", G_CALLBACK (format_value), pipeline);
/* do the packing stuff ... */
gtk_window_set_default_size (GTK_WINDOW (window), 96, 96);
@@ -360,9 +356,12 @@ main (int argc, char **argv)
gtk_box_pack_start (GTK_BOX (vbox), hscale, TRUE, TRUE, 2);
/* connect things ... */
- g_signal_connect (G_OBJECT (play_button), "clicked", G_CALLBACK (play_cb), pipeline);
- g_signal_connect (G_OBJECT (pause_button), "clicked", G_CALLBACK (pause_cb), pipeline);
- g_signal_connect (G_OBJECT (stop_button), "clicked", G_CALLBACK (stop_cb), pipeline);
+ g_signal_connect (G_OBJECT (play_button), "clicked", G_CALLBACK (play_cb),
+ pipeline);
+ g_signal_connect (G_OBJECT (pause_button), "clicked", G_CALLBACK (pause_cb),
+ pipeline);
+ g_signal_connect (G_OBJECT (stop_button), "clicked", G_CALLBACK (stop_cb),
+ pipeline);
g_signal_connect (G_OBJECT (window), "delete_event", gtk_main_quit, NULL);
/* show the gui. */
diff --git a/examples/seeking/vorbisfile.c b/examples/seeking/vorbisfile.c
index acaa60c9..ec6844a0 100644
--- a/examples/seeking/vorbisfile.c
+++ b/examples/seeking/vorbisfile.c
@@ -4,34 +4,37 @@
static gboolean ready = FALSE;
-struct probe_context {
+struct probe_context
+{
GstElement *pipeline;
GstElement *element;
- GstPad *pad;
- GstFormat ls_format;
+ GstPad *pad;
+ GstFormat ls_format;
- gint total_ls;
+ gint total_ls;
- GstCaps *metadata;
- GstCaps *streaminfo;
- GstCaps *caps;
+ GstCaps *metadata;
+ GstCaps *streaminfo;
+ GstCaps *caps;
};
static void
-print_caps (GstCaps *caps)
+print_caps (GstCaps * caps)
{
char *s;
+
s = gst_caps_to_string (caps);
- g_print(" %s\n", s);
+ g_print (" %s\n", s);
g_free (s);
}
static void
-print_format (GstCaps *caps)
+print_format (GstCaps * caps)
{
char *s;
+
s = gst_caps_to_string (caps);
- g_print(" format: %s\n", s);
+ g_print (" format: %s\n", s);
g_free (s);
}
@@ -61,35 +64,31 @@ print_lbs_info (struct probe_context *context, gint stream)
definition = gst_format_get_details (format);
/* get start and end position of this stream */
- res = gst_pad_convert (context->pad,
- context->ls_format, stream,
- &format, &value_start);
+ res = gst_pad_convert (context->pad,
+ context->ls_format, stream, &format, &value_start);
res &= gst_pad_convert (context->pad,
- context->ls_format, stream + 1,
- &format, &value_end);
+ context->ls_format, stream + 1, &format, &value_end);
if (res) {
/* substract to get the length */
value_end -= value_start;
if (format == GST_FORMAT_TIME) {
- value_end /= (GST_SECOND/100);
- g_print (" %s: %lld:%02lld.%02lld\n", definition->nick,
- value_end/6000, (value_end/100)%60, (value_end%100));
+ value_end /= (GST_SECOND / 100);
+ g_print (" %s: %lld:%02lld.%02lld\n", definition->nick,
+ value_end / 6000, (value_end / 100) % 60, (value_end % 100));
+ } else {
+ g_print (" %s: %lld\n", definition->nick, value_end);
}
- else {
- g_print (" %s: %lld\n", definition->nick, value_end);
- }
- }
- else
+ } else
g_print (" could not get logical stream %s\n", definition->nick);
}
}
static void
-deep_notify (GObject *object, GstObject *origin,
- GParamSpec *pspec, gpointer data)
+deep_notify (GObject * object, GstObject * origin,
+ GParamSpec * pspec, gpointer data)
{
struct probe_context *context = (struct probe_context *) data;
GValue value = { 0, };
@@ -99,8 +98,7 @@ deep_notify (GObject *object, GstObject *origin,
g_value_init (&value, pspec->value_type);
g_object_get_property (G_OBJECT (origin), pspec->name, &value);
context->metadata = g_value_peek_pointer (&value);
- }
- else if (!strcmp (pspec->name, "streaminfo")) {
+ } else if (!strcmp (pspec->name, "streaminfo")) {
g_value_init (&value, pspec->value_type);
g_object_get_property (G_OBJECT (origin), pspec->name, &value);
@@ -127,9 +125,7 @@ collect_logical_stream_properties (struct probe_context *context, gint stream)
/* seek to stream */
event = gst_event_new_seek (context->ls_format |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH,
- stream);
+ GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH, stream);
res = gst_pad_send_event (context->pad, event);
if (!res) {
g_warning ("seek to logical track failed");
@@ -141,7 +137,8 @@ collect_logical_stream_properties (struct probe_context *context, gint stream)
ready = FALSE;
while (gst_bin_iterate (GST_BIN (context->pipeline)) && !ready) {
count++;
- if (count > 10) break;
+ if (count > 10)
+ break;
}
print_caps (context->metadata);
@@ -177,21 +174,19 @@ collect_stream_properties (struct probe_context *context)
format = *formats;
formats++;
- res = gst_pad_query (context->pad, GST_QUERY_TOTAL,
- &format, &value);
+ res = gst_pad_query (context->pad, GST_QUERY_TOTAL, &format, &value);
definition = gst_format_get_details (format);
if (res) {
if (format == GST_FORMAT_TIME) {
- value /= (GST_SECOND/100);
- g_print (" total %s: %lld:%02lld.%02lld\n", definition->nick,
- value/6000, (value/100)%60, (value%100));
- }
- else {
- if (format == context->ls_format)
- context->total_ls = value;
- g_print (" total %s: %lld\n", definition->nick, value);
+ value /= (GST_SECOND / 100);
+ g_print (" total %s: %lld:%02lld.%02lld\n", definition->nick,
+ value / 6000, (value / 100) % 60, (value % 100));
+ } else {
+ if (format == context->ls_format)
+ context->total_ls = value;
+ g_print (" total %s: %lld\n", definition->nick, value);
}
}
}
@@ -248,7 +243,7 @@ main (int argc, char **argv)
context->ls_format = logical_stream_format;
g_signal_connect (G_OBJECT (pipeline), "deep_notify",
- G_CALLBACK (deep_notify), context);
+ G_CALLBACK (deep_notify), context);
gst_element_set_state (pipeline, GST_STATE_PLAYING);
diff --git a/examples/stats/mp2ogg.c b/examples/stats/mp2ogg.c
index e5d3fbd9..55d79e90 100644
--- a/examples/stats/mp2ogg.c
+++ b/examples/stats/mp2ogg.c
@@ -24,8 +24,8 @@
* compression status of mpeg audio to ogg vorbis transcoding.
*/
-gint
-main (gint argc, gchar *argv[])
+gint
+main (gint argc, gchar * argv[])
{
GstElement *pipeline;
GError *error = NULL;
@@ -34,21 +34,22 @@ main (gint argc, gchar *argv[])
GstPad *dec_sink, *enc_src;
gst_init (&argc, &argv);
-
+
if (argc < 3) {
g_print ("usage: %s <inputfile> <outputfile>\n", argv[0]);
return -1;
}
description = g_strdup_printf ("filesrc location=\"%s\" ! mad name=decoder ! "
- "vorbisenc name=encoder ! filesink location=\"%s\"", argv[1], argv[2]);
+ "vorbisenc name=encoder ! filesink location=\"%s\"", argv[1], argv[2]);
pipeline = GST_ELEMENT (gst_parse_launch (description, &error));
if (!pipeline) {
if (error)
- g_print ("ERROR: pipeline could not be constructed: %s\n", error->message);
+ g_print ("ERROR: pipeline could not be constructed: %s\n",
+ error->message);
else
- g_print ("ERROR: pipeline could not be constructed\n");
+ g_print ("ERROR: pipeline could not be constructed\n");
return -1;
}
@@ -57,7 +58,7 @@ main (gint argc, gchar *argv[])
dec_sink = gst_element_get_pad (decoder, "sink");
enc_src = gst_element_get_pad (encoder, "src");
-
+
if (gst_element_set_state (pipeline, GST_STATE_PLAYING) != GST_STATE_SUCCESS) {
g_print ("pipeline doesn't want to play\n");
return -1;
@@ -71,33 +72,29 @@ main (gint argc, gchar *argv[])
format = GST_FORMAT_TIME;
/* get the position */
- gst_pad_query (enc_src, GST_QUERY_POSITION,
- &format, &position);
+ gst_pad_query (enc_src, GST_QUERY_POSITION, &format, &position);
/* get the total duration */
- gst_pad_query (enc_src, GST_QUERY_TOTAL,
- &format, &duration);
+ gst_pad_query (enc_src, GST_QUERY_TOTAL, &format, &duration);
format = GST_FORMAT_BYTES;
/* see how many bytes are genereated per 8 seconds (== bitrate) */
gst_pad_convert (enc_src, GST_FORMAT_TIME, 8 * GST_SECOND,
- &format, &bitrate_enc);
+ &format, &bitrate_enc);
gst_pad_convert (dec_sink, GST_FORMAT_TIME, 8 * GST_SECOND,
- &format, &bitrate_dec);
+ &format, &bitrate_dec);
g_print ("[%2dm %.2ds] of [%2dm %.2ds], "
- "src avg bitrate: %lld, dest avg birate: %lld, ratio [%02.2f] \r",
- (gint)(position / (GST_SECOND * 60)),
- (gint)(position / (GST_SECOND)) % 60,
- (gint)(duration / (GST_SECOND * 60)),
- (gint)(duration / (GST_SECOND)) % 60,
- bitrate_dec,
- bitrate_enc,
- (gfloat)bitrate_dec/bitrate_enc);
+ "src avg bitrate: %lld, dest avg birate: %lld, ratio [%02.2f] \r",
+ (gint) (position / (GST_SECOND * 60)),
+ (gint) (position / (GST_SECOND)) % 60,
+ (gint) (duration / (GST_SECOND * 60)),
+ (gint) (duration / (GST_SECOND)) % 60,
+ bitrate_dec, bitrate_enc, (gfloat) bitrate_dec / bitrate_enc);
}
g_print ("\n");
-
+
return 0;
}
diff --git a/examples/switch/switcher.c b/examples/switch/switcher.c
index d0bc4a67..6296f6ad 100644
--- a/examples/switch/switcher.c
+++ b/examples/switch/switcher.c
@@ -16,7 +16,7 @@
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
-
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -28,38 +28,36 @@ static GMainLoop *loop = NULL;
static void
-got_eos (GstElement *pipeline)
+got_eos (GstElement * pipeline)
{
g_main_loop_quit (loop);
}
static gboolean
-idle_iterate (GstElement *pipeline)
+idle_iterate (GstElement * pipeline)
{
gst_bin_iterate (GST_BIN (pipeline));
return (GST_STATE (GST_ELEMENT (pipeline)) == GST_STATE_PLAYING);
}
static gboolean
-switch_timer (GstElement *video_switch)
+switch_timer (GstElement * video_switch)
{
gint nb_sources, active_source;
-
+
g_object_get (G_OBJECT (video_switch), "nb_sources", &nb_sources, NULL);
- g_object_get (G_OBJECT (video_switch), "active_source",
- &active_source, NULL);
-
- active_source ++;
-
+ g_object_get (G_OBJECT (video_switch), "active_source", &active_source, NULL);
+
+ active_source++;
+
if (active_source > nb_sources - 1)
active_source = 0;
-
- g_object_set (G_OBJECT (video_switch), "active_source",
- active_source, NULL);
-
+
+ g_object_set (G_OBJECT (video_switch), "active_source", active_source, NULL);
+
g_message ("current number of sources : %d, active source %d",
- nb_sources, active_source);
-
+ nb_sources, active_source);
+
return (GST_STATE (GST_ELEMENT (video_switch)) == GST_STATE_PLAYING);
}
@@ -72,7 +70,7 @@ main (int argc, char *argv[])
gst_init (&argc, &argv);
loop = g_main_loop_new (NULL, FALSE);
-
+
pipeline = gst_pipeline_new ("pipeline");
src1 = gst_element_factory_make ("videotestsrc", "src1");
g_object_set (G_OBJECT (src1), "pattern", 0, NULL);
@@ -80,26 +78,25 @@ main (int argc, char *argv[])
g_object_set (G_OBJECT (src2), "pattern", 1, NULL);
video_switch = gst_element_factory_make ("switch", "video_switch");
video_sink = gst_element_factory_make ("ximagesink", "video_sink");
-
+
gst_bin_add_many (GST_BIN (pipeline), src1, src2, video_switch,
- video_sink, NULL);
-
+ video_sink, NULL);
+
gst_element_link (src1, video_switch);
gst_element_link (src2, video_switch);
gst_element_link (video_switch, video_sink);
-
- g_signal_connect (G_OBJECT (pipeline), "eos",
- G_CALLBACK (got_eos), NULL);
+
+ g_signal_connect (G_OBJECT (pipeline), "eos", G_CALLBACK (got_eos), NULL);
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);
-
+
g_idle_add ((GSourceFunc) idle_iterate, pipeline);
g_timeout_add (2000, (GSourceFunc) switch_timer, video_switch);
-
+
g_main_loop_run (loop);
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_READY);
-
+
/* unref */
gst_object_unref (GST_OBJECT (pipeline));
diff --git a/ext/aalib/gstaasink.c b/ext/aalib/gstaasink.c
index 6dfdb50c..e34bcf03 100644
--- a/ext/aalib/gstaasink.c
+++ b/ext/aalib/gstaasink.c
@@ -36,14 +36,16 @@ static GstElementDetails gst_aasink_details = {
};
/* aasink signals and args */
-enum {
+enum
+{
SIGNAL_FRAME_DISPLAYED,
SIGNAL_HAVE_SIZE,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_WIDTH,
ARG_HEIGHT,
@@ -58,27 +60,25 @@ enum {
ARG_FRAME_TIME,
};
-static GstStaticPadTemplate sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
-);
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
-static void gst_aasink_base_init (gpointer g_class);
-static void gst_aasink_class_init (GstAASinkClass *klass);
-static void gst_aasink_init (GstAASink *aasink);
+static void gst_aasink_base_init (gpointer g_class);
+static void gst_aasink_class_init (GstAASinkClass * klass);
+static void gst_aasink_init (GstAASink * aasink);
-static void gst_aasink_set_clock (GstElement *element, GstClock *clock);
-static void gst_aasink_chain (GstPad *pad, GstData *_data);
+static void gst_aasink_set_clock (GstElement * element, GstClock * clock);
+static void gst_aasink_chain (GstPad * pad, GstData * _data);
-static void gst_aasink_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_aasink_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static void gst_aasink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_aasink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static GstElementStateReturn gst_aasink_change_state (GstElement *element);
+static GstElementStateReturn gst_aasink_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
static guint gst_aasink_signals[LAST_SIGNAL] = { 0 };
@@ -90,17 +90,18 @@ gst_aasink_get_type (void)
if (!aasink_type) {
static const GTypeInfo aasink_info = {
- sizeof(GstAASinkClass),
+ sizeof (GstAASinkClass),
gst_aasink_base_init,
NULL,
(GClassInitFunc) gst_aasink_class_init,
NULL,
NULL,
- sizeof(GstAASink),
+ sizeof (GstAASink),
0,
- (GInstanceInitFunc)gst_aasink_init,
+ (GInstanceInitFunc) gst_aasink_init,
};
- aasink_type = g_type_register_static(GST_TYPE_ELEMENT, "GstAASink", &aasink_info, 0);
+ aasink_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstAASink", &aasink_info, 0);
}
return aasink_type;
}
@@ -110,19 +111,20 @@ static GType
gst_aasink_drivers_get_type (void)
{
static GType driver_type = 0;
+
if (!driver_type) {
GEnumValue *drivers;
const struct aa_driver *driver;
gint n_drivers;
gint i;
- for (n_drivers = 0; aa_drivers[n_drivers]; n_drivers++){
+ for (n_drivers = 0; aa_drivers[n_drivers]; n_drivers++) {
/* count number of drivers */
}
-
- drivers = g_new0(GEnumValue, n_drivers + 1);
- for (i = 0; i < n_drivers; i++){
+ drivers = g_new0 (GEnumValue, n_drivers + 1);
+
+ for (i = 0; i < n_drivers; i++) {
driver = aa_drivers[i];
drivers[i].value = i;
drivers[i].value_name = g_strdup (driver->shortname);
@@ -142,18 +144,19 @@ static GType
gst_aasink_dither_get_type (void)
{
static GType dither_type = 0;
+
if (!dither_type) {
GEnumValue *ditherers;
gint n_ditherers;
gint i;
- for (n_ditherers = 0; aa_dithernames[n_ditherers]; n_ditherers++){
+ for (n_ditherers = 0; aa_dithernames[n_ditherers]; n_ditherers++) {
/* count number of ditherers */
}
-
- ditherers = g_new0(GEnumValue, n_ditherers + 1);
- for (i = 0; i < n_ditherers; i++){
+ ditherers = g_new0 (GEnumValue, n_ditherers + 1);
+
+ for (i = 0; i < n_ditherers; i++) {
ditherers[i].value = i;
ditherers[i].value_name = g_strdup (aa_dithernames[i]);
ditherers[i].value_nick = g_strdup (aa_dithernames[i]);
@@ -178,74 +181,52 @@ gst_aasink_base_init (gpointer g_class)
}
static void
-gst_aasink_class_init (GstAASinkClass *klass)
+gst_aasink_class_init (GstAASinkClass * 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_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_DRIVER,
- g_param_spec_enum("driver","driver","driver",
- GST_TYPE_AADRIVERS,0,G_PARAM_READWRITE)); /* CHECKME! */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DITHER,
- g_param_spec_enum("dither","dither","dither",
- GST_TYPE_AADITHER,0,G_PARAM_READWRITE)); /* CHECKME! */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BRIGHTNESS,
- g_param_spec_int("brightness","brightness","brightness",
- G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_CONTRAST,
- g_param_spec_int("contrast","contrast","contrast",
- G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_GAMMA,
- g_param_spec_float("gamma","gamma","gamma",
- 0.0,5.0,1.0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_INVERSION,
- g_param_spec_boolean("inversion","inversion","inversion",
- TRUE,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_RANDOMVAL,
- g_param_spec_int("randomval","randomval","randomval",
- G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FRAMES_DISPLAYED,
- g_param_spec_int("frames_displayed","frames_displayed","frames_displayed",
- G_MININT,G_MAXINT,0,G_PARAM_READABLE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FRAME_TIME,
- g_param_spec_int("frame_time","frame_time","frame_time",
- G_MININT,G_MAXINT,0,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_DRIVER, g_param_spec_enum ("driver", "driver", "driver", GST_TYPE_AADRIVERS, 0, G_PARAM_READWRITE)); /* CHECKME! */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DITHER, g_param_spec_enum ("dither", "dither", "dither", GST_TYPE_AADITHER, 0, G_PARAM_READWRITE)); /* CHECKME! */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BRIGHTNESS, g_param_spec_int ("brightness", "brightness", "brightness", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_CONTRAST, g_param_spec_int ("contrast", "contrast", "contrast", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_GAMMA, g_param_spec_float ("gamma", "gamma", "gamma", 0.0, 5.0, 1.0, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_INVERSION, g_param_spec_boolean ("inversion", "inversion", "inversion", TRUE, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_RANDOMVAL, g_param_spec_int ("randomval", "randomval", "randomval", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FRAMES_DISPLAYED, g_param_spec_int ("frames_displayed", "frames_displayed", "frames_displayed", G_MININT, G_MAXINT, 0, G_PARAM_READABLE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FRAME_TIME, g_param_spec_int ("frame_time", "frame_time", "frame_time", G_MININT, G_MAXINT, 0, G_PARAM_READABLE)); /* CHECKME */
gobject_class->set_property = gst_aasink_set_property;
gobject_class->get_property = gst_aasink_get_property;
gst_aasink_signals[SIGNAL_FRAME_DISPLAYED] =
- g_signal_new ("frame-displayed", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstAASinkClass, frame_displayed), NULL, NULL,
- g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+ g_signal_new ("frame-displayed", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstAASinkClass, frame_displayed),
+ NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
gst_aasink_signals[SIGNAL_HAVE_SIZE] =
- g_signal_new ("have-size", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstAASinkClass, have_size), NULL, NULL,
- gst_marshal_VOID__INT_INT, G_TYPE_NONE, 2,
- G_TYPE_UINT, G_TYPE_UINT);
+ g_signal_new ("have-size", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GstAASinkClass, have_size), NULL, NULL,
+ gst_marshal_VOID__INT_INT, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
gstelement_class->change_state = gst_aasink_change_state;
- gstelement_class->set_clock = gst_aasink_set_clock;
+ gstelement_class->set_clock = gst_aasink_set_clock;
}
static GstCaps *
-gst_aasink_fixate (GstPad *pad, const GstCaps *caps)
+gst_aasink_fixate (GstPad * pad, const GstCaps * caps)
{
GstStructure *structure;
GstCaps *newcaps;
- if (gst_caps_get_size (caps) > 1) return NULL;
+ if (gst_caps_get_size (caps) > 1)
+ return NULL;
newcaps = gst_caps_copy (caps);
structure = gst_caps_get_structure (newcaps, 0);
@@ -257,7 +238,7 @@ gst_aasink_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 +247,7 @@ gst_aasink_fixate (GstPad *pad, const GstCaps *caps)
}
static GstPadLinkReturn
-gst_aasink_sinkconnect (GstPad *pad, const GstCaps *caps)
+gst_aasink_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstAASink *aasink;
GstStructure *structure;
@@ -280,16 +261,16 @@ gst_aasink_sinkconnect (GstPad *pad, const GstCaps *caps)
/* FIXME aasink->format is never set */
GST_DEBUG ("aasink: setting %08lx (" GST_FOURCC_FORMAT ")",
- aasink->format, GST_FOURCC_ARGS(aasink->format));
-
- g_signal_emit( G_OBJECT (aasink), gst_aasink_signals[SIGNAL_HAVE_SIZE], 0,
- aasink->width, aasink->height);
+ aasink->format, GST_FOURCC_ARGS (aasink->format));
+
+ g_signal_emit (G_OBJECT (aasink), gst_aasink_signals[SIGNAL_HAVE_SIZE], 0,
+ aasink->width, aasink->height);
return GST_PAD_LINK_OK;
}
static void
-gst_aasink_set_clock (GstElement *element, GstClock *clock)
+gst_aasink_set_clock (GstElement * element, GstClock * clock)
{
GstAASink *aasink = GST_AASINK (element);
@@ -297,16 +278,18 @@ gst_aasink_set_clock (GstElement *element, GstClock *clock)
}
static void
-gst_aasink_init (GstAASink *aasink)
+gst_aasink_init (GstAASink * aasink)
{
- aasink->sinkpad = gst_pad_new_from_template (
- gst_element_get_pad_template (GST_ELEMENT (aasink), "sink"), "sink");
+ aasink->sinkpad =
+ gst_pad_new_from_template (gst_element_get_pad_template (GST_ELEMENT
+ (aasink), "sink"), "sink");
gst_element_add_pad (GST_ELEMENT (aasink), aasink->sinkpad);
gst_pad_set_chain_function (aasink->sinkpad, gst_aasink_chain);
gst_pad_set_link_function (aasink->sinkpad, gst_aasink_sinkconnect);
gst_pad_set_fixate_function (aasink->sinkpad, gst_aasink_fixate);
- memcpy(&aasink->ascii_surf, &aa_defparams, sizeof (struct aa_hardware_params));
+ memcpy (&aasink->ascii_surf, &aa_defparams,
+ sizeof (struct aa_hardware_params));
aasink->ascii_parms.bright = 0;
aasink->ascii_parms.contrast = 16;
aasink->ascii_parms.gamma = 1.0;
@@ -320,13 +303,12 @@ gst_aasink_init (GstAASink *aasink)
aasink->clock = NULL;
- GST_FLAG_SET(aasink, GST_ELEMENT_THREAD_SUGGESTED);
+ GST_FLAG_SET (aasink, GST_ELEMENT_THREAD_SUGGESTED);
}
static void
-gst_aasink_scale (GstAASink *aasink, gchar *src, gchar *dest,
- gint sw, gint sh,
- gint dw, gint dh)
+gst_aasink_scale (GstAASink * aasink, gchar * src, gchar * dest,
+ gint sw, gint sh, gint dw, gint dh)
{
gint ypos, yinc, y;
gint xpos, xinc, x;
@@ -340,20 +322,20 @@ gst_aasink_scale (GstAASink *aasink, gchar *src, gchar *dest,
for (y = dh; y; y--) {
while (ypos > 0x10000) {
ypos -= 0x10000;
- src += sw;
+ src += sw;
}
xpos = 0x10000;
{
guchar *destp = dest;
guchar *srcp = src;
- for ( x=dw; x; x-- ) {
- while (xpos >= 0x10000L) {
- srcp++;
- xpos -= 0x10000L;
- }
- *destp++ = *srcp;
- xpos += xinc;
+ for (x = dw; x; x--) {
+ while (xpos >= 0x10000L) {
+ srcp++;
+ xpos -= 0x10000L;
+ }
+ *destp++ = *srcp;
+ xpos += xinc;
}
}
dest += dw;
@@ -362,7 +344,7 @@ gst_aasink_scale (GstAASink *aasink, gchar *src, gchar *dest,
}
static void
-gst_aasink_chain (GstPad *pad, GstData *_data)
+gst_aasink_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstAASink *aasink;
@@ -373,33 +355,35 @@ gst_aasink_chain (GstPad *pad, GstData *_data)
aasink = GST_AASINK (gst_pad_get_parent (pad));
- gst_aasink_scale (aasink,
- GST_BUFFER_DATA (buf), /* src */
- aa_image (aasink->context), /* dest */
- aasink->width, /* sw */
- aasink->height, /* sh */
- aa_imgwidth (aasink->context), /* dw */
- aa_imgheight (aasink->context)); /* dh */
+ gst_aasink_scale (aasink, GST_BUFFER_DATA (buf), /* src */
+ aa_image (aasink->context), /* dest */
+ aasink->width, /* sw */
+ aasink->height, /* sh */
+ aa_imgwidth (aasink->context), /* dw */
+ aa_imgheight (aasink->context)); /* dh */
- GST_DEBUG ("videosink: clock wait: %" G_GUINT64_FORMAT, GST_BUFFER_TIMESTAMP(buf));
+ GST_DEBUG ("videosink: clock wait: %" G_GUINT64_FORMAT,
+ GST_BUFFER_TIMESTAMP (buf));
if (aasink->clock && GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
gst_element_wait (GST_ELEMENT (aasink), GST_BUFFER_TIMESTAMP (buf));
}
- aa_render (aasink->context, &aasink->ascii_parms,
- 0, 0, aa_imgwidth (aasink->context), aa_imgheight (aasink->context));
+ aa_render (aasink->context, &aasink->ascii_parms,
+ 0, 0, aa_imgwidth (aasink->context), aa_imgheight (aasink->context));
aa_flush (aasink->context);
aa_getevent (aasink->context, FALSE);
- g_signal_emit(G_OBJECT(aasink),gst_aasink_signals[SIGNAL_FRAME_DISPLAYED], 0);
+ g_signal_emit (G_OBJECT (aasink), gst_aasink_signals[SIGNAL_FRAME_DISPLAYED],
+ 0);
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
static void
-gst_aasink_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_aasink_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstAASink *aasink;
@@ -415,31 +399,31 @@ gst_aasink_set_property (GObject *object, guint prop_id, const GValue *value, GP
case ARG_HEIGHT:
aasink->ascii_surf.height = g_value_get_int (value);
break;
- case ARG_DRIVER: {
+ case ARG_DRIVER:{
aasink->aa_driver = g_value_get_enum (value);
break;
}
- case ARG_DITHER: {
+ case ARG_DITHER:{
aasink->ascii_parms.dither = g_value_get_enum (value);
break;
}
- case ARG_BRIGHTNESS: {
+ case ARG_BRIGHTNESS:{
aasink->ascii_parms.bright = g_value_get_int (value);
break;
}
- case ARG_CONTRAST: {
+ case ARG_CONTRAST:{
aasink->ascii_parms.contrast = g_value_get_int (value);
break;
}
- case ARG_GAMMA: {
+ case ARG_GAMMA:{
aasink->ascii_parms.gamma = g_value_get_float (value);
break;
}
- case ARG_INVERSION: {
+ case ARG_INVERSION:{
aasink->ascii_parms.inversion = g_value_get_boolean (value);
break;
}
- case ARG_RANDOMVAL: {
+ case ARG_RANDOMVAL:{
aasink->ascii_parms.randomval = g_value_get_int (value);
break;
}
@@ -449,59 +433,60 @@ gst_aasink_set_property (GObject *object, guint prop_id, const GValue *value, GP
}
static void
-gst_aasink_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_aasink_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstAASink *aasink;
/* it's not null if we got it, but it might not be ours */
- aasink = GST_AASINK(object);
+ aasink = GST_AASINK (object);
switch (prop_id) {
- case ARG_WIDTH: {
+ case ARG_WIDTH:{
g_value_set_int (value, aasink->ascii_surf.width);
break;
}
- case ARG_HEIGHT: {
+ case ARG_HEIGHT:{
g_value_set_int (value, aasink->ascii_surf.height);
break;
}
- case ARG_DRIVER: {
+ case ARG_DRIVER:{
g_value_set_enum (value, aasink->aa_driver);
break;
}
- case ARG_DITHER: {
+ case ARG_DITHER:{
g_value_set_enum (value, aasink->ascii_parms.dither);
break;
}
- case ARG_BRIGHTNESS: {
+ case ARG_BRIGHTNESS:{
g_value_set_int (value, aasink->ascii_parms.bright);
break;
}
- case ARG_CONTRAST: {
+ case ARG_CONTRAST:{
g_value_set_int (value, aasink->ascii_parms.contrast);
break;
}
- case ARG_GAMMA: {
+ case ARG_GAMMA:{
g_value_set_float (value, aasink->ascii_parms.gamma);
break;
}
- case ARG_INVERSION: {
+ case ARG_INVERSION:{
g_value_set_boolean (value, aasink->ascii_parms.inversion);
break;
}
- case ARG_RANDOMVAL: {
+ case ARG_RANDOMVAL:{
g_value_set_int (value, aasink->ascii_parms.randomval);
break;
}
- case ARG_FRAMES_DISPLAYED: {
+ case ARG_FRAMES_DISPLAYED:{
g_value_set_int (value, aasink->frames_displayed);
break;
}
- case ARG_FRAME_TIME: {
- g_value_set_int (value, aasink->frame_time/1000000);
+ case ARG_FRAME_TIME:{
+ g_value_set_int (value, aasink->frame_time / 1000000);
break;
}
- default: {
+ default:{
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
@@ -509,20 +494,20 @@ gst_aasink_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
}
static gboolean
-gst_aasink_open (GstAASink *aasink)
+gst_aasink_open (GstAASink * aasink)
{
- g_return_val_if_fail (!GST_FLAG_IS_SET (aasink ,GST_AASINK_OPEN), FALSE);
+ g_return_val_if_fail (!GST_FLAG_IS_SET (aasink, GST_AASINK_OPEN), FALSE);
- aa_recommendhidisplay(aa_drivers[aasink->aa_driver]->shortname);
+ aa_recommendhidisplay (aa_drivers[aasink->aa_driver]->shortname);
aasink->context = aa_autoinit (&aasink->ascii_surf);
if (aasink->context == NULL) {
GST_ELEMENT_ERROR (GST_ELEMENT (aasink), LIBRARY, TOO_LAZY, (NULL),
- ("error opening aalib context"));
+ ("error opening aalib context"));
return FALSE;
}
- aa_autoinitkbd(aasink->context, 0);
- aa_resizehandler(aasink->context, (void *)aa_resize);
+ aa_autoinitkbd (aasink->context, 0);
+ aa_resizehandler (aasink->context, (void *) aa_resize);
GST_FLAG_SET (aasink, GST_AASINK_OPEN);
@@ -530,9 +515,9 @@ gst_aasink_open (GstAASink *aasink)
}
static void
-gst_aasink_close (GstAASink *aasink)
+gst_aasink_close (GstAASink * aasink)
{
- g_return_if_fail (GST_FLAG_IS_SET (aasink ,GST_AASINK_OPEN));
+ g_return_if_fail (GST_FLAG_IS_SET (aasink, GST_AASINK_OPEN));
aa_close (aasink->context);
@@ -540,7 +525,7 @@ gst_aasink_close (GstAASink *aasink)
}
static GstElementStateReturn
-gst_aasink_change_state (GstElement *element)
+gst_aasink_change_state (GstElement * element)
{
g_return_val_if_fail (GST_IS_AASINK (element), GST_STATE_FAILURE);
@@ -550,7 +535,7 @@ gst_aasink_change_state (GstElement *element)
} else {
if (!GST_FLAG_IS_SET (element, GST_AASINK_OPEN)) {
if (!gst_aasink_open (GST_AASINK (element)))
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
}
@@ -561,7 +546,7 @@ gst_aasink_change_state (GstElement *element)
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_element_register (plugin, "aasink", GST_RANK_NONE, GST_TYPE_AASINK))
return FALSE;
@@ -569,14 +554,8 @@ plugin_init (GstPlugin *plugin)
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "aasink",
- "ASCII Art video sink",
- plugin_init,
- VERSION,
- "GPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "aasink",
+ "ASCII Art video sink",
+ plugin_init, VERSION, "GPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/aalib/gstaasink.h b/ext/aalib/gstaasink.h
index e50362f6..d11ff20e 100644
--- a/ext/aalib/gstaasink.h
+++ b/ext/aalib/gstaasink.h
@@ -26,8 +26,9 @@
#include <aalib.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_AASINK \
@@ -41,48 +42,51 @@ extern "C" {
#define GST_IS_AASINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AASINK))
-typedef enum {
- GST_AASINK_OPEN = GST_ELEMENT_FLAG_LAST,
+ typedef enum
+ {
+ GST_AASINK_OPEN = GST_ELEMENT_FLAG_LAST,
- GST_AASINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
-} GstAASinkFlags;
+ GST_AASINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
+ } GstAASinkFlags;
-typedef struct _GstAASink GstAASink;
-typedef struct _GstAASinkClass GstAASinkClass;
+ typedef struct _GstAASink GstAASink;
+ typedef struct _GstAASinkClass GstAASinkClass;
-struct _GstAASink {
- GstElement element;
+ struct _GstAASink
+ {
+ GstElement element;
- GstPad *sinkpad;
+ GstPad *sinkpad;
- gulong format;
- gint width, height;
+ gulong format;
+ gint width, height;
- gint frames_displayed;
- guint64 frame_time;
+ gint frames_displayed;
+ guint64 frame_time;
- GstClock *clock;
+ GstClock *clock;
- aa_context *context;
- struct aa_hardware_params ascii_surf;
- struct aa_renderparams ascii_parms;
- aa_palette palette;
- gint aa_driver;
-};
+ aa_context *context;
+ struct aa_hardware_params ascii_surf;
+ struct aa_renderparams ascii_parms;
+ aa_palette palette;
+ gint aa_driver;
+ };
-struct _GstAASinkClass {
- GstElementClass parent_class;
+ struct _GstAASinkClass
+ {
+ GstElementClass parent_class;
- /* signals */
- void (*frame_displayed) (GstElement *element);
- void (*have_size) (GstElement *element, guint width, guint height);
-};
+ /* signals */
+ void (*frame_displayed) (GstElement * element);
+ void (*have_size) (GstElement * element, guint width, guint height);
+ };
-GType gst_aasink_get_type(void);
+ GType gst_aasink_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_AASINKE_H__ */
+#endif /* __GST_AASINKE_H__ */
diff --git a/ext/dv/gstdvdec.h b/ext/dv/gstdvdec.h
index 4dffd96f..6052c76f 100644
--- a/ext/dv/gstdvdec.h
+++ b/ext/dv/gstdvdec.h
@@ -24,8 +24,9 @@
#include <gst/gst.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#include <libdv/dv.h>
@@ -33,55 +34,55 @@ extern "C" {
/* This is the definition of the element's object structure. */
-typedef struct _GstDVDec GstDVDec;
+ typedef struct _GstDVDec GstDVDec;
/* The structure itself is derived from GstElement, as can be seen by the
* fact that there's a complete instance of the GstElement structure at
* the beginning of the object. This allows the element to be cast to
* an Element or even an Object.
*/
-struct _GstDVDec {
- GstElement element;
-
- /* We need to keep track of our pads, so we do so here. */
- GstPad *sinkpad,
- *videosrcpad,
- *audiosrcpad;
-
- dv_decoder_t *decoder;
- gboolean clamp_luma;
- gboolean clamp_chroma;
- gint quality;
-
- GstByteStream *bs;
- dv_color_space_t space;
- gint bpp;
- gboolean PAL;
- gdouble framerate;
- gint height;
- gint frequency;
- gint channels;
-
- gint length;
- guint64 next_ts;
- guint64 end_position;
- gboolean need_discont;
- gboolean loop;
-
- gboolean found_header;
-
- gint16 *audio_buffers[4];
-};
+ struct _GstDVDec
+ {
+ GstElement element;
+
+ /* We need to keep track of our pads, so we do so here. */
+ GstPad *sinkpad, *videosrcpad, *audiosrcpad;
+
+ dv_decoder_t *decoder;
+ gboolean clamp_luma;
+ gboolean clamp_chroma;
+ gint quality;
+
+ GstByteStream *bs;
+ dv_color_space_t space;
+ gint bpp;
+ gboolean PAL;
+ gdouble framerate;
+ gint height;
+ gint frequency;
+ gint channels;
+
+ gint length;
+ guint64 next_ts;
+ guint64 end_position;
+ gboolean need_discont;
+ gboolean loop;
+
+ gboolean found_header;
+
+ gint16 *audio_buffers[4];
+ };
/* The other half of the object is its class. The class also derives from
* the same parent, though it must be the class structure this time.
* Function pointers for polymophic methods and signals are placed in this
* structure. */
-typedef struct _GstDVDecClass GstDVDecClass;
+ typedef struct _GstDVDecClass GstDVDecClass;
-struct _GstDVDecClass {
- GstElementClass parent_class;
-};
+ struct _GstDVDecClass
+ {
+ GstElementClass parent_class;
+ };
/* Five standard preprocessing macros are used in the Gtk+ object system.
* The first uses the object's _get_type function to return the GType
@@ -107,12 +108,12 @@ struct _GstDVDecClass {
/* This is the only prototype needed, because it is used in the above
* GST_TYPE_DVDEC macro.
*/
-GType gst_dvdec_get_type(void);
+ GType gst_dvdec_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_DVDEC_H__ */
+#endif /* __GST_DVDEC_H__ */
diff --git a/ext/esd/esdmon.c b/ext/esd/esdmon.c
index 25e9df81..4a7f4ca1 100644
--- a/ext/esd/esdmon.c
+++ b/ext/esd/esdmon.c
@@ -37,12 +37,14 @@ static GstElementDetails esdmon_details = {
};
/* Signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_DEPTH,
ARG_BYTESPERREAD,
@@ -52,43 +54,37 @@ enum {
ARG_HOST,
};
-static GstStaticPadTemplate src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- "audio/x-raw-int, "
- "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", "
- "signed = (boolean) TRUE, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = [ 8000, 96000 ], "
- "channels = [ 1, 2 ]; "
- "audio/x-raw-int, "
- "signed = (boolean) FALSE, "
- "width = (int) 8, "
- "depth = (int) 8, "
- "rate = [ 8000, 96000 ], "
- "channels = [ 1, 2 ]"
- )
-);
-
-static void gst_esdmon_base_init (gpointer g_class);
-static void gst_esdmon_class_init (gpointer g_class, gpointer class_data);
-static void gst_esdmon_init (GTypeInstance *instance, gpointer g_class);
-
-static gboolean gst_esdmon_open_audio (GstEsdmon *src);
-static void gst_esdmon_close_audio (GstEsdmon *src);
-static GstElementStateReturn gst_esdmon_change_state (GstElement *element);
-static gboolean gst_esdmon_sync_parms (GstEsdmon *esdmon);
-
-static GstData * gst_esdmon_get (GstPad *pad);
-
-static void gst_esdmon_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_esdmon_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", "
+ "signed = (boolean) TRUE, "
+ "width = (int) 16, "
+ "depth = (int) 16, "
+ "rate = [ 8000, 96000 ], "
+ "channels = [ 1, 2 ]; "
+ "audio/x-raw-int, "
+ "signed = (boolean) FALSE, "
+ "width = (int) 8, "
+ "depth = (int) 8, " "rate = [ 8000, 96000 ], " "channels = [ 1, 2 ]")
+ );
+
+static void gst_esdmon_base_init (gpointer g_class);
+static void gst_esdmon_class_init (gpointer g_class, gpointer class_data);
+static void gst_esdmon_init (GTypeInstance * instance, gpointer g_class);
+
+static gboolean gst_esdmon_open_audio (GstEsdmon * src);
+static void gst_esdmon_close_audio (GstEsdmon * src);
+static GstElementStateReturn gst_esdmon_change_state (GstElement * element);
+static gboolean gst_esdmon_sync_parms (GstEsdmon * esdmon);
+
+static GstData *gst_esdmon_get (GstPad * pad);
+
+static void gst_esdmon_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_esdmon_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
#define GST_TYPE_ESDMON_DEPTHS (gst_esdmon_depths_get_type())
static GType
@@ -101,7 +97,8 @@ gst_esdmon_depths_get_type (void)
{0, NULL, NULL},
};
if (!esdmon_depths_type) {
- esdmon_depths_type = g_enum_register_static("GstEsdmonDepths", esdmon_depths);
+ esdmon_depths_type =
+ g_enum_register_static ("GstEsdmonDepths", esdmon_depths);
}
return esdmon_depths_type;
}
@@ -117,13 +114,15 @@ gst_esdmon_channels_get_type (void)
{0, NULL, NULL},
};
if (!esdmon_channels_type) {
- esdmon_channels_type = g_enum_register_static("GstEsdmonChannels", esdmon_channels);
+ esdmon_channels_type =
+ g_enum_register_static ("GstEsdmonChannels", esdmon_channels);
}
return esdmon_channels_type;
}
static GstElementClass *parent_class = NULL;
+
/*static guint gst_esdmon_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -133,17 +132,18 @@ gst_esdmon_get_type (void)
if (!esdmon_type) {
static const GTypeInfo esdmon_info = {
- sizeof(GstEsdmonClass),
+ sizeof (GstEsdmonClass),
gst_esdmon_base_init,
NULL,
gst_esdmon_class_init,
NULL,
NULL,
- sizeof(GstEsdmon),
+ sizeof (GstEsdmon),
0,
gst_esdmon_init,
};
- esdmon_type = g_type_register_static(GST_TYPE_ELEMENT, "GstEsdmon", &esdmon_info, 0);
+ esdmon_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstEsdmon", &esdmon_info, 0);
}
return esdmon_type;
}
@@ -153,7 +153,7 @@ gst_esdmon_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
+ gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_factory));
gst_element_class_set_details (element_class, &esdmon_details);
}
@@ -166,24 +166,12 @@ gst_esdmon_class_init (gpointer g_class, gpointer class_data)
parent_class = g_type_class_peek_parent (g_class);
- g_object_class_install_property(gobject_class, ARG_BYTESPERREAD,
- g_param_spec_ulong("bytes_per_read","bytes_per_read","bytes_per_read",
- 0,G_MAXULONG,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(gobject_class, ARG_CUROFFSET,
- g_param_spec_ulong("curoffset","curoffset","curoffset",
- 0,G_MAXULONG,0,G_PARAM_READABLE)); /* CHECKME */
- g_object_class_install_property(gobject_class, ARG_DEPTH,
- g_param_spec_enum("depth","depth","depth",
- GST_TYPE_ESDMON_DEPTHS,16,G_PARAM_READWRITE)); /* CHECKME! */
- g_object_class_install_property(gobject_class, ARG_CHANNELS,
- g_param_spec_enum("channels","channels","channels",
- GST_TYPE_ESDMON_CHANNELS,2,G_PARAM_READWRITE)); /* CHECKME! */
- g_object_class_install_property(gobject_class, ARG_RATE,
- g_param_spec_int("frequency","frequency","frequency",
- G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(gobject_class, ARG_HOST,
- g_param_spec_string("host","host","host",
- NULL, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (gobject_class, ARG_BYTESPERREAD, g_param_spec_ulong ("bytes_per_read", "bytes_per_read", "bytes_per_read", 0, G_MAXULONG, 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (gobject_class, ARG_CUROFFSET, g_param_spec_ulong ("curoffset", "curoffset", "curoffset", 0, G_MAXULONG, 0, G_PARAM_READABLE)); /* CHECKME */
+ g_object_class_install_property (gobject_class, ARG_DEPTH, g_param_spec_enum ("depth", "depth", "depth", GST_TYPE_ESDMON_DEPTHS, 16, G_PARAM_READWRITE)); /* CHECKME! */
+ g_object_class_install_property (gobject_class, ARG_CHANNELS, g_param_spec_enum ("channels", "channels", "channels", GST_TYPE_ESDMON_CHANNELS, 2, G_PARAM_READWRITE)); /* CHECKME! */
+ g_object_class_install_property (gobject_class, ARG_RATE, g_param_spec_int ("frequency", "frequency", "frequency", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (gobject_class, ARG_HOST, g_param_spec_string ("host", "host", "host", NULL, G_PARAM_READWRITE)); /* CHECKME */
gobject_class->set_property = gst_esdmon_set_property;
gobject_class->get_property = gst_esdmon_get_property;
@@ -192,16 +180,16 @@ gst_esdmon_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_esdmon_init(GTypeInstance *instance, gpointer g_class)
+gst_esdmon_init (GTypeInstance * instance, gpointer g_class)
{
GstEsdmon *esdmon = GST_ESDMON (instance);
- esdmon->srcpad = gst_pad_new_from_template (
- gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (esdmon), "src"),
- "src");
- gst_pad_set_get_function(esdmon->srcpad, gst_esdmon_get);
+ esdmon->srcpad =
+ gst_pad_new_from_template (gst_element_class_get_pad_template
+ (GST_ELEMENT_GET_CLASS (esdmon), "src"), "src");
+ gst_pad_set_get_function (esdmon->srcpad, gst_esdmon_get);
gst_pad_use_explicit_caps (esdmon->srcpad);
- gst_element_add_pad(GST_ELEMENT(esdmon), esdmon->srcpad);
+ gst_element_add_pad (GST_ELEMENT (esdmon), esdmon->srcpad);
esdmon->fd = -1;
/* FIXME: get default from somewhere better than just putting them inline. */
@@ -216,12 +204,13 @@ gst_esdmon_init(GTypeInstance *instance, gpointer g_class)
}
static gboolean
-gst_esdmon_sync_parms (GstEsdmon *esdmon)
+gst_esdmon_sync_parms (GstEsdmon * esdmon)
{
g_return_val_if_fail (esdmon != NULL, FALSE);
g_return_val_if_fail (GST_IS_ESDMON (esdmon), FALSE);
- if (esdmon->fd == -1) return TRUE;
+ if (esdmon->fd == -1)
+ return TRUE;
/* Need to set fd to use new parameters: only way to do this is to reopen. */
gst_esdmon_close_audio (esdmon);
@@ -229,7 +218,7 @@ gst_esdmon_sync_parms (GstEsdmon *esdmon)
}
static GstData *
-gst_esdmon_get (GstPad *pad)
+gst_esdmon_get (GstPad * pad)
{
GstEsdmon *esdmon;
GstBuffer *buf;
@@ -237,36 +226,33 @@ gst_esdmon_get (GstPad *pad)
glong readsamples;
g_return_val_if_fail (pad != NULL, NULL);
- esdmon = GST_ESDMON(gst_pad_get_parent (pad));
+ esdmon = GST_ESDMON (gst_pad_get_parent (pad));
GST_DEBUG ("attempting to read something from esdmon");
buf = gst_buffer_new ();
g_return_val_if_fail (buf, NULL);
- GST_BUFFER_DATA (buf) = (gpointer)g_malloc (esdmon->bytes_per_read);
+ GST_BUFFER_DATA (buf) = (gpointer) g_malloc (esdmon->bytes_per_read);
- readbytes = read (esdmon->fd,
- GST_BUFFER_DATA (buf),
- esdmon->bytes_per_read);
+ readbytes = read (esdmon->fd, GST_BUFFER_DATA (buf), esdmon->bytes_per_read);
if (readbytes == 0) {
- gst_element_set_eos (GST_ELEMENT (esdmon));
- return NULL;
+ gst_element_set_eos (GST_ELEMENT (esdmon));
+ return NULL;
}
if (!GST_PAD_CAPS (pad)) {
gint sign = (esdmon->depth == 8 ? FALSE : TRUE);
+
/* set caps on src pad */
if (gst_pad_set_explicit_caps (esdmon->srcpad,
- gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, sign,
- "width", G_TYPE_INT, esdmon->depth,
- "depth", G_TYPE_INT, esdmon->depth,
- "rate", G_TYPE_INT, esdmon->frequency,
- "channels", G_TYPE_INT, esdmon->channels
- )) <= 0)
- {
+ gst_caps_new_simple ("audio/x-raw-int",
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "signed", G_TYPE_BOOLEAN, sign,
+ "width", G_TYPE_INT, esdmon->depth,
+ "depth", G_TYPE_INT, esdmon->depth,
+ "rate", G_TYPE_INT, esdmon->frequency,
+ "channels", G_TYPE_INT, esdmon->channels)) <= 0) {
GST_ELEMENT_ERROR (esdmon, CORE, NEGOTIATION, (NULL), (NULL));
return NULL;
}
@@ -275,25 +261,28 @@ gst_esdmon_get (GstPad *pad)
GST_BUFFER_SIZE (buf) = readbytes;
GST_BUFFER_OFFSET (buf) = esdmon->curoffset;
GST_BUFFER_TIMESTAMP (buf) = esdmon->basetime +
- esdmon->samples_since_basetime * GST_SECOND / esdmon->frequency;
+ esdmon->samples_since_basetime * GST_SECOND / esdmon->frequency;
esdmon->curoffset += readbytes;
readsamples = readbytes / esdmon->channels;
- if (esdmon->depth == 16) readsamples /= 2;
+ if (esdmon->depth == 16)
+ readsamples /= 2;
esdmon->samples_since_basetime += readsamples;
- GST_DEBUG ("pushed buffer from esdmon of %ld bytes, timestamp %" G_GINT64_FORMAT, readbytes, GST_BUFFER_TIMESTAMP (buf));
+ GST_DEBUG ("pushed buffer from esdmon of %ld bytes, timestamp %"
+ G_GINT64_FORMAT, readbytes, GST_BUFFER_TIMESTAMP (buf));
return GST_DATA (buf);
}
static void
-gst_esdmon_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_esdmon_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstEsdmon *esdmon;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_ESDMON(object));
- esdmon = GST_ESDMON(object);
+ g_return_if_fail (GST_IS_ESDMON (object));
+ esdmon = GST_ESDMON (object);
switch (prop_id) {
case ARG_BYTESPERREAD:
@@ -310,7 +299,8 @@ gst_esdmon_set_property (GObject *object, guint prop_id, const GValue *value, GP
break;
case ARG_RATE:
/* Preserve the timestamps */
- esdmon->basetime = esdmon->samples_since_basetime * GST_SECOND / esdmon->frequency;
+ esdmon->basetime =
+ esdmon->samples_since_basetime * GST_SECOND / esdmon->frequency;
esdmon->samples_since_basetime = 0;
/* Set the new frequency */
@@ -318,11 +308,12 @@ gst_esdmon_set_property (GObject *object, guint prop_id, const GValue *value, GP
gst_esdmon_sync_parms (esdmon);
break;
case ARG_HOST:
- if (esdmon->host != NULL) g_free(esdmon->host);
+ if (esdmon->host != NULL)
+ g_free (esdmon->host);
if (g_value_get_string (value) == NULL)
- esdmon->host = NULL;
+ esdmon->host = NULL;
else
- esdmon->host = g_strdup (g_value_get_string (value));
+ esdmon->host = g_strdup (g_value_get_string (value));
break;
default:
break;
@@ -330,13 +321,14 @@ gst_esdmon_set_property (GObject *object, guint prop_id, const GValue *value, GP
}
static void
-gst_esdmon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_esdmon_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstEsdmon *esdmon;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_ESDMON(object));
- esdmon = GST_ESDMON(object);
+ g_return_if_fail (GST_IS_ESDMON (object));
+ esdmon = GST_ESDMON (object);
switch (prop_id) {
case ARG_BYTESPERREAD:
@@ -364,42 +356,46 @@ gst_esdmon_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
}
gboolean
-gst_esdmon_factory_init (GstPlugin *plugin)
+gst_esdmon_factory_init (GstPlugin * plugin)
{
if (!gst_element_register (plugin, "esdmon", GST_RANK_NONE, GST_TYPE_ESDMON))
return FALSE;
-
+
return TRUE;
}
static gboolean
-gst_esdmon_open_audio (GstEsdmon *src)
+gst_esdmon_open_audio (GstEsdmon * src)
{
/* Name used by esound for this connection. */
- const char * connname = "GStreamer";
+ const char *connname = "GStreamer";
/* Bitmap describing audio format. */
esd_format_t esdformat = ESD_STREAM | ESD_PLAY;
g_return_val_if_fail (src->fd == -1, FALSE);
- if (src->depth == 16) esdformat |= ESD_BITS16;
- else if (src->depth == 8) esdformat |= ESD_BITS8;
+ if (src->depth == 16)
+ esdformat |= ESD_BITS16;
+ else if (src->depth == 8)
+ esdformat |= ESD_BITS8;
else {
GST_DEBUG ("esdmon: invalid bit depth (%d)", src->depth);
return FALSE;
}
- if (src->channels == 2) esdformat |= ESD_STEREO;
- else if (src->channels == 1) esdformat |= ESD_MONO;
+ if (src->channels == 2)
+ esdformat |= ESD_STEREO;
+ else if (src->channels == 1)
+ esdformat |= ESD_MONO;
else {
GST_DEBUG ("esdmon: invalid number of channels (%d)", src->channels);
return FALSE;
}
GST_DEBUG ("esdmon: attempting to open connection to esound server");
- src->fd = esd_monitor_stream(esdformat, src->frequency, src->host, connname);
- if ( src->fd < 0 ) {
+ src->fd = esd_monitor_stream (esdformat, src->frequency, src->host, connname);
+ if (src->fd < 0) {
GST_DEBUG ("esdmon: can't open connection to esound server");
return FALSE;
}
@@ -410,11 +406,12 @@ gst_esdmon_open_audio (GstEsdmon *src)
}
static void
-gst_esdmon_close_audio (GstEsdmon *src)
+gst_esdmon_close_audio (GstEsdmon * src)
{
- if (src->fd < 0) return;
+ if (src->fd < 0)
+ return;
- close(src->fd);
+ close (src->fd);
src->fd = -1;
GST_FLAG_UNSET (src, GST_ESDMON_OPEN);
@@ -423,7 +420,7 @@ gst_esdmon_close_audio (GstEsdmon *src)
}
static GstElementStateReturn
-gst_esdmon_change_state (GstElement *element)
+gst_esdmon_change_state (GstElement * element)
{
g_return_val_if_fail (GST_IS_ESDMON (element), FALSE);
@@ -443,4 +440,3 @@ gst_esdmon_change_state (GstElement *element)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
return GST_STATE_SUCCESS;
}
-
diff --git a/ext/esd/esdmon.h b/ext/esd/esdmon.h
index f50e6544..5b8c7e49 100644
--- a/ext/esd/esdmon.h
+++ b/ext/esd/esdmon.h
@@ -26,7 +26,6 @@
#include <gst/gst.h>
G_BEGIN_DECLS
-
#define GST_TYPE_ESDMON \
(gst_esdmon_get_type())
#define GST_ESDMON(obj) \
@@ -37,21 +36,22 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ESDMON))
#define GST_IS_ESDMON_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ESDMON))
-
-typedef enum {
- GST_ESDMON_OPEN = GST_ELEMENT_FLAG_LAST,
- GST_ESDMON_FLAG_LAST = GST_ELEMENT_FLAG_LAST+2,
+ typedef enum
+{
+ GST_ESDMON_OPEN = GST_ELEMENT_FLAG_LAST,
+ GST_ESDMON_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
} GstEsdSrcFlags;
typedef struct _GstEsdmon GstEsdmon;
typedef struct _GstEsdmonClass GstEsdmonClass;
-struct _GstEsdmon {
+struct _GstEsdmon
+{
GstElement element;
GstPad *srcpad;
- gchar* host;
+ gchar *host;
int fd;
@@ -65,14 +65,13 @@ struct _GstEsdmon {
guint64 bytes_per_read;
};
-struct _GstEsdmonClass {
+struct _GstEsdmonClass
+{
GstElementClass parent_class;
};
-GType gst_esdmon_get_type(void);
-gboolean gst_esdmon_factory_init(GstPlugin *plugin);
+GType gst_esdmon_get_type (void);
+gboolean gst_esdmon_factory_init (GstPlugin * plugin);
G_END_DECLS
-
#endif /* __GST_ESDMON_H__ */
-
diff --git a/ext/esd/esdsink.c b/ext/esd/esdsink.c
index 4672ab79..ce7045e7 100644
--- a/ext/esd/esdsink.c
+++ b/ext/esd/esdsink.c
@@ -40,12 +40,14 @@ static GstElementDetails esdsink_details = {
};
/* Signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_MUTE,
ARG_HOST,
@@ -53,41 +55,36 @@ enum {
ARG_FALLBACK,
};
-static GstStaticPadTemplate sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- "audio/x-raw-int, "
- "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", "
- "signed = (boolean) TRUE, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = 44100, "
- "channels = 2"
- )
-);
-
-static void gst_esdsink_base_init (gpointer g_class);
-static void gst_esdsink_class_init (gpointer g_class, gpointer class_data);
-static void gst_esdsink_init (GTypeInstance *instance, gpointer g_class);
-
-static gboolean gst_esdsink_open_audio (GstEsdsink *sink);
-static void gst_esdsink_close_audio (GstEsdsink *sink);
-static GstElementStateReturn gst_esdsink_change_state (GstElement *element);
-
-static GstClockTime gst_esdsink_get_time (GstClock *clock, gpointer data);
-static GstClock * gst_esdsink_get_clock (GstElement *element);
-static void gst_esdsink_set_clock (GstElement *element, GstClock *clock);
-static void gst_esdsink_chain (GstPad *pad, GstData *_data);
-
-static void gst_esdsink_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_esdsink_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", "
+ "signed = (boolean) TRUE, "
+ "width = (int) 16, "
+ "depth = (int) 16, " "rate = 44100, " "channels = 2")
+ );
+
+static void gst_esdsink_base_init (gpointer g_class);
+static void gst_esdsink_class_init (gpointer g_class, gpointer class_data);
+static void gst_esdsink_init (GTypeInstance * instance, gpointer g_class);
+
+static gboolean gst_esdsink_open_audio (GstEsdsink * sink);
+static void gst_esdsink_close_audio (GstEsdsink * sink);
+static GstElementStateReturn gst_esdsink_change_state (GstElement * element);
+
+static GstClockTime gst_esdsink_get_time (GstClock * clock, gpointer data);
+static GstClock *gst_esdsink_get_clock (GstElement * element);
+static void gst_esdsink_set_clock (GstElement * element, GstClock * clock);
+static void gst_esdsink_chain (GstPad * pad, GstData * _data);
+
+static void gst_esdsink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_esdsink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_esdsink_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -97,17 +94,19 @@ gst_esdsink_get_type (void)
if (!esdsink_type) {
static const GTypeInfo esdsink_info = {
- sizeof(GstEsdsinkClass),
+ sizeof (GstEsdsinkClass),
gst_esdsink_base_init,
NULL,
gst_esdsink_class_init,
NULL,
NULL,
- sizeof(GstEsdsink),
+ sizeof (GstEsdsink),
0,
gst_esdsink_init,
};
- esdsink_type = g_type_register_static(GST_TYPE_ELEMENT, "GstEsdsink", &esdsink_info, 0);
+ esdsink_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstEsdsink", &esdsink_info,
+ 0);
}
return esdsink_type;
}
@@ -117,7 +116,7 @@ gst_esdsink_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
+ gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&sink_factory));
gst_element_class_set_details (element_class, &esdsink_details);
}
@@ -130,64 +129,64 @@ gst_esdsink_class_init (gpointer g_class, gpointer class_data)
parent_class = g_type_class_peek_parent (g_class);
- g_object_class_install_property(gobject_class, ARG_MUTE,
- g_param_spec_boolean("mute","mute","mute",
- TRUE,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(gobject_class, ARG_HOST,
- g_param_spec_string("host","host","host",
- NULL, G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(gobject_class, ARG_SYNC,
- g_param_spec_boolean("sync","sync","Synchronize output to clock",
- TRUE,G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_MUTE, g_param_spec_boolean ("mute", "mute", "mute", TRUE, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (gobject_class, ARG_HOST, g_param_spec_string ("host", "host", "host", NULL, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (gobject_class, ARG_SYNC,
+ g_param_spec_boolean ("sync", "sync", "Synchronize output to clock",
+ TRUE, G_PARAM_READWRITE));
#if 0
/* This option is disabled because it is dumb in GStreamer's architecture. */
- g_object_class_install_property(gobject_class, ARG_FALLBACK,
- g_param_spec_boolean("fallback","fallback","Fall back to using OSS if Esound daemon is not present",
- FALSE,G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_FALLBACK,
+ g_param_spec_boolean ("fallback", "fallback",
+ "Fall back to using OSS if Esound daemon is not present", FALSE,
+ G_PARAM_READWRITE));
#endif
gobject_class->set_property = gst_esdsink_set_property;
gobject_class->get_property = gst_esdsink_get_property;
gstelement_class->change_state = gst_esdsink_change_state;
- gstelement_class->set_clock = gst_esdsink_set_clock;
- gstelement_class->get_clock = gst_esdsink_get_clock;
+ gstelement_class->set_clock = gst_esdsink_set_clock;
+ gstelement_class->get_clock = gst_esdsink_get_clock;
}
static void
-gst_esdsink_init(GTypeInstance *instance, gpointer g_class)
+gst_esdsink_init (GTypeInstance * instance, gpointer g_class)
{
GstEsdsink *esdsink = GST_ESDSINK (instance);
-
- esdsink->sinkpad = gst_pad_new_from_template (
- gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (instance), "sink"),
- "sink");
- gst_element_add_pad(GST_ELEMENT(esdsink), esdsink->sinkpad);
- gst_pad_set_chain_function(esdsink->sinkpad, GST_DEBUG_FUNCPTR(gst_esdsink_chain));
+
+ esdsink->sinkpad =
+ gst_pad_new_from_template (gst_element_class_get_pad_template
+ (GST_ELEMENT_GET_CLASS (instance), "sink"), "sink");
+ gst_element_add_pad (GST_ELEMENT (esdsink), esdsink->sinkpad);
+ gst_pad_set_chain_function (esdsink->sinkpad,
+ GST_DEBUG_FUNCPTR (gst_esdsink_chain));
GST_FLAG_SET (esdsink, GST_ELEMENT_EVENT_AWARE);
esdsink->mute = FALSE;
esdsink->fd = -1;
/* FIXME: get default from somewhere better than just putting them inline. */
- /*esdsink->negotiated = FALSE;*/
+ /*esdsink->negotiated = FALSE; */
/* we have static caps on our template, so it always is negotiated */
esdsink->negotiated = TRUE;
esdsink->format = 16;
esdsink->depth = 16;
esdsink->channels = 2;
esdsink->frequency = 44100;
- esdsink->bytes_per_sample = esdsink->channels * (esdsink->depth/8);
+ esdsink->bytes_per_sample = esdsink->channels * (esdsink->depth / 8);
esdsink->host = getenv ("ESPEAKER");
- esdsink->provided_clock = gst_audio_clock_new("esdclock", gst_esdsink_get_time, esdsink);
- gst_object_set_parent(GST_OBJECT(esdsink->provided_clock), GST_OBJECT(esdsink));
+ esdsink->provided_clock =
+ gst_audio_clock_new ("esdclock", gst_esdsink_get_time, esdsink);
+ gst_object_set_parent (GST_OBJECT (esdsink->provided_clock),
+ GST_OBJECT (esdsink));
esdsink->sync = TRUE;
esdsink->fallback = FALSE;
}
#ifdef unused
static GstPadLinkReturn
-gst_esdsink_link (GstPad *pad, const GstCaps *caps)
+gst_esdsink_link (GstPad * pad, const GstCaps * caps)
{
GstEsdsink *esdsink;
GstStructure *structure;
@@ -199,7 +198,7 @@ gst_esdsink_link (GstPad *pad, const GstCaps *caps)
gst_structure_get_int (structure, "channels", &esdsink->channels);
gst_structure_get_int (structure, "rate", &esdsink->frequency);
- esdsink->bytes_per_sample = esdsink->channels * (esdsink->depth/8);
+ esdsink->bytes_per_sample = esdsink->channels * (esdsink->depth / 8);
gst_esdsink_close_audio (esdsink);
if (gst_esdsink_open_audio (esdsink)) {
@@ -215,29 +214,29 @@ gst_esdsink_link (GstPad *pad, const GstCaps *caps)
#endif
static GstClockTime
-gst_esdsink_get_time (GstClock *clock, gpointer data)
+gst_esdsink_get_time (GstClock * clock, gpointer data)
{
- GstEsdsink *esdsink = GST_ESDSINK(data);
+ GstEsdsink *esdsink = GST_ESDSINK (data);
GstClockTime res;
res = (esdsink->handled * GST_SECOND) / esdsink->frequency;
- //- GST_SECOND * 2;
+ //- GST_SECOND * 2;
return res;
}
static GstClock *
-gst_esdsink_get_clock (GstElement *element)
+gst_esdsink_get_clock (GstElement * element)
{
GstEsdsink *esdsink;
esdsink = GST_ESDSINK (element);
- return GST_CLOCK(esdsink->provided_clock);
+ return GST_CLOCK (esdsink->provided_clock);
}
static void
-gst_esdsink_set_clock (GstElement *element, GstClock *clock)
+gst_esdsink_set_clock (GstElement * element, GstClock * clock)
{
GstEsdsink *esdsink;
@@ -247,7 +246,7 @@ gst_esdsink_set_clock (GstElement *element, GstClock *clock)
}
static void
-gst_esdsink_chain (GstPad *pad, GstData *_data)
+gst_esdsink_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstEsdsink *esdsink;
@@ -256,24 +255,24 @@ gst_esdsink_chain (GstPad *pad, GstData *_data)
if (!esdsink->negotiated) {
GST_ELEMENT_ERROR (esdsink, CORE, NEGOTIATION, (NULL),
- ("element wasn't negotiated before chain function"));
+ ("element wasn't negotiated before chain function"));
goto done;
}
- if (GST_IS_EVENT(buf)){
- GstEvent *event = GST_EVENT(buf);
+ if (GST_IS_EVENT (buf)) {
+ GstEvent *event = GST_EVENT (buf);
- switch(GST_EVENT_TYPE(event)){
+ switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
gst_audio_clock_set_active (GST_AUDIO_CLOCK (esdsink->provided_clock),
FALSE);
gst_pad_event_default (pad, event);
return;
default:
- gst_pad_event_default(pad, event);
+ gst_pad_event_default (pad, event);
return;
}
- gst_event_unref(event);
+ gst_event_unref (event);
return;
}
@@ -286,17 +285,17 @@ gst_esdsink_chain (GstPad *pad, GstData *_data)
to_write = size;
GST_LOG ("fd=%d data=%p size=%d",
- esdsink->fd, GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
- while (to_write > 0){
+ esdsink->fd, GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ while (to_write > 0) {
int done;
- done = write (esdsink->fd, data, to_write);
+ done = write (esdsink->fd, data, to_write);
- if(done < 0){
- if(errno==EINTR){
+ if (done < 0) {
+ if (errno == EINTR) {
goto done;
}
- g_assert_not_reached();
+ g_assert_not_reached ();
}
to_write -= done;
@@ -307,7 +306,7 @@ gst_esdsink_chain (GstPad *pad, GstData *_data)
}
}
- gst_audio_clock_update_time ((GstAudioClock *)esdsink->provided_clock,
+ gst_audio_clock_update_time ((GstAudioClock *) esdsink->provided_clock,
gst_esdsink_get_time (esdsink->provided_clock, esdsink));
done:
@@ -315,24 +314,25 @@ done:
}
static void
-gst_esdsink_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_esdsink_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstEsdsink *esdsink;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_ESDSINK(object));
- esdsink = GST_ESDSINK(object);
+ g_return_if_fail (GST_IS_ESDSINK (object));
+ esdsink = GST_ESDSINK (object);
switch (prop_id) {
case ARG_MUTE:
esdsink->mute = g_value_get_boolean (value);
break;
case ARG_HOST:
- g_free(esdsink->host);
+ g_free (esdsink->host);
if (g_value_get_string (value) == NULL)
- esdsink->host = NULL;
+ esdsink->host = NULL;
else
- esdsink->host = g_strdup (g_value_get_string (value));
+ esdsink->host = g_strdup (g_value_get_string (value));
break;
case ARG_SYNC:
esdsink->sync = g_value_get_boolean (value);
@@ -346,11 +346,12 @@ gst_esdsink_set_property (GObject *object, guint prop_id, const GValue *value, G
}
static void
-gst_esdsink_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_esdsink_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstEsdsink *esdsink;
- esdsink = GST_ESDSINK(object);
+ esdsink = GST_ESDSINK (object);
switch (prop_id) {
case ARG_MUTE:
@@ -372,50 +373,58 @@ gst_esdsink_get_property (GObject *object, guint prop_id, GValue *value, GParamS
}
gboolean
-gst_esdsink_factory_init (GstPlugin *plugin)
+gst_esdsink_factory_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "esdsink", GST_RANK_NONE, GST_TYPE_ESDSINK))
+ if (!gst_element_register (plugin, "esdsink", GST_RANK_NONE,
+ GST_TYPE_ESDSINK))
return FALSE;
return TRUE;
}
static gboolean
-gst_esdsink_open_audio (GstEsdsink *sink)
+gst_esdsink_open_audio (GstEsdsink * sink)
{
/* Name used by esound for this connection. */
- const char * connname = "GStreamer";
+ const char *connname = "GStreamer";
/* Bitmap describing audio format. */
esd_format_t esdformat = ESD_STREAM | ESD_PLAY;
g_return_val_if_fail (sink->fd == -1, FALSE);
- if (sink->depth == 16) esdformat |= ESD_BITS16;
- else if (sink->depth == 8) esdformat |= ESD_BITS8;
+ if (sink->depth == 16)
+ esdformat |= ESD_BITS16;
+ else if (sink->depth == 8)
+ esdformat |= ESD_BITS8;
else {
GST_ELEMENT_ERROR (sink, STREAM, FORMAT, (NULL),
- ("invalid bit depth (%d)", sink->depth));
+ ("invalid bit depth (%d)", sink->depth));
return FALSE;
}
- if (sink->channels == 2) esdformat |= ESD_STEREO;
- else if (sink->channels == 1) esdformat |= ESD_MONO;
+ if (sink->channels == 2)
+ esdformat |= ESD_STEREO;
+ else if (sink->channels == 1)
+ esdformat |= ESD_MONO;
else {
GST_ELEMENT_ERROR (sink, STREAM, FORMAT, (NULL),
- ("invalid number of channels (%d)", sink->channels));
+ ("invalid number of channels (%d)", sink->channels));
return FALSE;
}
GST_INFO ("attempting to open connection to esound server");
- if(sink->fallback){
- sink->fd = esd_play_stream_fallback(esdformat, sink->frequency, sink->host, connname);
- }else{
- sink->fd = esd_play_stream(esdformat, sink->frequency, sink->host, connname);
+ if (sink->fallback) {
+ sink->fd =
+ esd_play_stream_fallback (esdformat, sink->frequency, sink->host,
+ connname);
+ } else {
+ sink->fd =
+ esd_play_stream (esdformat, sink->frequency, sink->host, connname);
}
- if ( sink->fd < 0 ) {
+ if (sink->fd < 0) {
GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, (NULL),
- ("can't open connection to esound server"));
+ ("can't open connection to esound server"));
return FALSE;
}
GST_INFO ("successfully opened connection to esound server");
@@ -424,19 +433,19 @@ gst_esdsink_open_audio (GstEsdsink *sink)
}
static void
-gst_esdsink_close_audio (GstEsdsink *sink)
+gst_esdsink_close_audio (GstEsdsink * sink)
{
- if (sink->fd < 0)
+ if (sink->fd < 0)
return;
- close(sink->fd);
+ close (sink->fd);
sink->fd = -1;
GST_INFO ("esdsink: closed sound device");
}
static GstElementStateReturn
-gst_esdsink_change_state (GstElement *element)
+gst_esdsink_change_state (GstElement * element)
{
GstEsdsink *esdsink;
@@ -445,7 +454,7 @@ gst_esdsink_change_state (GstElement *element)
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_NULL_TO_READY:
if (!gst_esdsink_open_audio (GST_ESDSINK (element))) {
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
break;
case GST_STATE_READY_TO_PAUSED:
@@ -473,4 +482,3 @@ gst_esdsink_change_state (GstElement *element)
return GST_STATE_SUCCESS;
}
-
diff --git a/ext/esd/esdsink.h b/ext/esd/esdsink.h
index 9bf81641..f88f29b1 100644
--- a/ext/esd/esdsink.h
+++ b/ext/esd/esdsink.h
@@ -25,7 +25,6 @@
#include <gst/audio/audioclock.h>
G_BEGIN_DECLS
-
#define GST_TYPE_ESDSINK \
(gst_esdsink_get_type())
#define GST_ESDSINK(obj) \
@@ -36,41 +35,41 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ESDSINK))
#define GST_IS_ESDSINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ESDSINK))
-
typedef struct _GstEsdsink GstEsdsink;
typedef struct _GstEsdsinkClass GstEsdsinkClass;
-struct _GstEsdsink {
- GstElement element;
+struct _GstEsdsink
+{
+ GstElement element;
- GstPad *sinkpad;
+ GstPad *sinkpad;
- GstClock *provided_clock;
- GstClock *clock;
+ GstClock *provided_clock;
+ GstClock *clock;
- gboolean mute;
- int fd;
- gint format;
- gint depth;
- gint channels;
- gint frequency;
- gboolean negotiated;
- gchar *host;
- int handled;
- int bytes_per_sample;
- gboolean sync;
- gboolean resync;
- gboolean fallback;
+ gboolean mute;
+ int fd;
+ gint format;
+ gint depth;
+ gint channels;
+ gint frequency;
+ gboolean negotiated;
+ gchar *host;
+ int handled;
+ int bytes_per_sample;
+ gboolean sync;
+ gboolean resync;
+ gboolean fallback;
};
-struct _GstEsdsinkClass {
+struct _GstEsdsinkClass
+{
GstElementClass parent_class;
};
-GType gst_esdsink_get_type(void);
-gboolean gst_esdsink_factory_init (GstPlugin *plugin);
+GType gst_esdsink_get_type (void);
+gboolean gst_esdsink_factory_init (GstPlugin * plugin);
G_END_DECLS
-
#endif /* __GST_ESDSINK_H__ */
diff --git a/ext/esd/gstesd.c b/ext/esd/gstesd.c
index ea480a30..4ee03364 100644
--- a/ext/esd/gstesd.c
+++ b/ext/esd/gstesd.c
@@ -27,30 +27,27 @@
GST_DEBUG_CATEGORY (esd_debug);
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
gboolean ret;
- if (!gst_library_load ("gstaudio")) return FALSE;
+ if (!gst_library_load ("gstaudio"))
+ return FALSE;
- ret = gst_esdsink_factory_init(plugin);
- if(ret == FALSE) return FALSE;
+ ret = gst_esdsink_factory_init (plugin);
+ if (ret == FALSE)
+ return FALSE;
- ret = gst_esdmon_factory_init(plugin);
- if(ret == FALSE) return FALSE;
+ ret = gst_esdmon_factory_init (plugin);
+ if (ret == FALSE)
+ return FALSE;
GST_DEBUG_CATEGORY_INIT (esd_debug, "esd", 0, "ESounD elements");
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "esdsink",
- "ESD Element Plugins",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
-
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "esdsink",
+ "ESD Element Plugins",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/flac/flac_compat.h b/ext/flac/flac_compat.h
index 87b5b864..defa969d 100644
--- a/ext/flac/flac_compat.h
+++ b/ext/flac/flac_compat.h
@@ -16,7 +16,7 @@
/* FIXME when there's a autoconf symbol */
#ifndef FLAC_VERSION
-#ifndef FLAC__VERSION_STRING /* removed in 1.0.4 */
+#ifndef FLAC__VERSION_STRING /* removed in 1.0.4 */
#define FLAC_VERSION 0x010004
#else
#ifdef FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE
diff --git a/ext/flac/gstflac.c b/ext/flac/gstflac.c
index 3c06cacf..c1dba934 100644
--- a/ext/flac/gstflac.c
+++ b/ext/flac/gstflac.c
@@ -28,7 +28,7 @@
#include "flac_compat.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_library_load ("gstbytestream"))
return FALSE;
@@ -37,25 +37,23 @@ plugin_init (GstPlugin *plugin)
if (!gst_plugin_load ("gsttags"))
return FALSE;
- if (!gst_element_register (plugin, "flacenc", GST_RANK_NONE, GST_TYPE_FLACENC))
+ if (!gst_element_register (plugin, "flacenc", GST_RANK_NONE,
+ GST_TYPE_FLACENC))
return FALSE;
- if (!gst_element_register (plugin, "flacdec", GST_RANK_PRIMARY, GST_TYPE_FLACDEC))
+ if (!gst_element_register (plugin, "flacdec", GST_RANK_PRIMARY,
+ GST_TYPE_FLACDEC))
return FALSE;
- if (!gst_element_register (plugin, "flactag", GST_RANK_PRIMARY, gst_flac_tag_get_type ()))
+ if (!gst_element_register (plugin, "flactag", GST_RANK_PRIMARY,
+ gst_flac_tag_get_type ()))
return FALSE;
-
+
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "flac",
- "The FLAC Lossless compressor Codec",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "flac",
+ "The FLAC Lossless compressor Codec",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c
index 25769bcf..3882df1a 100644
--- a/ext/flac/gstflacdec.c
+++ b/ext/flac/gstflacdec.c
@@ -41,104 +41,101 @@ GstElementDetails flacdec_details = {
};
/* FlacDec signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_METADATA
};
-static void gst_flacdec_base_init (gpointer g_class);
-static void gst_flacdec_class_init (FlacDecClass *klass);
-static void gst_flacdec_init (FlacDec *flacdec);
+static void gst_flacdec_base_init (gpointer g_class);
+static void gst_flacdec_class_init (FlacDecClass * klass);
+static void gst_flacdec_init (FlacDec * flacdec);
+
+static void gst_flacdec_loop (GstElement * element);
+static GstElementStateReturn gst_flacdec_change_state (GstElement * element);
+static const GstFormat *gst_flacdec_get_src_formats (GstPad * pad);
+static gboolean gst_flacdec_convert_src (GstPad * pad, GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+static const GstQueryType *gst_flacdec_get_src_query_types (GstPad * pad);
+static gboolean gst_flacdec_src_query (GstPad * pad, GstQueryType type,
+ GstFormat * format, gint64 * value);
+static const GstEventMask *gst_flacdec_get_src_event_masks (GstPad * pad);
+static gboolean gst_flacdec_src_event (GstPad * pad, GstEvent * event);
-static void gst_flacdec_loop (GstElement *element);
-static GstElementStateReturn
- gst_flacdec_change_state (GstElement *element);
-static const GstFormat* gst_flacdec_get_src_formats (GstPad *pad);
-static gboolean gst_flacdec_convert_src (GstPad *pad, GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value);
-static const GstQueryType*
- gst_flacdec_get_src_query_types (GstPad *pad);
-static gboolean gst_flacdec_src_query (GstPad *pad, GstQueryType type,
- GstFormat *format, gint64 *value);
-static const GstEventMask*
- gst_flacdec_get_src_event_masks (GstPad *pad);
-static gboolean gst_flacdec_src_event (GstPad *pad, GstEvent *event);
-
-static FLAC__SeekableStreamDecoderReadStatus
- gst_flacdec_read (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__byte buffer[], unsigned *bytes,
- void *client_data);
-static FLAC__SeekableStreamDecoderSeekStatus
- gst_flacdec_seek (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__uint64 position, void *client_data);
-static FLAC__SeekableStreamDecoderTellStatus
- gst_flacdec_tell (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__uint64 *position, void *client_data);
-static FLAC__SeekableStreamDecoderLengthStatus
- gst_flacdec_length (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__uint64 *length, void *client_data);
-static FLAC__bool gst_flacdec_eof (const FLAC__SeekableStreamDecoder *decoder,
- void *client_data);
-static FLAC__StreamDecoderWriteStatus
- gst_flacdec_write (const FLAC__SeekableStreamDecoder *decoder,
- const FLAC__Frame *frame,
- const FLAC__int32 * const buffer[],
- void *client_data);
-static void gst_flacdec_metadata_callback (const FLAC__SeekableStreamDecoder *decoder,
- const FLAC__StreamMetadata *metadata,
- void *client_data);
-static void gst_flacdec_error_callback (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__StreamDecoderErrorStatus status,
- void *client_data);
+static FLAC__SeekableStreamDecoderReadStatus
+gst_flacdec_read (const FLAC__SeekableStreamDecoder * decoder,
+ FLAC__byte buffer[], unsigned *bytes, void *client_data);
+static FLAC__SeekableStreamDecoderSeekStatus
+gst_flacdec_seek (const FLAC__SeekableStreamDecoder * decoder,
+ FLAC__uint64 position, void *client_data);
+static FLAC__SeekableStreamDecoderTellStatus
+gst_flacdec_tell (const FLAC__SeekableStreamDecoder * decoder,
+ FLAC__uint64 * position, void *client_data);
+static FLAC__SeekableStreamDecoderLengthStatus
+gst_flacdec_length (const FLAC__SeekableStreamDecoder * decoder,
+ FLAC__uint64 * length, void *client_data);
+static FLAC__bool gst_flacdec_eof (const FLAC__SeekableStreamDecoder * decoder,
+ void *client_data);
+static FLAC__StreamDecoderWriteStatus
+gst_flacdec_write (const FLAC__SeekableStreamDecoder * decoder,
+ const FLAC__Frame * frame,
+ const FLAC__int32 * const buffer[], void *client_data);
+static void gst_flacdec_metadata_callback (const FLAC__SeekableStreamDecoder *
+ decoder, const FLAC__StreamMetadata * metadata, void *client_data);
+static void gst_flacdec_error_callback (const FLAC__SeekableStreamDecoder *
+ decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_flacdec_signals[LAST_SIGNAL] = { 0 }; */
GType
-flacdec_get_type(void) {
+flacdec_get_type (void)
+{
static GType flacdec_type = 0;
if (!flacdec_type) {
static const GTypeInfo flacdec_info = {
- sizeof(FlacDecClass),
+ sizeof (FlacDecClass),
gst_flacdec_base_init,
NULL,
- (GClassInitFunc)gst_flacdec_class_init,
+ (GClassInitFunc) gst_flacdec_class_init,
NULL,
NULL,
- sizeof(FlacDec),
+ sizeof (FlacDec),
0,
- (GInstanceInitFunc)gst_flacdec_init,
+ (GInstanceInitFunc) gst_flacdec_init,
};
- flacdec_type = g_type_register_static (GST_TYPE_ELEMENT, "FlacDec", &flacdec_info, 0);
+ flacdec_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "FlacDec", &flacdec_info, 0);
}
return flacdec_type;
}
-static GstCaps*
+static GstCaps *
flac_caps_factory (void)
{
return gst_caps_new_simple ("audio/x-flac", NULL);
- /* "rate", GST_PROPS_INT_RANGE (11025, 48000),
- * "channels", GST_PROPS_INT_RANGE (1, 2), */
+ /* "rate", GST_PROPS_INT_RANGE (11025, 48000),
+ * "channels", GST_PROPS_INT_RANGE (1, 2), */
}
-static GstCaps*
+static GstCaps *
raw_caps_factory (void)
{
return gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "width", G_TYPE_INT, 16,
- "depth", G_TYPE_INT, 16,
- "rate", GST_TYPE_INT_RANGE, 11025, 48000,
- "channels", GST_TYPE_INT_RANGE, 1, 2,
- NULL);
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "signed", G_TYPE_BOOLEAN, TRUE,
+ "width", G_TYPE_INT, 16,
+ "depth", G_TYPE_INT, 16,
+ "rate", GST_TYPE_INT_RANGE, 11025, 48000,
+ "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
}
static void
@@ -152,7 +149,7 @@ gst_flacdec_base_init (gpointer g_class)
sink_template = gst_pad_template_new ("sink", GST_PAD_SINK,
GST_PAD_ALWAYS, flac_caps);
- src_template = gst_pad_template_new ("src", GST_PAD_SRC,
+ src_template = gst_pad_template_new ("src", GST_PAD_SRC,
GST_PAD_ALWAYS, raw_caps);
gst_element_class_add_pad_template (element_class, sink_template);
gst_element_class_add_pad_template (element_class, src_template);
@@ -160,21 +157,21 @@ gst_flacdec_base_init (gpointer g_class)
}
static void
-gst_flacdec_class_init (FlacDecClass *klass)
+gst_flacdec_class_init (FlacDecClass * klass)
{
GstElementClass *gstelement_class;
GObjectClass *gobject_class;
- gstelement_class = (GstElementClass*)klass;
- gobject_class = (GObjectClass*) klass;
+ gstelement_class = (GstElementClass *) klass;
+ gobject_class = (GObjectClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gstelement_class->change_state = gst_flacdec_change_state;
}
-static void
-gst_flacdec_init (FlacDec *flacdec)
+static void
+gst_flacdec_init (FlacDec * flacdec)
{
flacdec->sinkpad = gst_pad_new_from_template (sink_template, "sink");
gst_element_add_pad (GST_ELEMENT (flacdec), flacdec->sinkpad);
@@ -185,9 +182,11 @@ gst_flacdec_init (FlacDec *flacdec)
gst_element_add_pad (GST_ELEMENT (flacdec), flacdec->srcpad);
gst_pad_set_formats_function (flacdec->srcpad, gst_flacdec_get_src_formats);
gst_pad_set_convert_function (flacdec->srcpad, gst_flacdec_convert_src);
- gst_pad_set_query_type_function (flacdec->srcpad, gst_flacdec_get_src_query_types);
+ gst_pad_set_query_type_function (flacdec->srcpad,
+ gst_flacdec_get_src_query_types);
gst_pad_set_query_function (flacdec->srcpad, gst_flacdec_src_query);
- gst_pad_set_event_mask_function (flacdec->srcpad, gst_flacdec_get_src_event_masks);
+ gst_pad_set_event_mask_function (flacdec->srcpad,
+ gst_flacdec_get_src_event_masks);
gst_pad_set_event_function (flacdec->srcpad, gst_flacdec_src_event);
gst_pad_use_explicit_caps (flacdec->srcpad);
@@ -197,30 +196,39 @@ gst_flacdec_init (FlacDec *flacdec)
flacdec->eos = FALSE;
flacdec->seek_pending = FALSE;
- FLAC__seekable_stream_decoder_set_read_callback (flacdec->decoder, gst_flacdec_read);
- FLAC__seekable_stream_decoder_set_seek_callback (flacdec->decoder, gst_flacdec_seek);
- FLAC__seekable_stream_decoder_set_tell_callback (flacdec->decoder, gst_flacdec_tell);
- FLAC__seekable_stream_decoder_set_length_callback (flacdec->decoder, gst_flacdec_length);
- FLAC__seekable_stream_decoder_set_eof_callback (flacdec->decoder, gst_flacdec_eof);
+ FLAC__seekable_stream_decoder_set_read_callback (flacdec->decoder,
+ gst_flacdec_read);
+ FLAC__seekable_stream_decoder_set_seek_callback (flacdec->decoder,
+ gst_flacdec_seek);
+ FLAC__seekable_stream_decoder_set_tell_callback (flacdec->decoder,
+ gst_flacdec_tell);
+ FLAC__seekable_stream_decoder_set_length_callback (flacdec->decoder,
+ gst_flacdec_length);
+ FLAC__seekable_stream_decoder_set_eof_callback (flacdec->decoder,
+ gst_flacdec_eof);
#if FLAC_VERSION >= 0x010003
- FLAC__seekable_stream_decoder_set_write_callback (flacdec->decoder, gst_flacdec_write);
+ FLAC__seekable_stream_decoder_set_write_callback (flacdec->decoder,
+ gst_flacdec_write);
#else
FLAC__seekable_stream_decoder_set_write_callback (flacdec->decoder,
- (FLAC__StreamDecoderWriteStatus (*)
- (const FLAC__SeekableStreamDecoder *decoder,
- const FLAC__Frame *frame,
- const FLAC__int32 *buffer[],
- void *client_data))
- (gst_flacdec_write));
+ (FLAC__StreamDecoderWriteStatus (*)
+ (const FLAC__SeekableStreamDecoder * decoder,
+ const FLAC__Frame * frame,
+ const FLAC__int32 * buffer[], void *client_data))
+ (gst_flacdec_write));
#endif
- FLAC__seekable_stream_decoder_set_metadata_respond (flacdec->decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT);
- FLAC__seekable_stream_decoder_set_metadata_callback (flacdec->decoder, gst_flacdec_metadata_callback);
- FLAC__seekable_stream_decoder_set_error_callback (flacdec->decoder, gst_flacdec_error_callback);
+ FLAC__seekable_stream_decoder_set_metadata_respond (flacdec->decoder,
+ FLAC__METADATA_TYPE_VORBIS_COMMENT);
+ FLAC__seekable_stream_decoder_set_metadata_callback (flacdec->decoder,
+ gst_flacdec_metadata_callback);
+ FLAC__seekable_stream_decoder_set_error_callback (flacdec->decoder,
+ gst_flacdec_error_callback);
FLAC__seekable_stream_decoder_set_client_data (flacdec->decoder, flacdec);
}
static gboolean
-gst_flacdec_update_metadata (FlacDec *flacdec, const FLAC__StreamMetadata *metadata)
+gst_flacdec_update_metadata (FlacDec * flacdec,
+ const FLAC__StreamMetadata * metadata)
{
GstTagList *list;
guint32 number_of_comments, cursor, str_len;
@@ -233,17 +241,15 @@ gst_flacdec_update_metadata (FlacDec *flacdec, const FLAC__StreamMetadata *metad
number_of_comments = metadata->data.vorbis_comment.num_comments;
value = NULL;
- GST_DEBUG ("%d tag(s) found", number_of_comments);
- for (cursor = 0; cursor < number_of_comments; cursor++)
- {
+ GST_DEBUG ("%d tag(s) found", number_of_comments);
+ for (cursor = 0; cursor < number_of_comments; cursor++) {
str_ptr = metadata->data.vorbis_comment.comments[cursor].entry;
str_len = metadata->data.vorbis_comment.comments[cursor].length;
- p_value = g_strstr_len ( str_ptr, str_len , "=" );
- if (p_value)
- {
+ p_value = g_strstr_len (str_ptr, str_len, "=");
+ if (p_value) {
name = g_strndup (str_ptr, p_value - str_ptr);
value = g_strndup (p_value + 1, str_ptr + str_len - p_value - 1);
-
+
GST_DEBUG ("%s : %s", name, value);
gst_vorbis_tag_add (list, name, value);
g_free (name);
@@ -260,30 +266,29 @@ gst_flacdec_update_metadata (FlacDec *flacdec, const FLAC__StreamMetadata *metad
}
-static void
-gst_flacdec_metadata_callback (const FLAC__SeekableStreamDecoder *decoder,
- const FLAC__StreamMetadata *metadata, void *client_data)
+static void
+gst_flacdec_metadata_callback (const FLAC__SeekableStreamDecoder * decoder,
+ const FLAC__StreamMetadata * metadata, void *client_data)
{
FlacDec *flacdec;
-
+
flacdec = GST_FLACDEC (client_data);
- switch (metadata->type)
- {
+ switch (metadata->type) {
case FLAC__METADATA_TYPE_STREAMINFO:
- flacdec->stream_samples = metadata->data.stream_info.total_samples;
- break;
+ flacdec->stream_samples = metadata->data.stream_info.total_samples;
+ break;
case FLAC__METADATA_TYPE_VORBIS_COMMENT:
- gst_flacdec_update_metadata (flacdec, metadata);
- break;
+ gst_flacdec_update_metadata (flacdec, metadata);
+ break;
default:
- break;
+ break;
}
}
-static void
-gst_flacdec_error_callback (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__StreamDecoderErrorStatus status, void *client_data)
+static void
+gst_flacdec_error_callback (const FLAC__SeekableStreamDecoder * decoder,
+ FLAC__StreamDecoderErrorStatus status, void *client_data)
{
FlacDec *flacdec;
gchar *error;
@@ -308,9 +313,9 @@ gst_flacdec_error_callback (const FLAC__SeekableStreamDecoder *decoder,
GST_ELEMENT_ERROR (flacdec, STREAM, DECODE, (NULL), (error));
}
-static FLAC__SeekableStreamDecoderSeekStatus
-gst_flacdec_seek (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__uint64 position, void *client_data)
+static FLAC__SeekableStreamDecoderSeekStatus
+gst_flacdec_seek (const FLAC__SeekableStreamDecoder * decoder,
+ FLAC__uint64 position, void *client_data)
{
FlacDec *flacdec;
@@ -323,9 +328,9 @@ gst_flacdec_seek (const FLAC__SeekableStreamDecoder *decoder,
return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK;
}
-static FLAC__SeekableStreamDecoderTellStatus
-gst_flacdec_tell (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__uint64 *position, void *client_data)
+static FLAC__SeekableStreamDecoderTellStatus
+gst_flacdec_tell (const FLAC__SeekableStreamDecoder * decoder,
+ FLAC__uint64 * position, void *client_data)
{
FlacDec *flacdec;
@@ -340,9 +345,9 @@ gst_flacdec_tell (const FLAC__SeekableStreamDecoder *decoder,
return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK;
}
-static FLAC__SeekableStreamDecoderLengthStatus
-gst_flacdec_length (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__uint64 *length, void *client_data)
+static FLAC__SeekableStreamDecoderLengthStatus
+gst_flacdec_length (const FLAC__SeekableStreamDecoder * decoder,
+ FLAC__uint64 * length, void *client_data)
{
FlacDec *flacdec;
@@ -358,8 +363,7 @@ gst_flacdec_length (const FLAC__SeekableStreamDecoder *decoder,
}
static FLAC__bool
-gst_flacdec_eof (const FLAC__SeekableStreamDecoder *decoder,
- void *client_data)
+gst_flacdec_eof (const FLAC__SeekableStreamDecoder * decoder, void *client_data)
{
FlacDec *flacdec;
@@ -370,9 +374,8 @@ gst_flacdec_eof (const FLAC__SeekableStreamDecoder *decoder,
}
static FLAC__SeekableStreamDecoderReadStatus
-gst_flacdec_read (const FLAC__SeekableStreamDecoder *decoder,
- FLAC__byte buffer[], unsigned *bytes,
- void *client_data)
+gst_flacdec_read (const FLAC__SeekableStreamDecoder * decoder,
+ FLAC__byte buffer[], unsigned *bytes, void *client_data)
{
FlacDec *flacdec;
gint insize = 0;
@@ -381,39 +384,39 @@ gst_flacdec_read (const FLAC__SeekableStreamDecoder *decoder,
flacdec = GST_FLACDEC (client_data);
//g_print ("read %u\n", *bytes);
-
+
while (insize == 0) {
insize = gst_bytestream_peek_bytes (flacdec->bs, &indata, *bytes);
if (insize < *bytes) {
GstEvent *event;
guint32 avail;
-
+
gst_bytestream_get_status (flacdec->bs, &avail, &event);
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_EOS:
- GST_DEBUG ("eos");
- flacdec->eos = TRUE;
+ case GST_EVENT_EOS:
+ GST_DEBUG ("eos");
+ flacdec->eos = TRUE;
gst_event_unref (event);
- if (avail == 0) {
- return 0;
- }
- break;
- case GST_EVENT_DISCONTINUOUS:
- GST_DEBUG ("discont");
+ if (avail == 0) {
+ return 0;
+ }
+ break;
+ case GST_EVENT_DISCONTINUOUS:
+ GST_DEBUG ("discont");
/* we are not yet sending the discont, we'll do that in the next write operation */
flacdec->need_discont = TRUE;
gst_event_unref (event);
break;
- default:
+ default:
gst_pad_event_default (flacdec->sinkpad, event);
- break;
+ break;
}
if (avail > 0)
- insize = gst_bytestream_peek_bytes (flacdec->bs, &indata, avail);
+ insize = gst_bytestream_peek_bytes (flacdec->bs, &indata, avail);
else
- insize = 0;
+ insize = 0;
}
}
@@ -425,10 +428,9 @@ gst_flacdec_read (const FLAC__SeekableStreamDecoder *decoder,
}
static FLAC__StreamDecoderWriteStatus
-gst_flacdec_write (const FLAC__SeekableStreamDecoder *decoder,
- const FLAC__Frame *frame,
- const FLAC__int32 * const buffer[],
- void *client_data)
+gst_flacdec_write (const FLAC__SeekableStreamDecoder * decoder,
+ const FLAC__Frame * frame,
+ const FLAC__int32 * const buffer[], void *client_data)
{
FlacDec *flacdec;
GstBuffer *outbuf;
@@ -445,41 +447,39 @@ gst_flacdec_write (const FLAC__SeekableStreamDecoder *decoder,
GstEvent *discont;
flacdec->need_discont = FALSE;
-
+
if (!GST_PAD_CAPS (flacdec->srcpad)) {
if (flacdec->seek_pending) {
- flacdec->total_samples = flacdec->seek_value;
+ flacdec->total_samples = flacdec->seek_value;
}
if (GST_PAD_IS_USABLE (flacdec->srcpad)) {
- GST_DEBUG ("send discont");
-
- format = GST_FORMAT_TIME;
- gst_pad_convert (flacdec->srcpad, GST_FORMAT_DEFAULT,
- flacdec->total_samples, &format, &time);
- format = GST_FORMAT_BYTES;
- gst_pad_convert (flacdec->srcpad, GST_FORMAT_DEFAULT,
- flacdec->total_samples, &format, &bytes);
- discont = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME, time,
- GST_FORMAT_BYTES, bytes,
- GST_FORMAT_DEFAULT, flacdec->total_samples,
- NULL);
-
- gst_pad_push (flacdec->srcpad, GST_DATA (discont));
+ GST_DEBUG ("send discont");
+
+ format = GST_FORMAT_TIME;
+ gst_pad_convert (flacdec->srcpad, GST_FORMAT_DEFAULT,
+ flacdec->total_samples, &format, &time);
+ format = GST_FORMAT_BYTES;
+ gst_pad_convert (flacdec->srcpad, GST_FORMAT_DEFAULT,
+ flacdec->total_samples, &format, &bytes);
+ discont = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME, time,
+ GST_FORMAT_BYTES, bytes,
+ GST_FORMAT_DEFAULT, flacdec->total_samples, NULL);
+
+ gst_pad_push (flacdec->srcpad, GST_DATA (discont));
}
}
}
-
+
if (!GST_PAD_CAPS (flacdec->srcpad)) {
gst_pad_set_explicit_caps (flacdec->srcpad,
- gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "width", G_TYPE_INT, depth,
- "depth", G_TYPE_INT, depth,
- "rate", G_TYPE_INT, frame->header.sample_rate,
- "channels", G_TYPE_INT, channels,
- NULL));
+ gst_caps_new_simple ("audio/x-raw-int",
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "signed", G_TYPE_BOOLEAN, TRUE,
+ "width", G_TYPE_INT, depth,
+ "depth", G_TYPE_INT, depth,
+ "rate", G_TYPE_INT, frame->header.sample_rate,
+ "channels", G_TYPE_INT, channels, NULL));
flacdec->depth = depth;
flacdec->channels = channels;
@@ -488,29 +488,28 @@ gst_flacdec_write (const FLAC__SeekableStreamDecoder *decoder,
if (GST_PAD_IS_USABLE (flacdec->srcpad)) {
outbuf = gst_buffer_new ();
- GST_BUFFER_SIZE (outbuf) = samples * channels * ((depth+7)>>3);
+ GST_BUFFER_SIZE (outbuf) = samples * channels * ((depth + 7) >> 3);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
- GST_BUFFER_TIMESTAMP (outbuf) = flacdec->total_samples * GST_SECOND / frame->header.sample_rate;
-
+ GST_BUFFER_TIMESTAMP (outbuf) =
+ flacdec->total_samples * GST_SECOND / frame->header.sample_rate;
+
if (depth == 8) {
- guint8 *outbuffer = (guint8 *)GST_BUFFER_DATA (outbuf);
-
- for (i=0; i<samples; i++) {
- for (j=0; j < channels; j++) {
- *outbuffer++ = (guint8) buffer[j][i];
- }
+ guint8 *outbuffer = (guint8 *) GST_BUFFER_DATA (outbuf);
+
+ for (i = 0; i < samples; i++) {
+ for (j = 0; j < channels; j++) {
+ *outbuffer++ = (guint8) buffer[j][i];
+ }
}
- }
- else if (depth == 16) {
- guint16 *outbuffer = (guint16 *)GST_BUFFER_DATA (outbuf);
-
- for (i=0; i<samples; i++) {
- for (j=0; j < channels; j++) {
- *outbuffer++ = (guint16) buffer[j][i];
- }
+ } else if (depth == 16) {
+ guint16 *outbuffer = (guint16 *) GST_BUFFER_DATA (outbuf);
+
+ for (i = 0; i < samples; i++) {
+ for (j = 0; j < channels; j++) {
+ *outbuffer++ = (guint16) buffer[j][i];
+ }
}
- }
- else {
+ } else {
g_warning ("flacdec: invalid depth %d found\n", depth);
return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
}
@@ -521,8 +520,8 @@ gst_flacdec_write (const FLAC__SeekableStreamDecoder *decoder,
return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
}
-static void
-gst_flacdec_loop (GstElement *element)
+static void
+gst_flacdec_loop (GstElement * element)
{
FlacDec *flacdec;
gboolean res;
@@ -530,30 +529,28 @@ gst_flacdec_loop (GstElement *element)
flacdec = GST_FLACDEC (element);
GST_DEBUG ("flacdec: entering loop");
- if (flacdec->init) {
+ if (flacdec->init) {
FLAC__StreamDecoderState res;
- GST_DEBUG ("flacdec: initializing decoder");
+
+ GST_DEBUG ("flacdec: initializing decoder");
res = FLAC__seekable_stream_decoder_init (flacdec->decoder);
if (res != FLAC__SEEKABLE_STREAM_DECODER_OK) {
GST_ELEMENT_ERROR (flacdec, LIBRARY, INIT, (NULL),
- (FLAC__SeekableStreamDecoderStateString[res]));
+ (FLAC__SeekableStreamDecoderStateString[res]));
return;
}
- /* FLAC__seekable_stream_decoder_process_metadata (flacdec->decoder);*/
+ /* FLAC__seekable_stream_decoder_process_metadata (flacdec->decoder); */
flacdec->init = FALSE;
}
if (flacdec->seek_pending) {
- GST_DEBUG ("perform seek to sample %" G_GINT64_FORMAT,
- flacdec->seek_value);
+ GST_DEBUG ("perform seek to sample %" G_GINT64_FORMAT, flacdec->seek_value);
- if (FLAC__seekable_stream_decoder_seek_absolute (flacdec->decoder,
- flacdec->seek_value))
- {
+ if (FLAC__seekable_stream_decoder_seek_absolute (flacdec->decoder,
+ flacdec->seek_value)) {
flacdec->total_samples = flacdec->seek_value;
GST_DEBUG ("seek done");
- }
- else {
+ } else {
GST_DEBUG ("seek failed");
}
flacdec->seek_pending = FALSE;
@@ -562,13 +559,12 @@ gst_flacdec_loop (GstElement *element)
GST_DEBUG ("flacdec: processing single");
res = FLAC__seekable_stream_decoder_process_single (flacdec->decoder);
GST_DEBUG ("flacdec: checking for EOS");
- if (FLAC__seekable_stream_decoder_get_state (flacdec->decoder) ==
- FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM)
- {
+ if (FLAC__seekable_stream_decoder_get_state (flacdec->decoder) ==
+ FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM) {
GstEvent *event;
GST_DEBUG ("flacdec: sending EOS event");
- FLAC__seekable_stream_decoder_reset(flacdec->decoder);
+ FLAC__seekable_stream_decoder_reset (flacdec->decoder);
if (GST_PAD_IS_USABLE (flacdec->srcpad)) {
event = gst_event_new (GST_EVENT_EOS);
@@ -581,8 +577,8 @@ gst_flacdec_loop (GstElement *element)
static const GstFormat *
-gst_flacdec_get_src_formats (GstPad *pad)
-{
+gst_flacdec_get_src_formats (GstPad * pad)
+{
static const GstFormat formats[] = {
GST_FORMAT_DEFAULT,
GST_FORMAT_BYTES,
@@ -590,63 +586,63 @@ gst_flacdec_get_src_formats (GstPad *pad)
0,
};
return formats;
-}
+}
static gboolean
-gst_flacdec_convert_src (GstPad *pad, GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value)
+gst_flacdec_convert_src (GstPad * pad, GstFormat src_format, gint64 src_value,
+ GstFormat * dest_format, gint64 * dest_value)
{
gboolean res = TRUE;
FlacDec *flacdec = GST_FLACDEC (gst_pad_get_parent (pad));
guint scale = 1;
gint bytes_per_sample;
- bytes_per_sample = flacdec->channels * ((flacdec->depth+7)>>3);
+ bytes_per_sample = flacdec->channels * ((flacdec->depth + 7) >> 3);
switch (src_format) {
case GST_FORMAT_BYTES:
switch (*dest_format) {
- case GST_FORMAT_DEFAULT:
- if (bytes_per_sample == 0)
- return FALSE;
- *dest_value = src_value / bytes_per_sample;
- break;
- case GST_FORMAT_TIME:
+ case GST_FORMAT_DEFAULT:
+ if (bytes_per_sample == 0)
+ return FALSE;
+ *dest_value = src_value / bytes_per_sample;
+ break;
+ case GST_FORMAT_TIME:
{
- gint byterate = bytes_per_sample * flacdec->frequency;
+ gint byterate = bytes_per_sample * flacdec->frequency;
- if (byterate == 0)
- return FALSE;
- *dest_value = src_value * GST_SECOND / byterate;
- break;
+ if (byterate == 0)
+ return FALSE;
+ *dest_value = src_value * GST_SECOND / byterate;
+ break;
}
- default:
- res = FALSE;
+ default:
+ res = FALSE;
}
break;
case GST_FORMAT_DEFAULT:
switch (*dest_format) {
- case GST_FORMAT_BYTES:
+ case GST_FORMAT_BYTES:
*dest_value = src_value * bytes_per_sample;
- break;
- case GST_FORMAT_TIME:
+ break;
+ case GST_FORMAT_TIME:
if (flacdec->frequency == 0)
return FALSE;
- *dest_value = src_value * GST_SECOND / flacdec->frequency;
- break;
- default:
- res = FALSE;
+ *dest_value = src_value * GST_SECOND / flacdec->frequency;
+ break;
+ default:
+ res = FALSE;
}
break;
case GST_FORMAT_TIME:
switch (*dest_format) {
- case GST_FORMAT_BYTES:
- scale = bytes_per_sample;
- case GST_FORMAT_DEFAULT:
+ case GST_FORMAT_BYTES:
+ scale = bytes_per_sample;
+ case GST_FORMAT_DEFAULT:
*dest_value = src_value * scale * flacdec->frequency / GST_SECOND;
- break;
- default:
- res = FALSE;
+ break;
+ default:
+ res = FALSE;
}
break;
default:
@@ -656,19 +652,19 @@ gst_flacdec_convert_src (GstPad *pad, GstFormat src_format, gint64 src_value,
}
static const GstQueryType *
-gst_flacdec_get_src_query_types (GstPad *pad)
-{
+gst_flacdec_get_src_query_types (GstPad * pad)
+{
static const GstQueryType types[] = {
GST_QUERY_TOTAL,
GST_QUERY_POSITION,
0,
};
return types;
-}
+}
static gboolean
-gst_flacdec_src_query (GstPad *pad, GstQueryType type,
- GstFormat *format, gint64 *value)
+gst_flacdec_src_query (GstPad * pad, GstQueryType type,
+ GstFormat * format, gint64 * value)
{
gboolean res = TRUE;
FlacDec *flacdec = GST_FLACDEC (gst_pad_get_parent (pad));
@@ -679,21 +675,17 @@ gst_flacdec_src_query (GstPad *pad, GstQueryType type,
guint64 samples;
if (flacdec->stream_samples == 0)
- samples = flacdec->total_samples;
+ samples = flacdec->total_samples;
else
- samples = flacdec->stream_samples;
+ samples = flacdec->stream_samples;
- gst_pad_convert (flacdec->srcpad,
- GST_FORMAT_DEFAULT,
- samples,
- format, value);
+ gst_pad_convert (flacdec->srcpad,
+ GST_FORMAT_DEFAULT, samples, format, value);
break;
}
case GST_QUERY_POSITION:
- gst_pad_convert (flacdec->srcpad,
- GST_FORMAT_DEFAULT,
- flacdec->total_samples,
- format, value);
+ gst_pad_convert (flacdec->srcpad,
+ GST_FORMAT_DEFAULT, flacdec->total_samples, format, value);
break;
default:
res = FALSE;
@@ -702,20 +694,20 @@ gst_flacdec_src_query (GstPad *pad, GstQueryType type,
return res;
}
-
+
static const GstEventMask *
-gst_flacdec_get_src_event_masks (GstPad *pad)
+gst_flacdec_get_src_event_masks (GstPad * pad)
{
static const GstEventMask masks[] = {
- { GST_EVENT_SEEK, GST_SEEK_FLAG_ACCURATE },
- { 0, 0 },
+ {GST_EVENT_SEEK, GST_SEEK_FLAG_ACCURATE},
+ {0, 0},
};
return masks;
}
static gboolean
-gst_flacdec_src_event (GstPad *pad, GstEvent *event)
-{
+gst_flacdec_src_event (GstPad * pad, GstEvent * event)
+{
gboolean res = TRUE;
FlacDec *flacdec = GST_FLACDEC (gst_pad_get_parent (pad));
GstFormat format;
@@ -724,11 +716,10 @@ gst_flacdec_src_event (GstPad *pad, GstEvent *event)
case GST_EVENT_SEEK:
format = GST_FORMAT_DEFAULT;
- if (gst_pad_convert (flacdec->srcpad,
- GST_EVENT_SEEK_FORMAT (event),
- GST_EVENT_SEEK_OFFSET (event),
- &format, &flacdec->seek_value))
- flacdec->seek_pending = TRUE;
+ if (gst_pad_convert (flacdec->srcpad,
+ GST_EVENT_SEEK_FORMAT (event),
+ GST_EVENT_SEEK_OFFSET (event), &format, &flacdec->seek_value))
+ flacdec->seek_pending = TRUE;
else
res = FALSE;
break;
@@ -741,7 +732,7 @@ gst_flacdec_src_event (GstPad *pad, GstEvent *event)
}
static GstElementStateReturn
-gst_flacdec_change_state (GstElement *element)
+gst_flacdec_change_state (GstElement * element)
{
FlacDec *flacdec = GST_FLACDEC (element);
diff --git a/ext/flac/gstflacdec.h b/ext/flac/gstflacdec.h
index 5b5fd110..c525c3a2 100644
--- a/ext/flac/gstflacdec.h
+++ b/ext/flac/gstflacdec.h
@@ -28,8 +28,9 @@
#include <FLAC/all.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_FLACDEC flacdec_get_type()
@@ -38,40 +39,42 @@ extern "C" {
#define GST_IS_FLACDEC(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, GST_TYPE_FLACDEC)
#define GST_IS_FLACDEC_CLASS(obj) G_TYPE_CHECK_CLASS_TYPE(klass, GST_TYPE_FLACDEC)
-typedef struct _FlacDec FlacDec;
-typedef struct _FlacDecClass FlacDecClass;
+ typedef struct _FlacDec FlacDec;
+ typedef struct _FlacDecClass FlacDecClass;
-struct _FlacDec {
- GstElement element;
+ struct _FlacDec
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
- GstByteStream *bs;
+ GstPad *sinkpad, *srcpad;
+ GstByteStream *bs;
- FLAC__SeekableStreamDecoder *decoder;
- gint channels;
- gint depth;
- gint frequency;
+ FLAC__SeekableStreamDecoder *decoder;
+ gint channels;
+ gint depth;
+ gint frequency;
- gboolean need_discont;
- gboolean seek_pending;
- gint64 seek_value;
+ gboolean need_discont;
+ gboolean seek_pending;
+ gint64 seek_value;
- gboolean init;
- guint64 total_samples;
- guint64 stream_samples;
+ gboolean init;
+ guint64 total_samples;
+ guint64 stream_samples;
- gboolean eos;
-};
+ gboolean eos;
+ };
-struct _FlacDecClass {
- GstElementClass parent_class;
-};
+ struct _FlacDecClass
+ {
+ GstElementClass parent_class;
+ };
-GType flacdec_get_type(void);
+ GType flacdec_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __FLACDEC_H__ */
+#endif /* __FLACDEC_H__ */
diff --git a/ext/flac/gstflacenc.c b/ext/flac/gstflacenc.c
index eacedeb4..7e658047 100644
--- a/ext/flac/gstflacenc.c
+++ b/ext/flac/gstflacenc.c
@@ -40,12 +40,14 @@ GstElementDetails flacenc_details = {
};
/* FlacEnc signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_QUALITY,
ARG_STREAMABLE_SUBSET,
@@ -62,34 +64,32 @@ enum {
ARG_RICE_PARAMETER_SEARCH_DIST,
};
-static void gst_flacenc_base_init (gpointer g_class);
-static void gst_flacenc_init (FlacEnc *flacenc);
-static void gst_flacenc_class_init (FlacEncClass *klass);
-static void gst_flacenc_dispose (GObject *object);
+static void gst_flacenc_base_init (gpointer g_class);
+static void gst_flacenc_init (FlacEnc * flacenc);
+static void gst_flacenc_class_init (FlacEncClass * klass);
+static void gst_flacenc_dispose (GObject * object);
static GstPadLinkReturn
- gst_flacenc_sinkconnect (GstPad *pad, const GstCaps *caps);
-static void gst_flacenc_chain (GstPad *pad, GstData *_data);
-
-static gboolean gst_flacenc_update_quality (FlacEnc *flacenc, gint quality);
-static void gst_flacenc_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_flacenc_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
-static GstElementStateReturn
- gst_flacenc_change_state (GstElement *element);
-
-static FLAC__StreamEncoderWriteStatus
- gst_flacenc_write_callback (const FLAC__SeekableStreamEncoder *encoder,
- const FLAC__byte buffer[], unsigned bytes,
- unsigned samples, unsigned current_frame,
- void *client_data);
+gst_flacenc_sinkconnect (GstPad * pad, const GstCaps * caps);
+static void gst_flacenc_chain (GstPad * pad, GstData * _data);
+
+static gboolean gst_flacenc_update_quality (FlacEnc * flacenc, gint quality);
+static void gst_flacenc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_flacenc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_flacenc_change_state (GstElement * element);
+
+static FLAC__StreamEncoderWriteStatus
+gst_flacenc_write_callback (const FLAC__SeekableStreamEncoder * encoder,
+ const FLAC__byte buffer[], unsigned bytes,
+ unsigned samples, unsigned current_frame, void *client_data);
static FLAC__SeekableStreamEncoderSeekStatus
- gst_flacenc_seek_callback (const FLAC__SeekableStreamEncoder *encoder,
- FLAC__uint64 absolute_byte_offset,
- void *client_data);
+gst_flacenc_seek_callback (const FLAC__SeekableStreamEncoder * encoder,
+ FLAC__uint64 absolute_byte_offset, void *client_data);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_flacenc_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -99,15 +99,15 @@ flacenc_get_type (void)
if (!flacenc_type) {
static const GTypeInfo flacenc_info = {
- sizeof(FlacEncClass),
+ sizeof (FlacEncClass),
gst_flacenc_base_init,
NULL,
- (GClassInitFunc)gst_flacenc_class_init,
+ (GClassInitFunc) gst_flacenc_class_init,
NULL,
NULL,
- sizeof(FlacEnc),
+ sizeof (FlacEnc),
0,
- (GInstanceInitFunc)gst_flacenc_init,
+ (GInstanceInitFunc) gst_flacenc_init,
};
static const GInterfaceInfo tag_setter_info = {
@@ -116,38 +116,40 @@ flacenc_get_type (void)
NULL
};
- flacenc_type = g_type_register_static (GST_TYPE_ELEMENT, "FlacEnc", &flacenc_info, 0);
- g_type_add_interface_static (flacenc_type, GST_TYPE_TAG_SETTER, &tag_setter_info);
+ flacenc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "FlacEnc", &flacenc_info, 0);
+ g_type_add_interface_static (flacenc_type, GST_TYPE_TAG_SETTER,
+ &tag_setter_info);
}
return flacenc_type;
}
-typedef struct {
- gboolean exhaustive_model_search;
- gboolean escape_coding;
- gboolean mid_side;
- gboolean loose_mid_side;
- guint qlp_coeff_precision;
- gboolean qlp_coeff_prec_search;
- guint min_residual_partition_order;
- guint max_residual_partition_order;
- guint rice_parameter_search_dist;
- guint max_lpc_order;
- guint blocksize;
+typedef struct
+{
+ gboolean exhaustive_model_search;
+ gboolean escape_coding;
+ gboolean mid_side;
+ gboolean loose_mid_side;
+ guint qlp_coeff_precision;
+ gboolean qlp_coeff_prec_search;
+ guint min_residual_partition_order;
+ guint max_residual_partition_order;
+ guint rice_parameter_search_dist;
+ guint max_lpc_order;
+ guint blocksize;
} FlacEncParams;
-static const FlacEncParams flacenc_params[] =
-{
- { FALSE, FALSE, FALSE, FALSE, 0, FALSE, 2, 2, 0, 0, 1152 },
- { FALSE, FALSE, TRUE, TRUE, 0, FALSE, 2, 2, 0, 0, 1152 },
- { FALSE, FALSE, TRUE, FALSE, 0, FALSE, 0, 3, 0, 0, 1152 },
- { FALSE, FALSE, FALSE, FALSE, 0, FALSE, 3, 3, 0, 6, 4608 },
- { FALSE, FALSE, TRUE, TRUE, 0, FALSE, 3, 3, 0, 8, 4608 },
- { FALSE, FALSE, TRUE, FALSE, 0, FALSE, 3, 3, 0, 8, 4608 },
- { FALSE, FALSE, TRUE, FALSE, 0, FALSE, 0, 4, 0, 8, 4608 },
- { TRUE, FALSE, TRUE, FALSE, 0, FALSE, 0, 6, 0, 8, 4608 },
- { TRUE, FALSE, TRUE, FALSE, 0, FALSE, 0, 6, 0, 12, 4608 },
- { TRUE, TRUE, TRUE, FALSE, 0, FALSE, 0, 16, 0, 32, 4608 },
+static const FlacEncParams flacenc_params[] = {
+ {FALSE, FALSE, FALSE, FALSE, 0, FALSE, 2, 2, 0, 0, 1152},
+ {FALSE, FALSE, TRUE, TRUE, 0, FALSE, 2, 2, 0, 0, 1152},
+ {FALSE, FALSE, TRUE, FALSE, 0, FALSE, 0, 3, 0, 0, 1152},
+ {FALSE, FALSE, FALSE, FALSE, 0, FALSE, 3, 3, 0, 6, 4608},
+ {FALSE, FALSE, TRUE, TRUE, 0, FALSE, 3, 3, 0, 8, 4608},
+ {FALSE, FALSE, TRUE, FALSE, 0, FALSE, 3, 3, 0, 8, 4608},
+ {FALSE, FALSE, TRUE, FALSE, 0, FALSE, 0, 4, 0, 8, 4608},
+ {TRUE, FALSE, TRUE, FALSE, 0, FALSE, 0, 6, 0, 8, 4608},
+ {TRUE, FALSE, TRUE, FALSE, 0, FALSE, 0, 6, 0, 12, 4608},
+ {TRUE, TRUE, TRUE, FALSE, 0, FALSE, 0, 16, 0, 32, 4608},
};
#define DEFAULT_QUALITY 5
@@ -157,44 +159,44 @@ GType
gst_flacenc_quality_get_type (void)
{
static GType qtype = 0;
+
if (qtype == 0) {
static const GEnumValue values[] = {
- { 0, "0", "0 - Fastest compression" },
- { 1, "1", "1" },
- { 2, "2", "2" },
- { 3, "3", "3" },
- { 4, "4", "4" },
- { 5, "5", "5 - Default" },
- { 6, "6", "6" },
- { 7, "7", "7" },
- { 8, "8", "8 - Highest compression " },
- { 9, "9", "9 - Insane" },
- { 0, NULL, NULL }
+ {0, "0", "0 - Fastest compression"},
+ {1, "1", "1"},
+ {2, "2", "2"},
+ {3, "3", "3"},
+ {4, "4", "4"},
+ {5, "5", "5 - Default"},
+ {6, "6", "6"},
+ {7, "7", "7"},
+ {8, "8", "8 - Highest compression "},
+ {9, "9", "9 - Insane"},
+ {0, NULL, NULL}
};
qtype = g_enum_register_static ("FlacEncQuality", values);
}
return qtype;
}
-static GstCaps*
+static GstCaps *
flac_caps_factory (void)
{
return gst_caps_new_simple ("audio/x-flac", NULL);
- /* "rate", GST_PROPS_INT_RANGE (11025, 48000),
- * "channels", GST_PROPS_INT_RANGE (1, 2), */
+ /* "rate", GST_PROPS_INT_RANGE (11025, 48000),
+ * "channels", GST_PROPS_INT_RANGE (1, 2), */
}
-static GstCaps*
+static GstCaps *
raw_caps_factory (void)
{
return gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "width", G_TYPE_INT, 16,
- "depth", G_TYPE_INT, 16,
- "rate", GST_TYPE_INT_RANGE, 11025, 48000,
- "channels", GST_TYPE_INT_RANGE, 1, 2,
- NULL);
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "signed", G_TYPE_BOOLEAN, TRUE,
+ "width", G_TYPE_INT, 16,
+ "depth", G_TYPE_INT, 16,
+ "rate", GST_TYPE_INT_RANGE, 11025, 48000,
+ "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
}
static void
@@ -206,125 +208,123 @@ gst_flacenc_base_init (gpointer g_class)
raw_caps = raw_caps_factory ();
flac_caps = flac_caps_factory ();
- sink_template = gst_pad_template_new ("sink", GST_PAD_SINK,
- GST_PAD_ALWAYS,
- raw_caps);
- src_template = gst_pad_template_new ("src", GST_PAD_SRC,
- GST_PAD_ALWAYS,
- flac_caps);
+ sink_template = gst_pad_template_new ("sink", GST_PAD_SINK,
+ GST_PAD_ALWAYS, raw_caps);
+ src_template = gst_pad_template_new ("src", GST_PAD_SRC,
+ GST_PAD_ALWAYS, flac_caps);
gst_element_class_add_pad_template (element_class, sink_template);
gst_element_class_add_pad_template (element_class, src_template);
gst_element_class_set_details (element_class, &flacenc_details);
}
static void
-gst_flacenc_class_init (FlacEncClass *klass)
+gst_flacenc_class_init (FlacEncClass * 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);
-
/* we have no properties atm so this is a bit silly */
gobject_class->set_property = gst_flacenc_set_property;
gobject_class->get_property = gst_flacenc_get_property;
- gobject_class->dispose = gst_flacenc_dispose;
+ gobject_class->dispose = gst_flacenc_dispose;
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_QUALITY,
- g_param_spec_enum ("quality",
- "Quality",
- "Speed versus compression tradeoff",
- GST_TYPE_FLACENC_QUALITY, DEFAULT_QUALITY, G_PARAM_READWRITE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_STREAMABLE_SUBSET,
- g_param_spec_boolean ("streamable_subset",
- "Streamable subset",
- "true to limit encoder to generating a Subset stream, else false",
- TRUE, G_PARAM_READWRITE));
+ g_param_spec_enum ("quality",
+ "Quality",
+ "Speed versus compression tradeoff",
+ GST_TYPE_FLACENC_QUALITY, DEFAULT_QUALITY, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass),
+ ARG_STREAMABLE_SUBSET, g_param_spec_boolean ("streamable_subset",
+ "Streamable subset",
+ "true to limit encoder to generating a Subset stream, else false",
+ TRUE, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MID_SIDE_STEREO,
- g_param_spec_boolean ("mid_side_stereo",
- "Do mid side stereo",
- "Do mid side stereo (only for stereo input)",
- flacenc_params[DEFAULT_QUALITY].mid_side, G_PARAM_READWRITE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LOOSE_MID_SIDE_STEREO,
- g_param_spec_boolean ("loose_mid_side_stereo",
- "Loose mid side stereo",
- "Loose mid side stereo",
- flacenc_params[DEFAULT_QUALITY].loose_mid_side, G_PARAM_READWRITE));
+ g_param_spec_boolean ("mid_side_stereo", "Do mid side stereo",
+ "Do mid side stereo (only for stereo input)",
+ flacenc_params[DEFAULT_QUALITY].mid_side, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass),
+ ARG_LOOSE_MID_SIDE_STEREO, g_param_spec_boolean ("loose_mid_side_stereo",
+ "Loose mid side stereo", "Loose mid side stereo",
+ flacenc_params[DEFAULT_QUALITY].loose_mid_side, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BLOCKSIZE,
- g_param_spec_uint ("blocksize",
- "Blocksize",
- "Blocksize in samples",
- FLAC__MIN_BLOCK_SIZE, FLAC__MAX_BLOCK_SIZE,
- flacenc_params[DEFAULT_QUALITY].blocksize, G_PARAM_READWRITE));
+ g_param_spec_uint ("blocksize", "Blocksize", "Blocksize in samples",
+ FLAC__MIN_BLOCK_SIZE, FLAC__MAX_BLOCK_SIZE,
+ flacenc_params[DEFAULT_QUALITY].blocksize, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MAX_LPC_ORDER,
- g_param_spec_uint ("max_lpc_order",
- "Max LPC order",
- "Max LPC order; 0 => use only fixed predictors",
- 0, FLAC__MAX_LPC_ORDER,
- flacenc_params[DEFAULT_QUALITY].max_lpc_order, G_PARAM_READWRITE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_QLP_COEFF_PRECISION,
- g_param_spec_uint ("qlp_coeff_precision",
- "QLP coefficients precision",
- "Precision in bits of quantized linear-predictor coefficients; 0 = automatic",
- 0, 32,
- flacenc_params[DEFAULT_QUALITY].qlp_coeff_precision, G_PARAM_READWRITE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_QLP_COEFF_PREC_SEARCH,
- g_param_spec_boolean ("qlp_coeff_prec_search",
- "Do QLP coefficients precision search",
- "false = use qlp_coeff_precision, "
- "true = search around qlp_coeff_precision, take best",
- flacenc_params[DEFAULT_QUALITY].qlp_coeff_prec_search, G_PARAM_READWRITE));
+ g_param_spec_uint ("max_lpc_order", "Max LPC order",
+ "Max LPC order; 0 => use only fixed predictors", 0,
+ FLAC__MAX_LPC_ORDER, flacenc_params[DEFAULT_QUALITY].max_lpc_order,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass),
+ ARG_QLP_COEFF_PRECISION, g_param_spec_uint ("qlp_coeff_precision",
+ "QLP coefficients precision",
+ "Precision in bits of quantized linear-predictor coefficients; 0 = automatic",
+ 0, 32, flacenc_params[DEFAULT_QUALITY].qlp_coeff_precision,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass),
+ ARG_QLP_COEFF_PREC_SEARCH, g_param_spec_boolean ("qlp_coeff_prec_search",
+ "Do QLP coefficients precision search",
+ "false = use qlp_coeff_precision, "
+ "true = search around qlp_coeff_precision, take best",
+ flacenc_params[DEFAULT_QUALITY].qlp_coeff_prec_search,
+ G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ESCAPE_CODING,
- g_param_spec_boolean ("escape_coding",
- "Do Escape coding",
- "search for escape codes in the entropy coding stage "
- "for slightly better compression",
- flacenc_params[DEFAULT_QUALITY].escape_coding, G_PARAM_READWRITE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_EXHAUSTIVE_MODEL_SEARCH,
- g_param_spec_boolean ("exhaustive_model_search",
- "Do exhaustive model search",
- "do exhaustive search of LP coefficient quantization (expensive!)",
- flacenc_params[DEFAULT_QUALITY].exhaustive_model_search, G_PARAM_READWRITE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MIN_RESIDUAL_PARTITION_ORDER,
- g_param_spec_uint ("min_residual_partition_order",
- "Min residual partition order",
- "Min residual partition order (above 4 doesn't usually help much)",
- 0, 16,
- flacenc_params[DEFAULT_QUALITY].min_residual_partition_order, G_PARAM_READWRITE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MAX_RESIDUAL_PARTITION_ORDER,
- g_param_spec_uint ("max_residual_partition_order",
- "Max residual partition order",
- "Max residual partition order (above 4 doesn't usually help much)",
- 0, 16,
- flacenc_params[DEFAULT_QUALITY].max_residual_partition_order, G_PARAM_READWRITE));
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_RICE_PARAMETER_SEARCH_DIST,
- g_param_spec_uint ("rice_parameter_search_dist",
- "rice_parameter_search_dist",
- "0 = try only calc'd parameter k; else try all [k-dist..k+dist] "
- "parameters, use best",
- 0, FLAC__MAX_RICE_PARTITION_ORDER,
- flacenc_params[DEFAULT_QUALITY].rice_parameter_search_dist, G_PARAM_READWRITE));
+ g_param_spec_boolean ("escape_coding", "Do Escape coding",
+ "search for escape codes in the entropy coding stage "
+ "for slightly better compression",
+ flacenc_params[DEFAULT_QUALITY].escape_coding, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass),
+ ARG_EXHAUSTIVE_MODEL_SEARCH,
+ g_param_spec_boolean ("exhaustive_model_search",
+ "Do exhaustive model search",
+ "do exhaustive search of LP coefficient quantization (expensive!)",
+ flacenc_params[DEFAULT_QUALITY].exhaustive_model_search,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass),
+ ARG_MIN_RESIDUAL_PARTITION_ORDER,
+ g_param_spec_uint ("min_residual_partition_order",
+ "Min residual partition order",
+ "Min residual partition order (above 4 doesn't usually help much)", 0,
+ 16, flacenc_params[DEFAULT_QUALITY].min_residual_partition_order,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass),
+ ARG_MAX_RESIDUAL_PARTITION_ORDER,
+ g_param_spec_uint ("max_residual_partition_order",
+ "Max residual partition order",
+ "Max residual partition order (above 4 doesn't usually help much)", 0,
+ 16, flacenc_params[DEFAULT_QUALITY].max_residual_partition_order,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass),
+ ARG_RICE_PARAMETER_SEARCH_DIST,
+ g_param_spec_uint ("rice_parameter_search_dist",
+ "rice_parameter_search_dist",
+ "0 = try only calc'd parameter k; else try all [k-dist..k+dist] "
+ "parameters, use best", 0, FLAC__MAX_RICE_PARTITION_ORDER,
+ flacenc_params[DEFAULT_QUALITY].rice_parameter_search_dist,
+ G_PARAM_READWRITE));
gstelement_class->change_state = gst_flacenc_change_state;
}
static void
-gst_flacenc_init (FlacEnc *flacenc)
+gst_flacenc_init (FlacEnc * flacenc)
{
flacenc->sinkpad = gst_pad_new_from_template (sink_template, "sink");
- gst_element_add_pad(GST_ELEMENT(flacenc),flacenc->sinkpad);
- gst_pad_set_chain_function(flacenc->sinkpad,gst_flacenc_chain);
+ gst_element_add_pad (GST_ELEMENT (flacenc), flacenc->sinkpad);
+ gst_pad_set_chain_function (flacenc->sinkpad, gst_flacenc_chain);
gst_pad_set_link_function (flacenc->sinkpad, gst_flacenc_sinkconnect);
flacenc->srcpad = gst_pad_new_from_template (src_template, "src");
- gst_element_add_pad(GST_ELEMENT(flacenc),flacenc->srcpad);
+ gst_element_add_pad (GST_ELEMENT (flacenc), flacenc->srcpad);
GST_FLAG_SET (flacenc, GST_ELEMENT_EVENT_AWARE);
- flacenc->encoder = FLAC__seekable_stream_encoder_new();
+ flacenc->encoder = FLAC__seekable_stream_encoder_new ();
flacenc->negotiated = FALSE;
flacenc->first = TRUE;
@@ -335,17 +335,17 @@ gst_flacenc_init (FlacEnc *flacenc)
}
static void
-gst_flacenc_dispose (GObject *object)
+gst_flacenc_dispose (GObject * object)
{
FlacEnc *flacenc = GST_FLACENC (object);
FLAC__seekable_stream_encoder_delete (flacenc->encoder);
-
+
G_OBJECT_CLASS (parent_class)->dispose (object);
}
static GstPadLinkReturn
-gst_flacenc_sinkconnect (GstPad *pad, const GstCaps *caps)
+gst_flacenc_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstPadLinkReturn ret;
FlacEnc *flacenc;
@@ -358,7 +358,7 @@ gst_flacenc_sinkconnect (GstPad *pad, const GstCaps *caps)
gst_structure_get_int (structure, "channels", &flacenc->channels);
gst_structure_get_int (structure, "depth", &flacenc->depth);
gst_structure_get_int (structure, "rate", &flacenc->sample_rate);
-
+
caps = gst_caps_new_simple ("audio/x-flac",
"channels", G_TYPE_INT, flacenc->channels,
"rate", G_TYPE_INT, flacenc->sample_rate, NULL);
@@ -367,12 +367,12 @@ gst_flacenc_sinkconnect (GstPad *pad, const GstCaps *caps)
return ret;
}
- FLAC__seekable_stream_encoder_set_bits_per_sample (flacenc->encoder,
- flacenc->depth);
- FLAC__seekable_stream_encoder_set_sample_rate (flacenc->encoder,
- flacenc->sample_rate);
- FLAC__seekable_stream_encoder_set_channels (flacenc->encoder,
- flacenc->channels);
+ FLAC__seekable_stream_encoder_set_bits_per_sample (flacenc->encoder,
+ flacenc->depth);
+ FLAC__seekable_stream_encoder_set_sample_rate (flacenc->encoder,
+ flacenc->sample_rate);
+ FLAC__seekable_stream_encoder_set_channels (flacenc->encoder,
+ flacenc->channels);
flacenc->negotiated = TRUE;
@@ -380,7 +380,7 @@ gst_flacenc_sinkconnect (GstPad *pad, const GstCaps *caps)
}
static gboolean
-gst_flacenc_update_quality (FlacEnc *flacenc, gint quality)
+gst_flacenc_update_quality (FlacEnc * flacenc, gint quality)
{
flacenc->quality = quality;
@@ -396,17 +396,22 @@ gst_flacenc_update_quality (FlacEnc *flacenc, gint quality)
g_object_freeze_notify (G_OBJECT (flacenc));
- DO_UPDATE (do_mid_side_stereo, mid_side, "mid_side_stereo");
- DO_UPDATE (loose_mid_side_stereo, loose_mid_side, "loose_mid_side");
- DO_UPDATE (blocksize, blocksize, "blocksize");
- DO_UPDATE (max_lpc_order, max_lpc_order, "max_lpc_order");
- DO_UPDATE (qlp_coeff_precision, qlp_coeff_precision, "qlp_coeff_precision");
- DO_UPDATE (do_qlp_coeff_prec_search, qlp_coeff_prec_search, "qlp_coeff_prec_search");
- DO_UPDATE (do_escape_coding, escape_coding, "escape_coding");
- DO_UPDATE (do_exhaustive_model_search, exhaustive_model_search, "exhaustive_model_search");
- DO_UPDATE (min_residual_partition_order, min_residual_partition_order, "min_residual_partition_order");
- DO_UPDATE (max_residual_partition_order, max_residual_partition_order, "max_residual_partition_order");
- DO_UPDATE (rice_parameter_search_dist, rice_parameter_search_dist, "rice_parameter_search_dist");
+ DO_UPDATE (do_mid_side_stereo, mid_side, "mid_side_stereo");
+ DO_UPDATE (loose_mid_side_stereo, loose_mid_side, "loose_mid_side");
+ DO_UPDATE (blocksize, blocksize, "blocksize");
+ DO_UPDATE (max_lpc_order, max_lpc_order, "max_lpc_order");
+ DO_UPDATE (qlp_coeff_precision, qlp_coeff_precision, "qlp_coeff_precision");
+ DO_UPDATE (do_qlp_coeff_prec_search, qlp_coeff_prec_search,
+ "qlp_coeff_prec_search");
+ DO_UPDATE (do_escape_coding, escape_coding, "escape_coding");
+ DO_UPDATE (do_exhaustive_model_search, exhaustive_model_search,
+ "exhaustive_model_search");
+ DO_UPDATE (min_residual_partition_order, min_residual_partition_order,
+ "min_residual_partition_order");
+ DO_UPDATE (max_residual_partition_order, max_residual_partition_order,
+ "max_residual_partition_order");
+ DO_UPDATE (rice_parameter_search_dist, rice_parameter_search_dist,
+ "rice_parameter_search_dist");
#undef DO_UPDATE
@@ -416,38 +421,38 @@ gst_flacenc_update_quality (FlacEnc *flacenc, gint quality)
}
static FLAC__SeekableStreamEncoderSeekStatus
-gst_flacenc_seek_callback (const FLAC__SeekableStreamEncoder *encoder,
- FLAC__uint64 absolute_byte_offset,
- void *client_data)
+gst_flacenc_seek_callback (const FLAC__SeekableStreamEncoder * encoder,
+ FLAC__uint64 absolute_byte_offset, void *client_data)
{
-FlacEnc *flacenc;
-GstEvent *event;
+ FlacEnc *flacenc;
+ GstEvent *event;
flacenc = GST_FLACENC (client_data);
- if (flacenc->stopped)
+ if (flacenc->stopped)
return FLAC__STREAM_ENCODER_OK;
- event = gst_event_new_seek ((GstSeekType)(int)(GST_FORMAT_BYTES | GST_SEEK_METHOD_SET), absolute_byte_offset);
+ event =
+ gst_event_new_seek ((GstSeekType) (int) (GST_FORMAT_BYTES |
+ GST_SEEK_METHOD_SET), absolute_byte_offset);
if (event)
gst_pad_push (flacenc->srcpad, GST_DATA (event));
-
- return FLAC__STREAM_ENCODER_OK;
+
+ return FLAC__STREAM_ENCODER_OK;
}
-static FLAC__StreamEncoderWriteStatus
-gst_flacenc_write_callback (const FLAC__SeekableStreamEncoder *encoder,
- const FLAC__byte buffer[], unsigned bytes,
- unsigned samples, unsigned current_frame,
- void *client_data)
+static FLAC__StreamEncoderWriteStatus
+gst_flacenc_write_callback (const FLAC__SeekableStreamEncoder * encoder,
+ const FLAC__byte buffer[], unsigned bytes,
+ unsigned samples, unsigned current_frame, void *client_data)
{
FlacEnc *flacenc;
GstBuffer *outbuf;
-
+
flacenc = GST_FLACENC (client_data);
- if (flacenc->stopped)
+ if (flacenc->stopped)
return FLAC__STREAM_ENCODER_OK;
outbuf = gst_buffer_new_and_alloc (bytes);
@@ -465,30 +470,29 @@ gst_flacenc_write_callback (const FLAC__SeekableStreamEncoder *encoder,
return FLAC__STREAM_ENCODER_OK;
}
-static void
-add_one_tag (const GstTagList *list, const gchar *tag,
- gpointer user_data)
+static void
+add_one_tag (const GstTagList * list, const gchar * tag, gpointer user_data)
{
- GList *comments;
- GList *it;
- FlacEnc *flacenc = GST_FLACENC (user_data);
-
- comments = gst_tag_to_vorbis_comments (list, tag);
- for (it = comments; it != NULL; it = it->next) {
- FLAC__StreamMetadata_VorbisComment_Entry commment_entry;
- commment_entry.length = strlen(it->data);
- commment_entry.entry = it->data;
- FLAC__metadata_object_vorbiscomment_insert_comment (flacenc->meta[0],
- flacenc->meta[0]->data.vorbis_comment.num_comments,
- commment_entry,
- TRUE);
- g_free (it->data);
- }
- g_list_free (comments);
+ GList *comments;
+ GList *it;
+ FlacEnc *flacenc = GST_FLACENC (user_data);
+
+ comments = gst_tag_to_vorbis_comments (list, tag);
+ for (it = comments; it != NULL; it = it->next) {
+ FLAC__StreamMetadata_VorbisComment_Entry commment_entry;
+
+ commment_entry.length = strlen (it->data);
+ commment_entry.entry = it->data;
+ FLAC__metadata_object_vorbiscomment_insert_comment (flacenc->meta[0],
+ flacenc->meta[0]->data.vorbis_comment.num_comments,
+ commment_entry, TRUE);
+ g_free (it->data);
+ }
+ g_list_free (comments);
}
static void
-gst_flacenc_set_metadata (FlacEnc *flacenc)
+gst_flacenc_set_metadata (FlacEnc * flacenc)
{
const GstTagList *user_tags;
GstTagList *copy;
@@ -498,21 +502,23 @@ gst_flacenc_set_metadata (FlacEnc *flacenc)
if ((flacenc->tags == NULL) && (user_tags == NULL)) {
return;
}
- copy = gst_tag_list_merge (user_tags, flacenc->tags,
- gst_tag_setter_get_merge_mode (GST_TAG_SETTER (flacenc)));
+ copy = gst_tag_list_merge (user_tags, flacenc->tags,
+ gst_tag_setter_get_merge_mode (GST_TAG_SETTER (flacenc)));
flacenc->meta = g_malloc (sizeof (FLAC__StreamMetadata **));
- flacenc->meta[0] = FLAC__metadata_object_new (FLAC__METADATA_TYPE_VORBIS_COMMENT);
+ flacenc->meta[0] =
+ FLAC__metadata_object_new (FLAC__METADATA_TYPE_VORBIS_COMMENT);
gst_tag_list_foreach (copy, add_one_tag, flacenc);
- if (FLAC__seekable_stream_encoder_set_metadata(flacenc->encoder, flacenc->meta, 1) != true)
+ if (FLAC__seekable_stream_encoder_set_metadata (flacenc->encoder,
+ flacenc->meta, 1) != true)
g_warning ("Dude, i'm already initialized!");
gst_tag_list_free (copy);
}
static void
-gst_flacenc_chain (GstPad *pad, GstData *_data)
+gst_flacenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
FlacEnc *flacenc;
@@ -522,7 +528,7 @@ gst_flacenc_chain (GstPad *pad, GstData *_data)
gulong i;
FLAC__bool res;
- g_return_if_fail(buf != NULL);
+ g_return_if_fail (buf != NULL);
flacenc = GST_FLACENC (gst_pad_get_parent (pad));
@@ -531,18 +537,18 @@ gst_flacenc_chain (GstPad *pad, GstData *_data)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
- FLAC__seekable_stream_encoder_finish(flacenc->encoder);
+ FLAC__seekable_stream_encoder_finish (flacenc->encoder);
break;
case GST_EVENT_TAG:
if (flacenc->tags) {
- gst_tag_list_insert (flacenc->tags, gst_event_tag_get_list (event),
- GST_TAG_MERGE_REPLACE);
+ gst_tag_list_insert (flacenc->tags, gst_event_tag_get_list (event),
+ GST_TAG_MERGE_REPLACE);
} else {
g_assert_not_reached ();
}
break;
default:
- break;
+ break;
}
gst_pad_event_default (pad, event);
return;
@@ -550,33 +556,31 @@ gst_flacenc_chain (GstPad *pad, GstData *_data)
if (!flacenc->negotiated) {
GST_ELEMENT_ERROR (flacenc, CORE, NEGOTIATION, (NULL),
- ("format wasn't negotiated before chain function"));
+ ("format wasn't negotiated before chain function"));
return;
}
depth = flacenc->depth;
insize = GST_BUFFER_SIZE (buf);
- samples = insize / ((depth+7)>>3);
+ samples = insize / ((depth + 7) >> 3);
- if (FLAC__seekable_stream_encoder_get_state (flacenc->encoder) ==
- FLAC__SEEKABLE_STREAM_ENCODER_UNINITIALIZED)
- {
+ if (FLAC__seekable_stream_encoder_get_state (flacenc->encoder) ==
+ FLAC__SEEKABLE_STREAM_ENCODER_UNINITIALIZED) {
FLAC__SeekableStreamEncoderState state;
- FLAC__seekable_stream_encoder_set_write_callback (flacenc->encoder,
- gst_flacenc_write_callback);
- FLAC__seekable_stream_encoder_set_seek_callback (flacenc->encoder,
- gst_flacenc_seek_callback);
-
- FLAC__seekable_stream_encoder_set_client_data (flacenc->encoder,
- flacenc);
-
+ FLAC__seekable_stream_encoder_set_write_callback (flacenc->encoder,
+ gst_flacenc_write_callback);
+ FLAC__seekable_stream_encoder_set_seek_callback (flacenc->encoder,
+ gst_flacenc_seek_callback);
+
+ FLAC__seekable_stream_encoder_set_client_data (flacenc->encoder, flacenc);
+
gst_flacenc_set_metadata (flacenc);
state = FLAC__seekable_stream_encoder_init (flacenc->encoder);
if (state != FLAC__STREAM_ENCODER_OK) {
GST_ELEMENT_ERROR (flacenc, LIBRARY, INIT, (NULL),
- ("could not initialize encoder (wrong parameters?)"));
+ ("could not initialize encoder (wrong parameters?)"));
return;
}
}
@@ -584,27 +588,26 @@ gst_flacenc_chain (GstPad *pad, GstData *_data)
/* we keep a pointer in the flacenc struct because we are freeing the data
* after a push opreration that might never return */
data = flacenc->data = g_malloc (samples * sizeof (FLAC__int32));
-
+
if (depth == 8) {
gint8 *indata = (gint8 *) GST_BUFFER_DATA (buf);
-
- for (i=0; i<samples; i++) {
- data[i] = (FLAC__int32) *indata++;
+
+ for (i = 0; i < samples; i++) {
+ data[i] = (FLAC__int32) * indata++;
}
- }
- else if (depth == 16) {
+ } else if (depth == 16) {
gint16 *indata = (gint16 *) GST_BUFFER_DATA (buf);
- for (i=0; i<samples; i++) {
- data[i] = (FLAC__int32) *indata++;
+ for (i = 0; i < samples; i++) {
+ data[i] = (FLAC__int32) * indata++;
}
}
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
- res = FLAC__seekable_stream_encoder_process_interleaved (flacenc->encoder,
- (const FLAC__int32 *) data, samples / flacenc->channels);
+ res = FLAC__seekable_stream_encoder_process_interleaved (flacenc->encoder,
+ (const FLAC__int32 *) data, samples / flacenc->channels);
g_free (flacenc->data);
flacenc->data = NULL;
@@ -615,63 +618,63 @@ gst_flacenc_chain (GstPad *pad, GstData *_data)
}
static void
-gst_flacenc_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
+gst_flacenc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
FlacEnc *this;
-
- this = (FlacEnc *)object;
+
+ this = (FlacEnc *) object;
switch (prop_id) {
case ARG_QUALITY:
gst_flacenc_update_quality (this, g_value_get_enum (value));
break;
case ARG_STREAMABLE_SUBSET:
- FLAC__seekable_stream_encoder_set_streamable_subset (this->encoder,
- g_value_get_boolean (value));
+ FLAC__seekable_stream_encoder_set_streamable_subset (this->encoder,
+ g_value_get_boolean (value));
break;
case ARG_MID_SIDE_STEREO:
- FLAC__seekable_stream_encoder_set_do_mid_side_stereo (this->encoder,
- g_value_get_boolean (value));
+ FLAC__seekable_stream_encoder_set_do_mid_side_stereo (this->encoder,
+ g_value_get_boolean (value));
break;
case ARG_LOOSE_MID_SIDE_STEREO:
- FLAC__seekable_stream_encoder_set_loose_mid_side_stereo (this->encoder,
- g_value_get_boolean (value));
+ FLAC__seekable_stream_encoder_set_loose_mid_side_stereo (this->encoder,
+ g_value_get_boolean (value));
break;
case ARG_BLOCKSIZE:
- FLAC__seekable_stream_encoder_set_blocksize (this->encoder,
- g_value_get_uint (value));
+ FLAC__seekable_stream_encoder_set_blocksize (this->encoder,
+ g_value_get_uint (value));
break;
case ARG_MAX_LPC_ORDER:
- FLAC__seekable_stream_encoder_set_max_lpc_order (this->encoder,
- g_value_get_uint (value));
+ FLAC__seekable_stream_encoder_set_max_lpc_order (this->encoder,
+ g_value_get_uint (value));
break;
case ARG_QLP_COEFF_PRECISION:
- FLAC__seekable_stream_encoder_set_qlp_coeff_precision (this->encoder,
- g_value_get_uint (value));
+ FLAC__seekable_stream_encoder_set_qlp_coeff_precision (this->encoder,
+ g_value_get_uint (value));
break;
case ARG_QLP_COEFF_PREC_SEARCH:
- FLAC__seekable_stream_encoder_set_do_qlp_coeff_prec_search (this->encoder,
- g_value_get_boolean (value));
+ FLAC__seekable_stream_encoder_set_do_qlp_coeff_prec_search (this->encoder,
+ g_value_get_boolean (value));
break;
case ARG_ESCAPE_CODING:
- FLAC__seekable_stream_encoder_set_do_escape_coding (this->encoder,
- g_value_get_boolean (value));
+ FLAC__seekable_stream_encoder_set_do_escape_coding (this->encoder,
+ g_value_get_boolean (value));
break;
case ARG_EXHAUSTIVE_MODEL_SEARCH:
- FLAC__seekable_stream_encoder_set_do_exhaustive_model_search (this->encoder,
- g_value_get_boolean (value));
+ FLAC__seekable_stream_encoder_set_do_exhaustive_model_search (this->
+ encoder, g_value_get_boolean (value));
break;
case ARG_MIN_RESIDUAL_PARTITION_ORDER:
- FLAC__seekable_stream_encoder_set_min_residual_partition_order (this->encoder,
- g_value_get_uint (value));
+ FLAC__seekable_stream_encoder_set_min_residual_partition_order (this->
+ encoder, g_value_get_uint (value));
break;
case ARG_MAX_RESIDUAL_PARTITION_ORDER:
- FLAC__seekable_stream_encoder_set_max_residual_partition_order (this->encoder,
- g_value_get_uint (value));
+ FLAC__seekable_stream_encoder_set_max_residual_partition_order (this->
+ encoder, g_value_get_uint (value));
break;
case ARG_RICE_PARAMETER_SEARCH_DIST:
- FLAC__seekable_stream_encoder_set_rice_parameter_search_dist (this->encoder,
- g_value_get_uint (value));
+ FLAC__seekable_stream_encoder_set_rice_parameter_search_dist (this->
+ encoder, g_value_get_uint (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -680,64 +683,71 @@ gst_flacenc_set_property (GObject *object, guint prop_id,
}
static void
-gst_flacenc_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
+gst_flacenc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
{
FlacEnc *this;
-
- this = (FlacEnc *)object;
-
+
+ this = (FlacEnc *) object;
+
switch (prop_id) {
case ARG_QUALITY:
g_value_set_enum (value, this->quality);
break;
case ARG_STREAMABLE_SUBSET:
- g_value_set_boolean (value,
- FLAC__seekable_stream_encoder_get_streamable_subset (this->encoder));
+ g_value_set_boolean (value,
+ FLAC__seekable_stream_encoder_get_streamable_subset (this->encoder));
break;
case ARG_MID_SIDE_STEREO:
- g_value_set_boolean (value,
- FLAC__seekable_stream_encoder_get_do_mid_side_stereo (this->encoder));
+ g_value_set_boolean (value,
+ FLAC__seekable_stream_encoder_get_do_mid_side_stereo (this->encoder));
break;
case ARG_LOOSE_MID_SIDE_STEREO:
- g_value_set_boolean (value,
- FLAC__seekable_stream_encoder_get_loose_mid_side_stereo (this->encoder));
+ g_value_set_boolean (value,
+ FLAC__seekable_stream_encoder_get_loose_mid_side_stereo (this->
+ encoder));
break;
case ARG_BLOCKSIZE:
- g_value_set_uint (value,
- FLAC__seekable_stream_encoder_get_blocksize (this->encoder));
+ g_value_set_uint (value,
+ FLAC__seekable_stream_encoder_get_blocksize (this->encoder));
break;
case ARG_MAX_LPC_ORDER:
- g_value_set_uint (value,
- FLAC__seekable_stream_encoder_get_max_lpc_order (this->encoder));
+ g_value_set_uint (value,
+ FLAC__seekable_stream_encoder_get_max_lpc_order (this->encoder));
break;
case ARG_QLP_COEFF_PRECISION:
- g_value_set_uint (value,
- FLAC__seekable_stream_encoder_get_qlp_coeff_precision (this->encoder));
+ g_value_set_uint (value,
+ FLAC__seekable_stream_encoder_get_qlp_coeff_precision (this->
+ encoder));
break;
case ARG_QLP_COEFF_PREC_SEARCH:
- g_value_set_boolean (value,
- FLAC__seekable_stream_encoder_get_do_qlp_coeff_prec_search (this->encoder));
+ g_value_set_boolean (value,
+ FLAC__seekable_stream_encoder_get_do_qlp_coeff_prec_search (this->
+ encoder));
break;
case ARG_ESCAPE_CODING:
- g_value_set_boolean (value,
- FLAC__seekable_stream_encoder_get_do_escape_coding (this->encoder));
+ g_value_set_boolean (value,
+ FLAC__seekable_stream_encoder_get_do_escape_coding (this->encoder));
break;
case ARG_EXHAUSTIVE_MODEL_SEARCH:
- g_value_set_boolean (value,
- FLAC__seekable_stream_encoder_get_do_exhaustive_model_search (this->encoder));
+ g_value_set_boolean (value,
+ FLAC__seekable_stream_encoder_get_do_exhaustive_model_search (this->
+ encoder));
break;
case ARG_MIN_RESIDUAL_PARTITION_ORDER:
- g_value_set_uint (value,
- FLAC__seekable_stream_encoder_get_min_residual_partition_order (this->encoder));
+ g_value_set_uint (value,
+ FLAC__seekable_stream_encoder_get_min_residual_partition_order (this->
+ encoder));
break;
case ARG_MAX_RESIDUAL_PARTITION_ORDER:
- g_value_set_uint (value,
- FLAC__seekable_stream_encoder_get_max_residual_partition_order (this->encoder));
+ g_value_set_uint (value,
+ FLAC__seekable_stream_encoder_get_max_residual_partition_order (this->
+ encoder));
break;
case ARG_RICE_PARAMETER_SEARCH_DIST:
- g_value_set_uint (value,
- FLAC__seekable_stream_encoder_get_rice_parameter_search_dist (this->encoder));
+ g_value_set_uint (value,
+ FLAC__seekable_stream_encoder_get_rice_parameter_search_dist (this->
+ encoder));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -746,7 +756,7 @@ gst_flacenc_get_property (GObject *object, guint prop_id,
}
static GstElementStateReturn
-gst_flacenc_change_state (GstElement *element)
+gst_flacenc_change_state (GstElement * element)
{
FlacEnc *flacenc = GST_FLACENC (element);
@@ -760,10 +770,10 @@ gst_flacenc_change_state (GstElement *element)
case GST_STATE_PLAYING_TO_PAUSED:
break;
case GST_STATE_PAUSED_TO_READY:
- if (FLAC__seekable_stream_encoder_get_state (flacenc->encoder) !=
- FLAC__STREAM_ENCODER_UNINITIALIZED) {
- flacenc->stopped = TRUE;
- FLAC__seekable_stream_encoder_finish (flacenc->encoder);
+ if (FLAC__seekable_stream_encoder_get_state (flacenc->encoder) !=
+ FLAC__STREAM_ENCODER_UNINITIALIZED) {
+ flacenc->stopped = TRUE;
+ FLAC__seekable_stream_encoder_finish (flacenc->encoder);
}
flacenc->negotiated = FALSE;
if (flacenc->first_buf)
diff --git a/ext/flac/gstflacenc.h b/ext/flac/gstflacenc.h
index 27dbb3b0..1337a6fe 100644
--- a/ext/flac/gstflacenc.h
+++ b/ext/flac/gstflacenc.h
@@ -27,8 +27,9 @@
#include <FLAC/all.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_FLACENC flacenc_get_type()
#define GST_FLACENC(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, GST_TYPE_FLACENC, FlacEnc)
@@ -36,40 +37,42 @@ extern "C" {
#define GST_IS_FLACENC(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, GST_TYPE_FLACENC)
#define GST_IS_FLACENC_CLASS(obj) G_TYPE_CHECK_CLASS_TYPE(klass, GST_TYPE_FLACENC)
-typedef struct _FlacEnc FlacEnc;
-typedef struct _FlacEncClass FlacEncClass;
+ typedef struct _FlacEnc FlacEnc;
+ typedef struct _FlacEncClass FlacEncClass;
-struct _FlacEnc {
- GstElement element;
+ struct _FlacEnc
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- gboolean first;
- GstBuffer *first_buf;
- gboolean eos;
- gint channels;
- gint depth;
- gint sample_rate;
- gboolean negotiated;
- gint quality;
- gboolean stopped;
- FLAC__int32 *data;
+ gboolean first;
+ GstBuffer *first_buf;
+ gboolean eos;
+ gint channels;
+ gint depth;
+ gint sample_rate;
+ gboolean negotiated;
+ gint quality;
+ gboolean stopped;
+ FLAC__int32 *data;
- FLAC__SeekableStreamEncoder *encoder;
- FLAC__StreamMetadata **meta;
+ FLAC__SeekableStreamEncoder *encoder;
+ FLAC__StreamMetadata **meta;
- GstTagList * tags;
-};
+ GstTagList *tags;
+ };
-struct _FlacEncClass {
- GstElementClass parent_class;
-};
+ struct _FlacEncClass
+ {
+ GstElementClass parent_class;
+ };
-GType flacenc_get_type(void);
+ GType flacenc_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __FLACENC_H__ */
+#endif /* __FLACENC_H__ */
diff --git a/ext/flac/gstflactag.c b/ext/flac/gstflactag.c
index 5d1c56c2..c931f41c 100644
--- a/ext/flac/gstflactag.c
+++ b/ext/flac/gstflactag.c
@@ -36,17 +36,19 @@
typedef struct _GstFlacTag GstFlacTag;
typedef struct _GstFlacTagClass GstFlacTagClass;
-static inline
-gint min (gint a, gint b) {
+static inline gint
+min (gint a, gint b)
+{
if (a < b) {
return a;
} else {
return b;
}
}
-
-typedef enum {
+
+typedef enum
+{
GST_FLAC_TAG_STATE_INIT,
GST_FLAC_TAG_STATE_METADATA_BLOCKS,
GST_FLAC_TAG_STATE_METADATA_NEXT_BLOCK,
@@ -57,77 +59,78 @@ typedef enum {
} GstFlacTagState;
-struct _GstFlacTag {
- GstElement element;
+struct _GstFlacTag
+{
+ GstElement element;
/* pads */
- GstPad * sinkpad;
- GstPad * srcpad;
+ GstPad *sinkpad;
+ GstPad *srcpad;
- GstFlacTagState state;
+ GstFlacTagState state;
- GstBuffer * buffer;
- GstBuffer * vorbiscomment;
- GstTagList * tags;
+ GstBuffer *buffer;
+ GstBuffer *vorbiscomment;
+ GstTagList *tags;
- guint metadata_bytes_remaining;
- gboolean metadata_last_block;
+ guint metadata_bytes_remaining;
+ gboolean metadata_last_block;
- gboolean only_output_tags;
+ gboolean only_output_tags;
};
-struct _GstFlacTagClass {
+struct _GstFlacTagClass
+{
GstElementClass parent_class;
};
/* elementfactory information */
-static GstElementDetails gst_flac_tag_details = GST_ELEMENT_DETAILS (
- "flac rettager",
- "Tag",
- "Rewrite tags in a FLAC file",
- "Christope Fergeau <teuf@gnome.org>"
-);
+static GstElementDetails gst_flac_tag_details =
+GST_ELEMENT_DETAILS ("flac rettager",
+ "Tag",
+ "Rewrite tags in a FLAC file",
+ "Christope Fergeau <teuf@gnome.org>");
/* signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
static GstStaticPadTemplate flac_tag_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-flac; application/x-gst-tags")
-);
+ GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-flac; application/x-gst-tags")
+ );
static GstStaticPadTemplate flac_tag_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-flac")
-);
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-flac")
+ );
-static void gst_flac_tag_base_init (gpointer g_class);
-static void gst_flac_tag_class_init (GstFlacTagClass * klass);
-static void gst_flac_tag_init (GstFlacTag * tag);
+static void gst_flac_tag_base_init (gpointer g_class);
+static void gst_flac_tag_class_init (GstFlacTagClass * klass);
+static void gst_flac_tag_init (GstFlacTag * tag);
-static void gst_flac_tag_chain (GstPad * pad,
- GstData * data);
+static void gst_flac_tag_chain (GstPad * pad, GstData * data);
-static GstElementStateReturn gst_flac_tag_change_state (GstElement * element);
+static GstElementStateReturn gst_flac_tag_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
+
/* static guint gst_flac_tag_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -152,11 +155,14 @@ gst_flac_tag_get_type (void)
NULL,
NULL
};
-
- flac_tag_type = g_type_register_static(GST_TYPE_ELEMENT, "GstFlacTag", &flac_tag_info, 0);
- g_type_add_interface_static (flac_tag_type, GST_TYPE_TAG_SETTER, &tag_setter_info);
-
+ flac_tag_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstFlacTag", &flac_tag_info,
+ 0);
+
+ g_type_add_interface_static (flac_tag_type, GST_TYPE_TAG_SETTER,
+ &tag_setter_info);
+
}
return flac_tag_type;
}
@@ -170,29 +176,29 @@ gst_flac_tag_base_init (gpointer g_class)
gst_element_class_set_details (element_class, &gst_flac_tag_details);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&flac_tag_sink_template));
+ gst_static_pad_template_get (&flac_tag_sink_template));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&flac_tag_src_template));
+ gst_static_pad_template_get (&flac_tag_src_template));
}
-static void
-send_eos (GstFlacTag *tag)
+static void
+send_eos (GstFlacTag * tag)
{
gst_element_set_eos (GST_ELEMENT (tag));
gst_pad_push (tag->srcpad, GST_DATA (gst_event_new (GST_EVENT_EOS)));
/* Seek to end of sink stream */
if (gst_pad_send_event (GST_PAD_PEER (tag->sinkpad),
- gst_event_new_seek (GST_FORMAT_BYTES | GST_SEEK_METHOD_END |
- GST_SEEK_FLAG_FLUSH, 0))) {
+ gst_event_new_seek (GST_FORMAT_BYTES | GST_SEEK_METHOD_END |
+ GST_SEEK_FLAG_FLUSH, 0))) {
} else {
g_warning ("Couldn't seek to eos on sinkpad\n");
}
}
-static gboolean
-caps_nego (GstFlacTag *tag)
+static gboolean
+caps_nego (GstFlacTag * tag)
{
/* do caps nego */
GstCaps *caps;
@@ -202,8 +208,8 @@ caps_nego (GstFlacTag *tag)
tag->only_output_tags = FALSE;
GST_LOG_OBJECT (tag, "normal operation, using audio/x-flac output");
} else {
- if (gst_pad_try_set_caps (tag->srcpad, gst_caps_new_simple (
- "application/x-gst-tags", NULL))
+ if (gst_pad_try_set_caps (tag->srcpad,
+ gst_caps_new_simple ("application/x-gst-tags", NULL))
!= GST_PAD_LINK_REFUSED) {
tag->only_output_tags = TRUE;
GST_LOG_OBJECT (tag, "fast operation, just outputting tags");
@@ -211,36 +217,39 @@ caps_nego (GstFlacTag *tag)
} else {
return FALSE;
}
- }
+ }
return TRUE;
}
static void
-gst_flac_tag_class_init (GstFlacTagClass *klass)
+gst_flac_tag_class_init (GstFlacTagClass * klass)
{
GstElementClass *gstelement_class;
GObjectClass *gobject_class;
-
- gstelement_class = (GstElementClass*) klass;
- gobject_class = (GObjectClass*) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ gstelement_class = (GstElementClass *) klass;
+ gobject_class = (GObjectClass *) klass;
+
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gstelement_class->change_state = gst_flac_tag_change_state;
}
static void
-gst_flac_tag_init (GstFlacTag *tag)
+gst_flac_tag_init (GstFlacTag * tag)
{
/* create the sink and src pads */
- tag->sinkpad = gst_pad_new_from_template(
- gst_static_pad_template_get (&flac_tag_sink_template), "sink");
+ tag->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&flac_tag_sink_template), "sink");
gst_element_add_pad (GST_ELEMENT (tag), tag->sinkpad);
- gst_pad_set_chain_function (tag->sinkpad, GST_DEBUG_FUNCPTR (gst_flac_tag_chain));
+ gst_pad_set_chain_function (tag->sinkpad,
+ GST_DEBUG_FUNCPTR (gst_flac_tag_chain));
- tag->srcpad = gst_pad_new_from_template(
- gst_static_pad_template_get (&flac_tag_src_template), "src");
+ tag->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&flac_tag_src_template), "src");
gst_element_add_pad (GST_ELEMENT (tag), tag->srcpad);
tag->buffer = NULL;
@@ -250,11 +259,11 @@ gst_flac_tag_init (GstFlacTag *tag)
#define FLAC_MAGIC_SIZE (sizeof (FLAC_MAGIC) - 1)
static void
-gst_flac_tag_chain (GstPad *pad, GstData *data)
+gst_flac_tag_chain (GstPad * pad, GstData * data)
{
GstBuffer *buffer;
GstFlacTag *tag;
-
+
if (GST_IS_EVENT (data)) {
g_print ("Unhandled event\n");
return;
@@ -265,6 +274,7 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
if (tag->buffer) {
GstBuffer *merge;
+
merge = gst_buffer_merge (tag->buffer, buffer);
gst_buffer_unref (buffer);
gst_buffer_unref (tag->buffer);
@@ -284,13 +294,17 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
return;
}
- if (strncmp (GST_BUFFER_DATA (tag->buffer), FLAC_MAGIC, FLAC_MAGIC_SIZE) == 0) {
+ if (strncmp (GST_BUFFER_DATA (tag->buffer), FLAC_MAGIC,
+ FLAC_MAGIC_SIZE) == 0) {
GstBuffer *sub;
+
tag->state = GST_FLAC_TAG_STATE_METADATA_BLOCKS;
sub = gst_buffer_create_sub (tag->buffer, 0, FLAC_MAGIC_SIZE);
-
+
gst_pad_push (tag->srcpad, GST_DATA (sub));
- sub = gst_buffer_create_sub (tag->buffer, FLAC_MAGIC_SIZE, GST_BUFFER_SIZE (tag->buffer) - FLAC_MAGIC_SIZE);
+ sub =
+ gst_buffer_create_sub (tag->buffer, FLAC_MAGIC_SIZE,
+ GST_BUFFER_SIZE (tag->buffer) - FLAC_MAGIC_SIZE);
gst_buffer_unref (tag->buffer);
/* We do a copy because we need a writable buffer, and _create_sub
* sets the buffer it uses to read-only
@@ -332,10 +346,9 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
}
type = (GST_BUFFER_DATA (tag->buffer)[0]) & 0x7F;
- size =
- ((GST_BUFFER_DATA (tag->buffer)[1]) << 16)
- | ((GST_BUFFER_DATA (tag->buffer)[2]) << 8)
- | (GST_BUFFER_DATA (tag->buffer)[3]);
+ size = ((GST_BUFFER_DATA (tag->buffer)[1]) << 16)
+ | ((GST_BUFFER_DATA (tag->buffer)[2]) << 8)
+ | (GST_BUFFER_DATA (tag->buffer)[3]);
/* The 4 bytes long header isn't included in the metadata size */
tag->metadata_bytes_remaining = size + 4;
@@ -352,14 +365,14 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
/* Reads a metadata block */
if ((tag->state == GST_FLAC_TAG_STATE_WRITING_METADATA_BLOCK) ||
- (tag->state == GST_FLAC_TAG_STATE_VC_METADATA_BLOCK)) {
- GstBuffer *sub;
+ (tag->state == GST_FLAC_TAG_STATE_VC_METADATA_BLOCK)) {
+ GstBuffer *sub;
guint bytes_to_push;
g_assert (tag->metadata_bytes_remaining != 0);
- bytes_to_push = min (tag->metadata_bytes_remaining,
- GST_BUFFER_SIZE (tag->buffer));
+ bytes_to_push = min (tag->metadata_bytes_remaining,
+ GST_BUFFER_SIZE (tag->buffer));
sub = gst_buffer_create_sub (tag->buffer, 0, bytes_to_push);
@@ -370,6 +383,7 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
tag->vorbiscomment = sub;
} else {
GstBuffer *merge;
+
merge = gst_buffer_merge (tag->vorbiscomment, sub);
gst_buffer_unref (tag->vorbiscomment);
gst_buffer_unref (sub);
@@ -382,8 +396,8 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
if (GST_BUFFER_SIZE (tag->buffer) > bytes_to_push) {
GstBuffer *sub;
- sub = gst_buffer_create_sub (tag->buffer, bytes_to_push,
- GST_BUFFER_SIZE (tag->buffer) - bytes_to_push);
+ sub = gst_buffer_create_sub (tag->buffer, bytes_to_push,
+ GST_BUFFER_SIZE (tag->buffer) - bytes_to_push);
gst_buffer_unref (tag->buffer);
/* We make a copy because we need a writable buffer, and _create_sub
@@ -415,10 +429,9 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
if (tag->vorbiscomment != NULL) {
/* We found some tags, try to parse them and notify the other elements
* that we encoutered some tags
- */
- tag->tags = gst_tag_list_from_vorbiscomment_buffer (tag->vorbiscomment,
- GST_BUFFER_DATA (tag->vorbiscomment),
- 4, NULL);
+ */
+ tag->tags = gst_tag_list_from_vorbiscomment_buffer (tag->vorbiscomment,
+ GST_BUFFER_DATA (tag->vorbiscomment), 4, NULL);
if (tag->tags != NULL) {
gst_element_found_tags (GST_ELEMENT (tag), tag->tags);
}
@@ -431,7 +444,7 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
return;
}
}
-
+
/* Skip to next state */
if (tag->metadata_last_block == FALSE) {
tag->state = GST_FLAC_TAG_STATE_METADATA_BLOCKS;
@@ -461,9 +474,9 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
g_assert (tag->only_output_tags == FALSE);
user_tags = gst_tag_setter_get_list (GST_TAG_SETTER (tag));
- merged_tags = gst_tag_list_merge (tag->tags, user_tags,
- gst_tag_setter_get_merge_mode (GST_TAG_SETTER (tag)));
-
+ merged_tags = gst_tag_list_merge (tag->tags, user_tags,
+ gst_tag_setter_get_merge_mode (GST_TAG_SETTER (tag)));
+
if (merged_tags == NULL) {
/* If we get a NULL list of tags, we must generate a padding block
* which is marked as the last metadata block, otherwise we'll
@@ -473,23 +486,25 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
buffer = gst_buffer_new_and_alloc (12);
if (buffer == NULL) {
GST_ELEMENT_ERROR (tag, CORE, TOO_LAZY, (NULL),
- ("Error creating 12-byte buffer for padding block"));
+ ("Error creating 12-byte buffer for padding block"));
}
memset (GST_BUFFER_DATA (buffer), 0, GST_BUFFER_SIZE (buffer));
- GST_BUFFER_DATA (buffer)[0] = 0x81; /* 0x80 = Last metadata block,
- * 0x01 = padding block
- */
+ GST_BUFFER_DATA (buffer)[0] = 0x81; /* 0x80 = Last metadata block,
+ * 0x01 = padding block
+ */
} else {
guchar header[4];
+
memset (header, 0, sizeof (header));
- header[0] = 0x84; /* 0x80 = Last metadata block,
- * 0x04 = vorbiscomment block
- */
- buffer = gst_tag_list_to_vorbiscomment_buffer (merged_tags, header,
- sizeof (header), NULL);
+ header[0] = 0x84; /* 0x80 = Last metadata block,
+ * 0x04 = vorbiscomment block
+ */
+ buffer = gst_tag_list_to_vorbiscomment_buffer (merged_tags, header,
+ sizeof (header), NULL);
gst_tag_list_free (merged_tags);
if (buffer == NULL) {
- GST_ELEMENT_ERROR (tag, CORE, TAG, (NULL), ("Error converting tag list to vorbiscomment buffer"));
+ GST_ELEMENT_ERROR (tag, CORE, TAG, (NULL),
+ ("Error converting tag list to vorbiscomment buffer"));
return;
}
size = GST_BUFFER_SIZE (buffer) - 4;
@@ -498,9 +513,10 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
* while the vorbis specs allow more than that. Shouldn't
* be a real world problem though
*/
- GST_ELEMENT_ERROR (tag, CORE, TAG, (NULL), ("Vorbis comment of size %d too long", size));
+ GST_ELEMENT_ERROR (tag, CORE, TAG, (NULL),
+ ("Vorbis comment of size %d too long", size));
return;
- }
+ }
}
/* The 4 byte metadata block header isn't accounted for in the total
@@ -509,8 +525,8 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
size = GST_BUFFER_SIZE (buffer) - 4;
GST_BUFFER_DATA (buffer)[1] = ((size & 0xFF0000) >> 16);
- GST_BUFFER_DATA (buffer)[2] = ((size & 0x00FF00) >> 8);
- GST_BUFFER_DATA (buffer)[3] = (size & 0x0000FF);
+ GST_BUFFER_DATA (buffer)[2] = ((size & 0x00FF00) >> 8);
+ GST_BUFFER_DATA (buffer)[3] = (size & 0x0000FF);
gst_pad_push (tag->srcpad, GST_DATA (buffer));
tag->state = GST_FLAC_TAG_STATE_AUDIO_DATA;
}
@@ -525,7 +541,7 @@ gst_flac_tag_chain (GstPad *pad, GstData *data)
static GstElementStateReturn
-gst_flac_tag_change_state (GstElement *element)
+gst_flac_tag_change_state (GstElement * element)
{
GstFlacTag *tag;
@@ -543,7 +559,7 @@ gst_flac_tag_change_state (GstElement *element)
break;
case GST_STATE_PAUSED_TO_READY:
if (tag->buffer) {
- gst_buffer_unref (tag->buffer);
+ gst_buffer_unref (tag->buffer);
tag->buffer = NULL;
}
if (tag->vorbiscomment) {
diff --git a/ext/gdk_pixbuf/gst_loader.c b/ext/gdk_pixbuf/gst_loader.c
index b0538cac..95fd5af7 100644
--- a/ext/gdk_pixbuf/gst_loader.c
+++ b/ext/gdk_pixbuf/gst_loader.c
@@ -31,53 +31,58 @@
#include <fcntl.h>
-typedef struct {
+typedef struct
+{
/* stuff gdk throws at us and we're supposed to keep */
- GdkPixbufModuleSizeFunc size_func;
- GdkPixbufModulePreparedFunc prepared_func;
- GdkPixbufModuleUpdatedFunc updated_func;
- gpointer user_data;
+ GdkPixbufModuleSizeFunc size_func;
+ GdkPixbufModulePreparedFunc prepared_func;
+ GdkPixbufModuleUpdatedFunc updated_func;
+ gpointer user_data;
/* our own stuff - we're much better at keeping fields small :p */
- GstGdkAnimation * ani;
- gboolean initialized;
+ GstGdkAnimation *ani;
+ gboolean initialized;
} GstLoaderContext;
GST_DEBUG_CATEGORY_STATIC (gst_loader_debug);
#define GST_CAT_DEFAULT gst_loader_debug
static gboolean
-gst_loader_init (GError **error)
+gst_loader_init (GError ** error)
{
static gboolean inited = FALSE;
-
+
if (inited)
return TRUE;
-
+
if (!g_thread_supported ()) {
g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_FAILED,
- "The GStreamer loader requires threading support.");
+ "The GStreamer loader requires threading support.");
return FALSE;
}
if (!gst_init_check (0, NULL)) {
g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_FAILED,
- "GStreamer could not be initialized.");
+ "GStreamer could not be initialized.");
return FALSE;
}
inited = TRUE;
- GST_DEBUG_CATEGORY_INIT (gst_loader_debug, "gstloader", 0, "entry point debugging for the GStreamer gdk pixbuf loader");
+ GST_DEBUG_CATEGORY_INIT (gst_loader_debug, "gstloader", 0,
+ "entry point debugging for the GStreamer gdk pixbuf loader");
return TRUE;
}
+
static gpointer
-gst_loader_begin_load (GdkPixbufModuleSizeFunc size_func, GdkPixbufModulePreparedFunc prepared_func,
- GdkPixbufModuleUpdatedFunc updated_func, gpointer user_data, GError **error)
+gst_loader_begin_load (GdkPixbufModuleSizeFunc size_func,
+ GdkPixbufModulePreparedFunc prepared_func,
+ GdkPixbufModuleUpdatedFunc updated_func, gpointer user_data,
+ GError ** error)
{
GstLoaderContext *context;
-
+
if (!gst_loader_init (error))
return NULL;
-
+
context = g_new (GstLoaderContext, 1);
context->size_func = size_func;
context->prepared_func = prepared_func;
@@ -91,7 +96,8 @@ gst_loader_begin_load (GdkPixbufModuleSizeFunc size_func, GdkPixbufModulePrepare
g_free (context);
return NULL;
}
- context->ani->temp_fd = g_file_open_tmp (NULL, &context->ani->temp_location, error);
+ context->ani->temp_fd =
+ g_file_open_tmp (NULL, &context->ani->temp_location, error);
if (context->ani->temp_fd == 0) {
g_object_unref (context->ani);
g_free (context);
@@ -101,19 +107,27 @@ gst_loader_begin_load (GdkPixbufModuleSizeFunc size_func, GdkPixbufModulePrepare
GST_LOG_OBJECT (context->ani, "begin loading");
return context;
}
+
static gboolean
-gst_loader_load_increment (gpointer context_pointer, const guchar *buf, guint size, GError **error)
+gst_loader_load_increment (gpointer context_pointer, const guchar * buf,
+ guint size, GError ** error)
{
GdkPixbufAnimationIter *iter;
GstLoaderContext *context = (GstLoaderContext *) context_pointer;
GST_LOG_OBJECT (context->ani, "load increment: %u bytes", size);
gst_gdk_animation_add_data (context->ani, buf, size);
- if (!context->initialized && (iter = gdk_pixbuf_animation_get_iter (
- GDK_PIXBUF_ANIMATION (context->ani), NULL)) != NULL) {
- int width = gdk_pixbuf_animation_get_width (GDK_PIXBUF_ANIMATION (context->ani));
- int height = gdk_pixbuf_animation_get_height (GDK_PIXBUF_ANIMATION (context->ani));
- GdkPixbuf *pixbuf = gdk_pixbuf_animation_get_static_image (GDK_PIXBUF_ANIMATION (context->ani));
+ if (!context->initialized
+ && (iter =
+ gdk_pixbuf_animation_get_iter (GDK_PIXBUF_ANIMATION (context->ani),
+ NULL)) != NULL) {
+ int width =
+ gdk_pixbuf_animation_get_width (GDK_PIXBUF_ANIMATION (context->ani));
+ int height =
+ gdk_pixbuf_animation_get_height (GDK_PIXBUF_ANIMATION (context->ani));
+ GdkPixbuf *pixbuf =
+ gdk_pixbuf_animation_get_static_image (GDK_PIXBUF_ANIMATION (context->
+ ani));
g_object_unref (iter);
GST_LOG_OBJECT (context->ani, "initializing loader");
@@ -123,17 +137,20 @@ gst_loader_load_increment (gpointer context_pointer, const guchar *buf, guint si
}
if (context->prepared_func) {
- GST_LOG_OBJECT (context->ani, "calling prepared_func %p", context->prepared_func);
- context->prepared_func (pixbuf, GDK_PIXBUF_ANIMATION (context->ani), context->user_data);
+ GST_LOG_OBJECT (context->ani, "calling prepared_func %p",
+ context->prepared_func);
+ context->prepared_func (pixbuf, GDK_PIXBUF_ANIMATION (context->ani),
+ context->user_data);
}
-
+
context->initialized = TRUE;
}
-
+
return TRUE;
}
+
static gboolean
-gst_loader_stop_load (gpointer context_pointer, GError **error)
+gst_loader_stop_load (gpointer context_pointer, GError ** error)
{
GstLoaderContext *context = (GstLoaderContext *) context_pointer;
@@ -146,20 +163,20 @@ gst_loader_stop_load (gpointer context_pointer, GError **error)
}
static GdkPixbufAnimation *
-gst_loader_load_animation (FILE *f, GError **error)
+gst_loader_load_animation (FILE * f, GError ** error)
{
gchar *filename;
GstGdkAnimation *ani;
GdkPixbufAnimationIter *iter = NULL;
-
+
if (!gst_loader_init (error))
return NULL;
-
+
GST_LOG ("load_animation");
ani = gst_gdk_animation_new (error);
if (!ani)
return NULL;
-
+
filename = g_strdup_printf ("/proc/self/fd/%d", fileno (f));
ani->temp_fd = open (filename, 0);
if (ani->temp_fd >= 0) {
@@ -170,21 +187,21 @@ gst_loader_load_animation (FILE *f, GError **error)
g_free (filename);
if (iter == NULL) {
g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
- "could not create an image");
+ "could not create an image");
g_object_unref (ani);
GST_INFO ("could not create an image");
- return NULL;
+ return NULL;
}
g_object_unref (iter);
GST_LOG_OBJECT (ani, "load_animation succeeded");
return GDK_PIXBUF_ANIMATION (ani);
}
static GdkPixbuf *
-gst_loader_load (FILE *f, GError **error)
+gst_loader_load (FILE * f, GError ** error)
{
GdkPixbufAnimation *ani;
GdkPixbuf *pixbuf;
-
+
ani = gst_loader_load_animation (f, error);
if (ani == NULL)
return NULL;
@@ -193,8 +210,8 @@ gst_loader_load (FILE *f, GError **error)
if (!pixbuf) {
GST_ERROR_OBJECT (ani, "Could not get an image in _pixbuf_load");
g_object_unref (ani);
- g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
- "Could not get an image from file.");
+ g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
+ "Could not get an image from file.");
return NULL;
}
@@ -203,8 +220,9 @@ gst_loader_load (FILE *f, GError **error)
return pixbuf;
}
+
void
-fill_vtable (GdkPixbufModule *module)
+fill_vtable (GdkPixbufModule * module)
{
module->load = gst_loader_load;
module->begin_load = gst_loader_begin_load;
@@ -212,33 +230,35 @@ fill_vtable (GdkPixbufModule *module)
module->stop_load = gst_loader_stop_load;
module->load_animation = gst_loader_load_animation;
}
+
void
-fill_info (GdkPixbufFormat *info)
+fill_info (GdkPixbufFormat * info)
{
static GdkPixbufModulePattern signature[] = {
/* AVI */
- { "RIFF AVI ", " xxxx ", 100 },
+ {"RIFF AVI ", " xxxx ", 100},
/* MPEG 1 */
- { "xx\001\272", "zz ", 100 },
+ {"xx\001\272", "zz ", 100},
/* MPEG 2 */
- { "xx\001\263", "zz ", 100 },
+ {"xx\001\263", "zz ", 100},
/* Quicktime */
- { " wide", "xxxx ", 80 },
- { " moov", "xxxx ", 80 },
- { " mdat", "xxxx ", 80 },
- { " pnot", "xxxx ", 80 },
- { " PICT", "xxxx ", 80 },
- { " free", "xxxx ", 80 },
+ {" wide", "xxxx ", 80},
+ {" moov", "xxxx ", 80},
+ {" mdat", "xxxx ", 80},
+ {" pnot", "xxxx ", 80},
+ {" PICT", "xxxx ", 80},
+ {" free", "xxxx ", 80},
/* ASF */
- { "\060\046\262\165\216\146\317\021\246\331 \252 \142\316\154", " z z ", 100 },
- { NULL, NULL, 0 }
+ {"\060\046\262\165\216\146\317\021\246\331 \252 \142\316\154",
+ " z z ", 100},
+ {NULL, NULL, 0}
};
-
+
static gchar *mime_types[] = {
"video/avi", "video/x-avi", "video/x-msvideo",
"video/mpeg",
- "video/quicktime",
- "video/x-ms-asf",
+ "video/quicktime",
+ "video/x-ms-asf",
NULL
};
@@ -246,14 +266,14 @@ fill_info (GdkPixbufFormat *info)
"avi",
"mpeg", "mpe", "mpg",
"mov",
- "asf", "wmv",
+ "asf", "wmv",
NULL
};
-
- info->name = "GStreamer";
- info->signature = signature;
+
+ info->name = "GStreamer";
+ info->signature = signature;
info->description = "GStreamer supported video";
- info->mime_types = mime_types;
- info->extensions = extensions;
- info->flags = 0;
+ info->mime_types = mime_types;
+ info->extensions = extensions;
+ info->flags = 0;
}
diff --git a/ext/gdk_pixbuf/gstgdkanimation.c b/ext/gdk_pixbuf/gstgdkanimation.c
index a0b6cb93..df58c5be 100644
--- a/ext/gdk_pixbuf/gstgdkanimation.c
+++ b/ext/gdk_pixbuf/gstgdkanimation.c
@@ -27,17 +27,18 @@
GST_DEBUG_CATEGORY_STATIC (gst_gdk_animation_debug);
#define GST_CAT_DEFAULT gst_gdk_animation_debug
-static void gst_gdk_animation_class_init (gpointer g_class,
- gpointer class_data);
-static void gst_gdk_animation_finalize (GObject * object);
+static void gst_gdk_animation_class_init (gpointer g_class,
+ gpointer class_data);
+static void gst_gdk_animation_finalize (GObject * object);
-static gboolean gst_gdk_animation_is_static_image (GdkPixbufAnimation * animation);
-static GdkPixbuf* gst_gdk_animation_get_static_image (GdkPixbufAnimation * animation);
-static void gst_gdk_animation_get_size (GdkPixbufAnimation * anim,
- gint * width,
- gint * height);
-static GdkPixbufAnimationIter* gst_gdk_animation_get_iter (GdkPixbufAnimation * anim,
- const GTimeVal * start_time);
+static gboolean gst_gdk_animation_is_static_image (GdkPixbufAnimation *
+ animation);
+static GdkPixbuf *gst_gdk_animation_get_static_image (GdkPixbufAnimation *
+ animation);
+static void gst_gdk_animation_get_size (GdkPixbufAnimation * anim, gint * width,
+ gint * height);
+static GdkPixbufAnimationIter *gst_gdk_animation_get_iter (GdkPixbufAnimation *
+ anim, const GTimeVal * start_time);
static gpointer parent_class;
@@ -53,19 +54,20 @@ gst_gdk_animation_get_type (void)
NULL,
NULL,
gst_gdk_animation_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
sizeof (GstGdkAnimation),
- 0, /* n_preallocs */
+ 0, /* n_preallocs */
NULL,
};
-
+
object_type = g_type_register_static (GDK_TYPE_PIXBUF_ANIMATION,
- "GstGdkAnimation", &object_info, 0);
+ "GstGdkAnimation", &object_info, 0);
- GST_DEBUG_CATEGORY_INIT (gst_gdk_animation_debug, "gstloader_animation", 0, "GStreamer GdkPixbuf loader - GdkAnimation class");
+ GST_DEBUG_CATEGORY_INIT (gst_gdk_animation_debug, "gstloader_animation", 0,
+ "GStreamer GdkPixbuf loader - GdkAnimation class");
}
-
+
return object_type;
}
static void
@@ -73,9 +75,9 @@ gst_gdk_animation_class_init (gpointer g_class, gpointer class_data)
{
GObjectClass *object_class = G_OBJECT_CLASS (g_class);
GdkPixbufAnimationClass *anim_class = GDK_PIXBUF_ANIMATION_CLASS (g_class);
-
+
parent_class = g_type_class_peek_parent (g_class);
-
+
object_class->finalize = gst_gdk_animation_finalize;
anim_class->is_static_image = gst_gdk_animation_is_static_image;
@@ -84,7 +86,7 @@ gst_gdk_animation_class_init (gpointer g_class, gpointer class_data)
anim_class->get_iter = gst_gdk_animation_get_iter;
}
static void
-gst_gdk_animation_finalize (GObject *object)
+gst_gdk_animation_finalize (GObject * object)
{
GstGdkAnimation *ani = GST_GDK_ANIMATION (object);
@@ -99,39 +101,47 @@ gst_gdk_animation_finalize (GObject *object)
g_object_unref (ani->pixbuf);
ani->pixbuf = NULL;
}
-
+
G_OBJECT_CLASS (parent_class)->finalize (object);
}
+
GstGdkAnimation *
-gst_gdk_animation_new (GError **error)
+gst_gdk_animation_new (GError ** error)
{
- GstGdkAnimation *ani = GST_GDK_ANIMATION (g_object_new (GST_TYPE_GDK_ANIMATION, NULL));
+ GstGdkAnimation *ani =
+ GST_GDK_ANIMATION (g_object_new (GST_TYPE_GDK_ANIMATION, NULL));
return ani;
}
+
gboolean
-gst_gdk_animation_add_data (GstGdkAnimation *ani, const guint8 *data, guint size)
+gst_gdk_animation_add_data (GstGdkAnimation * ani, const guint8 * data,
+ guint size)
{
return (write (ani->temp_fd, data, size) == size);
}
+
void
-gst_gdk_animation_done_adding (GstGdkAnimation *ani)
+gst_gdk_animation_done_adding (GstGdkAnimation * ani)
{
close (ani->temp_fd);
ani->temp_fd = 0;
}
+
static gboolean
-gst_gdk_animation_is_static_image (GdkPixbufAnimation *animation)
+gst_gdk_animation_is_static_image (GdkPixbufAnimation * animation)
{
return FALSE;
}
static void
-gst_gdk_animation_get_size (GdkPixbufAnimation *anim, gint *width, int *height)
+gst_gdk_animation_get_size (GdkPixbufAnimation * anim, gint * width,
+ int *height)
{
GstGdkAnimation *ani = GST_GDK_ANIMATION (anim);
- GST_LOG_OBJECT (ani, "get_size called (%p, %p) %d x %d", width, height, ani->width, ani->height);
+ GST_LOG_OBJECT (ani, "get_size called (%p, %p) %d x %d", width, height,
+ ani->width, ani->height);
if (width)
*width = ani->width;
@@ -140,17 +150,21 @@ gst_gdk_animation_get_size (GdkPixbufAnimation *anim, gint *width, int *height)
}
-static void gst_gdk_animation_iter_class_init (gpointer g_class,
- gpointer class_data);
-static void gst_gdk_animation_iter_init (GTypeInstance * instance,
- gpointer g_class);
-static void gst_gdk_animation_iter_finalize (GObject * object);
+static void gst_gdk_animation_iter_class_init (gpointer g_class,
+ gpointer class_data);
+static void gst_gdk_animation_iter_init (GTypeInstance * instance,
+ gpointer g_class);
+static void gst_gdk_animation_iter_finalize (GObject * object);
-static gint gst_gdk_animation_iter_get_delay_time (GdkPixbufAnimationIter * iter);
-static GdkPixbuf * gst_gdk_animation_iter_get_pixbuf (GdkPixbufAnimationIter * iter);
-static gboolean gst_gdk_animation_iter_on_currently_loading_frame (GdkPixbufAnimationIter * iter);
-static gboolean gst_gdk_animation_iter_advance (GdkPixbufAnimationIter * iter,
- const GTimeVal * current_time);
+static gint gst_gdk_animation_iter_get_delay_time (GdkPixbufAnimationIter *
+ iter);
+static GdkPixbuf *gst_gdk_animation_iter_get_pixbuf (GdkPixbufAnimationIter *
+ iter);
+static gboolean
+gst_gdk_animation_iter_on_currently_loading_frame (GdkPixbufAnimationIter *
+ iter);
+static gboolean gst_gdk_animation_iter_advance (GdkPixbufAnimationIter * iter,
+ const GTimeVal * current_time);
static gpointer iter_parent_class;
@@ -165,17 +179,17 @@ gst_gdk_animation_iter_get_type (void)
NULL,
NULL,
gst_gdk_animation_iter_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
sizeof (GstGdkAnimationIter),
- 0, /* n_preallocs */
+ 0, /* n_preallocs */
gst_gdk_animation_iter_init,
};
-
+
object_type = g_type_register_static (GDK_TYPE_PIXBUF_ANIMATION_ITER,
- "GdkPixbufAniAnimIter", &object_info, 0);
+ "GdkPixbufAniAnimIter", &object_info, 0);
}
-
+
return object_type;
}
@@ -183,19 +197,21 @@ static void
gst_gdk_animation_iter_class_init (gpointer g_class, gpointer class_data)
{
GObjectClass *object_class = G_OBJECT_CLASS (g_class);
- GdkPixbufAnimationIterClass *anim_iter_class = GDK_PIXBUF_ANIMATION_ITER_CLASS (g_class);
-
+ GdkPixbufAnimationIterClass *anim_iter_class =
+ GDK_PIXBUF_ANIMATION_ITER_CLASS (g_class);
+
iter_parent_class = g_type_class_peek_parent (g_class);
-
+
object_class->finalize = gst_gdk_animation_iter_finalize;
-
+
anim_iter_class->get_delay_time = gst_gdk_animation_iter_get_delay_time;
anim_iter_class->get_pixbuf = gst_gdk_animation_iter_get_pixbuf;
- anim_iter_class->on_currently_loading_frame = gst_gdk_animation_iter_on_currently_loading_frame;
+ anim_iter_class->on_currently_loading_frame =
+ gst_gdk_animation_iter_on_currently_loading_frame;
anim_iter_class->advance = gst_gdk_animation_iter_advance;
}
static void
-gst_gdk_animation_iter_init (GTypeInstance *instance, gpointer g_class)
+gst_gdk_animation_iter_init (GTypeInstance * instance, gpointer g_class)
{
GstGdkAnimationIter *iter = GST_GDK_ANIMATION_ITER (instance);
@@ -203,18 +219,19 @@ gst_gdk_animation_iter_init (GTypeInstance *instance, gpointer g_class)
iter->eos = FALSE;
}
static void
-gst_gdk_animation_iter_finalize (GObject *object)
+gst_gdk_animation_iter_finalize (GObject * object)
{
GstGdkAnimationIter *iter = GST_GDK_ANIMATION_ITER (object);
-
+
g_object_unref (iter->ani);
-
+
if (iter->pipeline)
g_object_unref (iter->pipeline);
if (iter->pixbuf)
g_object_unref (iter->pixbuf);
while (iter->buffers) {
GstBuffer *buffer = GST_BUFFER (g_queue_pop_head (iter->buffers));
+
if (buffer) {
GST_LOG_OBJECT (iter, "unreffing buffer %p on finalize", buffer);
gst_data_unref (GST_DATA (buffer));
@@ -226,36 +243,40 @@ gst_gdk_animation_iter_finalize (GObject *object)
G_OBJECT_CLASS (iter_parent_class)->finalize (object);
}
static void
-got_handoff (GstElement *fakesink, GstBuffer *buffer, GstPad *pad, GstGdkAnimationIter *iter)
+got_handoff (GstElement * fakesink, GstBuffer * buffer, GstPad * pad,
+ GstGdkAnimationIter * iter)
{
- GST_LOG_OBJECT (iter, "enqueing buffer %p (timestamp %"G_GUINT64_FORMAT")",
- buffer, GST_BUFFER_TIMESTAMP (buffer));
+ GST_LOG_OBJECT (iter, "enqueing buffer %p (timestamp %" G_GUINT64_FORMAT ")",
+ buffer, GST_BUFFER_TIMESTAMP (buffer));
gst_data_ref (GST_DATA (buffer));
g_queue_push_tail (iter->buffers, buffer);
}
+
static gboolean
-gst_gdk_animation_iter_create_pipeline (GstGdkAnimationIter *iter)
+gst_gdk_animation_iter_create_pipeline (GstGdkAnimationIter * iter)
{
GstElement *src, *typefind, *autoplugger, *sink, *colorspace;
GstCaps *caps = GST_CAPS_NEW ("pixbuf_filter32",
- "video/x-raw-rgb",
- "endianness", GST_PROPS_INT (G_BIG_ENDIAN),
- "bpp", GST_PROPS_INT (32),
- "red_mask", GST_PROPS_INT (0xFF000000),
- "green_mask", GST_PROPS_INT (0x00FF0000),
- "blue_mask", GST_PROPS_INT (0x0000FF00)
- );
+ "video/x-raw-rgb",
+ "endianness", GST_PROPS_INT (G_BIG_ENDIAN),
+ "bpp", GST_PROPS_INT (32),
+ "red_mask", GST_PROPS_INT (0xFF000000),
+ "green_mask", GST_PROPS_INT (0x00FF0000),
+ "blue_mask", GST_PROPS_INT (0x0000FF00)
+ );
+
gst_caps_append (caps, GST_CAPS_NEW ("pixbuf_filter24",
- "video/x-raw-rgb",
- "endianness", GST_PROPS_INT (G_BIG_ENDIAN),
- "bpp", GST_PROPS_INT (24),
- "red_mask", GST_PROPS_INT (0xFF0000),
- "green_mask", GST_PROPS_INT (0x00FF00),
- "blue_mask", GST_PROPS_INT (0x0000FF)
- ));
+ "video/x-raw-rgb",
+ "endianness", GST_PROPS_INT (G_BIG_ENDIAN),
+ "bpp", GST_PROPS_INT (24),
+ "red_mask", GST_PROPS_INT (0xFF0000),
+ "green_mask", GST_PROPS_INT (0x00FF00),
+ "blue_mask", GST_PROPS_INT (0x0000FF)
+ ));
iter->pipeline = gst_element_factory_make ("pipeline", "main_pipeline");
- if (iter->pipeline == NULL) return FALSE;
+ if (iter->pipeline == NULL)
+ return FALSE;
if (!(src = gst_element_factory_make ("filesrc", "source")))
goto error;
@@ -265,6 +286,7 @@ gst_gdk_animation_iter_create_pipeline (GstGdkAnimationIter *iter)
GST_INFO_OBJECT (iter, "using file '%s'", iter->ani->temp_location);
} else {
gchar *filename = g_strdup_printf ("/proc/self/fd/%d", iter->ani->temp_fd);
+
g_object_set (src, "location", filename, NULL);
GST_INFO_OBJECT (iter, "using file '%s'", filename);
g_free (filename);
@@ -292,7 +314,7 @@ gst_gdk_animation_iter_create_pipeline (GstGdkAnimationIter *iter)
gst_bin_add (GST_BIN (iter->pipeline), colorspace);
if (!gst_element_link (autoplugger, colorspace))
goto error;
-
+
if (!(sink = gst_element_factory_make ("fakesink", "sink")))
goto error;
g_object_set (sink, "signal-handoffs", TRUE, NULL);
@@ -300,39 +322,42 @@ gst_gdk_animation_iter_create_pipeline (GstGdkAnimationIter *iter)
gst_bin_add (GST_BIN (iter->pipeline), sink);
if (!gst_element_link_filtered (colorspace, sink, caps))
goto error;
- if (gst_element_set_state (iter->pipeline, GST_STATE_PLAYING) != GST_STATE_SUCCESS)
+ if (gst_element_set_state (iter->pipeline,
+ GST_STATE_PLAYING) != GST_STATE_SUCCESS)
goto error;
-
+
return TRUE;
error:
g_object_unref (iter->pipeline);
iter->pipeline = NULL;
return FALSE;
}
+
static gboolean
-gst_gdk_animation_iter_may_advance (GstGdkAnimationIter *iter)
+gst_gdk_animation_iter_may_advance (GstGdkAnimationIter * iter)
{
GstFormat bytes = GST_FORMAT_BYTES;
gint64 offset;
gint64 data_amount;
-
+
if (iter->ani->temp_fd == 0 || iter->ani->temp_location == NULL)
return TRUE;
data_amount = lseek (iter->ani->temp_fd, 0, SEEK_CUR);
g_assert (data_amount >= 0);
- g_assert (gst_element_query (gst_bin_get_by_name (GST_BIN (iter->pipeline), "source"),
- GST_QUERY_POSITION, &bytes, &offset));
+ g_assert (gst_element_query (gst_bin_get_by_name (GST_BIN (iter->pipeline),
+ "source"), GST_QUERY_POSITION, &bytes, &offset));
if (data_amount - offset > GST_GDK_BUFFER_SIZE)
return TRUE;
return FALSE;
}
+
static gboolean
-gst_gdk_animation_get_more_buffers (GstGdkAnimationIter *iter)
+gst_gdk_animation_get_more_buffers (GstGdkAnimationIter * iter)
{
GstBuffer *last = g_queue_peek_tail (iter->buffers);
-
+
do {
GST_LOG_OBJECT (iter, "iterating...");
if (!gst_gdk_animation_iter_may_advance (iter)) {
@@ -348,17 +373,17 @@ gst_gdk_animation_get_more_buffers (GstGdkAnimationIter *iter)
return last != g_queue_peek_tail (iter->buffers);
}
static void
-pixbuf_destroy_notify (guchar *pixels, gpointer data)
+pixbuf_destroy_notify (guchar * pixels, gpointer data)
{
GST_LOG ("unreffing buffer %p because pixbuf was destroyed", data);
gst_data_unref (GST_DATA (data));
}
static void
-gst_gdk_animation_iter_create_pixbuf (GstGdkAnimationIter *iter)
+gst_gdk_animation_iter_create_pixbuf (GstGdkAnimationIter * iter)
{
GstBuffer *buf;
GstGdkAnimation *ani = iter->ani;
-
+
buf = g_queue_pop_head (iter->buffers);
g_assert (buf);
if (iter->pixbuf) {
@@ -368,7 +393,8 @@ gst_gdk_animation_iter_create_pixbuf (GstGdkAnimationIter *iter)
if (ani->width == 0) {
GstPad *pad;
GstCaps *caps;
- GstElement *fakesink = gst_bin_get_by_name (GST_BIN (iter->pipeline), "sink");
+ GstElement *fakesink =
+ gst_bin_get_by_name (GST_BIN (iter->pipeline), "sink");
g_assert (fakesink);
pad = gst_element_get_pad (fakesink, "sink");
g_assert (pad);
@@ -376,92 +402,108 @@ gst_gdk_animation_iter_create_pixbuf (GstGdkAnimationIter *iter)
g_assert (caps);
g_assert (GST_CAPS_IS_FIXED (caps));
g_assert (gst_caps_has_fixed_property (caps, "bpp") &&
- gst_caps_has_fixed_property (caps, "width") &&
- gst_caps_has_fixed_property (caps, "height"));
+ gst_caps_has_fixed_property (caps, "width") &&
+ gst_caps_has_fixed_property (caps, "height"));
gst_caps_get_int (caps, "width", &ani->width);
gst_caps_get_int (caps, "height", &ani->height);
gst_caps_get_int (caps, "bpp", &ani->bpp);
- GST_DEBUG_OBJECT (ani, "found format (width %d, height %d, bpp %d)", ani->width, ani->height, ani->bpp);
+ GST_DEBUG_OBJECT (ani, "found format (width %d, height %d, bpp %d)",
+ ani->width, ani->height, ani->bpp);
}
g_assert (GST_BUFFER_SIZE (buf) == ani->width * ani->height * ani->bpp / 8);
if (ani->bpp == 32) {
gint i;
guint32 *data = (guint32 *) GST_BUFFER_DATA (buf);
+
/* ensure opacity */
for (i = 0; i < ani->width * ani->height; i++) {
data[i] |= 0xFF000000;
}
}
iter->pixbuf = gdk_pixbuf_new_from_data (GST_BUFFER_DATA (buf),
- GDK_COLORSPACE_RGB, ani->bpp == 32, 8, ani->width, ani->height, ani->width * ani->bpp / 8, pixbuf_destroy_notify, buf);
- GST_LOG_OBJECT (iter, "created pixbuf %p from buffer %p (refcount %d)", iter->pixbuf, buf, GST_DATA_REFCOUNT_VALUE (buf));
+ GDK_COLORSPACE_RGB, ani->bpp == 32, 8, ani->width, ani->height,
+ ani->width * ani->bpp / 8, pixbuf_destroy_notify, buf);
+ GST_LOG_OBJECT (iter, "created pixbuf %p from buffer %p (refcount %d)",
+ iter->pixbuf, buf, GST_DATA_REFCOUNT_VALUE (buf));
}
-static GdkPixbufAnimationIter*
-gst_gdk_animation_get_iter (GdkPixbufAnimation *anim, const GTimeVal *start_time)
+static GdkPixbufAnimationIter *
+gst_gdk_animation_get_iter (GdkPixbufAnimation * anim,
+ const GTimeVal * start_time)
{
GstGdkAnimation *ani = GST_GDK_ANIMATION (anim);
GstGdkAnimationIter *iter;
- if (ani->temp_fd != 0 && ani->temp_location != NULL &&
+ if (ani->temp_fd != 0 && ani->temp_location != NULL &&
lseek (ani->temp_fd, 0, SEEK_CUR) < GST_GDK_BUFFER_SIZE) {
GST_DEBUG_OBJECT (ani, "Not enough data to create iterator.");
return NULL;
}
-
+
iter = g_object_new (GST_TYPE_GDK_ANIMATION_ITER, NULL);
iter->start = *start_time;
-
+
iter->ani = ani;
g_object_ref (ani);
if (!gst_gdk_animation_iter_create_pipeline (iter))
goto error;
-
+
if (!gst_gdk_animation_get_more_buffers (iter))
goto error;
-
+
gst_gdk_animation_iter_create_pixbuf (iter);
-
+
return GDK_PIXBUF_ANIMATION_ITER (iter);
error:
g_object_unref (iter);
return NULL;
}
+
static gboolean
-gst_gdk_animation_iter_advance (GdkPixbufAnimationIter *anim_iter, const GTimeVal *current_time)
+gst_gdk_animation_iter_advance (GdkPixbufAnimationIter * anim_iter,
+ const GTimeVal * current_time)
{
GstClockTime offset;
GstBuffer *buffer = NULL;
GstGdkAnimationIter *iter = GST_GDK_ANIMATION_ITER (anim_iter);
/* compute timestamp that next buffer must match */
- offset = ((GstClockTime) current_time->tv_sec - iter->start.tv_sec) * GST_SECOND;
+ offset =
+ ((GstClockTime) current_time->tv_sec - iter->start.tv_sec) * GST_SECOND;
if (iter->start.tv_usec > current_time->tv_usec) {
- offset -= ((GstClockTime) iter->start.tv_usec - current_time->tv_usec) * GST_SECOND / G_USEC_PER_SEC;
+ offset -=
+ ((GstClockTime) iter->start.tv_usec -
+ current_time->tv_usec) * GST_SECOND / G_USEC_PER_SEC;
} else {
- offset += ((GstClockTime) current_time->tv_usec - iter->start.tv_usec) * GST_SECOND / G_USEC_PER_SEC;
+ offset +=
+ ((GstClockTime) current_time->tv_usec -
+ iter->start.tv_usec) * GST_SECOND / G_USEC_PER_SEC;
}
- GST_DEBUG_OBJECT (iter, "advancing to %ld:%ld (started at %ld:%ld) need offset %"G_GUINT64_FORMAT,
- current_time->tv_sec, current_time->tv_usec, iter->start.tv_sec, iter->start.tv_usec, offset);
- if (!iter->just_seeked &&
- offset - iter->last_timestamp > GST_GDK_MAX_DELAY_TO_SEEK) {
- GST_INFO_OBJECT (iter, "current pipeline timestamp is too old (%"G_GUINT64_FORMAT
- " vs %"G_GUINT64_FORMAT"), seeking there", iter->last_timestamp, offset);
- if (gst_element_send_event (gst_bin_get_by_name (GST_BIN (iter->pipeline), "sink"),
- gst_event_new_seek (GST_FORMAT_TIME | GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
- offset))) {
- iter->last_timestamp = offset;
- iter->just_seeked = TRUE;
- } else {
- GST_WARNING_OBJECT (iter, "seek to %"G_GUINT64_FORMAT" didn't work. Iterating there...",
- offset);
- }
+ GST_DEBUG_OBJECT (iter,
+ "advancing to %ld:%ld (started at %ld:%ld) need offset %"
+ G_GUINT64_FORMAT, current_time->tv_sec, current_time->tv_usec,
+ iter->start.tv_sec, iter->start.tv_usec, offset);
+ if (!iter->just_seeked
+ && offset - iter->last_timestamp > GST_GDK_MAX_DELAY_TO_SEEK) {
+ GST_INFO_OBJECT (iter,
+ "current pipeline timestamp is too old (%" G_GUINT64_FORMAT " vs %"
+ G_GUINT64_FORMAT "), seeking there", iter->last_timestamp, offset);
+ if (gst_element_send_event (gst_bin_get_by_name (GST_BIN (iter->pipeline),
+ "sink"),
+ gst_event_new_seek (GST_FORMAT_TIME | GST_SEEK_METHOD_SET |
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, offset))) {
+ iter->last_timestamp = offset;
+ iter->just_seeked = TRUE;
+ } else {
+ GST_WARNING_OBJECT (iter,
+ "seek to %" G_GUINT64_FORMAT " didn't work. Iterating there...",
+ offset);
+ }
} else if (iter->just_seeked) {
iter->just_seeked = FALSE;
}
-
+
while (TRUE) {
if (g_queue_is_empty (iter->buffers)) {
if (iter->eos)
@@ -474,8 +516,8 @@ gst_gdk_animation_iter_advance (GdkPixbufAnimationIter *anim_iter, const GTimeVa
break;
if (buffer) {
GST_LOG_OBJECT (iter, "unreffing buffer %p, because timestamp too low (%"
- G_GUINT64_FORMAT" vs %"G_GUINT64_FORMAT")",
- buffer, GST_BUFFER_TIMESTAMP (buffer), offset);
+ G_GUINT64_FORMAT " vs %" G_GUINT64_FORMAT ")",
+ buffer, GST_BUFFER_TIMESTAMP (buffer), offset);
gst_data_unref (GST_DATA (buffer));
}
buffer = GST_BUFFER (g_queue_pop_head (iter->buffers));
@@ -492,39 +534,44 @@ gst_gdk_animation_iter_advance (GdkPixbufAnimationIter *anim_iter, const GTimeVa
gst_gdk_animation_iter_create_pixbuf (iter);
return TRUE;
}
+
static gint
-gst_gdk_animation_iter_get_delay_time (GdkPixbufAnimationIter *anim_iter)
+gst_gdk_animation_iter_get_delay_time (GdkPixbufAnimationIter * anim_iter)
{
gint delay;
GstGdkAnimationIter *iter = GST_GDK_ANIMATION_ITER (anim_iter);
-
+
while (g_queue_is_empty (iter->buffers)) {
if (iter->eos) {
GST_LOG_OBJECT (iter, "returning delay of infinite, we're EOS");
return -1;
}
if (!gst_gdk_animation_get_more_buffers (iter))
- return -1; /* FIXME? */
+ return -1; /* FIXME? */
}
- delay = (GST_BUFFER_TIMESTAMP (g_queue_peek_head (iter->buffers)) - iter->last_timestamp) *
- 1000 / GST_SECOND;
+ delay =
+ (GST_BUFFER_TIMESTAMP (g_queue_peek_head (iter->buffers)) -
+ iter->last_timestamp) * 1000 / GST_SECOND;
GST_LOG_OBJECT (iter, "returning delay of %d ms", delay);
return delay;
}
-GdkPixbuf*
-gst_gdk_animation_iter_get_pixbuf (GdkPixbufAnimationIter *anim_iter)
+
+GdkPixbuf *
+gst_gdk_animation_iter_get_pixbuf (GdkPixbufAnimationIter * anim_iter)
{
GstGdkAnimationIter *iter = GST_GDK_ANIMATION_ITER (anim_iter);
-
+
GST_LOG_OBJECT (iter, "returning pixbuf %p", iter->pixbuf);
return iter->pixbuf;
}
+
static gboolean
-gst_gdk_animation_iter_on_currently_loading_frame (GdkPixbufAnimationIter *anim_iter)
+gst_gdk_animation_iter_on_currently_loading_frame (GdkPixbufAnimationIter *
+ anim_iter)
{
GstGdkAnimationIter *iter = GST_GDK_ANIMATION_ITER (anim_iter);
-
+
/* EOS - last frame */
if (iter->eos && g_queue_is_empty (iter->buffers))
return TRUE;
@@ -532,11 +579,11 @@ gst_gdk_animation_iter_on_currently_loading_frame (GdkPixbufAnimationIter *anim_
/* can't load more frames */
if (!gst_gdk_animation_iter_may_advance (iter))
return FALSE;
-
+
return TRUE;
}
-static GdkPixbuf*
-gst_gdk_animation_get_static_image (GdkPixbufAnimation *animation)
+static GdkPixbuf *
+gst_gdk_animation_get_static_image (GdkPixbufAnimation * animation)
{
GstGdkAnimation *ani = GST_GDK_ANIMATION (animation);
GTimeVal tv;
@@ -545,16 +592,15 @@ gst_gdk_animation_get_static_image (GdkPixbufAnimation *animation)
if (!ani->pixbuf) {
GST_LOG_OBJECT (ani, "trying to create pixbuf");
g_get_current_time (&tv);
- iter = GST_GDK_ANIMATION_ITER (
- gdk_pixbuf_animation_get_iter (animation, &tv));
+ iter =
+ GST_GDK_ANIMATION_ITER (gdk_pixbuf_animation_get_iter (animation, &tv));
if (iter) {
guint64 offset;
GstBuffer *buf;
GstFormat time = GST_FORMAT_TIME;
- if (!gst_element_query (gst_bin_get_by_name (GST_BIN (
- iter->pipeline), "sink"),
- GST_QUERY_TOTAL, &time, &offset)) {
+ if (!gst_element_query (gst_bin_get_by_name (GST_BIN (iter->pipeline),
+ "sink"), GST_QUERY_TOTAL, &time, &offset)) {
offset = 0;
}
if (offset > 120 * GST_SECOND) {
@@ -563,15 +609,17 @@ gst_gdk_animation_get_static_image (GdkPixbufAnimation *animation)
offset = offset / 2;
}
g_assert (time == GST_FORMAT_TIME);
- GST_LOG_OBJECT (ani, "using time offset %"G_GUINT64_FORMAT" for creating static image",
- offset);
+ GST_LOG_OBJECT (ani,
+ "using time offset %" G_GUINT64_FORMAT " for creating static image",
+ offset);
while ((buf = g_queue_pop_head (iter->buffers)) != NULL) {
gst_data_unref (GST_DATA (buf));
}
/* now we do evil stuff, be sure to get rid of the iterator afterwards */
- if (!gst_element_send_event (gst_bin_get_by_name (GST_BIN (iter->pipeline), "sink"),
- gst_event_new_seek (GST_FORMAT_TIME | GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, offset))) {
+ if (!gst_element_send_event (gst_bin_get_by_name (GST_BIN (iter->
+ pipeline), "sink"),
+ gst_event_new_seek (GST_FORMAT_TIME | GST_SEEK_METHOD_SET |
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, offset))) {
GST_INFO_OBJECT (ani, "seeking didn't work. Using next image");
}
@@ -585,7 +633,9 @@ gst_gdk_animation_get_static_image (GdkPixbufAnimation *animation)
} while (FALSE);
if (!g_queue_is_empty (iter->buffers)) {
gst_gdk_animation_iter_create_pixbuf (iter);
- ani->pixbuf = gst_gdk_animation_iter_get_pixbuf (GDK_PIXBUF_ANIMATION_ITER (iter));
+ ani->pixbuf =
+ gst_gdk_animation_iter_get_pixbuf (GDK_PIXBUF_ANIMATION_ITER
+ (iter));
g_object_ref (ani->pixbuf);
} else {
g_assert (ani->pixbuf == NULL);
diff --git a/ext/gdk_pixbuf/gstgdkanimation.h b/ext/gdk_pixbuf/gstgdkanimation.h
index 183d335e..8dc0d4ef 100644
--- a/ext/gdk_pixbuf/gstgdkanimation.h
+++ b/ext/gdk_pixbuf/gstgdkanimation.h
@@ -27,20 +27,16 @@
#include <stdio.h>
G_BEGIN_DECLS
-
/* how many bytes we need to have available before we dare to start a new iteration */
#define GST_GDK_BUFFER_SIZE (102400)
/* how far behind we need to be before we attempt to seek */
#define GST_GDK_MAX_DELAY_TO_SEEK (GST_SECOND / 4)
-
-
#define GST_TYPE_GDK_ANIMATION (gst_gdk_animation_get_type())
#define GST_GDK_ANIMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GDK_ANIMATION,GstGdkAnimation))
#define GST_GDK_ANIMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_GDK_ANIMATION,GstGdkAnimation))
#define GST_IS_GDK_ANIMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GDK_ANIMATION))
#define GST_IS_GDK_ANIMATION_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GDK_ANIMATION))
-
-typedef struct _GstGdkAnimation GstGdkAnimation;
+typedef struct _GstGdkAnimation GstGdkAnimation;
typedef struct _GstGdkAnimationClass GstGdkAnimationClass;
typedef struct _GstGdkAnimationIter GstGdkAnimationIter;
@@ -48,34 +44,33 @@ typedef struct _GstGdkAnimationIterClass GstGdkAnimationIterClass;
struct _GstGdkAnimation
{
- GdkPixbufAnimation parent;
+ GdkPixbufAnimation parent;
/* name of temporary buffer file */
- gchar * temp_location;
+ gchar *temp_location;
/* file descriptor to temporary file or 0 if we're done writing */
- int temp_fd;
+ int temp_fd;
/* size of image */
- gint width;
- gint height;
- gint bpp;
+ gint width;
+ gint height;
+ gint bpp;
/* static image we use */
- GdkPixbuf * pixbuf;
+ GdkPixbuf *pixbuf;
};
-struct _GstGdkAnimationClass
+struct _GstGdkAnimationClass
{
- GdkPixbufAnimationClass parent_class;
+ GdkPixbufAnimationClass parent_class;
};
-GType gst_gdk_animation_get_type (void);
+GType gst_gdk_animation_get_type (void);
-GstGdkAnimation * gst_gdk_animation_new (GError **error);
+GstGdkAnimation *gst_gdk_animation_new (GError ** error);
-gboolean gst_gdk_animation_add_data (GstGdkAnimation * ani,
- const guint8 * data,
- guint size);
-void gst_gdk_animation_done_adding (GstGdkAnimation * ani);
+gboolean gst_gdk_animation_add_data (GstGdkAnimation * ani,
+ const guint8 * data, guint size);
+void gst_gdk_animation_done_adding (GstGdkAnimation * ani);
#define GST_TYPE_GDK_ANIMATION_ITER (gst_gdk_animation_iter_get_type ())
@@ -86,32 +81,35 @@ void gst_gdk_animation_done_adding (GstGdkAnimation * ani);
#define GST_IS_GDK_ANIMATION_ITER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GDK_ANIMATION_ITER))
#define GST_GDK_ANIMATION_ITER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_GDK_ANIMATION_ITER, GstGdkAnimationIterClass))
-struct _GstGdkAnimationIter {
- GdkPixbufAnimationIter parent;
-
+struct _GstGdkAnimationIter
+{
+ GdkPixbufAnimationIter parent;
+
/* our animation */
- GstGdkAnimation * ani;
+ GstGdkAnimation *ani;
/* start timeval */
- GTimeVal start;
+ GTimeVal start;
/* timestamp of last buffer */
- GstClockTime last_timestamp;
-
+ GstClockTime last_timestamp;
+
/* pipeline we're using */
- GstElement * pipeline;
- gboolean eos;
- gboolean just_seeked;
-
+ GstElement *pipeline;
+ gboolean eos;
+ gboolean just_seeked;
+
/* current image and the buffers containing the data */
- GdkPixbuf * pixbuf;
- GQueue * buffers;
+ GdkPixbuf *pixbuf;
+ GQueue *buffers;
};
-struct _GstGdkAnimationIterClass {
- GdkPixbufAnimationIterClass parent_class;
+struct _GstGdkAnimationIterClass
+{
+ GdkPixbufAnimationIterClass parent_class;
};
-GType gst_gdk_animation_iter_get_type (void) G_GNUC_CONST;
+GType
+gst_gdk_animation_iter_get_type (void)
+ G_GNUC_CONST;
G_END_DECLS
-
#endif /* __GST_GDK_ANIMATION_H__ */
diff --git a/ext/gdk_pixbuf/gstgdkpixbuf.c b/ext/gdk_pixbuf/gstgdkpixbuf.c
index 99d937bd..9691782d 100644
--- a/ext/gdk_pixbuf/gstgdkpixbuf.c
+++ b/ext/gdk_pixbuf/gstgdkpixbuf.c
@@ -41,78 +41,73 @@ static GstElementDetails plugin_details = {
};
/* Filter signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_SILENT
};
static GstStaticPadTemplate gst_gdk_pixbuf_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- "image/png; "
- "image/jpeg; "
- "image/gif; "
- "image/x-icon; "
- "application/x-navi-animation; "
- "image/x-cmu-raster; "
- "image/x-sun-raster; "
- "image/x-pixmap; "
- "image/tiff; "
- "image/x-portable-anymap; "
- "image/x-portable-bitmap; "
- "image/x-portable-graymap; "
- "image/x-portable-pixmap; "
- "image/bmp; "
- "image/x-bmp; "
- "image/x-MS-bmp; "
- "image/vnd.wap.wbmp; "
- "image/x-bitmap; "
- "image/x-tga")
-);
+ GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("image/png; "
+ "image/jpeg; "
+ "image/gif; "
+ "image/x-icon; "
+ "application/x-navi-animation; "
+ "image/x-cmu-raster; "
+ "image/x-sun-raster; "
+ "image/x-pixmap; "
+ "image/tiff; "
+ "image/x-portable-anymap; "
+ "image/x-portable-bitmap; "
+ "image/x-portable-graymap; "
+ "image/x-portable-pixmap; "
+ "image/bmp; "
+ "image/x-bmp; "
+ "image/x-MS-bmp; "
+ "image/vnd.wap.wbmp; " "image/x-bitmap; " "image/x-tga")
+ );
static GstStaticPadTemplate gst_gdk_pixbuf_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB)
-);
-
-static void gst_gdk_pixbuf_base_init (gpointer g_class);
-static void gst_gdk_pixbuf_class_init (GstGdkPixbufClass *klass);
-static void gst_gdk_pixbuf_init (GstGdkPixbuf *filter);
-
-static void gst_gdk_pixbuf_set_property(GObject *object, guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_gdk_pixbuf_get_property(GObject *object, guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-static void gst_gdk_pixbuf_chain (GstPad *pad, GstData *_data);
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB)
+ );
+
+static void gst_gdk_pixbuf_base_init (gpointer g_class);
+static void gst_gdk_pixbuf_class_init (GstGdkPixbufClass * klass);
+static void gst_gdk_pixbuf_init (GstGdkPixbuf * filter);
+
+static void gst_gdk_pixbuf_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_gdk_pixbuf_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+
+static void gst_gdk_pixbuf_chain (GstPad * pad, GstData * _data);
+
#ifdef enable_typefind
-static void gst_gdk_pixbuf_type_find (GstTypeFind *tf, gpointer ignore);
+static void gst_gdk_pixbuf_type_find (GstTypeFind * tf, gpointer ignore);
#endif
static GstElementClass *parent_class = NULL;
static GstPadLinkReturn
-gst_gdk_pixbuf_sink_link (GstPad *pad, const GstCaps *caps)
+gst_gdk_pixbuf_sink_link (GstPad * pad, const GstCaps * caps)
{
GstGdkPixbuf *filter;
filter = GST_GDK_PIXBUF (gst_pad_get_parent (pad));
g_return_val_if_fail (filter != NULL, GST_PAD_LINK_REFUSED);
- g_return_val_if_fail (GST_IS_GDK_PIXBUF (filter),
- GST_PAD_LINK_REFUSED);
+ g_return_val_if_fail (GST_IS_GDK_PIXBUF (filter), GST_PAD_LINK_REFUSED);
filter->framerate = 1.0;
gst_structure_get_double (gst_caps_get_structure (caps, 0), "framerate",
@@ -126,13 +121,15 @@ gst_gdk_pixbuf_sink_link (GstPad *pad, const GstCaps *caps)
* These are just the formats that gdk-pixbuf is known to support.
* But maybe not -- it may have been compiled without an external
* library. */
-static GstCaps *gst_gdk_pixbuf_get_capslist(void)
+static GstCaps *
+gst_gdk_pixbuf_get_capslist (void)
{
- return gst_caps_copy (gst_static_caps_get (
- &gst_gdk_pixbuf_sink_template.static_caps));
+ return gst_caps_copy (gst_static_caps_get (&gst_gdk_pixbuf_sink_template.
+ static_caps));
}
#else
-static GstCaps *gst_gdk_pixbuf_get_capslist(void)
+static GstCaps *
+gst_gdk_pixbuf_get_capslist (void)
{
GSList *slist;
GSList *slist0;
@@ -142,24 +139,24 @@ static GstCaps *gst_gdk_pixbuf_get_capslist(void)
GstCaps *capslist = NULL;
capslist = gst_caps_new_empty ();
- slist0 = gdk_pixbuf_get_formats();
+ slist0 = gdk_pixbuf_get_formats ();
- for(slist = slist0;slist;slist=g_slist_next(slist)){
+ for (slist = slist0; slist; slist = g_slist_next (slist)) {
pixbuf_format = slist->data;
- mimetypes = gdk_pixbuf_format_get_mime_types(pixbuf_format);
- for(mimetype = mimetypes; *mimetype; mimetype++){
- gst_caps_append_structure (capslist,
- gst_structure_new (*mimetype,NULL));
+ mimetypes = gdk_pixbuf_format_get_mime_types (pixbuf_format);
+ for (mimetype = mimetypes; *mimetype; mimetype++) {
+ gst_caps_append_structure (capslist, gst_structure_new (*mimetype, NULL));
}
- g_free(mimetypes);
+ g_free (mimetypes);
}
- g_slist_free(slist0);
+ g_slist_free (slist0);
return capslist;
}
#endif
-static GstCaps *gst_gdk_pixbuf_sink_getcaps(GstPad *pad)
+static GstCaps *
+gst_gdk_pixbuf_sink_getcaps (GstPad * pad)
{
GstGdkPixbuf *filter;
@@ -167,7 +164,7 @@ static GstCaps *gst_gdk_pixbuf_sink_getcaps(GstPad *pad)
g_return_val_if_fail (filter != NULL, NULL);
g_return_val_if_fail (GST_IS_GDK_PIXBUF (filter), NULL);
- return gst_gdk_pixbuf_get_capslist();
+ return gst_gdk_pixbuf_get_capslist ();
}
GType
@@ -175,10 +172,8 @@ gst_gdk_pixbuf_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 (GstGdkPixbufClass),
gst_gdk_pixbuf_base_init,
NULL,
@@ -190,8 +185,7 @@ gst_gdk_pixbuf_get_type (void)
(GInstanceInitFunc) gst_gdk_pixbuf_init,
};
plugin_type = g_type_register_static (GST_TYPE_ELEMENT,
- "GstGdkPixbuf",
- &plugin_info, 0);
+ "GstGdkPixbuf", &plugin_info, 0);
}
return plugin_type;
}
@@ -202,42 +196,44 @@ gst_gdk_pixbuf_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_gdk_pixbuf_src_template));
+ gst_static_pad_template_get (&gst_gdk_pixbuf_src_template));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get( &gst_gdk_pixbuf_sink_template));
+ gst_static_pad_template_get (&gst_gdk_pixbuf_sink_template));
gst_element_class_set_details (element_class, &plugin_details);
}
/* initialize the plugin's class */
static void
-gst_gdk_pixbuf_class_init (GstGdkPixbufClass *klass)
+gst_gdk_pixbuf_class_init (GstGdkPixbufClass * 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_SILENT,
- g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
- FALSE, G_PARAM_READWRITE));
+ g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
+ FALSE, G_PARAM_READWRITE));
gobject_class->set_property = gst_gdk_pixbuf_set_property;
gobject_class->get_property = gst_gdk_pixbuf_get_property;
}
static void
-gst_gdk_pixbuf_init (GstGdkPixbuf *filter)
+gst_gdk_pixbuf_init (GstGdkPixbuf * filter)
{
- filter->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get( &gst_gdk_pixbuf_sink_template), "sink");
+ filter->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_gdk_pixbuf_sink_template), "sink");
gst_pad_set_link_function (filter->sinkpad, gst_gdk_pixbuf_sink_link);
gst_pad_set_getcaps_function (filter->sinkpad, gst_gdk_pixbuf_sink_getcaps);
- filter->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get( &gst_gdk_pixbuf_src_template), "src");
+ filter->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_gdk_pixbuf_src_template), "src");
gst_pad_use_explicit_caps (filter->srcpad);
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
@@ -248,7 +244,7 @@ gst_gdk_pixbuf_init (GstGdkPixbuf *filter)
}
static void
-gst_gdk_pixbuf_chain (GstPad *pad, GstData *_data)
+gst_gdk_pixbuf_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstGdkPixbuf *filter;
@@ -270,15 +266,15 @@ gst_gdk_pixbuf_chain (GstPad *pad, GstData *_data)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
- push_buffer = TRUE;
- got_eos = TRUE;
- break;
+ push_buffer = TRUE;
+ got_eos = TRUE;
+ break;
case GST_EVENT_DISCONTINUOUS:
- dump_buffer = TRUE;
- break;
+ dump_buffer = TRUE;
+ break;
default:
- gst_pad_event_default (pad, event);
- return;
+ gst_pad_event_default (pad, event);
+ return;
}
}
@@ -293,41 +289,41 @@ gst_gdk_pixbuf_chain (GstPad *pad, GstData *_data)
GError *error = NULL;
if (!gdk_pixbuf_loader_close (filter->pixbuf_loader, &error)) {
- GST_ELEMENT_ERROR (filter, LIBRARY, SHUTDOWN, (NULL), (error->message));
- g_error_free (error);
- return;
+ GST_ELEMENT_ERROR (filter, LIBRARY, SHUTDOWN, (NULL), (error->message));
+ g_error_free (error);
+ return;
}
pixbuf = gdk_pixbuf_loader_get_pixbuf (filter->pixbuf_loader);
- if(filter->image_size == 0){
- GstCaps *caps;
+ if (filter->image_size == 0) {
+ GstCaps *caps;
- filter->width = gdk_pixbuf_get_width(pixbuf);
- filter->height = gdk_pixbuf_get_height(pixbuf);
- filter->rowstride = gdk_pixbuf_get_rowstride(pixbuf);
- filter->image_size = filter->rowstride * filter->height;
+ filter->width = gdk_pixbuf_get_width (pixbuf);
+ filter->height = gdk_pixbuf_get_height (pixbuf);
+ filter->rowstride = gdk_pixbuf_get_rowstride (pixbuf);
+ filter->image_size = filter->rowstride * filter->height;
- caps = gst_caps_copy (gst_pad_get_pad_template_caps (filter->srcpad));
- gst_caps_set_simple (caps,
- "width", G_TYPE_INT, filter->width,
- "height", G_TYPE_INT, filter->height,
- "framerate", G_TYPE_DOUBLE, filter->framerate, NULL);
+ caps = gst_caps_copy (gst_pad_get_pad_template_caps (filter->srcpad));
+ gst_caps_set_simple (caps,
+ "width", G_TYPE_INT, filter->width,
+ "height", G_TYPE_INT, filter->height,
+ "framerate", G_TYPE_DOUBLE, filter->framerate, NULL);
- gst_pad_set_explicit_caps (filter->srcpad, caps);
+ gst_pad_set_explicit_caps (filter->srcpad, caps);
}
outbuf = gst_pad_alloc_buffer (filter->srcpad, GST_BUFFER_OFFSET_NONE,
- filter->image_size);
- GST_BUFFER_TIMESTAMP(outbuf) = GST_BUFFER_TIMESTAMP(buf);
- GST_BUFFER_DURATION(outbuf) = GST_BUFFER_DURATION(buf);
-
- memcpy(GST_BUFFER_DATA(outbuf), gdk_pixbuf_get_pixels(pixbuf),
- filter->image_size);
+ filter->image_size);
+ GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
+ GST_BUFFER_DURATION (outbuf) = GST_BUFFER_DURATION (buf);
+
+ memcpy (GST_BUFFER_DATA (outbuf), gdk_pixbuf_get_pixels (pixbuf),
+ filter->image_size);
gst_pad_push (filter->srcpad, GST_DATA (outbuf));
- g_object_unref(G_OBJECT(filter->pixbuf_loader));
+ g_object_unref (G_OBJECT (filter->pixbuf_loader));
filter->pixbuf_loader = NULL;
dump_buffer = FALSE;
}
@@ -336,19 +332,19 @@ gst_gdk_pixbuf_chain (GstPad *pad, GstData *_data)
if (dump_buffer) {
if (filter->pixbuf_loader != NULL) {
gdk_pixbuf_loader_close (filter->pixbuf_loader, NULL);
- g_object_unref(G_OBJECT(filter->pixbuf_loader));
+ g_object_unref (G_OBJECT (filter->pixbuf_loader));
filter->pixbuf_loader = NULL;
}
}
if (GST_IS_BUFFER (_data)) {
if (filter->pixbuf_loader == NULL) {
- filter->pixbuf_loader = gdk_pixbuf_loader_new();
+ filter->pixbuf_loader = gdk_pixbuf_loader_new ();
filter->last_timestamp = GST_BUFFER_TIMESTAMP (buf);
}
-
- gdk_pixbuf_loader_write(filter->pixbuf_loader, GST_BUFFER_DATA(buf),
- GST_BUFFER_SIZE(buf), &error);
+
+ gdk_pixbuf_loader_write (filter->pixbuf_loader, GST_BUFFER_DATA (buf),
+ GST_BUFFER_SIZE (buf), &error);
gst_buffer_unref (buf);
}
@@ -358,28 +354,27 @@ gst_gdk_pixbuf_chain (GstPad *pad, GstData *_data)
}
static void
-gst_gdk_pixbuf_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
+gst_gdk_pixbuf_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstGdkPixbuf *filter;
g_return_if_fail (GST_IS_GDK_PIXBUF (object));
filter = GST_GDK_PIXBUF (object);
- switch (prop_id)
- {
- case ARG_SILENT:
- //filter->silent = g_value_get_boolean (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
+ switch (prop_id) {
+ case ARG_SILENT:
+ //filter->silent = g_value_get_boolean (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
}
}
static void
-gst_gdk_pixbuf_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
+gst_gdk_pixbuf_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
{
GstGdkPixbuf *filter;
@@ -387,12 +382,12 @@ gst_gdk_pixbuf_get_property (GObject *object, guint prop_id,
filter = GST_GDK_PIXBUF (object);
switch (prop_id) {
- case ARG_SILENT:
- //g_value_set_boolean (value, filter->silent);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
+ case ARG_SILENT:
+ //g_value_set_boolean (value, filter->silent);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
}
}
@@ -400,22 +395,23 @@ gst_gdk_pixbuf_get_property (GObject *object, guint prop_id,
#ifdef enable_typefind
static void
-gst_gdk_pixbuf_type_find (GstTypeFind *tf, gpointer ignore)
+gst_gdk_pixbuf_type_find (GstTypeFind * tf, gpointer ignore)
{
guint8 *data;
GdkPixbufLoader *pixbuf_loader;
GdkPixbufFormat *format;
data = gst_type_find_peek (tf, 0, GST_GDK_PIXBUF_TYPE_FIND_SIZE);
- if (data == NULL) return;
+ if (data == NULL)
+ return;
GST_DEBUG ("creating new loader");
- pixbuf_loader = gdk_pixbuf_loader_new();
-
+ pixbuf_loader = gdk_pixbuf_loader_new ();
+
gdk_pixbuf_loader_write (pixbuf_loader, data, GST_GDK_PIXBUF_TYPE_FIND_SIZE,
NULL);
-
+
format = gdk_pixbuf_loader_get_format (pixbuf_loader);
if (format != NULL) {
@@ -423,8 +419,7 @@ gst_gdk_pixbuf_type_find (GstTypeFind *tf, gpointer ignore)
gchar **p;
gchar **mlist = gdk_pixbuf_format_get_mime_types (format);
- for (p = mlist; *p; ++p)
- {
+ for (p = mlist; *p; ++p) {
GST_DEBUG ("suggesting mime type %s", *p);
caps = gst_caps_new_simple (*p, NULL);
gst_type_find_suggest (tf, GST_TYPE_FIND_MINIMUM, caps);
@@ -449,17 +444,18 @@ gst_gdk_pixbuf_type_find (GstTypeFind *tf, gpointer ignore)
* register the features
*/
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- GST_DEBUG_CATEGORY_INIT (gst_gdk_pixbuf_debug, "gdkpixbuf", 0, "gdk pixbuf loader");
+ GST_DEBUG_CATEGORY_INIT (gst_gdk_pixbuf_debug, "gdkpixbuf", 0,
+ "gdk pixbuf loader");
- if (!gst_element_register (plugin, "gdkpixbufdec", GST_RANK_NONE, GST_TYPE_GDK_PIXBUF))
+ if (!gst_element_register (plugin, "gdkpixbufdec", GST_RANK_NONE,
+ GST_TYPE_GDK_PIXBUF))
return FALSE;
#ifdef enable_typefind
gst_type_find_register (plugin, "image/*", GST_RANK_MARGINAL,
- gst_gdk_pixbuf_type_find, NULL,
- GST_CAPS_ANY, NULL);
+ gst_gdk_pixbuf_type_find, NULL, GST_CAPS_ANY, NULL);
#endif
/* plugin initialisation succeeded */
@@ -468,13 +464,7 @@ plugin_init (GstPlugin *plugin)
/* this is the structure that gst-register looks for
* so keep the name plugin_desc, or you cannot get your plug-in registered */
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "gdkpixbuf",
- "GDK Pixbuf decoder",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "gdkpixbuf",
+ "GDK Pixbuf decoder", plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/gdk_pixbuf/gstgdkpixbuf.h b/ext/gdk_pixbuf/gstgdkpixbuf.h
index 62e11aac..f239bf72 100644
--- a/ext/gdk_pixbuf/gstgdkpixbuf.h
+++ b/ext/gdk_pixbuf/gstgdkpixbuf.h
@@ -26,7 +26,6 @@
#include <gst/gst.h>
G_BEGIN_DECLS
-
/* #define's don't like whitespacey bits */
#define GST_TYPE_GDK_PIXBUF \
(gst_gdk_pixbuf_get_type())
@@ -38,8 +37,7 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GDK_PIXBUF))
#define GST_IS_GDK_PIXBUF_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GDK_PIXBUF))
-
-typedef struct _GstGdkPixbuf GstGdkPixbuf;
+typedef struct _GstGdkPixbuf GstGdkPixbuf;
typedef struct _GstGdkPixbufClass GstGdkPixbufClass;
struct _GstGdkPixbuf
@@ -48,7 +46,7 @@ struct _GstGdkPixbuf
GstPad *sinkpad, *srcpad;
- GstClockTime last_timestamp;
+ GstClockTime last_timestamp;
GdkPixbufLoader *pixbuf_loader;
int width;
@@ -59,7 +57,7 @@ struct _GstGdkPixbuf
double framerate;
};
-struct _GstGdkPixbufClass
+struct _GstGdkPixbufClass
{
GstElementClass parent_class;
};
@@ -67,5 +65,4 @@ struct _GstGdkPixbufClass
GType gst_gdk_pixbuf_get_type (void);
G_END_DECLS
-
#endif /* __GST_GDK_PIXBUF_H__ */
diff --git a/ext/jpeg/gstjpeg.c b/ext/jpeg/gstjpeg.c
index 1a78b222..add7435e 100644
--- a/ext/jpeg/gstjpeg.c
+++ b/ext/jpeg/gstjpeg.c
@@ -24,24 +24,21 @@
#include "gstjpegenc.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "jpegenc", GST_RANK_NONE, GST_TYPE_JPEGENC))
+ if (!gst_element_register (plugin, "jpegenc", GST_RANK_NONE,
+ GST_TYPE_JPEGENC))
return FALSE;
-
- if (!gst_element_register (plugin, "jpegdec", GST_RANK_PRIMARY, GST_TYPE_JPEGDEC))
+
+ if (!gst_element_register (plugin, "jpegdec", GST_RANK_PRIMARY,
+ GST_TYPE_JPEGDEC))
return FALSE;
-
+
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "jpeg",
- "JPeg plugin library",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "jpeg",
+ "JPeg plugin library",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/jpeg/gstjpegdec.c b/ext/jpeg/gstjpegdec.c
index 0a1bb60d..10156559 100644
--- a/ext/jpeg/gstjpegdec.c
+++ b/ext/jpeg/gstjpegdec.c
@@ -36,73 +36,74 @@ GstElementDetails gst_jpegdec_details = {
};
/* JpegDec signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static void gst_jpegdec_base_init (gpointer g_class);
-static void gst_jpegdec_class_init (GstJpegDec *klass);
-static void gst_jpegdec_init (GstJpegDec *jpegdec);
+static void gst_jpegdec_base_init (gpointer g_class);
+static void gst_jpegdec_class_init (GstJpegDec * klass);
+static void gst_jpegdec_init (GstJpegDec * jpegdec);
-static void gst_jpegdec_chain (GstPad *pad, GstData *_data);
-static GstPadLinkReturn
- gst_jpegdec_link (GstPad *pad, const GstCaps *caps);
+static void gst_jpegdec_chain (GstPad * pad, GstData * _data);
+static GstPadLinkReturn gst_jpegdec_link (GstPad * pad, const GstCaps * caps);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_jpegdec_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_jpegdec_get_type(void) {
+gst_jpegdec_get_type (void)
+{
static GType jpegdec_type = 0;
-
+
if (!jpegdec_type) {
static const GTypeInfo jpegdec_info = {
- sizeof(GstJpegDec),
+ sizeof (GstJpegDec),
gst_jpegdec_base_init,
NULL,
- (GClassInitFunc)gst_jpegdec_class_init,
+ (GClassInitFunc) gst_jpegdec_class_init,
NULL,
NULL,
- sizeof(GstJpegDec),
+ sizeof (GstJpegDec),
0,
- (GInstanceInitFunc)gst_jpegdec_init,
+ (GInstanceInitFunc) gst_jpegdec_init,
};
- jpegdec_type = g_type_register_static(GST_TYPE_ELEMENT, "GstJpegDec", &jpegdec_info, 0);
+ jpegdec_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstJpegDec", &jpegdec_info,
+ 0);
}
return jpegdec_type;
}
static GstStaticPadTemplate gst_jpegdec_src_pad_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV("I420"))
-);
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
static GstStaticPadTemplate gst_jpegdec_sink_pad_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("image/jpeg, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 1, MAX ]"
- )
-);
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ], " "framerate = (double) [ 1, MAX ]")
+ );
static void
gst_jpegdec_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_jpegdec_src_pad_template));
gst_element_class_add_pad_template (element_class,
@@ -111,13 +112,13 @@ gst_jpegdec_base_init (gpointer g_class)
}
static void
-gst_jpegdec_class_init (GstJpegDec *klass)
+gst_jpegdec_class_init (GstJpegDec * klass)
{
GstElementClass *gstelement_class;
- gstelement_class = (GstElementClass*)klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
}
static void
@@ -125,6 +126,7 @@ gst_jpegdec_init_source (j_decompress_ptr cinfo)
{
GST_DEBUG ("gst_jpegdec_chain: init_source");
}
+
static gboolean
gst_jpegdec_fill_input_buffer (j_decompress_ptr cinfo)
{
@@ -152,21 +154,23 @@ gst_jpegdec_term_source (j_decompress_ptr cinfo)
}
static void
-gst_jpegdec_init (GstJpegDec *jpegdec)
+gst_jpegdec_init (GstJpegDec * jpegdec)
{
GST_DEBUG ("gst_jpegdec_init: initializing");
/* create the sink and src pads */
- jpegdec->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_jpegdec_sink_pad_template), "sink");
- gst_element_add_pad(GST_ELEMENT(jpegdec),jpegdec->sinkpad);
- gst_pad_set_chain_function(jpegdec->sinkpad,gst_jpegdec_chain);
- gst_pad_set_link_function(jpegdec->sinkpad, gst_jpegdec_link);
+ jpegdec->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_jpegdec_sink_pad_template), "sink");
+ gst_element_add_pad (GST_ELEMENT (jpegdec), jpegdec->sinkpad);
+ gst_pad_set_chain_function (jpegdec->sinkpad, gst_jpegdec_chain);
+ gst_pad_set_link_function (jpegdec->sinkpad, gst_jpegdec_link);
- jpegdec->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_jpegdec_src_pad_template), "src");
+ jpegdec->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_jpegdec_src_pad_template), "src");
gst_pad_use_explicit_caps (jpegdec->srcpad);
- gst_element_add_pad(GST_ELEMENT(jpegdec),jpegdec->srcpad);
+ gst_element_add_pad (GST_ELEMENT (jpegdec), jpegdec->srcpad);
/* initialize the jpegdec decoder state */
jpegdec->next_time = 0;
@@ -181,10 +185,10 @@ gst_jpegdec_init (GstJpegDec *jpegdec)
jpegdec->line[2] = NULL;
/* setup jpeglib */
- memset(&jpegdec->cinfo, 0, sizeof(jpegdec->cinfo));
- memset(&jpegdec->jerr, 0, sizeof(jpegdec->jerr));
- jpegdec->cinfo.err = jpeg_std_error(&jpegdec->jerr);
- jpeg_create_decompress(&jpegdec->cinfo);
+ memset (&jpegdec->cinfo, 0, sizeof (jpegdec->cinfo));
+ memset (&jpegdec->jerr, 0, sizeof (jpegdec->jerr));
+ jpegdec->cinfo.err = jpeg_std_error (&jpegdec->jerr);
+ jpeg_create_decompress (&jpegdec->cinfo);
jpegdec->jsrc.init_source = gst_jpegdec_init_source;
jpegdec->jsrc.fill_input_buffer = gst_jpegdec_fill_input_buffer;
@@ -196,7 +200,7 @@ gst_jpegdec_init (GstJpegDec *jpegdec)
}
static GstPadLinkReturn
-gst_jpegdec_link (GstPad *pad, const GstCaps *caps)
+gst_jpegdec_link (GstPad * pad, const GstCaps * caps)
{
GstJpegDec *jpegdec = GST_JPEGDEC (gst_pad_get_parent (pad));
GstStructure *structure;
@@ -205,15 +209,14 @@ gst_jpegdec_link (GstPad *pad, const GstCaps *caps)
structure = gst_caps_get_structure (caps, 0);
gst_structure_get_double (structure, "framerate", &jpegdec->fps);
- gst_structure_get_int (structure, "width", &jpegdec->width);
- gst_structure_get_int (structure, "height", &jpegdec->height);
+ gst_structure_get_int (structure, "width", &jpegdec->width);
+ gst_structure_get_int (structure, "height", &jpegdec->height);
srccaps = gst_caps_new_simple ("video/x-raw-yuv",
- "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I','4','2','0'),
- "width", G_TYPE_INT, jpegdec->width,
- "height", G_TYPE_INT, jpegdec->height,
- "framerate", G_TYPE_DOUBLE, jpegdec->fps,
- NULL);
+ "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I', '4', '2', '0'),
+ "width", G_TYPE_INT, jpegdec->width,
+ "height", G_TYPE_INT, jpegdec->height,
+ "framerate", G_TYPE_DOUBLE, jpegdec->fps, NULL);
/* at this point, we're pretty sure that this will be the output
* format, so we'll set it. */
@@ -223,18 +226,18 @@ gst_jpegdec_link (GstPad *pad, const GstCaps *caps)
}
/* shamelessly ripped from jpegutils.c in mjpegtools */
-static void add_huff_table (j_decompress_ptr dinfo,
- JHUFF_TBL **htblptr,
- const UINT8 *bits, const UINT8 *val)
+static void
+add_huff_table (j_decompress_ptr dinfo,
+ JHUFF_TBL ** htblptr, const UINT8 * bits, const UINT8 * val)
/* Define a Huffman table */
{
int nsymbols, len;
if (*htblptr == NULL)
- *htblptr = jpeg_alloc_huff_table((j_common_ptr) dinfo);
+ *htblptr = jpeg_alloc_huff_table ((j_common_ptr) dinfo);
/* Copy the number-of-symbols-of-each-code-length counts */
- memcpy((*htblptr)->bits, bits, sizeof((*htblptr)->bits));
+ memcpy ((*htblptr)->bits, bits, sizeof ((*htblptr)->bits));
/* Validate the counts. We do this here mainly so we can copy the right
* number of symbols from the val[] array, without risking marching off
@@ -244,119 +247,123 @@ static void add_huff_table (j_decompress_ptr dinfo,
for (len = 1; len <= 16; len++)
nsymbols += bits[len];
if (nsymbols < 1 || nsymbols > 256)
- g_error("jpegutils.c: add_huff_table failed badly. ");
+ g_error ("jpegutils.c: add_huff_table failed badly. ");
- memcpy((*htblptr)->huffval, val, nsymbols * sizeof(UINT8));
+ memcpy ((*htblptr)->huffval, val, nsymbols * sizeof (UINT8));
}
-static void std_huff_tables (j_decompress_ptr dinfo)
+static void
+std_huff_tables (j_decompress_ptr dinfo)
/* Set up the standard Huffman tables (cf. JPEG standard section K.3) */
/* IMPORTANT: these are only valid for 8-bit data precision! */
{
static const UINT8 bits_dc_luminance[17] =
- { /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
+ { /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
static const UINT8 val_dc_luminance[] =
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
-
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
+
static const UINT8 bits_dc_chrominance[17] =
- { /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
+ { /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
static const UINT8 val_dc_chrominance[] =
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
-
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
+
static const UINT8 bits_ac_luminance[17] =
- { /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d };
+ { /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d };
static const UINT8 val_ac_luminance[] =
- { 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
- 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
- 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
- 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
- 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
- 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
- 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
- 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
- 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
- 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
- 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
- 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
- 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
- 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
- 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
- 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
- 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
- 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
- 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
- 0xf9, 0xfa };
-
+ { 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
+ 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
+ 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
+ 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
+ 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
+ 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
+ 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
+ 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
+ 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
+ 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
+ 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
+ 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
+ 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
+ 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
+ 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
+ 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
+ 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
+ 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
+ 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+ 0xf9, 0xfa
+ };
+
static const UINT8 bits_ac_chrominance[17] =
- { /* 0-base */ 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77 };
+ { /* 0-base */ 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77 };
static const UINT8 val_ac_chrominance[] =
- { 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
- 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
- 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
- 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
- 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
- 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
- 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
- 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
- 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
- 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
- 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
- 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
- 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
- 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
- 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
- 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
- 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
- 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
- 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
- 0xf9, 0xfa };
-
- add_huff_table(dinfo, &dinfo->dc_huff_tbl_ptrs[0],
- bits_dc_luminance, val_dc_luminance);
- add_huff_table(dinfo, &dinfo->ac_huff_tbl_ptrs[0],
- bits_ac_luminance, val_ac_luminance);
- add_huff_table(dinfo, &dinfo->dc_huff_tbl_ptrs[1],
- bits_dc_chrominance, val_dc_chrominance);
- add_huff_table(dinfo, &dinfo->ac_huff_tbl_ptrs[1],
- bits_ac_chrominance, val_ac_chrominance);
+ { 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
+ 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
+ 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
+ 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
+ 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
+ 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
+ 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
+ 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
+ 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+ 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+ 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
+ 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
+ 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
+ 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
+ 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
+ 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
+ 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+ 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+ 0xf9, 0xfa
+ };
+
+ add_huff_table (dinfo, &dinfo->dc_huff_tbl_ptrs[0],
+ bits_dc_luminance, val_dc_luminance);
+ add_huff_table (dinfo, &dinfo->ac_huff_tbl_ptrs[0],
+ bits_ac_luminance, val_ac_luminance);
+ add_huff_table (dinfo, &dinfo->dc_huff_tbl_ptrs[1],
+ bits_dc_chrominance, val_dc_chrominance);
+ add_huff_table (dinfo, &dinfo->ac_huff_tbl_ptrs[1],
+ bits_ac_chrominance, val_ac_chrominance);
}
-static void guarantee_huff_tables(j_decompress_ptr dinfo)
+static void
+guarantee_huff_tables (j_decompress_ptr dinfo)
{
- if ( (dinfo->dc_huff_tbl_ptrs[0] == NULL) &&
- (dinfo->dc_huff_tbl_ptrs[1] == NULL) &&
- (dinfo->ac_huff_tbl_ptrs[0] == NULL) &&
- (dinfo->ac_huff_tbl_ptrs[1] == NULL) ) {
- GST_DEBUG (
- "Generating standard Huffman tables for this frame.");
- std_huff_tables(dinfo);
+ if ((dinfo->dc_huff_tbl_ptrs[0] == NULL) &&
+ (dinfo->dc_huff_tbl_ptrs[1] == NULL) &&
+ (dinfo->ac_huff_tbl_ptrs[0] == NULL) &&
+ (dinfo->ac_huff_tbl_ptrs[1] == NULL)) {
+ GST_DEBUG ("Generating standard Huffman tables for this frame.");
+ std_huff_tables (dinfo);
}
}
static void
-gst_jpegdec_chain (GstPad *pad, GstData *_data)
+gst_jpegdec_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstJpegDec *jpegdec;
guchar *data, *outdata;
gulong size, outsize;
GstBuffer *outbuf;
- /*GstMeta *meta;*/
+
+ /*GstMeta *meta; */
gint width, height, width2;
guchar *base[3];
- gint i,j, k;
+ gint i, j, k;
gint r_h, r_v;
- 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));*/
+ 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)); */
jpegdec = GST_JPEGDEC (GST_OBJECT_PARENT (pad));
@@ -365,24 +372,24 @@ gst_jpegdec_chain (GstPad *pad, GstData *_data)
return;
}
- data = (guchar *)GST_BUFFER_DATA(buf);
- size = GST_BUFFER_SIZE(buf);
- GST_DEBUG ("gst_jpegdec_chain: got buffer of %ld bytes in '%s'",size,
- GST_OBJECT_NAME (jpegdec));
+ data = (guchar *) GST_BUFFER_DATA (buf);
+ size = GST_BUFFER_SIZE (buf);
+ GST_DEBUG ("gst_jpegdec_chain: got buffer of %ld bytes in '%s'", size,
+ GST_OBJECT_NAME (jpegdec));
jpegdec->jsrc.next_input_byte = data;
jpegdec->jsrc.bytes_in_buffer = size;
-
- GST_DEBUG ("gst_jpegdec_chain: reading header %08lx", *(gulong *)data);
- jpeg_read_header(&jpegdec->cinfo, TRUE);
+
+ GST_DEBUG ("gst_jpegdec_chain: reading header %08lx", *(gulong *) data);
+ jpeg_read_header (&jpegdec->cinfo, TRUE);
r_h = jpegdec->cinfo.cur_comp_info[0]->h_samp_factor;
r_v = jpegdec->cinfo.cur_comp_info[0]->v_samp_factor;
- /*g_print ("%d %d\n", r_h, r_v);*/
- /*g_print ("%d %d\n", jpegdec->cinfo.cur_comp_info[1]->h_samp_factor, jpegdec->cinfo.cur_comp_info[1]->v_samp_factor);*/
- /*g_print ("%d %d\n", jpegdec->cinfo.cur_comp_info[2]->h_samp_factor, jpegdec->cinfo.cur_comp_info[2]->v_samp_factor);*/
+ /*g_print ("%d %d\n", r_h, r_v); */
+ /*g_print ("%d %d\n", jpegdec->cinfo.cur_comp_info[1]->h_samp_factor, jpegdec->cinfo.cur_comp_info[1]->v_samp_factor); */
+ /*g_print ("%d %d\n", jpegdec->cinfo.cur_comp_info[2]->h_samp_factor, jpegdec->cinfo.cur_comp_info[2]->v_samp_factor); */
jpegdec->cinfo.do_fancy_upsampling = FALSE;
jpegdec->cinfo.do_block_smoothing = FALSE;
@@ -390,66 +397,67 @@ gst_jpegdec_chain (GstPad *pad, GstData *_data)
jpegdec->cinfo.dct_method = JDCT_IFAST;
jpegdec->cinfo.raw_data_out = TRUE;
GST_DEBUG ("gst_jpegdec_chain: starting decompress");
- guarantee_huff_tables(&jpegdec->cinfo);
- jpeg_start_decompress(&jpegdec->cinfo);
+ guarantee_huff_tables (&jpegdec->cinfo);
+ jpeg_start_decompress (&jpegdec->cinfo);
width = jpegdec->cinfo.output_width;
height = jpegdec->cinfo.output_height;
GST_DEBUG ("gst_jpegdec_chain: width %d, height %d", width, height);
- outbuf = gst_buffer_new();
- outsize = GST_BUFFER_SIZE(outbuf) = width*height +
- width*height / 2;
- outdata = GST_BUFFER_DATA(outbuf) = g_malloc(outsize);
- GST_BUFFER_TIMESTAMP(outbuf) = GST_BUFFER_TIMESTAMP(buf);
+ outbuf = gst_buffer_new ();
+ outsize = GST_BUFFER_SIZE (outbuf) = width * height + width * height / 2;
+ outdata = GST_BUFFER_DATA (outbuf) = g_malloc (outsize);
+ GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
if (jpegdec->height != height || jpegdec->line[0] == NULL) {
GstCaps *caps;
- jpegdec->line[0] = g_realloc(jpegdec->line[0], height*sizeof(char*));
- jpegdec->line[1] = g_realloc(jpegdec->line[1], height*sizeof(char*));
- jpegdec->line[2] = g_realloc(jpegdec->line[2], height*sizeof(char*));
+ jpegdec->line[0] = g_realloc (jpegdec->line[0], height * sizeof (char *));
+ jpegdec->line[1] = g_realloc (jpegdec->line[1], height * sizeof (char *));
+ jpegdec->line[2] = g_realloc (jpegdec->line[2], height * sizeof (char *));
jpegdec->height = height;
caps = gst_caps_new_simple ("video/x-raw-yuv",
- "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I','4','2','0'),
- "width", G_TYPE_INT, width,
- "height", G_TYPE_INT, height,
- "framerate", G_TYPE_DOUBLE, jpegdec->fps,
- NULL);
+ "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I', '4', '2', '0'),
+ "width", G_TYPE_INT, width,
+ "height", G_TYPE_INT, height,
+ "framerate", G_TYPE_DOUBLE, jpegdec->fps, NULL);
gst_pad_set_explicit_caps (jpegdec->srcpad, caps);
gst_caps_free (caps);
}
/* mind the swap, jpeglib outputs blue chroma first */
base[0] = outdata;
- base[1] = base[0]+width*height;
- base[2] = base[1]+width*height/4;
+ base[1] = base[0] + width * height;
+ base[2] = base[1] + width * height / 4;
width2 = width >> 1;
- GST_DEBUG ("gst_jpegdec_chain: decompressing %u", jpegdec->cinfo.rec_outbuf_height);
- for (i = 0; i < height; i += r_v*DCTSIZE) {
- for (j=0, k=0; j< (r_v*DCTSIZE); j += r_v, k++) {
- jpegdec->line[0][j] = base[0]; base[0] += width;
+ GST_DEBUG ("gst_jpegdec_chain: decompressing %u",
+ jpegdec->cinfo.rec_outbuf_height);
+ for (i = 0; i < height; i += r_v * DCTSIZE) {
+ for (j = 0, k = 0; j < (r_v * DCTSIZE); j += r_v, k++) {
+ jpegdec->line[0][j] = base[0];
+ base[0] += width;
if (r_v == 2) {
- jpegdec->line[0][j+1] = base[0]; base[0] += width;
+ jpegdec->line[0][j + 1] = base[0];
+ base[0] += width;
}
- jpegdec->line[1][k] = base[1];
- jpegdec->line[2][k] = base[2];
- if (r_v == 2 || k&1) {
- base[1] += width2; base[2] += width2;
+ jpegdec->line[1][k] = base[1];
+ jpegdec->line[2][k] = base[2];
+ if (r_v == 2 || k & 1) {
+ base[1] += width2;
+ base[2] += width2;
}
}
- /*g_print ("%d\n", jpegdec->cinfo.output_scanline);*/
- jpeg_read_raw_data(&jpegdec->cinfo, jpegdec->line, r_v*DCTSIZE);
+ /*g_print ("%d\n", jpegdec->cinfo.output_scanline); */
+ jpeg_read_raw_data (&jpegdec->cinfo, jpegdec->line, r_v * DCTSIZE);
}
GST_DEBUG ("gst_jpegdec_chain: decompressing finished");
- jpeg_finish_decompress(&jpegdec->cinfo);
+ jpeg_finish_decompress (&jpegdec->cinfo);
GST_DEBUG ("gst_jpegdec_chain: sending buffer");
- gst_pad_push(jpegdec->srcpad, GST_DATA (outbuf));
+ gst_pad_push (jpegdec->srcpad, GST_DATA (outbuf));
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
-
diff --git a/ext/jpeg/gstjpegdec.h b/ext/jpeg/gstjpegdec.h
index 05187873..9a864eba 100644
--- a/ext/jpeg/gstjpegdec.h
+++ b/ext/jpeg/gstjpegdec.h
@@ -30,8 +30,9 @@
#include <jpeglib.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_JPEGDEC \
@@ -45,46 +46,48 @@ extern "C" {
#define GST_IS_JPEGDEC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_JPEGDEC))
-typedef struct _GstJpegDec GstJpegDec;
-typedef struct _GstJpegDecClass GstJpegDecClass;
+ typedef struct _GstJpegDec GstJpegDec;
+ typedef struct _GstJpegDecClass GstJpegDecClass;
-struct _GstJpegDec {
- GstElement element;
+ struct _GstJpegDec
+ {
+ GstElement element;
- /* pads */
- GstPad *sinkpad,*srcpad;
+ /* pads */
+ GstPad *sinkpad, *srcpad;
- int parse_state;
- /* the timestamp of the next frame */
- guint64 next_time;
- /* the interval between frames */
- guint64 time_interval;
+ int parse_state;
+ /* the timestamp of the next frame */
+ guint64 next_time;
+ /* the interval between frames */
+ guint64 time_interval;
- /* video state */
- gint format;
- gint width;
- gint height;
- gdouble fps;
- /* the size of the output buffer */
- gint outsize;
- /* the jpeg line buffer */
- guchar **line[3];
+ /* video state */
+ gint format;
+ gint width;
+ gint height;
+ gdouble fps;
+ /* the size of the output buffer */
+ gint outsize;
+ /* the jpeg line buffer */
+ guchar **line[3];
- struct jpeg_decompress_struct cinfo;
- struct jpeg_error_mgr jerr;
- struct jpeg_source_mgr jsrc;
-};
+ struct jpeg_decompress_struct cinfo;
+ struct jpeg_error_mgr jerr;
+ struct jpeg_source_mgr jsrc;
+ };
-struct _GstJpegDecClass {
- GstElementClass parent_class;
-};
+ struct _GstJpegDecClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_jpegdec_get_type(void);
+ GType gst_jpegdec_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_JPEGDEC_H__ */
+#endif /* __GST_JPEGDEC_H__ */
diff --git a/ext/jpeg/gstjpegenc.c b/ext/jpeg/gstjpegenc.c
index 7f43ea97..44941719 100644
--- a/ext/jpeg/gstjpegenc.c
+++ b/ext/jpeg/gstjpegenc.c
@@ -35,30 +35,34 @@ GstElementDetails gst_jpegenc_details = {
};
/* JpegEnc signals and args */
-enum {
+enum
+{
FRAME_ENCODED,
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_QUALITY,
ARG_SMOOTHING,
/* FILL ME */
};
-static void gst_jpegenc_base_init (gpointer g_class);
-static void gst_jpegenc_class_init (GstJpegEnc *klass);
-static void gst_jpegenc_init (GstJpegEnc *jpegenc);
+static void gst_jpegenc_base_init (gpointer g_class);
+static void gst_jpegenc_class_init (GstJpegEnc * klass);
+static void gst_jpegenc_init (GstJpegEnc * jpegenc);
-static void gst_jpegenc_chain (GstPad *pad, GstData *_data);
-static GstPadLinkReturn gst_jpegenc_link (GstPad *pad, const GstCaps *caps);
-static GstCaps * gst_jpegenc_getcaps (GstPad *pad);
+static void gst_jpegenc_chain (GstPad * pad, GstData * _data);
+static GstPadLinkReturn gst_jpegenc_link (GstPad * pad, const GstCaps * caps);
+static GstCaps *gst_jpegenc_getcaps (GstPad * pad);
-static void gst_jpegenc_resync (GstJpegEnc *jpegenc);
-static void gst_jpegenc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec);
-static void gst_jpegenc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec);
+static void gst_jpegenc_resync (GstJpegEnc * jpegenc);
+static void gst_jpegenc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_jpegenc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
static GstElementClass *parent_class = NULL;
static guint gst_jpegenc_signals[LAST_SIGNAL] = { 0 };
@@ -70,46 +74,44 @@ gst_jpegenc_get_type (void)
if (!jpegenc_type) {
static const GTypeInfo jpegenc_info = {
- sizeof(GstJpegEnc),
+ sizeof (GstJpegEnc),
gst_jpegenc_base_init,
NULL,
- (GClassInitFunc)gst_jpegenc_class_init,
+ (GClassInitFunc) gst_jpegenc_class_init,
NULL,
NULL,
- sizeof(GstJpegEnc),
+ sizeof (GstJpegEnc),
0,
- (GInstanceInitFunc)gst_jpegenc_init,
+ (GInstanceInitFunc) gst_jpegenc_init,
};
- jpegenc_type = g_type_register_static(GST_TYPE_ELEMENT, "GstJpegEnc", &jpegenc_info, 0);
+ jpegenc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstJpegEnc", &jpegenc_info,
+ 0);
}
return jpegenc_type;
}
static GstStaticPadTemplate gst_jpegenc_sink_pad_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV("I420"))
-);
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
static GstStaticPadTemplate gst_jpegenc_src_pad_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("image/jpeg, "
- "width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 1, MAX ]"
- )
-);
+ "width = (int) [ 16, 4096 ], "
+ "height = (int) [ 16, 4096 ], " "framerate = (double) [ 1, MAX ]")
+ );
static void
gst_jpegenc_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_jpegenc_sink_pad_template));
gst_element_class_add_pad_template (element_class,
@@ -118,29 +120,29 @@ gst_jpegenc_base_init (gpointer g_class)
}
static void
-gst_jpegenc_class_init (GstJpegEnc *klass)
+gst_jpegenc_class_init (GstJpegEnc * 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);
gst_jpegenc_signals[FRAME_ENCODED] =
- g_signal_new ("frame-encoded", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstJpegEncClass, frame_encoded), NULL, NULL,
- g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+ g_signal_new ("frame-encoded", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstJpegEncClass, frame_encoded), NULL,
+ NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
g_object_class_install_property (gobject_class, ARG_QUALITY,
g_param_spec_int ("quality", "Quality", "Quality of encoding",
- 0, 100, 85, G_PARAM_READWRITE));
+ 0, 100, 85, G_PARAM_READWRITE));
#if 0
/* disabled, since it doesn't seem to work */
g_object_class_install_property (gobject_class, ARG_SMOOTHING,
g_param_spec_int ("smoothing", "Smoothing", "Smoothing factor",
- 0, 100, 0, G_PARAM_READWRITE));
+ 0, 100, 0, G_PARAM_READWRITE));
#endif
gobject_class->set_property = gst_jpegenc_set_property;
@@ -160,44 +162,47 @@ gst_jpegenc_flush_destination (j_compress_ptr cinfo)
return TRUE;
}
-static void gst_jpegenc_term_destination (j_compress_ptr cinfo)
+static void
+gst_jpegenc_term_destination (j_compress_ptr cinfo)
{
GST_DEBUG ("gst_jpegenc_chain: term_source");
}
static void
-gst_jpegenc_init (GstJpegEnc *jpegenc)
+gst_jpegenc_init (GstJpegEnc * jpegenc)
{
/* create the sink and src pads */
- jpegenc->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_jpegenc_sink_pad_template), "sink");
- gst_pad_set_chain_function(jpegenc->sinkpad,gst_jpegenc_chain);
- gst_pad_set_getcaps_function(jpegenc->sinkpad, gst_jpegenc_getcaps);
- gst_pad_set_link_function(jpegenc->sinkpad, gst_jpegenc_link);
- gst_element_add_pad(GST_ELEMENT(jpegenc),jpegenc->sinkpad);
-
- jpegenc->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_jpegenc_src_pad_template), "src");
- gst_pad_set_getcaps_function(jpegenc->sinkpad, gst_jpegenc_getcaps);
- gst_pad_set_link_function(jpegenc->sinkpad, gst_jpegenc_link);
- gst_element_add_pad(GST_ELEMENT(jpegenc),jpegenc->srcpad);
+ jpegenc->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_jpegenc_sink_pad_template), "sink");
+ gst_pad_set_chain_function (jpegenc->sinkpad, gst_jpegenc_chain);
+ gst_pad_set_getcaps_function (jpegenc->sinkpad, gst_jpegenc_getcaps);
+ gst_pad_set_link_function (jpegenc->sinkpad, gst_jpegenc_link);
+ gst_element_add_pad (GST_ELEMENT (jpegenc), jpegenc->sinkpad);
+
+ jpegenc->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_jpegenc_src_pad_template), "src");
+ gst_pad_set_getcaps_function (jpegenc->sinkpad, gst_jpegenc_getcaps);
+ gst_pad_set_link_function (jpegenc->sinkpad, gst_jpegenc_link);
+ gst_element_add_pad (GST_ELEMENT (jpegenc), jpegenc->srcpad);
/* reset the initial video state */
jpegenc->width = -1;
jpegenc->height = -1;
/* setup jpeglib */
- memset(&jpegenc->cinfo, 0, sizeof(jpegenc->cinfo));
- memset(&jpegenc->jerr, 0, sizeof(jpegenc->jerr));
- jpegenc->cinfo.err = jpeg_std_error(&jpegenc->jerr);
- jpeg_create_compress(&jpegenc->cinfo);
+ memset (&jpegenc->cinfo, 0, sizeof (jpegenc->cinfo));
+ memset (&jpegenc->jerr, 0, sizeof (jpegenc->jerr));
+ jpegenc->cinfo.err = jpeg_std_error (&jpegenc->jerr);
+ jpeg_create_compress (&jpegenc->cinfo);
GST_DEBUG ("gst_jpegenc_init: setting line buffers");
jpegenc->line[0] = NULL;
jpegenc->line[1] = NULL;
jpegenc->line[2] = NULL;
- gst_jpegenc_resync(jpegenc);
+ gst_jpegenc_resync (jpegenc);
jpegenc->jdest.init_destination = gst_jpegenc_init_destination;
jpegenc->jdest.empty_output_buffer = gst_jpegenc_flush_destination;
@@ -209,7 +214,7 @@ gst_jpegenc_init (GstJpegEnc *jpegenc)
}
static GstCaps *
-gst_jpegenc_getcaps (GstPad *pad)
+gst_jpegenc_getcaps (GstPad * pad)
{
GstJpegEnc *jpegenc = GST_JPEGENC (gst_pad_get_parent (pad));
GstPad *otherpad;
@@ -225,7 +230,7 @@ gst_jpegenc_getcaps (GstPad *pad)
} else {
name = "video/x-raw-yuv";
}
- 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);
gst_structure_set_name (structure, name);
@@ -236,7 +241,7 @@ gst_jpegenc_getcaps (GstPad *pad)
}
static GstPadLinkReturn
-gst_jpegenc_link (GstPad *pad, const GstCaps *caps)
+gst_jpegenc_link (GstPad * pad, const GstCaps * caps)
{
GstJpegEnc *jpegenc = GST_JPEGENC (gst_pad_get_parent (pad));
GstStructure *structure;
@@ -248,18 +253,17 @@ gst_jpegenc_link (GstPad *pad, const GstCaps *caps)
structure = gst_caps_get_structure (caps, 0);
gst_structure_get_double (structure, "framerate", &jpegenc->fps);
- gst_structure_get_int (structure, "width", &jpegenc->width);
- gst_structure_get_int (structure, "height", &jpegenc->height);
-
+ gst_structure_get_int (structure, "width", &jpegenc->width);
+ gst_structure_get_int (structure, "height", &jpegenc->height);
+
othercaps = gst_caps_copy (gst_pad_get_pad_template_caps (otherpad));
gst_caps_set_simple (othercaps,
- "width", G_TYPE_INT, jpegenc->width,
- "height", G_TYPE_INT, jpegenc->height,
- "framerate", G_TYPE_DOUBLE, jpegenc->fps,
- NULL);
+ "width", G_TYPE_INT, jpegenc->width,
+ "height", G_TYPE_INT, jpegenc->height,
+ "framerate", G_TYPE_DOUBLE, jpegenc->fps, NULL);
ret = gst_pad_try_set_caps (jpegenc->srcpad, othercaps);
- gst_caps_free(othercaps);
+ gst_caps_free (othercaps);
if (GST_PAD_LINK_SUCCESSFUL (ret)) {
gst_jpegenc_resync (jpegenc);
@@ -269,7 +273,7 @@ gst_jpegenc_link (GstPad *pad, const GstCaps *caps)
}
static void
-gst_jpegenc_resync (GstJpegEnc *jpegenc)
+gst_jpegenc_resync (GstJpegEnc * jpegenc)
{
guint size = 0;
gint width, height;
@@ -282,11 +286,11 @@ gst_jpegenc_resync (GstJpegEnc *jpegenc)
GST_DEBUG ("gst_jpegenc_resync: wdith %d, height %d", width, height);
- jpeg_set_defaults(&jpegenc->cinfo);
+ jpeg_set_defaults (&jpegenc->cinfo);
jpegenc->cinfo.dct_method = JDCT_FASTEST;
- /*jpegenc->cinfo.dct_method = JDCT_DEFAULT;*/
+ /*jpegenc->cinfo.dct_method = JDCT_DEFAULT; */
/*jpegenc->cinfo.smoothing_factor = jpegenc->smoothing; */
- jpeg_set_quality(&jpegenc->cinfo, jpegenc->quality, TRUE);
+ jpeg_set_quality (&jpegenc->cinfo, jpegenc->quality, TRUE);
#if 0
switch (jpegenc->format) {
@@ -310,24 +314,27 @@ gst_jpegenc_resync (GstJpegEnc *jpegenc)
jpegenc->cinfo.comp_info[2].v_samp_factor = 1;
if (height != -1) {
- jpegenc->line[0] = g_realloc(jpegenc->line[0], height*sizeof(char*));
- jpegenc->line[1] = g_realloc(jpegenc->line[1], height*sizeof(char*)/2);
- jpegenc->line[2] = g_realloc(jpegenc->line[2], height*sizeof(char*)/2);
+ jpegenc->line[0] =
+ g_realloc (jpegenc->line[0], height * sizeof (char *));
+ jpegenc->line[1] =
+ g_realloc (jpegenc->line[1], height * sizeof (char *) / 2);
+ jpegenc->line[2] =
+ g_realloc (jpegenc->line[2], height * sizeof (char *) / 2);
}
GST_DEBUG ("gst_jpegenc_resync: setting format done");
#if 0
break;
default:
- printf("gst_jpegenc_resync: unsupported colorspace, using RGB\n");
+ printf ("gst_jpegenc_resync: unsupported colorspace, using RGB\n");
size = 3;
jpegenc->cinfo.in_color_space = JCS_RGB;
break;
}
#endif
- jpegenc->bufsize = jpegenc->width*jpegenc->height*size;
+ jpegenc->bufsize = jpegenc->width * jpegenc->height * size;
- jpeg_suppress_tables(&jpegenc->cinfo, TRUE);
+ jpeg_suppress_tables (&jpegenc->cinfo, TRUE);
//jpeg_suppress_tables(&jpegenc->cinfo, FALSE);
jpegenc->buffer = NULL;
@@ -335,17 +342,18 @@ gst_jpegenc_resync (GstJpegEnc *jpegenc)
}
static void
-gst_jpegenc_chain (GstPad *pad, GstData *_data)
+gst_jpegenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstJpegEnc *jpegenc;
guchar *data, *outdata;
gulong size, outsize;
GstBuffer *outbuf;
+
/* GstMeta *meta; */
guint height, width, width2;
guchar *base[3];
- gint i,j, k;
+ gint i, j, k;
g_return_if_fail (pad != NULL);
g_return_if_fail (GST_IS_PAD (pad));
@@ -355,53 +363,58 @@ gst_jpegenc_chain (GstPad *pad, GstData *_data)
/*usleep(10000); */
jpegenc = GST_JPEGENC (GST_OBJECT_PARENT (pad));
- data = GST_BUFFER_DATA(buf);
- size = GST_BUFFER_SIZE(buf);
+ data = GST_BUFFER_DATA (buf);
+ size = GST_BUFFER_SIZE (buf);
- GST_DEBUG ("gst_jpegenc_chain: got buffer of %ld bytes in '%s'",size,
- GST_OBJECT_NAME (jpegenc));
+ GST_DEBUG ("gst_jpegenc_chain: got buffer of %ld bytes in '%s'", size,
+ GST_OBJECT_NAME (jpegenc));
- outbuf = gst_buffer_new();
- outsize = GST_BUFFER_SIZE(outbuf) = jpegenc->bufsize;
- outdata = GST_BUFFER_DATA(outbuf) = g_malloc(outsize);
- GST_BUFFER_TIMESTAMP(outbuf) = GST_BUFFER_TIMESTAMP(buf);
+ outbuf = gst_buffer_new ();
+ outsize = GST_BUFFER_SIZE (outbuf) = jpegenc->bufsize;
+ outdata = GST_BUFFER_DATA (outbuf) = g_malloc (outsize);
+ GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
width = jpegenc->width;
height = jpegenc->height;
base[0] = data;
- base[1] = base[0]+width*height;
- base[2] = base[1]+width*height/4;
+ base[1] = base[0] + width * height;
+ base[2] = base[1] + width * height / 4;
jpegenc->jdest.next_output_byte = outdata;
jpegenc->jdest.free_in_buffer = outsize;
jpegenc->cinfo.smoothing_factor = jpegenc->smoothing;
- jpeg_set_quality(&jpegenc->cinfo, jpegenc->quality, TRUE);
- jpeg_start_compress(&jpegenc->cinfo, TRUE);
+ jpeg_set_quality (&jpegenc->cinfo, jpegenc->quality, TRUE);
+ jpeg_start_compress (&jpegenc->cinfo, TRUE);
- width2 = width>>1;
+ width2 = width >> 1;
GST_DEBUG ("gst_jpegdec_chain: compressing");
- for (i = 0; i < height; i += 2*DCTSIZE) {
- for (j=0, k=0; j<2*DCTSIZE;j+=2, k++) {
- jpegenc->line[0][j] = base[0]; base[0] += width;
- jpegenc->line[0][j+1] = base[0]; base[0] += width;
- jpegenc->line[1][k] = base[1]; base[1] += width2;
- jpegenc->line[2][k] = base[2]; base[2] += width2;
+ for (i = 0; i < height; i += 2 * DCTSIZE) {
+ for (j = 0, k = 0; j < 2 * DCTSIZE; j += 2, k++) {
+ jpegenc->line[0][j] = base[0];
+ base[0] += width;
+ jpegenc->line[0][j + 1] = base[0];
+ base[0] += width;
+ jpegenc->line[1][k] = base[1];
+ base[1] += width2;
+ jpegenc->line[2][k] = base[2];
+ base[2] += width2;
}
- jpeg_write_raw_data(&jpegenc->cinfo, jpegenc->line, 2*DCTSIZE);
+ jpeg_write_raw_data (&jpegenc->cinfo, jpegenc->line, 2 * DCTSIZE);
}
- jpeg_finish_compress(&jpegenc->cinfo);
+ jpeg_finish_compress (&jpegenc->cinfo);
GST_DEBUG ("gst_jpegdec_chain: compressing done");
- GST_BUFFER_SIZE(outbuf) = (((outsize - jpegenc->jdest.free_in_buffer)+3)&~3);
+ GST_BUFFER_SIZE (outbuf) =
+ (((outsize - jpegenc->jdest.free_in_buffer) + 3) & ~3);
- gst_pad_push(jpegenc->srcpad, GST_DATA (outbuf));
+ gst_pad_push (jpegenc->srcpad, GST_DATA (outbuf));
- g_signal_emit(G_OBJECT(jpegenc),gst_jpegenc_signals[FRAME_ENCODED], 0);
+ g_signal_emit (G_OBJECT (jpegenc), gst_jpegenc_signals[FRAME_ENCODED], 0);
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
static void
@@ -412,7 +425,7 @@ gst_jpegenc_set_property (GObject * object, guint prop_id,
g_return_if_fail (GST_IS_JPEGENC (object));
jpegenc = GST_JPEGENC (object);
-
+
switch (prop_id) {
case ARG_QUALITY:
jpegenc->quality = g_value_get_int (value);
@@ -423,7 +436,7 @@ gst_jpegenc_set_property (GObject * object, guint prop_id,
default:
break;
}
-}
+}
static void
gst_jpegenc_get_property (GObject * object, guint prop_id, GValue * value,
@@ -446,4 +459,3 @@ gst_jpegenc_get_property (GObject * object, guint prop_id, GValue * value,
break;
}
}
-
diff --git a/ext/jpeg/gstjpegenc.h b/ext/jpeg/gstjpegenc.h
index b68b4859..beeaf6f9 100644
--- a/ext/jpeg/gstjpegenc.h
+++ b/ext/jpeg/gstjpegenc.h
@@ -30,8 +30,9 @@
#include <jpeglib.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_JPEGENC \
@@ -45,48 +46,50 @@ extern "C" {
#define GST_IS_JPEGENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_JPEGENC))
-typedef struct _GstJpegEnc GstJpegEnc;
-typedef struct _GstJpegEncClass GstJpegEncClass;
+ typedef struct _GstJpegEnc GstJpegEnc;
+ typedef struct _GstJpegEncClass GstJpegEncClass;
-struct _GstJpegEnc {
- GstElement element;
+ struct _GstJpegEnc
+ {
+ GstElement element;
- /* pads */
- GstPad *sinkpad,*srcpad;
+ /* pads */
+ GstPad *sinkpad, *srcpad;
- /* video state */
- gint format;
- gint width;
- gint height;
- gdouble fps;
- /* the video buffer */
- gint bufsize;
- GstBuffer *buffer;
- guint row_stride;
- /* the jpeg line buffer */
- guchar **line[3];
+ /* video state */
+ gint format;
+ gint width;
+ gint height;
+ gdouble fps;
+ /* the video buffer */
+ gint bufsize;
+ GstBuffer *buffer;
+ guint row_stride;
+ /* the jpeg line buffer */
+ guchar **line[3];
- struct jpeg_compress_struct cinfo;
- struct jpeg_error_mgr jerr;
- struct jpeg_destination_mgr jdest;
+ struct jpeg_compress_struct cinfo;
+ struct jpeg_error_mgr jerr;
+ struct jpeg_destination_mgr jdest;
- int quality;
- int smoothing;
-};
+ int quality;
+ int smoothing;
+ };
-struct _GstJpegEncClass {
- GstElementClass parent_class;
+ struct _GstJpegEncClass
+ {
+ GstElementClass parent_class;
- /* signals */
- void (*frame_encoded) (GstElement *element);
-};
+ /* signals */
+ void (*frame_encoded) (GstElement * element);
+ };
-GType gst_jpegenc_get_type(void);
+ GType gst_jpegenc_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_JPEGENC_H__ */
+#endif /* __GST_JPEGENC_H__ */
diff --git a/ext/ladspa/gstladspa.c b/ext/ladspa/gstladspa.c
index 020767fa..4f6c1f0c 100644
--- a/ext/ladspa/gstladspa.c
+++ b/ext/ladspa/gstladspa.c
@@ -28,8 +28,8 @@
#include <gst/audio/audio.h>
#include "gstladspa.h"
-#include <ladspa.h> /* main ladspa sdk include file */
-#include "utils.h" /* ladspa sdk utility functions */
+#include <ladspa.h> /* main ladspa sdk include file */
+#include "utils.h" /* ladspa sdk utility functions */
/* 1.0 and the 1.1 preliminary headers don't define a version, but 1.1 final
does */
@@ -40,31 +40,34 @@
static GstStaticCaps ladspa_pad_caps =
GST_STATIC_CAPS (GST_AUDIO_FLOAT_STANDARD_PAD_TEMPLATE_CAPS);
-static void gst_ladspa_class_init (GstLADSPAClass *klass);
-static void gst_ladspa_base_init (GstLADSPAClass *klass);
-static void gst_ladspa_init (GstLADSPA *ladspa);
+static void gst_ladspa_class_init (GstLADSPAClass * klass);
+static void gst_ladspa_base_init (GstLADSPAClass * klass);
+static void gst_ladspa_init (GstLADSPA * ladspa);
-static void gst_ladspa_update_int (const GValue *value, gpointer data);
-static GstPadLinkReturn gst_ladspa_link (GstPad *pad, const GstCaps *caps);
+static void gst_ladspa_update_int (const GValue * value, gpointer data);
+static GstPadLinkReturn gst_ladspa_link (GstPad * pad, const GstCaps * caps);
-static void gst_ladspa_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_ladspa_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_ladspa_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_ladspa_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static gboolean gst_ladspa_instantiate (GstLADSPA *ladspa);
-static void gst_ladspa_activate (GstLADSPA *ladspa);
-static void gst_ladspa_deactivate (GstLADSPA *ladspa);
+static gboolean gst_ladspa_instantiate (GstLADSPA * ladspa);
+static void gst_ladspa_activate (GstLADSPA * ladspa);
+static void gst_ladspa_deactivate (GstLADSPA * ladspa);
-static GstElementStateReturn gst_ladspa_change_state (GstElement *element);
-static void gst_ladspa_loop (GstElement *element);
-static void gst_ladspa_chain (GstPad *pad,GstData *_data);
-static GstData * gst_ladspa_get (GstPad *pad);
+static GstElementStateReturn gst_ladspa_change_state (GstElement * element);
+static void gst_ladspa_loop (GstElement * element);
+static void gst_ladspa_chain (GstPad * pad, GstData * _data);
+static GstData *gst_ladspa_get (GstPad * pad);
static GstElementClass *parent_class = NULL;
static GstPlugin *ladspa_plugin;
static GHashTable *ladspa_descriptors;
-enum {
+enum
+{
ARG_0,
ARG_SAMPLERATE,
ARG_BUFFERSIZE,
@@ -78,38 +81,39 @@ GST_DEBUG_CATEGORY_STATIC (ladspa_debug);
GST_CAT_LEVEL_LOG (ladspa_debug, GST_LEVEL_DEBUG, obj, __VA_ARGS__)
static void
-gst_ladspa_base_init (GstLADSPAClass *klass)
+gst_ladspa_base_init (GstLADSPAClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
GstPadTemplate *templ;
GstElementDetails *details;
LADSPA_Descriptor *desc;
- gint j, sinkcount,srccount;
+ gint j, sinkcount, srccount;
- desc = g_hash_table_lookup(ladspa_descriptors,
- GINT_TO_POINTER(G_TYPE_FROM_CLASS(klass)));
+ desc = g_hash_table_lookup (ladspa_descriptors,
+ GINT_TO_POINTER (G_TYPE_FROM_CLASS (klass)));
if (!desc)
- desc = g_hash_table_lookup(ladspa_descriptors, GINT_TO_POINTER(0));
+ desc = g_hash_table_lookup (ladspa_descriptors, GINT_TO_POINTER (0));
g_assert (desc);
/* pad templates */
klass->numports = desc->PortCount;
klass->numsinkpads = 0;
klass->numsrcpads = 0;
- for (j=0;j<desc->PortCount;j++) {
- if (LADSPA_IS_PORT_AUDIO(desc->PortDescriptors[j])) {
- gchar *name = g_strdup((gchar *)desc->PortNames[j]);
+ for (j = 0; j < desc->PortCount; j++) {
+ if (LADSPA_IS_PORT_AUDIO (desc->PortDescriptors[j])) {
+ gchar *name = g_strdup ((gchar *) desc->PortNames[j]);
+
g_strcanon (name, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-');
/* the factories take ownership of the name */
- if (LADSPA_IS_PORT_INPUT(desc->PortDescriptors[j])) {
- templ = gst_pad_template_new (name, GST_PAD_SINK, GST_PAD_ALWAYS,
- gst_caps_copy (gst_static_caps_get (&ladspa_pad_caps)));
- klass->numsinkpads++;
+ if (LADSPA_IS_PORT_INPUT (desc->PortDescriptors[j])) {
+ templ = gst_pad_template_new (name, GST_PAD_SINK, GST_PAD_ALWAYS,
+ gst_caps_copy (gst_static_caps_get (&ladspa_pad_caps)));
+ klass->numsinkpads++;
} else {
- templ = gst_pad_template_new (name, GST_PAD_SRC, GST_PAD_ALWAYS,
- gst_caps_copy (gst_static_caps_get (&ladspa_pad_caps)));
- klass->numsrcpads++;
+ templ = gst_pad_template_new (name, GST_PAD_SRC, GST_PAD_ALWAYS,
+ gst_caps_copy (gst_static_caps_get (&ladspa_pad_caps)));
+ klass->numsrcpads++;
}
gst_element_class_add_pad_template (element_class, templ);
@@ -117,28 +121,32 @@ gst_ladspa_base_init (GstLADSPAClass *klass)
}
/* construct the element details struct */
- details = g_new0(GstElementDetails,1);
- details->longname = g_strdup(desc->Name);
+ details = g_new0 (GstElementDetails, 1);
+ details->longname = g_strdup (desc->Name);
details->description = details->longname;
- details->author = g_strdup(desc->Maker);
- if ((klass->numsinkpads >0) && (klass->numsrcpads >0)) details->klass = "Filter/Effect/Audio/LADSPA";
- else if((klass->numsinkpads==0) && (klass->numsrcpads >0)) details->klass = "Source/Audio/LADSPA";
- else if((klass->numsinkpads >0) && (klass->numsrcpads==0)) details->klass = "Sink/Audio/LADSPA";
- else details->klass = "Filter/Effect/Audio/LADSPA"; /* whatever this is */
+ details->author = g_strdup (desc->Maker);
+ if ((klass->numsinkpads > 0) && (klass->numsrcpads > 0))
+ details->klass = "Filter/Effect/Audio/LADSPA";
+ else if ((klass->numsinkpads == 0) && (klass->numsrcpads > 0))
+ details->klass = "Source/Audio/LADSPA";
+ else if ((klass->numsinkpads > 0) && (klass->numsrcpads == 0))
+ details->klass = "Sink/Audio/LADSPA";
+ else
+ details->klass = "Filter/Effect/Audio/LADSPA"; /* whatever this is */
gst_element_class_set_details (element_class, details);
- klass->srcpad_portnums = g_new0(gint,klass->numsrcpads);
- klass->sinkpad_portnums = g_new0(gint,klass->numsinkpads);
+ klass->srcpad_portnums = g_new0 (gint, klass->numsrcpads);
+ klass->sinkpad_portnums = g_new0 (gint, klass->numsinkpads);
sinkcount = 0;
srccount = 0;
/* walk through the ports, note the portnums for srcpads, sinkpads */
- for (j=0; j<desc->PortCount; j++) {
- if (LADSPA_IS_PORT_AUDIO(desc->PortDescriptors[j])) {
- if (LADSPA_IS_PORT_INPUT(desc->PortDescriptors[j]))
- klass->sinkpad_portnums[sinkcount++] = j;
+ for (j = 0; j < desc->PortCount; j++) {
+ if (LADSPA_IS_PORT_AUDIO (desc->PortDescriptors[j])) {
+ if (LADSPA_IS_PORT_INPUT (desc->PortDescriptors[j]))
+ klass->sinkpad_portnums[sinkcount++] = j;
else
- klass->srcpad_portnums[srccount++] = j;
+ klass->srcpad_portnums[srccount++] = j;
}
}
@@ -146,19 +154,19 @@ gst_ladspa_base_init (GstLADSPAClass *klass)
}
static void
-gst_ladspa_class_init (GstLADSPAClass *klass)
+gst_ladspa_class_init (GstLADSPAClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
LADSPA_Descriptor *desc;
- gint i,current_portnum,controlcount;
+ gint i, current_portnum, controlcount;
gint hintdesc;
- gint argtype,argperms;
+ gint argtype, argperms;
GParamSpec *paramspec = NULL;
gchar *argname, *tempstr, *paren;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gobject_class->set_property = gst_ladspa_set_property;
gobject_class->get_property = gst_ladspa_get_property;
@@ -166,78 +174,85 @@ gst_ladspa_class_init (GstLADSPAClass *klass)
gstelement_class->change_state = gst_ladspa_change_state;
/* look up and store the ladspa descriptor */
- desc = g_hash_table_lookup(ladspa_descriptors,
- GINT_TO_POINTER(G_TYPE_FROM_CLASS(klass)));
+ desc = g_hash_table_lookup (ladspa_descriptors,
+ GINT_TO_POINTER (G_TYPE_FROM_CLASS (klass)));
if (!desc)
- desc = g_hash_table_lookup(ladspa_descriptors, GINT_TO_POINTER(0));
+ desc = g_hash_table_lookup (ladspa_descriptors, GINT_TO_POINTER (0));
g_assert (desc);
klass->numcontrols = 0;
/* walk through the ports, count the input, output and control ports */
- for (i=0; i<desc->PortCount; i++) {
- if (!LADSPA_IS_PORT_AUDIO(desc->PortDescriptors[i]) &&
- LADSPA_IS_PORT_INPUT(desc->PortDescriptors[i]))
+ for (i = 0; i < desc->PortCount; i++) {
+ if (!LADSPA_IS_PORT_AUDIO (desc->PortDescriptors[i]) &&
+ LADSPA_IS_PORT_INPUT (desc->PortDescriptors[i]))
klass->numcontrols++;
}
DEBUG ("ladspa element class: init %s with %d sink, %d src, %d control\n",
- g_type_name (G_TYPE_FROM_CLASS (klass)),
- klass->numsinkpads, klass->numsrcpads, klass->numcontrols);
+ g_type_name (G_TYPE_FROM_CLASS (klass)),
+ klass->numsinkpads, klass->numsrcpads, klass->numcontrols);
- klass->control_portnums = g_new0(gint,klass->numcontrols);
+ klass->control_portnums = g_new0 (gint, klass->numcontrols);
controlcount = 0;
/* walk through the ports, note the portnums for control params */
- for (i=0; i<desc->PortCount; i++) {
- if (!LADSPA_IS_PORT_AUDIO(desc->PortDescriptors[i]) &&
- LADSPA_IS_PORT_INPUT(desc->PortDescriptors[i]))
+ for (i = 0; i < desc->PortCount; i++) {
+ if (!LADSPA_IS_PORT_AUDIO (desc->PortDescriptors[i]) &&
+ LADSPA_IS_PORT_INPUT (desc->PortDescriptors[i]))
klass->control_portnums[controlcount++] = i;
}
/* now build the control info from the control ports */
- klass->control_info = g_new0(ladspa_control_info,klass->numcontrols);
-
- for (i=0;i<klass->numcontrols;i++) {
+ klass->control_info = g_new0 (ladspa_control_info, klass->numcontrols);
+
+ for (i = 0; i < klass->numcontrols; i++) {
current_portnum = klass->control_portnums[i];
-
+
/* short name for hint descriptor */
hintdesc = desc->PortRangeHints[current_portnum].HintDescriptor;
/* get the various bits */
- if (LADSPA_IS_HINT_TOGGLED(hintdesc))
+ if (LADSPA_IS_HINT_TOGGLED (hintdesc))
klass->control_info[i].toggled = TRUE;
- if (LADSPA_IS_HINT_LOGARITHMIC(hintdesc))
+ if (LADSPA_IS_HINT_LOGARITHMIC (hintdesc))
klass->control_info[i].logarithmic = TRUE;
- if (LADSPA_IS_HINT_INTEGER(hintdesc))
+ if (LADSPA_IS_HINT_INTEGER (hintdesc))
klass->control_info[i].integer = TRUE;
/* figure out the argument details */
- if (klass->control_info[i].toggled) argtype = G_TYPE_BOOLEAN;
- else if (klass->control_info[i].integer) argtype = G_TYPE_INT;
- else argtype = G_TYPE_FLOAT;
+ if (klass->control_info[i].toggled)
+ argtype = G_TYPE_BOOLEAN;
+ else if (klass->control_info[i].integer)
+ argtype = G_TYPE_INT;
+ else
+ argtype = G_TYPE_FLOAT;
/* grab the bounds */
- if (LADSPA_IS_HINT_BOUNDED_BELOW(hintdesc)) {
+ if (LADSPA_IS_HINT_BOUNDED_BELOW (hintdesc)) {
klass->control_info[i].lower = TRUE;
klass->control_info[i].lowerbound =
- desc->PortRangeHints[current_portnum].LowerBound;
+ desc->PortRangeHints[current_portnum].LowerBound;
} else {
- if (argtype==G_TYPE_INT) klass->control_info[i].lowerbound = (gfloat)G_MININT;
- if (argtype==G_TYPE_FLOAT) klass->control_info[i].lowerbound = -G_MAXFLOAT;
+ if (argtype == G_TYPE_INT)
+ klass->control_info[i].lowerbound = (gfloat) G_MININT;
+ if (argtype == G_TYPE_FLOAT)
+ klass->control_info[i].lowerbound = -G_MAXFLOAT;
}
-
- if (LADSPA_IS_HINT_BOUNDED_ABOVE(hintdesc)) {
+
+ if (LADSPA_IS_HINT_BOUNDED_ABOVE (hintdesc)) {
klass->control_info[i].upper = TRUE;
klass->control_info[i].upperbound =
- desc->PortRangeHints[current_portnum].UpperBound;
- if (LADSPA_IS_HINT_SAMPLE_RATE(hintdesc)) {
- klass->control_info[i].samplerate = TRUE;
- klass->control_info[i].upperbound *= 44100; /* FIXME? */
+ desc->PortRangeHints[current_portnum].UpperBound;
+ if (LADSPA_IS_HINT_SAMPLE_RATE (hintdesc)) {
+ klass->control_info[i].samplerate = TRUE;
+ klass->control_info[i].upperbound *= 44100; /* FIXME? */
}
} else {
- if (argtype==G_TYPE_INT) klass->control_info[i].upperbound = (gfloat)G_MAXINT;
- if (argtype==G_TYPE_FLOAT) klass->control_info[i].upperbound = G_MAXFLOAT;
+ if (argtype == G_TYPE_INT)
+ klass->control_info[i].upperbound = (gfloat) G_MAXINT;
+ if (argtype == G_TYPE_FLOAT)
+ klass->control_info[i].upperbound = G_MAXFLOAT;
}
/* use the lowerbound as the default value */
@@ -247,46 +262,51 @@ gst_ladspa_class_init (GstLADSPAClass *klass)
/* figure out the defaults */
if (LADSPA_IS_HINT_HAS_DEFAULT (hintdesc)) {
if (LADSPA_IS_HINT_DEFAULT_MINIMUM (hintdesc))
- klass->control_info[i].def = klass->control_info[i].lowerbound;
+ klass->control_info[i].def = klass->control_info[i].lowerbound;
else if (LADSPA_IS_HINT_DEFAULT_LOW (hintdesc))
- if (LADSPA_IS_HINT_LOGARITHMIC (hintdesc))
- klass->control_info[i].def = exp (0.75*log(klass->control_info[i].lowerbound) +
- 0.25*log(klass->control_info[i].upperbound));
- else
- klass->control_info[i].def = (0.75*klass->control_info[i].lowerbound +
- 0.25*klass->control_info[i].upperbound);
+ if (LADSPA_IS_HINT_LOGARITHMIC (hintdesc))
+ klass->control_info[i].def =
+ exp (0.75 * log (klass->control_info[i].lowerbound) +
+ 0.25 * log (klass->control_info[i].upperbound));
+ else
+ klass->control_info[i].def =
+ (0.75 * klass->control_info[i].lowerbound +
+ 0.25 * klass->control_info[i].upperbound);
else if (LADSPA_IS_HINT_DEFAULT_MIDDLE (hintdesc))
- if (LADSPA_IS_HINT_LOGARITHMIC (hintdesc))
- klass->control_info[i].def = exp (0.5*log(klass->control_info[i].lowerbound) +
- 0.5*log(klass->control_info[i].upperbound));
- else
- klass->control_info[i].def = (0.5*klass->control_info[i].lowerbound +
- 0.5*klass->control_info[i].upperbound);
+ if (LADSPA_IS_HINT_LOGARITHMIC (hintdesc))
+ klass->control_info[i].def =
+ exp (0.5 * log (klass->control_info[i].lowerbound) +
+ 0.5 * log (klass->control_info[i].upperbound));
+ else
+ klass->control_info[i].def =
+ (0.5 * klass->control_info[i].lowerbound +
+ 0.5 * klass->control_info[i].upperbound);
else if (LADSPA_IS_HINT_DEFAULT_HIGH (hintdesc))
- if (LADSPA_IS_HINT_LOGARITHMIC (hintdesc))
- klass->control_info[i].def = exp (0.25*log(klass->control_info[i].lowerbound) +
- 0.75*log(klass->control_info[i].upperbound));
- else
- klass->control_info[i].def = (0.25*klass->control_info[i].lowerbound +
- 0.75*klass->control_info[i].upperbound);
+ if (LADSPA_IS_HINT_LOGARITHMIC (hintdesc))
+ klass->control_info[i].def =
+ exp (0.25 * log (klass->control_info[i].lowerbound) +
+ 0.75 * log (klass->control_info[i].upperbound));
+ else
+ klass->control_info[i].def =
+ (0.25 * klass->control_info[i].lowerbound +
+ 0.75 * klass->control_info[i].upperbound);
else if (LADSPA_IS_HINT_DEFAULT_MAXIMUM (hintdesc))
- klass->control_info[i].def = klass->control_info[i].upperbound;
+ klass->control_info[i].def = klass->control_info[i].upperbound;
else if (LADSPA_IS_HINT_DEFAULT_0 (hintdesc))
- klass->control_info[i].def = 0.0;
+ klass->control_info[i].def = 0.0;
else if (LADSPA_IS_HINT_DEFAULT_1 (hintdesc))
- klass->control_info[i].def = 1.0;
+ klass->control_info[i].def = 1.0;
else if (LADSPA_IS_HINT_DEFAULT_100 (hintdesc))
- klass->control_info[i].def = 100.0;
+ klass->control_info[i].def = 100.0;
else if (LADSPA_IS_HINT_DEFAULT_440 (hintdesc))
- klass->control_info[i].def = 440.0;
+ klass->control_info[i].def = 440.0;
}
#endif /* LADSPA_IS_HINT_HAS_DEFAULT */
- klass->control_info[i].def = CLAMP(klass->control_info[i].def,
- klass->control_info[i].lowerbound,
- klass->control_info[i].upperbound);
-
- if (LADSPA_IS_PORT_INPUT(desc->PortDescriptors[current_portnum])) {
+ klass->control_info[i].def = CLAMP (klass->control_info[i].def,
+ klass->control_info[i].lowerbound, klass->control_info[i].upperbound);
+
+ if (LADSPA_IS_PORT_INPUT (desc->PortDescriptors[current_portnum])) {
argperms = G_PARAM_READWRITE;
klass->control_info[i].writable = TRUE;
} else {
@@ -294,8 +314,8 @@ gst_ladspa_class_init (GstLADSPAClass *klass)
klass->control_info[i].writable = FALSE;
}
- klass->control_info[i].name = g_strdup(desc->PortNames[current_portnum]);
- argname = g_strdup(klass->control_info[i].name);
+ klass->control_info[i].name = g_strdup (desc->PortNames[current_portnum]);
+ argname = g_strdup (klass->control_info[i].name);
/* find out if there is a (unitname) at the end of the argname and get rid
of it */
paren = g_strrstr (argname, " (");
@@ -305,123 +325,120 @@ gst_ladspa_class_init (GstLADSPAClass *klass)
/* this is the same thing that param_spec_* will do */
g_strcanon (argname, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-');
/* satisfy glib2 (argname[0] must be [A-Za-z]) */
- if (!((argname[0] >= 'a' && argname[0] <= 'z') || (argname[0] >= 'A' && argname[0] <= 'Z'))) {
+ if (!((argname[0] >= 'a' && argname[0] <= 'z') || (argname[0] >= 'A'
+ && argname[0] <= 'Z'))) {
tempstr = argname;
- argname = g_strconcat("param-", argname, NULL);
+ argname = g_strconcat ("param-", argname, NULL);
g_free (tempstr);
}
-
+
/* check for duplicate property names */
- if (g_object_class_find_property(G_OBJECT_CLASS(klass), argname) != NULL){
- gint numarg=1;
- gchar *numargname = g_strdup_printf("%s_%d",argname,numarg++);
- while (g_object_class_find_property(G_OBJECT_CLASS(klass), numargname) != NULL){
- g_free(numargname);
- numargname = g_strdup_printf("%s_%d",argname,numarg++);
+ if (g_object_class_find_property (G_OBJECT_CLASS (klass), argname) != NULL) {
+ gint numarg = 1;
+ gchar *numargname = g_strdup_printf ("%s_%d", argname, numarg++);
+
+ while (g_object_class_find_property (G_OBJECT_CLASS (klass),
+ numargname) != NULL) {
+ g_free (numargname);
+ numargname = g_strdup_printf ("%s_%d", argname, numarg++);
}
argname = numargname;
}
-
+
klass->control_info[i].param_name = argname;
-
+
DEBUG ("adding arg %s from %s", argname, klass->control_info[i].name);
-
- if (argtype==G_TYPE_BOOLEAN){
- paramspec = g_param_spec_boolean(argname,argname,argname, FALSE, argperms);
- } else if (argtype==G_TYPE_INT){
- paramspec = g_param_spec_int(argname,argname,argname,
- (gint)klass->control_info[i].lowerbound,
- (gint)klass->control_info[i].upperbound,
- (gint)klass->control_info[i].def, argperms);
- } else if (klass->control_info[i].samplerate){
- paramspec = g_param_spec_float(argname,argname,argname,
- 0.0, G_MAXFLOAT,
- 0.0, argperms);
+
+ if (argtype == G_TYPE_BOOLEAN) {
+ paramspec =
+ g_param_spec_boolean (argname, argname, argname, FALSE, argperms);
+ } else if (argtype == G_TYPE_INT) {
+ paramspec = g_param_spec_int (argname, argname, argname,
+ (gint) klass->control_info[i].lowerbound,
+ (gint) klass->control_info[i].upperbound,
+ (gint) klass->control_info[i].def, argperms);
+ } else if (klass->control_info[i].samplerate) {
+ paramspec = g_param_spec_float (argname, argname, argname,
+ 0.0, G_MAXFLOAT, 0.0, argperms);
} else {
- paramspec = g_param_spec_float(argname,argname,argname,
- klass->control_info[i].lowerbound, klass->control_info[i].upperbound,
- klass->control_info[i].def, argperms);
+ paramspec = g_param_spec_float (argname, argname, argname,
+ klass->control_info[i].lowerbound, klass->control_info[i].upperbound,
+ klass->control_info[i].def, argperms);
}
-
+
/* properties have an offset of 1 */
- g_object_class_install_property(G_OBJECT_CLASS(klass), i+1, paramspec);
+ g_object_class_install_property (G_OBJECT_CLASS (klass), i + 1, paramspec);
}
}
static void
-gst_ladspa_init (GstLADSPA *ladspa)
+gst_ladspa_init (GstLADSPA * ladspa)
{
GstLADSPAClass *oclass;
ladspa_control_info cinfo;
GList *l;
LADSPA_Descriptor *desc;
- gint i,sinkcount,srccount;
+ gint i, sinkcount, srccount;
- oclass = (GstLADSPAClass*)G_OBJECT_GET_CLASS (ladspa);
+ oclass = (GstLADSPAClass *) G_OBJECT_GET_CLASS (ladspa);
desc = oclass->descriptor;
ladspa->descriptor = oclass->descriptor;
-
+
/* allocate the various arrays */
- ladspa->srcpads = g_new0(GstPad*,oclass->numsrcpads);
- ladspa->sinkpads = g_new0(GstPad*,oclass->numsinkpads);
- ladspa->controls = g_new(gfloat,oclass->numcontrols);
- ladspa->dpman = gst_dpman_new ("ladspa_dpman", GST_ELEMENT(ladspa));
-
+ ladspa->srcpads = g_new0 (GstPad *, oclass->numsrcpads);
+ ladspa->sinkpads = g_new0 (GstPad *, oclass->numsinkpads);
+ ladspa->controls = g_new (gfloat, oclass->numcontrols);
+ ladspa->dpman = gst_dpman_new ("ladspa_dpman", GST_ELEMENT (ladspa));
+
/* set up pads */
sinkcount = 0;
srccount = 0;
- for (l=GST_ELEMENT_CLASS (oclass)->padtemplates; l; l=l->next) {
+ for (l = GST_ELEMENT_CLASS (oclass)->padtemplates; l; l = l->next) {
GstPad *pad = gst_pad_new_from_template (GST_PAD_TEMPLATE (l->data),
- GST_PAD_TEMPLATE_NAME_TEMPLATE (l->data));
+ GST_PAD_TEMPLATE_NAME_TEMPLATE (l->data));
+
gst_pad_set_link_function (pad, gst_ladspa_link);
- gst_element_add_pad ((GstElement*)ladspa, pad);
+ gst_element_add_pad ((GstElement *) ladspa, pad);
if (GST_PAD_DIRECTION (pad) == GST_PAD_SINK)
ladspa->sinkpads[sinkcount++] = pad;
else
ladspa->srcpads[srccount++] = pad;
}
-
+
/* set up dparams */
- for (i=0; i<oclass->numcontrols; i++) {
- if (LADSPA_IS_PORT_INPUT(desc->PortDescriptors[i])) {
+ for (i = 0; i < oclass->numcontrols; i++) {
+ if (LADSPA_IS_PORT_INPUT (desc->PortDescriptors[i])) {
cinfo = oclass->control_info[i];
- ladspa->controls[i]=cinfo.def;
-
- if (cinfo.toggled){
- gst_dpman_add_required_dparam_callback (
- ladspa->dpman,
- g_param_spec_int(cinfo.param_name, cinfo.name, cinfo.name,
- 0, 1, (gint)(ladspa->controls[i]), G_PARAM_READWRITE),
- "int", gst_ladspa_update_int, &(ladspa->controls[i])
- );
- }
- else if (cinfo.integer){
- gst_dpman_add_required_dparam_callback (
- ladspa->dpman,
- g_param_spec_int(cinfo.param_name, cinfo.name, cinfo.name,
- (gint)cinfo.lowerbound, (gint)cinfo.upperbound,
- (gint)ladspa->controls[i], G_PARAM_READWRITE),
- "int", gst_ladspa_update_int, &(ladspa->controls[i])
- );
- }
- else if (cinfo.samplerate){
- gst_dpman_add_required_dparam_direct (
- ladspa->dpman,
- g_param_spec_float(cinfo.param_name, cinfo.name, cinfo.name,
- cinfo.lowerbound, cinfo.upperbound,
- ladspa->controls[i], G_PARAM_READWRITE),
- "hertz-rate-bound", &(ladspa->controls[i])
- );
- }
- else {
- gst_dpman_add_required_dparam_direct (
- ladspa->dpman,
- g_param_spec_float(cinfo.param_name, cinfo.name, cinfo.name,
- cinfo.lowerbound, cinfo.upperbound,
- ladspa->controls[i], G_PARAM_READWRITE),
- "float", &(ladspa->controls[i])
- );
+ ladspa->controls[i] = cinfo.def;
+
+ if (cinfo.toggled) {
+ gst_dpman_add_required_dparam_callback (ladspa->dpman,
+ g_param_spec_int (cinfo.param_name, cinfo.name, cinfo.name,
+ 0, 1, (gint) (ladspa->controls[i]), G_PARAM_READWRITE),
+ "int", gst_ladspa_update_int, &(ladspa->controls[i])
+ );
+ } else if (cinfo.integer) {
+ gst_dpman_add_required_dparam_callback (ladspa->dpman,
+ g_param_spec_int (cinfo.param_name, cinfo.name, cinfo.name,
+ (gint) cinfo.lowerbound, (gint) cinfo.upperbound,
+ (gint) ladspa->controls[i], G_PARAM_READWRITE),
+ "int", gst_ladspa_update_int, &(ladspa->controls[i])
+ );
+ } else if (cinfo.samplerate) {
+ gst_dpman_add_required_dparam_direct (ladspa->dpman,
+ g_param_spec_float (cinfo.param_name, cinfo.name, cinfo.name,
+ cinfo.lowerbound, cinfo.upperbound,
+ ladspa->controls[i], G_PARAM_READWRITE),
+ "hertz-rate-bound", &(ladspa->controls[i])
+ );
+ } else {
+ gst_dpman_add_required_dparam_direct (ladspa->dpman,
+ g_param_spec_float (cinfo.param_name, cinfo.name, cinfo.name,
+ cinfo.lowerbound, cinfo.upperbound,
+ ladspa->controls[i], G_PARAM_READWRITE),
+ "float", &(ladspa->controls[i])
+ );
}
}
}
@@ -429,58 +446,62 @@ gst_ladspa_init (GstLADSPA *ladspa)
/* nonzero default needed to instantiate() some plugins */
ladspa->samplerate = 44100;
- ladspa->buffer_frames = 0; /* should be set with caps */
+ ladspa->buffer_frames = 0; /* should be set with caps */
ladspa->activated = FALSE;
- ladspa->inplace_broken = LADSPA_IS_INPLACE_BROKEN(ladspa->descriptor->Properties);
+ ladspa->inplace_broken =
+ LADSPA_IS_INPLACE_BROKEN (ladspa->descriptor->Properties);
- if (sinkcount==0 && srccount == 1) {
+ if (sinkcount == 0 && srccount == 1) {
/* get mode (no sink pads) */
DEBUG_OBJ (ladspa, "mono get mode with 1 src pad");
gst_pad_set_get_function (ladspa->srcpads[0], gst_ladspa_get);
- } else if (sinkcount==1){
+ } else if (sinkcount == 1) {
/* with one sink we can use the chain function */
DEBUG_OBJ (ladspa, "chain mode");
gst_pad_set_chain_function (ladspa->sinkpads[0], gst_ladspa_chain);
- } else if (sinkcount > 1){
+ } else if (sinkcount > 1) {
/* more than one sink pad needs loop mode */
- DEBUG_OBJ (ladspa, "loop mode with %d sink pads and %d src pads", sinkcount, srccount);
+ DEBUG_OBJ (ladspa, "loop mode with %d sink pads and %d src pads", sinkcount,
+ srccount);
gst_element_set_loop_function (GST_ELEMENT (ladspa), gst_ladspa_loop);
- } else if (sinkcount==0 && srccount == 0) {
+ } else if (sinkcount == 0 && srccount == 0) {
/* for example, a plugin with only control inputs and output -- just ignore
* it for now */
} else {
- g_warning ("%d sink pads, %d src pads not yet supported", sinkcount, srccount);
+ g_warning ("%d sink pads, %d src pads not yet supported", sinkcount,
+ srccount);
}
gst_ladspa_instantiate (ladspa);
}
static void
-gst_ladspa_update_int(const GValue *value, gpointer data)
+gst_ladspa_update_int (const GValue * value, gpointer data)
{
- gfloat *target = (gfloat*) data;
- *target = (gfloat)g_value_get_int(value);
+ gfloat *target = (gfloat *) data;
+
+ *target = (gfloat) g_value_get_int (value);
}
static GstPadLinkReturn
-gst_ladspa_link (GstPad *pad, const GstCaps *caps)
+gst_ladspa_link (GstPad * pad, const GstCaps * caps)
{
- GstElement *element = (GstElement*)GST_PAD_PARENT (pad);
- GstLADSPA *ladspa = (GstLADSPA*)element;
+ GstElement *element = (GstElement *) GST_PAD_PARENT (pad);
+ GstLADSPA *ladspa = (GstLADSPA *) element;
const GList *l = NULL;
gint rate;
GstStructure *structure;
/* if this fails in some other plugin, the graph is left in an inconsistent
state */
- for (l=gst_element_get_pad_list (element); l; l=l->next)
- if (pad != (GstPad*)l->data)
- if (gst_pad_try_set_caps ((GstPad*)l->data, caps) <= 0)
- return GST_PAD_LINK_REFUSED;
-
+ for (l = gst_element_get_pad_list (element); l; l = l->next)
+ if (pad != (GstPad *) l->data)
+ if (gst_pad_try_set_caps ((GstPad *) l->data, caps) <= 0)
+ return GST_PAD_LINK_REFUSED;
+
/* we assume that the ladspa plugin can handle any sample rate, so this
check gets put last */
structure = gst_caps_get_structure (caps, 0);
@@ -488,48 +509,46 @@ gst_ladspa_link (GstPad *pad, const GstCaps *caps)
/* have to instantiate ladspa plugin when samplerate changes (groan) */
if (ladspa->samplerate != rate) {
ladspa->samplerate = rate;
- if (! gst_ladspa_instantiate(ladspa))
+ if (!gst_ladspa_instantiate (ladspa))
return GST_PAD_LINK_REFUSED;
}
-
- gst_structure_get_int (structure, "buffer-frames", &ladspa->buffer_frames);
-
+
+ gst_structure_get_int (structure, "buffer-frames", &ladspa->buffer_frames);
+
return GST_PAD_LINK_OK;
}
#if 0
static void
-gst_ladspa_force_src_caps(GstLADSPA *ladspa, GstPad *pad)
+gst_ladspa_force_src_caps (GstLADSPA * ladspa, GstPad * pad)
{
if (!ladspa->buffer_frames) {
- ladspa->buffer_frames = 256; /* 5 ms at 44100 kHz (just a default...) */
+ ladspa->buffer_frames = 256; /* 5 ms at 44100 kHz (just a default...) */
}
DEBUG_OBJ (ladspa, "forcing caps with rate=%d, buffer-frames=%d",
- ladspa->samplerate, ladspa->buffer_frames);
+ ladspa->samplerate, ladspa->buffer_frames);
gst_pad_try_set_caps (pad,
- gst_caps_new (
- "ladspa_src_caps",
- "audio/x-raw-float",
- gst_props_new (
- "width", G_TYPE_INT (32),
- "endianness", G_TYPE_INT (G_BYTE_ORDER),
- "rate", G_TYPE_INT (ladspa->samplerate),
- "buffer-frames", G_TYPE_INT (ladspa->buffer_frames),
- "channels", G_TYPE_INT (1),
- NULL)));
+ gst_caps_new ("ladspa_src_caps",
+ "audio/x-raw-float",
+ gst_props_new ("width", G_TYPE_INT (32),
+ "endianness", G_TYPE_INT (G_BYTE_ORDER),
+ "rate", G_TYPE_INT (ladspa->samplerate),
+ "buffer-frames", G_TYPE_INT (ladspa->buffer_frames),
+ "channels", G_TYPE_INT (1), NULL)));
}
#endif
static void
-gst_ladspa_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_ladspa_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
- GstLADSPA *ladspa = (GstLADSPA*)object;
+ GstLADSPA *ladspa = (GstLADSPA *) object;
GstLADSPAClass *oclass;
ladspa_control_info *control_info;
- oclass = (GstLADSPAClass*)(G_OBJECT_GET_CLASS (object));
+ oclass = (GstLADSPAClass *) (G_OBJECT_GET_CLASS (object));
/* remember, properties have an offset of 1 */
prop_id--;
@@ -551,14 +570,16 @@ gst_ladspa_set_property (GObject *object, guint prop_id, const GValue *value, GP
else
ladspa->controls[prop_id] = g_value_get_float (value);
- DEBUG_OBJ (object, "set arg %s to %f", control_info->name, ladspa->controls[prop_id]);
+ DEBUG_OBJ (object, "set arg %s to %f", control_info->name,
+ ladspa->controls[prop_id]);
}
static void
-gst_ladspa_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_ladspa_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
- GstLADSPA *ladspa = (GstLADSPA*)object;
- GstLADSPAClass *oclass = (GstLADSPAClass*)(G_OBJECT_GET_CLASS (object));
+ GstLADSPA *ladspa = (GstLADSPA *) object;
+ GstLADSPAClass *oclass = (GstLADSPAClass *) (G_OBJECT_GET_CLASS (object));
ladspa_control_info *control_info;
/* remember, properties have an offset of 1 */
@@ -574,62 +595,63 @@ gst_ladspa_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
if (control_info->toggled)
g_value_set_boolean (value, ladspa->controls[prop_id] == 1.0);
else if (control_info->integer)
- g_value_set_int (value, (gint)ladspa->controls[prop_id]);
+ g_value_set_int (value, (gint) ladspa->controls[prop_id]);
else
g_value_set_float (value, ladspa->controls[prop_id]);
- DEBUG_OBJ (object, "got arg %s as %f", control_info->name, ladspa->controls[prop_id]);
+ DEBUG_OBJ (object, "got arg %s as %f", control_info->name,
+ ladspa->controls[prop_id]);
}
static gboolean
-gst_ladspa_instantiate (GstLADSPA *ladspa)
+gst_ladspa_instantiate (GstLADSPA * ladspa)
{
LADSPA_Descriptor *desc;
int i;
- GstLADSPAClass *oclass = (GstLADSPAClass*)(G_OBJECT_GET_CLASS (ladspa));
+ GstLADSPAClass *oclass = (GstLADSPAClass *) (G_OBJECT_GET_CLASS (ladspa));
gboolean was_activated;
-
+
desc = ladspa->descriptor;
-
+
/* check for old handle */
was_activated = ladspa->activated;
- if (ladspa->handle != NULL){
- gst_ladspa_deactivate(ladspa);
- desc->cleanup(ladspa->handle);
+ if (ladspa->handle != NULL) {
+ gst_ladspa_deactivate (ladspa);
+ desc->cleanup (ladspa->handle);
}
-
- /* instantiate the plugin */
+
+ /* instantiate the plugin */
DEBUG_OBJ (ladspa, "instantiating the plugin at %d Hz", ladspa->samplerate);
-
- ladspa->handle = desc->instantiate(desc,ladspa->samplerate);
+
+ ladspa->handle = desc->instantiate (desc, ladspa->samplerate);
g_return_val_if_fail (ladspa->handle != NULL, FALSE);
/* connect the control ports */
- for (i=0;i<oclass->numcontrols;i++)
- desc->connect_port(ladspa->handle,
- oclass->control_portnums[i],
- &(ladspa->controls[i]));
+ for (i = 0; i < oclass->numcontrols; i++)
+ desc->connect_port (ladspa->handle,
+ oclass->control_portnums[i], &(ladspa->controls[i]));
/* reactivate if it was activated before the reinstantiation */
if (was_activated)
- gst_ladspa_activate(ladspa);
+ gst_ladspa_activate (ladspa);
return TRUE;
}
static GstElementStateReturn
-gst_ladspa_change_state (GstElement *element)
+gst_ladspa_change_state (GstElement * element)
{
LADSPA_Descriptor *desc;
- GstLADSPA *ladspa = (GstLADSPA*)element;
+ GstLADSPA *ladspa = (GstLADSPA *) element;
+
desc = ladspa->descriptor;
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_NULL_TO_READY:
- gst_ladspa_activate(ladspa);
+ gst_ladspa_activate (ladspa);
break;
case GST_STATE_READY_TO_NULL:
- gst_ladspa_deactivate(ladspa);
+ gst_ladspa_deactivate (ladspa);
break;
default:
break;
@@ -642,104 +664,109 @@ gst_ladspa_change_state (GstElement *element)
}
static void
-gst_ladspa_activate (GstLADSPA *ladspa)
+gst_ladspa_activate (GstLADSPA * ladspa)
{
LADSPA_Descriptor *desc;
+
desc = ladspa->descriptor;
-
+
if (ladspa->activated)
- gst_ladspa_deactivate(ladspa);
-
+ gst_ladspa_deactivate (ladspa);
+
DEBUG_OBJ (ladspa, "activating");
/* activate the plugin (function might be null) */
if (desc->activate != NULL)
- desc->activate(ladspa->handle);
+ desc->activate (ladspa->handle);
ladspa->activated = TRUE;
}
static void
-gst_ladspa_deactivate (GstLADSPA *ladspa)
+gst_ladspa_deactivate (GstLADSPA * ladspa)
{
LADSPA_Descriptor *desc;
+
desc = ladspa->descriptor;
DEBUG_OBJ (ladspa, "deactivating");
/* deactivate the plugin (function might be null) */
if (ladspa->activated && (desc->deactivate != NULL))
- desc->deactivate(ladspa->handle);
+ desc->deactivate (ladspa->handle);
ladspa->activated = FALSE;
}
static void
-gst_ladspa_loop (GstElement *element)
+gst_ladspa_loop (GstElement * element)
{
- guint i, j, numsrcpads, numsinkpads;
- guint num_processed, num_to_process;
- gint largest_buffer;
- LADSPA_Data **data_in, **data_out;
- GstBuffer **buffers_in, **buffers_out;
-
- GstLADSPA *ladspa = (GstLADSPA *)element;
- GstLADSPAClass *oclass = (GstLADSPAClass*)(G_OBJECT_GET_CLASS (ladspa));
+ guint i, j, numsrcpads, numsinkpads;
+ guint num_processed, num_to_process;
+ gint largest_buffer;
+ LADSPA_Data **data_in, **data_out;
+ GstBuffer **buffers_in, **buffers_out;
+
+ GstLADSPA *ladspa = (GstLADSPA *) element;
+ GstLADSPAClass *oclass = (GstLADSPAClass *) (G_OBJECT_GET_CLASS (ladspa));
LADSPA_Descriptor *desc = ladspa->descriptor;
numsinkpads = oclass->numsinkpads;
numsrcpads = oclass->numsrcpads;
-
+
/* fixme: these mallocs need to die */
- data_in = g_new0(LADSPA_Data*, numsinkpads);
- data_out = g_new0(LADSPA_Data*, numsrcpads);
- buffers_in = g_new0(GstBuffer*, numsinkpads);
- buffers_out = g_new0(GstBuffer*, numsrcpads);
-
+ data_in = g_new0 (LADSPA_Data *, numsinkpads);
+ data_out = g_new0 (LADSPA_Data *, numsrcpads);
+ buffers_in = g_new0 (GstBuffer *, numsinkpads);
+ buffers_out = g_new0 (GstBuffer *, numsrcpads);
+
largest_buffer = -1;
/* first get all the necessary data from the input ports */
- for (i=0 ; i<numsinkpads ; i++){
+ for (i = 0; i < numsinkpads; i++) {
get_buffer:
buffers_in[i] = GST_BUFFER (gst_pad_pull (ladspa->sinkpads[i]));
-
+
if (GST_IS_EVENT (buffers_in[i])) {
/* push it out on all pads */
- gst_data_ref_by_count ((GstData*)buffers_in[i], numsrcpads);
- for (j=0; j<numsrcpads; j++)
- gst_pad_push (ladspa->srcpads[j], GST_DATA (buffers_in[i]));
+ gst_data_ref_by_count ((GstData *) buffers_in[i], numsrcpads);
+ for (j = 0; j < numsrcpads; j++)
+ gst_pad_push (ladspa->srcpads[j], GST_DATA (buffers_in[i]));
if (GST_EVENT_TYPE (buffers_in[i]) == GST_EVENT_EOS) {
- /* shut down */
- gst_element_set_eos (element);
- return;
+ /* shut down */
+ gst_element_set_eos (element);
+ return;
} else {
- goto get_buffer;
+ goto get_buffer;
}
}
if (largest_buffer < 0)
- largest_buffer = GST_BUFFER_SIZE (buffers_in[i])/sizeof(gfloat);
+ largest_buffer = GST_BUFFER_SIZE (buffers_in[i]) / sizeof (gfloat);
else
- largest_buffer = MIN (GST_BUFFER_SIZE (buffers_in[i])/sizeof(gfloat), largest_buffer);
- data_in[i] = (LADSPA_Data *) GST_BUFFER_DATA(buffers_in[i]);
- GST_BUFFER_TIMESTAMP(buffers_in[i]) = ladspa->timestamp;
+ largest_buffer =
+ MIN (GST_BUFFER_SIZE (buffers_in[i]) / sizeof (gfloat),
+ largest_buffer);
+ data_in[i] = (LADSPA_Data *) GST_BUFFER_DATA (buffers_in[i]);
+ GST_BUFFER_TIMESTAMP (buffers_in[i]) = ladspa->timestamp;
}
- i=0;
+ i = 0;
if (!ladspa->inplace_broken) {
- for (; i<numsrcpads && i<numsinkpads; i++) {
+ for (; i < numsrcpads && i < numsinkpads; i++) {
/* reuse input buffers */
buffers_out[i] = buffers_in[i];
data_out[i] = data_in[i];
}
}
- for (; i<numsrcpads; i++) {
- buffers_out[i] = gst_buffer_new_and_alloc (ladspa->buffer_frames * sizeof(gfloat));
+ for (; i < numsrcpads; i++) {
+ buffers_out[i] =
+ gst_buffer_new_and_alloc (ladspa->buffer_frames * sizeof (gfloat));
GST_BUFFER_TIMESTAMP (buffers_out[i]) = ladspa->timestamp;
- data_out[i] = (LADSPA_Data*)GST_BUFFER_DATA (buffers_out[i]);
+ data_out[i] = (LADSPA_Data *) GST_BUFFER_DATA (buffers_out[i]);
}
-
- GST_DPMAN_PREPROCESS(ladspa->dpman, largest_buffer, ladspa->timestamp);
+
+ GST_DPMAN_PREPROCESS (ladspa->dpman, largest_buffer, ladspa->timestamp);
num_processed = 0;
/* split up processing of the buffer into chunks so that dparams can
@@ -747,37 +774,39 @@ gst_ladspa_loop (GstElement *element)
* In many cases the buffer will be processed in one chunk anyway.
*/
while (GST_DPMAN_PROCESS (ladspa->dpman, num_processed)) {
- num_to_process = GST_DPMAN_FRAMES_TO_PROCESS(ladspa->dpman);
+ num_to_process = GST_DPMAN_FRAMES_TO_PROCESS (ladspa->dpman);
- for (i=0 ; i<numsinkpads ; i++)
- desc->connect_port (ladspa->handle, oclass->sinkpad_portnums[i], data_in[i]);
- for (i=0 ; i<numsrcpads ; i++)
- desc->connect_port (ladspa->handle, oclass->srcpad_portnums[i], data_out[i]);
+ for (i = 0; i < numsinkpads; i++)
+ desc->connect_port (ladspa->handle, oclass->sinkpad_portnums[i],
+ data_in[i]);
+ for (i = 0; i < numsrcpads; i++)
+ desc->connect_port (ladspa->handle, oclass->srcpad_portnums[i],
+ data_out[i]);
- desc->run(ladspa->handle, num_to_process);
+ desc->run (ladspa->handle, num_to_process);
- for (i=0 ; i<numsinkpads ; i++)
+ for (i = 0; i < numsinkpads; i++)
data_in[i] += num_to_process;
- for (i=0 ; i<numsrcpads ; i++)
+ for (i = 0; i < numsrcpads; i++)
data_out[i] += num_to_process;
-
+
num_processed += num_to_process;
}
-
- for (i=0 ; i<numsinkpads ; i++) {
+
+ for (i = 0; i < numsinkpads; i++) {
if (i >= numsrcpads || buffers_out[i] != buffers_in[i])
- gst_buffer_unref(buffers_in[i]);
+ gst_buffer_unref (buffers_in[i]);
data_in[i] = NULL;
buffers_in[i] = NULL;
- }
- for (i=0 ; i<numsrcpads ; i++) {
+ }
+ for (i = 0; i < numsrcpads; i++) {
DEBUG_OBJ (ladspa, "pushing buffer (%p) on src pad %d", buffers_out[i], i);
gst_pad_push (ladspa->srcpads[i], GST_DATA (buffers_out[i]));
-
+
data_out[i] = NULL;
buffers_out[i] = NULL;
}
-
+
ladspa->timestamp += ladspa->buffer_frames * GST_SECOND / ladspa->samplerate;
/* FIXME: move these mallocs and frees to the state-change handler */
@@ -789,7 +818,7 @@ gst_ladspa_loop (GstElement *element)
}
static void
-gst_ladspa_chain (GstPad *pad, GstData *_data)
+gst_ladspa_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buffer_in = GST_BUFFER (_data);
LADSPA_Descriptor *desc;
@@ -800,23 +829,23 @@ gst_ladspa_chain (GstPad *pad, GstData *_data)
GstLADSPA *ladspa;
GstLADSPAClass *oclass;
- ladspa = (GstLADSPA*)GST_OBJECT_PARENT (pad);
+ ladspa = (GstLADSPA *) GST_OBJECT_PARENT (pad);
oclass = (GstLADSPAClass *) (G_OBJECT_GET_CLASS (ladspa));
- data_in = (LADSPA_Data *) GST_BUFFER_DATA(buffer_in);
- num_samples = GST_BUFFER_SIZE(buffer_in) / sizeof(gfloat);
+ data_in = (LADSPA_Data *) GST_BUFFER_DATA (buffer_in);
+ num_samples = GST_BUFFER_SIZE (buffer_in) / sizeof (gfloat);
numsrcpads = oclass->numsrcpads;
desc = ladspa->descriptor;
/* we shouldn't get events here... */
g_return_if_fail (GST_IS_BUFFER (buffer_in));
-
+
/* FIXME: this function shouldn't need to malloc() anything */
if (numsrcpads > 0) {
- buffers_out = g_new(GstBuffer*, numsrcpads);
- data_out = g_new(LADSPA_Data*, numsrcpads);
+ buffers_out = g_new (GstBuffer *, numsrcpads);
+ data_out = g_new (LADSPA_Data *, numsrcpads);
}
- i=0;
+ i = 0;
if (!ladspa->inplace_broken && numsrcpads) {
/* reuse the first (chained) buffer */
buffers_out[i] = buffer_in;
@@ -824,54 +853,56 @@ gst_ladspa_chain (GstPad *pad, GstData *_data)
data_out[i] = data_in;
i++;
}
- for (; i<numsrcpads; i++) {
- buffers_out[i] = gst_buffer_new_and_alloc (GST_BUFFER_SIZE(buffer_in));
+ for (; i < numsrcpads; i++) {
+ buffers_out[i] = gst_buffer_new_and_alloc (GST_BUFFER_SIZE (buffer_in));
DEBUG ("new %d", GST_BUFFER_SIZE (buffer_in));
GST_BUFFER_TIMESTAMP (buffers_out[i]) = ladspa->timestamp;
- data_out[i] = (LADSPA_Data*)GST_BUFFER_DATA (buffers_out[i]);
+ data_out[i] = (LADSPA_Data *) GST_BUFFER_DATA (buffers_out[i]);
}
- GST_DPMAN_PREPROCESS(ladspa->dpman, num_samples, GST_BUFFER_TIMESTAMP(buffer_in));
+ GST_DPMAN_PREPROCESS (ladspa->dpman, num_samples,
+ GST_BUFFER_TIMESTAMP (buffer_in));
num_processed = 0;
/* split up processing of the buffer into chunks so that dparams can
* be updated when required.
* In many cases the buffer will be processed in one chunk anyway.
*/
- while(GST_DPMAN_PROCESS(ladspa->dpman, num_processed)) {
- num_to_process = GST_DPMAN_FRAMES_TO_PROCESS(ladspa->dpman);
+ while (GST_DPMAN_PROCESS (ladspa->dpman, num_processed)) {
+ num_to_process = GST_DPMAN_FRAMES_TO_PROCESS (ladspa->dpman);
+
+ desc->connect_port (ladspa->handle, oclass->sinkpad_portnums[0], data_in);
+ for (i = 0; i < numsrcpads; i++)
+ desc->connect_port (ladspa->handle, oclass->srcpad_portnums[i],
+ data_out[i]);
- desc->connect_port(ladspa->handle,oclass->sinkpad_portnums[0],data_in);
- for (i=0 ; i<numsrcpads ; i++)
- desc->connect_port(ladspa->handle,oclass->srcpad_portnums[i],data_out[i]);
+ desc->run (ladspa->handle, num_to_process);
- desc->run(ladspa->handle, num_to_process);
-
data_in += num_to_process;
- for (i=0 ; i<numsrcpads ; i++)
+ for (i = 0; i < numsrcpads; i++)
data_out[i] += num_to_process;
num_processed += num_to_process;
}
if (!numsrcpads || buffers_out[0] != buffer_in)
- gst_buffer_unref(buffer_in);
+ gst_buffer_unref (buffer_in);
if (numsrcpads) {
- for (i=0; i<numsrcpads; i++) {
+ for (i = 0; i < numsrcpads; i++) {
DEBUG_OBJ (ladspa, "pushing buffer (%p, length %u bytes) on src pad %d",
- buffers_out[i], GST_BUFFER_SIZE (buffers_out[i]), i);
+ buffers_out[i], GST_BUFFER_SIZE (buffers_out[i]), i);
gst_pad_push (ladspa->srcpads[i], GST_DATA (buffers_out[i]));
}
- g_free(buffers_out);
- g_free(data_out);
+ g_free (buffers_out);
+ g_free (data_out);
}
}
static GstData *
-gst_ladspa_get(GstPad *pad)
-{
+gst_ladspa_get (GstPad * pad)
+{
GstLADSPA *ladspa;
GstLADSPAClass *oclass;
GstBuffer *buf;
@@ -879,120 +910,111 @@ gst_ladspa_get(GstPad *pad)
LADSPA_Descriptor *desc;
guint num_to_process, num_processed;
- ladspa = (GstLADSPA *)gst_pad_get_parent (pad);
- oclass = (GstLADSPAClass*)(G_OBJECT_GET_CLASS(ladspa));
+ ladspa = (GstLADSPA *) gst_pad_get_parent (pad);
+ oclass = (GstLADSPAClass *) (G_OBJECT_GET_CLASS (ladspa));
desc = ladspa->descriptor;
/* 4096 is arbitrary */
buf = gst_buffer_new_and_alloc (4096);
- GST_BUFFER_TIMESTAMP(buf) = ladspa->timestamp;
- data = (LADSPA_Data *) GST_BUFFER_DATA(buf);
+ GST_BUFFER_TIMESTAMP (buf) = ladspa->timestamp;
+ data = (LADSPA_Data *) GST_BUFFER_DATA (buf);
- GST_DPMAN_PREPROCESS(ladspa->dpman, ladspa->buffer_frames, ladspa->timestamp);
+ GST_DPMAN_PREPROCESS (ladspa->dpman, ladspa->buffer_frames,
+ ladspa->timestamp);
num_processed = 0;
/* split up processing of the buffer into chunks so that dparams can
* be updated when required.
* In many cases the buffer will be processed in one chunk anyway.
*/
- while(GST_DPMAN_PROCESS(ladspa->dpman, num_processed)) {
- num_to_process = GST_DPMAN_FRAMES_TO_PROCESS(ladspa->dpman);
+ while (GST_DPMAN_PROCESS (ladspa->dpman, num_processed)) {
+ num_to_process = GST_DPMAN_FRAMES_TO_PROCESS (ladspa->dpman);
- /* update timestamp */
+ /* update timestamp */
ladspa->timestamp += num_to_process * GST_SECOND / ladspa->samplerate;
- desc->connect_port(ladspa->handle,oclass->srcpad_portnums[0],data);
+ desc->connect_port (ladspa->handle, oclass->srcpad_portnums[0], data);
+
+ desc->run (ladspa->handle, num_to_process);
- desc->run(ladspa->handle, num_to_process);
-
data += num_to_process;
num_processed = num_to_process;
}
-
+
return GST_DATA (buf);
}
static void
-ladspa_describe_plugin(const char *pcFullFilename,
- void *pvPluginHandle,
- LADSPA_Descriptor_Function pfDescriptorFunction)
+ladspa_describe_plugin (const char *pcFullFilename,
+ void *pvPluginHandle, LADSPA_Descriptor_Function pfDescriptorFunction)
{
const LADSPA_Descriptor *desc;
gint i;
GTypeInfo typeinfo = {
- sizeof(GstLADSPAClass),
- (GBaseInitFunc)gst_ladspa_base_init,
- NULL,
- (GClassInitFunc)gst_ladspa_class_init,
- NULL,
- NULL,
- sizeof(GstLADSPA),
- 0,
- (GInstanceInitFunc)gst_ladspa_init,
+ sizeof (GstLADSPAClass),
+ (GBaseInitFunc) gst_ladspa_base_init,
+ NULL,
+ (GClassInitFunc) gst_ladspa_class_init,
+ NULL,
+ NULL,
+ sizeof (GstLADSPA),
+ 0,
+ (GInstanceInitFunc) gst_ladspa_init,
};
GType type;
/* walk through all the plugins in this pluginlibrary */
i = 0;
- while ((desc = pfDescriptorFunction(i++))) {
+ while ((desc = pfDescriptorFunction (i++))) {
gchar *type_name;
/* construct the type */
- type_name = g_strdup_printf("ladspa-%s",desc->Label);
+ type_name = g_strdup_printf ("ladspa-%s", desc->Label);
g_strcanon (type_name, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-+", '-');
/* if it's already registered, drop it */
- if (g_type_from_name(type_name)) {
- g_free(type_name);
+ if (g_type_from_name (type_name)) {
+ g_free (type_name);
continue;
}
/* base-init temp alloc */
- g_hash_table_insert(ladspa_descriptors,
- GINT_TO_POINTER(0),
- (gpointer)desc);
+ g_hash_table_insert (ladspa_descriptors,
+ GINT_TO_POINTER (0), (gpointer) desc);
/* create the type now */
- type = g_type_register_static(GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
+ type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
if (!gst_element_register (ladspa_plugin, type_name, GST_RANK_NONE, type))
continue;
/* add this plugin to the hash */
- g_hash_table_insert(ladspa_descriptors,
- GINT_TO_POINTER(type),
- (gpointer)desc);
+ g_hash_table_insert (ladspa_descriptors,
+ GINT_TO_POINTER (type), (gpointer) desc);
}
g_hash_table_remove (ladspa_descriptors, GINT_TO_POINTER (0));
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (ladspa_debug, "ladspa",
- GST_DEBUG_FG_GREEN | GST_DEBUG_BG_BLACK | GST_DEBUG_BOLD,
- "LADSPA");
+ GST_DEBUG_FG_GREEN | GST_DEBUG_BG_BLACK | GST_DEBUG_BOLD, "LADSPA");
- ladspa_descriptors = g_hash_table_new(NULL,NULL);
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ ladspa_descriptors = g_hash_table_new (NULL, NULL);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
ladspa_plugin = plugin;
- LADSPAPluginSearch(ladspa_describe_plugin);
+ LADSPAPluginSearch (ladspa_describe_plugin);
/* initialize dparam support library */
- gst_control_init(NULL,NULL);
-
+ gst_control_init (NULL, NULL);
+
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "ladspa",
- "All LADSPA plugins",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "ladspa",
+ "All LADSPA plugins",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/ladspa/gstladspa.h b/ext/ladspa/gstladspa.h
index f3556f74..b40cd145 100644
--- a/ext/ladspa/gstladspa.h
+++ b/ext/ladspa/gstladspa.h
@@ -31,62 +31,60 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
-typedef struct _ladspa_control_info {
- gchar *name;
- gchar *param_name;
- gfloat lowerbound, upperbound;
- gfloat def;
- gboolean lower,upper,samplerate;
- gboolean toggled, logarithmic, integer, writable;
-} ladspa_control_info;
+ typedef struct _ladspa_control_info
+ {
+ gchar *name;
+ gchar *param_name;
+ gfloat lowerbound, upperbound;
+ gfloat def;
+ gboolean lower, upper, samplerate;
+ gboolean toggled, logarithmic, integer, writable;
+ } ladspa_control_info;
-typedef struct _GstLADSPA GstLADSPA;
-typedef struct _GstLADSPAClass GstLADSPAClass;
+ typedef struct _GstLADSPA GstLADSPA;
+ typedef struct _GstLADSPAClass GstLADSPAClass;
-struct _GstLADSPA {
- GstElement element;
+ struct _GstLADSPA
+ {
+ GstElement element;
- LADSPA_Descriptor *descriptor;
- LADSPA_Handle *handle;
+ LADSPA_Descriptor *descriptor;
+ LADSPA_Handle *handle;
- GstDParamManager *dpman;
+ GstDParamManager *dpman;
- gfloat *controls;
-
- GstPad **sinkpads,
- **srcpads;
+ gfloat *controls;
- gboolean activated;
+ GstPad **sinkpads, **srcpads;
- gint samplerate, buffer_frames;
- gint64 timestamp;
- gboolean inplace_broken;
-};
+ gboolean activated;
-struct _GstLADSPAClass {
- GstElementClass parent_class;
+ gint samplerate, buffer_frames;
+ gint64 timestamp;
+ gboolean inplace_broken;
+ };
- LADSPA_Descriptor *descriptor;
+ struct _GstLADSPAClass
+ {
+ GstElementClass parent_class;
- gint numports,
- numsinkpads,
- numsrcpads,
- numcontrols;
+ LADSPA_Descriptor *descriptor;
- gint *sinkpad_portnums,
- *srcpad_portnums,
- *control_portnums;
+ gint numports, numsinkpads, numsrcpads, numcontrols;
- ladspa_control_info *control_info;
-};
+ gint *sinkpad_portnums, *srcpad_portnums, *control_portnums;
+
+ ladspa_control_info *control_info;
+ };
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_LADSPA_H__ */
+#endif /* __GST_LADSPA_H__ */
diff --git a/ext/ladspa/load.c b/ext/ladspa/load.c
index bf52eb1f..98337f58 100644
--- a/ext/ladspa/load.c
+++ b/ext/ladspa/load.c
@@ -26,18 +26,19 @@
not an absolute path (i.e. does not begin with / character), this
routine will search the LADSPA_PATH for the file. */
static void *
-dlopenLADSPA(const char * pcFilename, int iFlag) {
+dlopenLADSPA (const char *pcFilename, int iFlag)
+{
- char * pcBuffer;
- const char * pcEnd;
- const char * pcLADSPAPath;
- const char * pcStart;
+ char *pcBuffer;
+ const char *pcEnd;
+ const char *pcLADSPAPath;
+ const char *pcStart;
int iEndsInSO;
int iNeedSlash;
size_t iFilenameLength;
- void * pvResult;
+ void *pvResult;
- iFilenameLength = strlen(pcFilename);
+ iFilenameLength = strlen (pcFilename);
pvResult = NULL;
if (pcFilename[0] == '/') {
@@ -45,12 +46,11 @@ dlopenLADSPA(const char * pcFilename, int iFlag) {
/* The filename is absolute. Assume the user knows what he/she is
doing and simply dlopen() it. */
- pvResult = dlopen(pcFilename, iFlag);
+ pvResult = dlopen (pcFilename, iFlag);
if (pvResult != NULL)
return pvResult;
- }
- else {
+ } else {
/* If the filename is not absolute then we wish to check along the
LADSPA_PATH path to see if we can find the file there. We do
@@ -63,8 +63,8 @@ dlopenLADSPA(const char * pcFilename, int iFlag) {
*/
pcLADSPAPath = g_strdup_printf ("%s:/usr/lib/ladspa:/usr/local/lib/ladspa",
- getenv("LADSPA_PATH"));
-
+ getenv ("LADSPA_PATH"));
+
if (pcLADSPAPath) {
pcStart = pcLADSPAPath;
@@ -72,24 +72,24 @@ dlopenLADSPA(const char * pcFilename, int iFlag) {
pcEnd = pcStart;
while (*pcEnd != ':' && *pcEnd != '\0')
pcEnd++;
-
- pcBuffer = malloc(iFilenameLength + 2 + (pcEnd - pcStart));
+
+ pcBuffer = malloc (iFilenameLength + 2 + (pcEnd - pcStart));
if (pcEnd > pcStart)
- strncpy(pcBuffer, pcStart, pcEnd - pcStart);
+ strncpy (pcBuffer, pcStart, pcEnd - pcStart);
iNeedSlash = 0;
if (pcEnd > pcStart)
if (*(pcEnd - 1) != '/') {
iNeedSlash = 1;
pcBuffer[pcEnd - pcStart] = '/';
}
- strcpy(pcBuffer + iNeedSlash + (pcEnd - pcStart), pcFilename);
-
- pvResult = dlopen(pcBuffer, iFlag);
-
+ strcpy (pcBuffer + iNeedSlash + (pcEnd - pcStart), pcFilename);
+
+ pvResult = dlopen (pcBuffer, iFlag);
+
free (pcBuffer);
if (pvResult != NULL)
return pvResult;
-
+
pcStart = pcEnd;
if (*pcStart == ':')
pcStart++;
@@ -101,13 +101,13 @@ dlopenLADSPA(const char * pcFilename, int iFlag) {
".so". In this case, add this suffix and recurse. */
iEndsInSO = 0;
if (iFilenameLength > 3)
- iEndsInSO = (strcmp(pcFilename + iFilenameLength - 3, ".so") == 0);
+ iEndsInSO = (strcmp (pcFilename + iFilenameLength - 3, ".so") == 0);
if (!iEndsInSO) {
- pcBuffer = malloc(iFilenameLength + 4);
- strcpy(pcBuffer, pcFilename);
- strcat(pcBuffer, ".so");
- pvResult = dlopenLADSPA(pcBuffer, iFlag);
- free(pcBuffer);
+ pcBuffer = malloc (iFilenameLength + 4);
+ strcpy (pcBuffer, pcFilename);
+ strcat (pcBuffer, ".so");
+ pvResult = dlopenLADSPA (pcBuffer, iFlag);
+ free (pcBuffer);
}
if (pvResult != NULL)
@@ -120,23 +120,22 @@ dlopenLADSPA(const char * pcFilename, int iFlag) {
will be kept when multiple calls are made to dlopen(). We've
covered the former case - now we can handle the latter by calling
dlopen() again here. */
- return dlopen(pcFilename, iFlag);
+ return dlopen (pcFilename, iFlag);
}
/*****************************************************************************/
void *
-loadLADSPAPluginLibrary(const char * pcPluginFilename) {
+loadLADSPAPluginLibrary (const char *pcPluginFilename)
+{
- void * pvPluginHandle;
+ void *pvPluginHandle;
- pvPluginHandle = dlopenLADSPA(pcPluginFilename, RTLD_NOW);
+ pvPluginHandle = dlopenLADSPA (pcPluginFilename, RTLD_NOW);
if (!pvPluginHandle) {
- fprintf(stderr,
- "Failed to load plugin \"%s\": %s\n",
- pcPluginFilename,
- dlerror());
- exit(1);
+ fprintf (stderr,
+ "Failed to load plugin \"%s\": %s\n", pcPluginFilename, dlerror ());
+ exit (1);
}
return pvPluginHandle;
@@ -144,49 +143,49 @@ loadLADSPAPluginLibrary(const char * pcPluginFilename) {
/*****************************************************************************/
-void
-unloadLADSPAPluginLibrary(void * pvLADSPAPluginLibrary) {
- dlclose(pvLADSPAPluginLibrary);
+void
+unloadLADSPAPluginLibrary (void *pvLADSPAPluginLibrary)
+{
+ dlclose (pvLADSPAPluginLibrary);
}
/*****************************************************************************/
const LADSPA_Descriptor *
-findLADSPAPluginDescriptor(void * pvLADSPAPluginLibrary,
- const char * pcPluginLibraryFilename,
- const char * pcPluginLabel) {
+findLADSPAPluginDescriptor (void *pvLADSPAPluginLibrary,
+ const char *pcPluginLibraryFilename, const char *pcPluginLabel)
+{
- const LADSPA_Descriptor * psDescriptor;
+ const LADSPA_Descriptor *psDescriptor;
LADSPA_Descriptor_Function pfDescriptorFunction;
unsigned long lPluginIndex;
- dlerror();
- pfDescriptorFunction
- = (LADSPA_Descriptor_Function)dlsym(pvLADSPAPluginLibrary,
- "ladspa_descriptor");
+ dlerror ();
+ pfDescriptorFunction
+ = (LADSPA_Descriptor_Function) dlsym (pvLADSPAPluginLibrary,
+ "ladspa_descriptor");
if (!pfDescriptorFunction) {
- const char * pcError = dlerror();
+ const char *pcError = dlerror ();
+
if (pcError) {
- fprintf(stderr,
- "Unable to find ladspa_descriptor() function in plugin "
- "library file \"%s\": %s.\n"
- "Are you sure this is a LADSPA plugin file?\n",
- pcPluginLibraryFilename,
- pcError);
- exit(1);
+ fprintf (stderr,
+ "Unable to find ladspa_descriptor() function in plugin "
+ "library file \"%s\": %s.\n"
+ "Are you sure this is a LADSPA plugin file?\n",
+ pcPluginLibraryFilename, pcError);
+ exit (1);
}
}
for (lPluginIndex = 0;; lPluginIndex++) {
- psDescriptor = pfDescriptorFunction(lPluginIndex);
+ psDescriptor = pfDescriptorFunction (lPluginIndex);
if (psDescriptor == NULL) {
- fprintf(stderr,
- "Unable to find label \"%s\" in plugin library file \"%s\".\n",
- pcPluginLabel,
- pcPluginLibraryFilename);
- exit(1);
+ fprintf (stderr,
+ "Unable to find label \"%s\" in plugin library file \"%s\".\n",
+ pcPluginLabel, pcPluginLibraryFilename);
+ exit (1);
}
- if (strcmp(psDescriptor->Label, pcPluginLabel) == 0)
+ if (strcmp (psDescriptor->Label, pcPluginLabel) == 0)
return psDescriptor;
}
}
diff --git a/ext/ladspa/search.c b/ext/ladspa/search.c
index 08b28d12..0f690275 100644
--- a/ext/ladspa/search.c
+++ b/ext/ladspa/search.c
@@ -27,19 +27,20 @@
/* Search just the one directory. */
static void
-LADSPADirectoryPluginSearch
-(const char * pcDirectory,
- LADSPAPluginSearchCallbackFunction fCallbackFunction) {
+ LADSPADirectoryPluginSearch
+ (const char *pcDirectory,
+ LADSPAPluginSearchCallbackFunction fCallbackFunction)
+{
- char * pcFilename;
- DIR * psDirectory;
+ char *pcFilename;
+ DIR *psDirectory;
LADSPA_Descriptor_Function fDescriptorFunction;
long lDirLength;
long iNeedSlash;
- struct dirent * psDirectoryEntry;
- void * pvPluginHandle;
+ struct dirent *psDirectoryEntry;
+ void *pvPluginHandle;
- lDirLength = strlen(pcDirectory);
+ lDirLength = strlen (pcDirectory);
if (!lDirLength)
return;
if (pcDirectory[lDirLength - 1] == '/')
@@ -47,66 +48,63 @@ LADSPADirectoryPluginSearch
else
iNeedSlash = 1;
- psDirectory = opendir(pcDirectory);
+ psDirectory = opendir (pcDirectory);
if (!psDirectory)
return;
while (1) {
- psDirectoryEntry = readdir(psDirectory);
+ psDirectoryEntry = readdir (psDirectory);
if (!psDirectoryEntry) {
- closedir(psDirectory);
+ closedir (psDirectory);
return;
}
- pcFilename = malloc(lDirLength
- + strlen(psDirectoryEntry->d_name)
- + 1 + iNeedSlash);
- strcpy(pcFilename, pcDirectory);
+ pcFilename = malloc (lDirLength + strlen (psDirectoryEntry->d_name)
+ + 1 + iNeedSlash);
+ strcpy (pcFilename, pcDirectory);
if (iNeedSlash)
- strcat(pcFilename, "/");
- strcat(pcFilename, psDirectoryEntry->d_name);
-
- pvPluginHandle = dlopen(pcFilename, RTLD_LAZY);
+ strcat (pcFilename, "/");
+ strcat (pcFilename, psDirectoryEntry->d_name);
+
+ pvPluginHandle = dlopen (pcFilename, RTLD_LAZY);
if (pvPluginHandle) {
/* This is a file and the file is a shared library! */
- dlerror();
+ dlerror ();
fDescriptorFunction
- = (LADSPA_Descriptor_Function)dlsym(pvPluginHandle,
- "ladspa_descriptor");
- if (dlerror() == NULL && fDescriptorFunction) {
+ = (LADSPA_Descriptor_Function) dlsym (pvPluginHandle,
+ "ladspa_descriptor");
+ if (dlerror () == NULL && fDescriptorFunction) {
/* We've successfully found a ladspa_descriptor function. Pass
- it to the callback function. */
- fCallbackFunction(pcFilename,
- pvPluginHandle,
- fDescriptorFunction);
- }
- else {
+ it to the callback function. */
+ fCallbackFunction (pcFilename, pvPluginHandle, fDescriptorFunction);
+ } else {
/* It was a library, but not a LADSPA one. Unload it. */
- dlclose(pcFilename);
+ dlclose (pcFilename);
}
}
- free(pcFilename);
+ free (pcFilename);
}
}
/*****************************************************************************/
-void
-LADSPAPluginSearch(LADSPAPluginSearchCallbackFunction fCallbackFunction) {
+void
+LADSPAPluginSearch (LADSPAPluginSearchCallbackFunction fCallbackFunction)
+{
- char * pcBuffer;
- const char * pcEnd;
- const char * pcLADSPAPath;
- const char * pcStart;
+ char *pcBuffer;
+ const char *pcEnd;
+ const char *pcLADSPAPath;
+ const char *pcStart;
/* thomasvs: I'm sorry, but I'm going to add glib stuff here.
- * I'm appending logical values for LADSPA_PATH here
- */
+ * I'm appending logical values for LADSPA_PATH here
+ */
pcLADSPAPath = g_strdup_printf ("%s:/usr/lib/ladspa:/usr/local/lib/ladspa",
- getenv("LADSPA_PATH"));
+ getenv ("LADSPA_PATH"));
if (!pcLADSPAPath) {
/* fprintf(stderr, */
@@ -114,20 +112,20 @@ LADSPAPluginSearch(LADSPAPluginSearchCallbackFunction fCallbackFunction) {
/* "environment variable set.\n"); */
return;
}
-
+
pcStart = pcLADSPAPath;
while (*pcStart != '\0') {
pcEnd = pcStart;
while (*pcEnd != ':' && *pcEnd != '\0')
pcEnd++;
-
- pcBuffer = malloc(1 + pcEnd - pcStart);
+
+ pcBuffer = malloc (1 + pcEnd - pcStart);
if (pcEnd > pcStart)
- strncpy(pcBuffer, pcStart, pcEnd - pcStart);
+ strncpy (pcBuffer, pcStart, pcEnd - pcStart);
pcBuffer[pcEnd - pcStart] = '\0';
-
- LADSPADirectoryPluginSearch(pcBuffer, fCallbackFunction);
- free(pcBuffer);
+
+ LADSPADirectoryPluginSearch (pcBuffer, fCallbackFunction);
+ free (pcBuffer);
pcStart = pcEnd;
if (*pcStart == ':')
diff --git a/ext/ladspa/utils.h b/ext/ladspa/utils.h
index d470eb0d..7a22b50b 100644
--- a/ext/ladspa/utils.h
+++ b/ext/ladspa/utils.h
@@ -20,20 +20,19 @@
unloadLADSPAPluginLibrary(). Errors are handled by writing a
message to stderr and calling exit(1). It is alright (although
inefficient) to call this more than once for the same file. */
-void * loadLADSPAPluginLibrary(const char * pcPluginFilename);
+void *loadLADSPAPluginLibrary (const char *pcPluginFilename);
/* This function unloads a LADSPA plugin library. */
-void unloadLADSPAPluginLibrary(void * pvLADSPAPluginLibrary);
+void unloadLADSPAPluginLibrary (void *pvLADSPAPluginLibrary);
/* This function locates a LADSPA plugin within a plugin library
loaded with loadLADSPAPluginLibrary(). Errors are handled by
writing a message to stderr and calling exit(1). Note that the
plugin library filename is only included to help provide
informative error messages. */
-const LADSPA_Descriptor *
-findLADSPAPluginDescriptor(void * pvLADSPAPluginLibrary,
- const char * pcPluginLibraryFilename,
- const char * pcPluginLabel);
+const LADSPA_Descriptor *findLADSPAPluginDescriptor (void
+ *pvLADSPAPluginLibrary, const char *pcPluginLibraryFilename,
+ const char *pcPluginLabel);
/*****************************************************************************/
@@ -44,16 +43,15 @@ findLADSPAPluginDescriptor(void * pvLADSPAPluginLibrary,
style) and a LADSPA_DescriptorFunction (from which
LADSPA_Descriptors can be acquired). */
typedef void LADSPAPluginSearchCallbackFunction
-(const char * pcFullFilename,
- void * pvPluginHandle,
- LADSPA_Descriptor_Function fDescriptorFunction);
+ (const char *pcFullFilename,
+ void *pvPluginHandle, LADSPA_Descriptor_Function fDescriptorFunction);
/* Search through the $(LADSPA_PATH) (or a default path) for any
LADSPA plugin libraries. Each plugin library is tested using
dlopen() and dlsym(,"ladspa_descriptor"). After loading each
library, the callback function is called to process it. This
function leaves items passed to the callback function open. */
-void LADSPAPluginSearch(LADSPAPluginSearchCallbackFunction fCallbackFunction);
+void LADSPAPluginSearch (LADSPAPluginSearchCallbackFunction fCallbackFunction);
/*****************************************************************************/
diff --git a/ext/libcaca/gstcacasink.c b/ext/libcaca/gstcacasink.c
index e45677d4..4cb64e4b 100644
--- a/ext/libcaca/gstcacasink.c
+++ b/ext/libcaca/gstcacasink.c
@@ -36,12 +36,14 @@ static GstElementDetails gst_cacasink_details = {
};
/* cacasink signals and args */
-enum {
+enum
+{
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_SCREEN_WIDTH,
ARG_SCREEN_HEIGHT,
@@ -49,33 +51,32 @@ enum {
ARG_ANTIALIASING
};
-static GstStaticPadTemplate sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_RGB_16 ";" GST_VIDEO_CAPS_RGB_15)
-);
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_RGBx ";"
+ GST_VIDEO_CAPS_RGB_16 ";" GST_VIDEO_CAPS_RGB_15)
+ );
static void gst_cacasink_base_init (gpointer g_class);
-static void gst_cacasink_class_init (GstCACASinkClass *klass);
-static void gst_cacasink_init (GstCACASink *cacasink);
-static void gst_cacasink_interface_init (GstImplementsInterfaceClass *klass);
-static gboolean gst_cacasink_interface_supported (GstImplementsInterface *iface,
- GType type);
-static void gst_cacasink_navigation_init (GstNavigationInterface *iface);
-static void gst_cacasink_navigation_send_event (GstNavigation *navigation,
- GstStructure *structure);
+static void gst_cacasink_class_init (GstCACASinkClass * klass);
+static void gst_cacasink_init (GstCACASink * cacasink);
+static void gst_cacasink_interface_init (GstImplementsInterfaceClass * klass);
+static gboolean gst_cacasink_interface_supported (GstImplementsInterface *
+ iface, GType type);
+static void gst_cacasink_navigation_init (GstNavigationInterface * iface);
+static void gst_cacasink_navigation_send_event (GstNavigation * navigation,
+ GstStructure * structure);
-static void gst_cacasink_chain (GstPad *pad, GstData *_data);
+static void gst_cacasink_chain (GstPad * pad, GstData * _data);
-static void gst_cacasink_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_cacasink_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
-static void gst_cacasink_dispose (GObject *object);
+static void gst_cacasink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_cacasink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_cacasink_dispose (GObject * object);
-static GstElementStateReturn gst_cacasink_change_state (GstElement *element);
+static GstElementStateReturn gst_cacasink_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
@@ -86,17 +87,17 @@ gst_cacasink_get_type (void)
if (!cacasink_type) {
static const GTypeInfo cacasink_info = {
- sizeof(GstCACASinkClass),
+ sizeof (GstCACASinkClass),
gst_cacasink_base_init,
NULL,
(GClassInitFunc) gst_cacasink_class_init,
NULL,
NULL,
- sizeof(GstCACASink),
+ sizeof (GstCACASink),
0,
(GInstanceInitFunc) gst_cacasink_init,
};
-
+
static const GInterfaceInfo iface_info = {
(GInterfaceInitFunc) gst_cacasink_interface_init,
NULL,
@@ -109,12 +110,14 @@ gst_cacasink_get_type (void)
NULL,
};
- cacasink_type = g_type_register_static (GST_TYPE_VIDEOSINK, "GstCACASink", &cacasink_info, 0);
-
+ cacasink_type =
+ g_type_register_static (GST_TYPE_VIDEOSINK, "GstCACASink",
+ &cacasink_info, 0);
+
g_type_add_interface_static (cacasink_type, GST_TYPE_IMPLEMENTS_INTERFACE,
- &iface_info);
+ &iface_info);
g_type_add_interface_static (cacasink_type, GST_TYPE_NAVIGATION,
- &navigation_info);
+ &navigation_info);
}
return cacasink_type;
}
@@ -124,18 +127,20 @@ static GType
gst_cacasink_dither_get_type (void)
{
static GType dither_type = 0;
+
if (!dither_type) {
GEnumValue *dithers;
gint n_dithers;
gint i;
gchar *caca_dithernames[] = {
- "NONE", "ORDERED2", "ORDERED4", "ORDERED8", "RANDOM", NULL};
+ "NONE", "ORDERED2", "ORDERED4", "ORDERED8", "RANDOM", NULL
+ };
n_dithers = 5;
-
- dithers = g_new0(GEnumValue, n_dithers + 1);
- for (i = 0; i < n_dithers; i++){
+ dithers = g_new0 (GEnumValue, n_dithers + 1);
+
+ for (i = 0; i < n_dithers; i++) {
dithers[i].value = i;
dithers[i].value_name = g_strdup (caca_dithernames[i]);
dithers[i].value_nick = g_strdup (caca_dithernames[i]);
@@ -155,35 +160,31 @@ gst_cacasink_base_init (gpointer g_class)
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
gst_element_class_set_details (element_class, &gst_cacasink_details);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&sink_template));
}
static void
-gst_cacasink_class_init (GstCACASinkClass *klass)
+gst_cacasink_class_init (GstCACASinkClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
GstVideoSinkClass *gstvs_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
- gstvs_class = (GstVideoSinkClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
+ gstvs_class = (GstVideoSinkClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SCREEN_WIDTH,
- g_param_spec_int("screen_width","screen_width","screen_width",
- G_MININT,G_MAXINT,0,G_PARAM_READABLE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SCREEN_HEIGHT,
- g_param_spec_int("screen_height","screen_height","screen_height",
- G_MININT,G_MAXINT,0,G_PARAM_READABLE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DITHER,
- g_param_spec_enum("dither","Dither Type","Set type of Dither",
- GST_TYPE_CACADITHER, 0, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SCREEN_WIDTH, g_param_spec_int ("screen_width", "screen_width", "screen_width", G_MININT, G_MAXINT, 0, G_PARAM_READABLE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SCREEN_HEIGHT, g_param_spec_int ("screen_height", "screen_height", "screen_height", G_MININT, G_MAXINT, 0, G_PARAM_READABLE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DITHER,
+ g_param_spec_enum ("dither", "Dither Type", "Set type of Dither",
+ GST_TYPE_CACADITHER, 0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ANTIALIASING,
- g_param_spec_boolean ("anti_aliasing", "Anti-Aliasing",
- "Enables Anti-Aliasing", TRUE, G_PARAM_READWRITE));
+ g_param_spec_boolean ("anti_aliasing", "Anti-Aliasing",
+ "Enables Anti-Aliasing", TRUE, G_PARAM_READWRITE));
gobject_class->set_property = gst_cacasink_set_property;
gobject_class->get_property = gst_cacasink_get_property;
@@ -193,13 +194,13 @@ gst_cacasink_class_init (GstCACASinkClass *klass)
}
static void
-gst_cacasink_interface_init (GstImplementsInterfaceClass *klass)
+gst_cacasink_interface_init (GstImplementsInterfaceClass * klass)
{
klass->supported = gst_cacasink_interface_supported;
}
static gboolean
-gst_cacasink_interface_supported (GstImplementsInterface *iface, GType type)
+gst_cacasink_interface_supported (GstImplementsInterface * iface, GType type)
{
g_assert (type == GST_TYPE_NAVIGATION);
@@ -207,31 +208,31 @@ gst_cacasink_interface_supported (GstImplementsInterface *iface, GType type)
}
static void
-gst_cacasink_navigation_init (GstNavigationInterface *iface)
+gst_cacasink_navigation_init (GstNavigationInterface * iface)
{
iface->send_event = gst_cacasink_navigation_send_event;
}
static void
-gst_cacasink_navigation_send_event (GstNavigation *navigation,
- GstStructure *structure)
+gst_cacasink_navigation_send_event (GstNavigation * navigation,
+ GstStructure * structure)
{
GstCACASink *cacasink = GST_CACASINK (navigation);
GstEvent *event;
event = gst_event_new (GST_EVENT_NAVIGATION);
- /*GST_EVENT_TIMESTAMP (event) = 0;*/
+ /*GST_EVENT_TIMESTAMP (event) = 0; */
event->event_data.structure.structure = structure;
/* FIXME
* Obviously, the pointer x,y coordinates need to be adjusted by the
* window size and relation to the bounding window. */
- gst_pad_send_event (gst_pad_get_peer (GST_VIDEOSINK_PAD(cacasink)),
- event);
+ gst_pad_send_event (gst_pad_get_peer (GST_VIDEOSINK_PAD (cacasink)), event);
}
+
static GstPadLinkReturn
-gst_cacasink_sinkconnect (GstPad *pad, const GstCaps *caps)
+gst_cacasink_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstCACASink *cacasink;
GstStructure *structure;
@@ -239,67 +240,62 @@ gst_cacasink_sinkconnect (GstPad *pad, const GstCaps *caps)
cacasink = GST_CACASINK (gst_pad_get_parent (pad));
/*if (!GST_CAPS_IS_FIXED (caps))
- return GST_PAD_LINK_DELAYED;*/
-
+ return GST_PAD_LINK_DELAYED; */
+
structure = gst_caps_get_structure (caps, 0);
- gst_structure_get_int (structure, "width",
- &(GST_VIDEOSINK_WIDTH (cacasink)));
+ gst_structure_get_int (structure, "width", &(GST_VIDEOSINK_WIDTH (cacasink)));
gst_structure_get_int (structure, "height",
- &(GST_VIDEOSINK_HEIGHT (cacasink)));
+ &(GST_VIDEOSINK_HEIGHT (cacasink)));
gst_structure_get_int (structure, "bpp", &cacasink->bpp);
gst_structure_get_int (structure, "red_mask", &cacasink->red_mask);
gst_structure_get_int (structure, "green_mask", &cacasink->green_mask);
gst_structure_get_int (structure, "blue_mask", &cacasink->blue_mask);
if (cacasink->bpp == 24) {
- cacasink->red_mask = GUINT32_FROM_BE (cacasink->red_mask) >> 8;
+ cacasink->red_mask = GUINT32_FROM_BE (cacasink->red_mask) >> 8;
cacasink->green_mask = GUINT32_FROM_BE (cacasink->green_mask) >> 8;
- cacasink->blue_mask = GUINT32_FROM_BE (cacasink->blue_mask) >> 8;
+ cacasink->blue_mask = GUINT32_FROM_BE (cacasink->blue_mask) >> 8;
}
else if (cacasink->bpp == 32) {
- cacasink->red_mask = GUINT32_FROM_BE (cacasink->red_mask);
+ cacasink->red_mask = GUINT32_FROM_BE (cacasink->red_mask);
cacasink->green_mask = GUINT32_FROM_BE (cacasink->green_mask);
- cacasink->blue_mask = GUINT32_FROM_BE (cacasink->blue_mask);
+ cacasink->blue_mask = GUINT32_FROM_BE (cacasink->blue_mask);
}
else if (cacasink->bpp == 16 || cacasink->bpp == 15) {
- cacasink->red_mask = GUINT16_FROM_BE (cacasink->red_mask);
+ cacasink->red_mask = GUINT16_FROM_BE (cacasink->red_mask);
cacasink->green_mask = GUINT16_FROM_BE (cacasink->green_mask);
- cacasink->blue_mask = GUINT16_FROM_BE (cacasink->blue_mask);
+ cacasink->blue_mask = GUINT16_FROM_BE (cacasink->blue_mask);
}
if (cacasink->bitmap) {
caca_free_bitmap (cacasink->bitmap);
}
- cacasink->bitmap = caca_create_bitmap (
- cacasink->bpp,
- GST_VIDEOSINK_WIDTH (cacasink),
- GST_VIDEOSINK_HEIGHT (cacasink),
- GST_VIDEOSINK_WIDTH (cacasink) * cacasink->bpp/8,
- cacasink->red_mask,
- cacasink->green_mask,
- cacasink->blue_mask,
- 0);
+ cacasink->bitmap = caca_create_bitmap (cacasink->bpp,
+ GST_VIDEOSINK_WIDTH (cacasink),
+ GST_VIDEOSINK_HEIGHT (cacasink),
+ GST_VIDEOSINK_WIDTH (cacasink) * cacasink->bpp / 8,
+ cacasink->red_mask, cacasink->green_mask, cacasink->blue_mask, 0);
if (!cacasink->bitmap) {
- return GST_PAD_LINK_DELAYED;
+ return GST_PAD_LINK_DELAYED;
}
-
+
return GST_PAD_LINK_OK;
}
static void
-gst_cacasink_init (GstCACASink *cacasink)
+gst_cacasink_init (GstCACASink * cacasink)
{
- GST_VIDEOSINK_PAD (cacasink) = gst_pad_new_from_template (
- gst_static_pad_template_get (&sink_template), "sink");
+ GST_VIDEOSINK_PAD (cacasink) =
+ gst_pad_new_from_template (gst_static_pad_template_get (&sink_template),
+ "sink");
gst_element_add_pad (GST_ELEMENT (cacasink), GST_VIDEOSINK_PAD (cacasink));
- gst_pad_set_chain_function (GST_VIDEOSINK_PAD (cacasink),
- gst_cacasink_chain);
- gst_pad_set_link_function (GST_VIDEOSINK_PAD (cacasink),
- gst_cacasink_sinkconnect);
+ gst_pad_set_chain_function (GST_VIDEOSINK_PAD (cacasink), gst_cacasink_chain);
+ gst_pad_set_link_function (GST_VIDEOSINK_PAD (cacasink),
+ gst_cacasink_sinkconnect);
cacasink->screen_width = GST_CACA_DEFAULT_SCREEN_WIDTH;
cacasink->screen_height = GST_CACA_DEFAULT_SCREEN_HEIGHT;
@@ -318,11 +314,11 @@ gst_cacasink_init (GstCACASink *cacasink)
cacasink->dither = 0;
caca_set_dithering (CACA_DITHERING_NONE);
- GST_FLAG_SET(cacasink, GST_ELEMENT_THREAD_SUGGESTED);
+ GST_FLAG_SET (cacasink, GST_ELEMENT_THREAD_SUGGESTED);
}
static void
-gst_cacasink_chain (GstPad *pad, GstData *_data)
+gst_cacasink_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstCACASink *cacasink;
@@ -336,14 +332,15 @@ gst_cacasink_chain (GstPad *pad, GstData *_data)
cacasink = GST_CACASINK (gst_pad_get_parent (pad));
if (cacasink->id && GST_CLOCK_TIME_IS_VALID (time)) {
- GST_DEBUG ("videosink: clock %s wait: %" G_GUINT64_FORMAT " %u",
- GST_OBJECT_NAME (GST_VIDEOSINK_CLOCK (cacasink)),
- time, GST_BUFFER_SIZE (buf));
+ GST_DEBUG ("videosink: clock %s wait: %" G_GUINT64_FORMAT " %u",
+ GST_OBJECT_NAME (GST_VIDEOSINK_CLOCK (cacasink)),
+ time, GST_BUFFER_SIZE (buf));
gst_element_wait (GST_ELEMENT (cacasink), GST_BUFFER_TIMESTAMP (buf));
}
caca_clear ();
- caca_draw_bitmap (0, 0, cacasink->screen_width-1, cacasink->screen_height-1, cacasink->bitmap, GST_BUFFER_DATA (buf));
+ caca_draw_bitmap (0, 0, cacasink->screen_width - 1,
+ cacasink->screen_height - 1, cacasink->bitmap, GST_BUFFER_DATA (buf));
caca_refresh ();
if (GST_VIDEOSINK_CLOCK (cacasink)) {
@@ -353,12 +350,12 @@ gst_cacasink_chain (GstPad *pad, GstData *_data)
cacasink->correction = 0;
}
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
static void
-gst_cacasink_dispose (GObject *object)
+gst_cacasink_dispose (GObject * object)
{
GstCACASink *cacasink = GST_CACASINK (object);
@@ -367,12 +364,13 @@ gst_cacasink_dispose (GObject *object)
}
caca_end ();
-
+
G_OBJECT_CLASS (parent_class)->dispose (object);
}
static void
-gst_cacasink_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_cacasink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstCACASink *cacasink;
@@ -382,17 +380,17 @@ gst_cacasink_set_property (GObject *object, guint prop_id, const GValue *value,
cacasink = GST_CACASINK (object);
switch (prop_id) {
- case ARG_DITHER: {
+ case ARG_DITHER:{
cacasink->dither = g_value_get_enum (value);
caca_set_dithering (cacasink->dither + CACA_DITHERING_NONE);
break;
}
- case ARG_ANTIALIASING: {
+ case ARG_ANTIALIASING:{
cacasink->antialiasing = g_value_get_boolean (value);
if (cacasink->antialiasing) {
caca_set_feature (CACA_ANTIALIASING_MAX);
}
-
+
else {
caca_set_feature (CACA_ANTIALIASING_MIN);
}
@@ -404,31 +402,32 @@ gst_cacasink_set_property (GObject *object, guint prop_id, const GValue *value,
}
static void
-gst_cacasink_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_cacasink_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstCACASink *cacasink;
/* it's not null if we got it, but it might not be ours */
- cacasink = GST_CACASINK(object);
+ cacasink = GST_CACASINK (object);
switch (prop_id) {
- case ARG_SCREEN_WIDTH: {
+ case ARG_SCREEN_WIDTH:{
g_value_set_int (value, cacasink->screen_width);
break;
}
- case ARG_SCREEN_HEIGHT: {
+ case ARG_SCREEN_HEIGHT:{
g_value_set_int (value, cacasink->screen_height);
break;
}
- case ARG_DITHER: {
+ case ARG_DITHER:{
g_value_set_enum (value, cacasink->dither);
break;
}
- case ARG_ANTIALIASING: {
+ case ARG_ANTIALIASING:{
g_value_set_boolean (value, cacasink->antialiasing);
break;
}
- default: {
+ default:{
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
@@ -436,9 +435,9 @@ gst_cacasink_get_property (GObject *object, guint prop_id, GValue *value, GParam
}
static gboolean
-gst_cacasink_open (GstCACASink *cacasink)
+gst_cacasink_open (GstCACASink * cacasink)
{
- g_return_val_if_fail (!GST_FLAG_IS_SET (cacasink ,GST_CACASINK_OPEN), FALSE);
+ g_return_val_if_fail (!GST_FLAG_IS_SET (cacasink, GST_CACASINK_OPEN), FALSE);
GST_FLAG_SET (cacasink, GST_CACASINK_OPEN);
@@ -446,15 +445,15 @@ gst_cacasink_open (GstCACASink *cacasink)
}
static void
-gst_cacasink_close (GstCACASink *cacasink)
+gst_cacasink_close (GstCACASink * cacasink)
{
- g_return_if_fail (GST_FLAG_IS_SET (cacasink ,GST_CACASINK_OPEN));
+ g_return_if_fail (GST_FLAG_IS_SET (cacasink, GST_CACASINK_OPEN));
GST_FLAG_UNSET (cacasink, GST_CACASINK_OPEN);
}
static GstElementStateReturn
-gst_cacasink_change_state (GstElement *element)
+gst_cacasink_change_state (GstElement * element)
{
g_return_val_if_fail (GST_IS_CACASINK (element), GST_STATE_FAILURE);
@@ -464,7 +463,7 @@ gst_cacasink_change_state (GstElement *element)
} else {
if (!GST_FLAG_IS_SET (element, GST_CACASINK_OPEN)) {
if (!gst_cacasink_open (GST_CACASINK (element)))
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
}
@@ -475,26 +474,21 @@ gst_cacasink_change_state (GstElement *element)
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
/* Loading the library containing GstVideoSink, our parent object */
if (!gst_library_load ("gstvideo"))
return FALSE;
-
- if (!gst_element_register (plugin, "cacasink", GST_RANK_NONE, GST_TYPE_CACASINK))
+
+ if (!gst_element_register (plugin, "cacasink", GST_RANK_NONE,
+ GST_TYPE_CACASINK))
return FALSE;
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "cacasink",
- "Colored ASCII Art video sink",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "cacasink",
+ "Colored ASCII Art video sink",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/libcaca/gstcacasink.h b/ext/libcaca/gstcacasink.h
index 3a6d4f23..2080c284 100644
--- a/ext/libcaca/gstcacasink.h
+++ b/ext/libcaca/gstcacasink.h
@@ -28,8 +28,9 @@
#include <caca.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_CACA_DEFAULT_SCREEN_WIDTH 80
#define GST_CACA_DEFAULT_SCREEN_HEIGHT 25
@@ -53,44 +54,47 @@ extern "C" {
#define GST_IS_CACASINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CACASINK))
-typedef enum {
- GST_CACASINK_OPEN = GST_ELEMENT_FLAG_LAST,
+ typedef enum
+ {
+ GST_CACASINK_OPEN = GST_ELEMENT_FLAG_LAST,
- GST_CACASINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
-} GstCACASinkFlags;
+ GST_CACASINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
+ } GstCACASinkFlags;
-typedef struct _GstCACASink GstCACASink;
-typedef struct _GstCACASinkClass GstCACASinkClass;
+ typedef struct _GstCACASink GstCACASink;
+ typedef struct _GstCACASinkClass GstCACASinkClass;
-struct _GstCACASink {
- GstVideoSink videosink;
+ struct _GstCACASink
+ {
+ GstVideoSink videosink;
- GstPad *sinkpad;
+ GstPad *sinkpad;
- gulong format;
- gint screen_width, screen_height;
- guint bpp;
- guint dither;
- gboolean antialiasing;
- guint red_mask, green_mask, blue_mask;
+ gulong format;
+ gint screen_width, screen_height;
+ guint bpp;
+ guint dither;
+ gboolean antialiasing;
+ guint red_mask, green_mask, blue_mask;
- gint64 correction;
- GstClockID id;
+ gint64 correction;
+ GstClockID id;
- struct caca_bitmap *bitmap;
-};
+ struct caca_bitmap *bitmap;
+ };
-struct _GstCACASinkClass {
- GstVideoSinkClass parent_class;
+ struct _GstCACASinkClass
+ {
+ GstVideoSinkClass parent_class;
- /* signals */
-};
+ /* signals */
+ };
-GType gst_cacasink_get_type(void);
+ GType gst_cacasink_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_CACASINKE_H__ */
+#endif /* __GST_CACASINKE_H__ */
diff --git a/ext/libpng/gstpng.c b/ext/libpng/gstpng.c
index 38a492f4..dab8d9d9 100644
--- a/ext/libpng/gstpng.c
+++ b/ext/libpng/gstpng.c
@@ -34,13 +34,7 @@ plugin_init (GstPlugin * plugin)
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "png",
- "PNG plugin library",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "png",
+ "PNG plugin library", plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/libpng/gstpngenc.c b/ext/libpng/gstpngenc.c
index 393e642c..78055cce 100644
--- a/ext/libpng/gstpngenc.c
+++ b/ext/libpng/gstpngenc.c
@@ -47,29 +47,32 @@ enum
ARG_0
};
-static void gst_pngenc_base_init (gpointer g_class);
-static void gst_pngenc_class_init (GstPngEncClass *klass);
-static void gst_pngenc_init (GstPngEnc *pngenc);
+static void gst_pngenc_base_init (gpointer g_class);
+static void gst_pngenc_class_init (GstPngEncClass * klass);
+static void gst_pngenc_init (GstPngEnc * pngenc);
-static void gst_pngenc_chain (GstPad *pad, GstData *_data);
+static void gst_pngenc_chain (GstPad * pad, GstData * _data);
GstPadTemplate *pngenc_src_template, *pngenc_sink_template;
static GstElementClass *parent_class = NULL;
-static void user_error_fn (png_structp png_ptr, png_const_charp error_msg)
+static void
+user_error_fn (png_structp png_ptr, png_const_charp error_msg)
{
- g_warning("%s", error_msg);
+ g_warning ("%s", error_msg);
}
-static void user_warning_fn (png_structp png_ptr, png_const_charp warning_msg)
+static void
+user_warning_fn (png_structp png_ptr, png_const_charp warning_msg)
{
- g_warning("%s", warning_msg);
+ g_warning ("%s", warning_msg);
}
-GType gst_pngenc_get_type (void)
+GType
+gst_pngenc_get_type (void)
{
static GType pngenc_type = 0;
@@ -87,25 +90,24 @@ GType gst_pngenc_get_type (void)
};
pngenc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstPngEnc",
- &pngenc_info, 0);
+ &pngenc_info, 0);
}
return pngenc_type;
}
-static GstCaps*
+static GstCaps *
png_caps_factory (void)
{
return gst_caps_new_simple ("video/x-png",
- "width", GST_TYPE_INT_RANGE, 16, 4096,
- "height", GST_TYPE_INT_RANGE, 16, 4096,
- "framerate", GST_TYPE_DOUBLE_RANGE, 0.0, G_MAXDOUBLE,
- NULL);
+ "width", GST_TYPE_INT_RANGE, 16, 4096,
+ "height", GST_TYPE_INT_RANGE, 16, 4096,
+ "framerate", GST_TYPE_DOUBLE_RANGE, 0.0, G_MAXDOUBLE, NULL);
}
-static GstCaps*
+static GstCaps *
raw_caps_factory (void)
-{
+{
return gst_caps_from_string (GST_VIDEO_CAPS_RGB);
}
@@ -114,25 +116,23 @@ gst_pngenc_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
GstCaps *raw_caps, *png_caps;
-
+
raw_caps = raw_caps_factory ();
png_caps = png_caps_factory ();
pngenc_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK,
- GST_PAD_ALWAYS,
- raw_caps);
-
+ GST_PAD_ALWAYS, raw_caps);
+
pngenc_src_template = gst_pad_template_new ("src", GST_PAD_SRC,
- GST_PAD_ALWAYS,
- png_caps);
-
+ GST_PAD_ALWAYS, png_caps);
+
gst_element_class_add_pad_template (element_class, pngenc_sink_template);
gst_element_class_add_pad_template (element_class, pngenc_src_template);
gst_element_class_set_details (element_class, &gst_pngenc_details);
}
static void
-gst_pngenc_class_init (GstPngEncClass *klass)
+gst_pngenc_class_init (GstPngEncClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
@@ -145,7 +145,7 @@ gst_pngenc_class_init (GstPngEncClass *klass)
static GstPadLinkReturn
-gst_pngenc_sinklink (GstPad *pad, const GstCaps *caps)
+gst_pngenc_sinklink (GstPad * pad, const GstCaps * caps)
{
GstPngEnc *pngenc;
gdouble fps;
@@ -161,8 +161,8 @@ gst_pngenc_sinklink (GstPad *pad, const GstCaps *caps)
caps = gst_caps_new_simple ("video/x-png",
"framerate", G_TYPE_DOUBLE, fps,
- "width", G_TYPE_INT, pngenc->width,
- "height", G_TYPE_INT, pngenc->height, NULL);
+ "width", G_TYPE_INT, pngenc->width,
+ "height", G_TYPE_INT, pngenc->height, NULL);
return gst_pad_try_set_caps (pngenc->srcpad, caps);
}
@@ -184,9 +184,10 @@ gst_pngenc_init (GstPngEnc * pngenc)
}
-void user_flush_data (png_structp png_ptr)
+void
+user_flush_data (png_structp png_ptr)
{
-GstPngEnc *pngenc;
+ GstPngEnc *pngenc;
pngenc = (GstPngEnc *) png_get_io_ptr (png_ptr);
@@ -194,31 +195,31 @@ GstPngEnc *pngenc;
}
-void user_write_data (png_structp png_ptr, png_bytep data, png_uint_32 length)
+void
+user_write_data (png_structp png_ptr, png_bytep data, png_uint_32 length)
{
GstBuffer *buffer;
GstPngEnc *pngenc;
pngenc = (GstPngEnc *) png_get_io_ptr (png_ptr);
- buffer = gst_buffer_new();
+ buffer = gst_buffer_new ();
GST_BUFFER_DATA (buffer) = g_memdup (data, length);
GST_BUFFER_SIZE (buffer) = length;
- if (pngenc->buffer_out)
- {
+ if (pngenc->buffer_out) {
GstBuffer *merge;
+
merge = gst_buffer_merge (pngenc->buffer_out, buffer);
gst_buffer_unref (buffer);
gst_buffer_unref (pngenc->buffer_out);
pngenc->buffer_out = merge;
- }
- else
+ } else
pngenc->buffer_out = buffer;
}
static void
-gst_pngenc_chain (GstPad *pad, GstData *_data)
+gst_pngenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstPngEnc *pngenc;
@@ -229,56 +230,50 @@ gst_pngenc_chain (GstPad *pad, GstData *_data)
pngenc = GST_PNGENC (gst_pad_get_parent (pad));
pngenc->buffer_out = NULL;
- if (!GST_PAD_IS_USABLE (pngenc->srcpad))
- {
+ if (!GST_PAD_IS_USABLE (pngenc->srcpad)) {
gst_buffer_unref (buf);
return;
}
/* initialize png struct stuff */
pngenc->png_struct_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING,
- (png_voidp) NULL, user_error_fn, user_warning_fn);
+ (png_voidp) NULL, user_error_fn, user_warning_fn);
/* FIXME: better error handling */
if (pngenc->png_struct_ptr == NULL)
- g_warning ("Failed to initialize png structure");
+ g_warning ("Failed to initialize png structure");
pngenc->png_info_ptr = png_create_info_struct (pngenc->png_struct_ptr);
- if (!pngenc->png_info_ptr)
- {
+ if (!pngenc->png_info_ptr) {
png_destroy_read_struct (&(pngenc->png_struct_ptr), (png_infopp) NULL,
- (png_infopp) NULL);
+ (png_infopp) NULL);
}
/* non-0 return is from a longjmp inside of libpng */
- if (setjmp (pngenc->png_struct_ptr->jmpbuf) != 0)
- {
+ if (setjmp (pngenc->png_struct_ptr->jmpbuf) != 0) {
GST_DEBUG ("returning from longjmp");
png_destroy_write_struct (&pngenc->png_struct_ptr, &pngenc->png_info_ptr);
return;
}
png_set_filter (pngenc->png_struct_ptr, 0,
- PNG_FILTER_NONE | PNG_FILTER_VALUE_NONE);
+ PNG_FILTER_NONE | PNG_FILTER_VALUE_NONE);
png_set_compression_level (pngenc->png_struct_ptr, 9);
- png_set_IHDR(
- pngenc->png_struct_ptr,
- pngenc->png_info_ptr,
- pngenc->width,
- pngenc->height,
- pngenc->bpp / 3,
- PNG_COLOR_TYPE_RGB,
- PNG_INTERLACE_NONE,
- PNG_COMPRESSION_TYPE_DEFAULT,
- PNG_FILTER_TYPE_DEFAULT
- );
+ png_set_IHDR (pngenc->png_struct_ptr,
+ pngenc->png_info_ptr,
+ pngenc->width,
+ pngenc->height,
+ pngenc->bpp / 3,
+ PNG_COLOR_TYPE_RGB,
+ PNG_INTERLACE_NONE,
+ PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
png_set_write_fn (pngenc->png_struct_ptr, pngenc,
- (png_rw_ptr) user_write_data, user_flush_data);
+ (png_rw_ptr) user_write_data, user_flush_data);
for (row_index = 0; row_index < pngenc->height; row_index++)
row_pointers[row_index] = GST_BUFFER_DATA (buf) +
- (pngenc->width * row_index * pngenc->bpp / 8);
+ (pngenc->width * row_index * pngenc->bpp / 8);
png_write_info (pngenc->png_struct_ptr, pngenc->png_info_ptr);
png_write_image (pngenc->png_struct_ptr, row_pointers);
diff --git a/ext/libpng/gstpngenc.h b/ext/libpng/gstpngenc.h
index 59bc4ab4..1c521260 100644
--- a/ext/libpng/gstpngenc.h
+++ b/ext/libpng/gstpngenc.h
@@ -25,8 +25,9 @@
#include <png.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_PNGENC (gst_pngenc_get_type())
@@ -35,37 +36,37 @@ extern "C" {
#define GST_IS_PNGENC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PNGENC))
#define GST_IS_PNGENC_CLASS(obj)(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PNGENC))
-typedef struct _GstPngEnc GstPngEnc;
-typedef struct _GstPngEncClass GstPngEncClass;
+ typedef struct _GstPngEnc GstPngEnc;
+ typedef struct _GstPngEncClass GstPngEncClass;
-extern GstPadTemplate *pngenc_src_template, *pngenc_sink_template;
+ extern GstPadTemplate *pngenc_src_template, *pngenc_sink_template;
-struct _GstPngEnc
-{
- GstElement element;
+ struct _GstPngEnc
+ {
+ GstElement element;
- GstPad *sinkpad, *srcpad;
- GstBuffer *buffer_out;
+ GstPad *sinkpad, *srcpad;
+ GstBuffer *buffer_out;
- png_structp png_struct_ptr;
- png_infop png_info_ptr;
+ png_structp png_struct_ptr;
+ png_infop png_info_ptr;
- gint width;
- gint height;
- gint bpp;
-};
+ gint width;
+ gint height;
+ gint bpp;
+ };
-struct _GstPngEncClass
-{
- GstElementClass parent_class;
-};
+ struct _GstPngEncClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_pngenc_get_type(void);
+ GType gst_pngenc_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_PNGENC_H__ */
+#endif /* __GST_PNGENC_H__ */
diff --git a/ext/mikmod/drv_gst.c b/ext/mikmod/drv_gst.c
index 83d475ba..2d7b8e6e 100644
--- a/ext/mikmod/drv_gst.c
+++ b/ext/mikmod/drv_gst.c
@@ -10,94 +10,96 @@ static int buffer_size;
static SBYTE *audiobuffer = NULL;
extern int need_sync;
-static BOOL mikmod_IsThere( void )
+static BOOL
+mikmod_IsThere (void)
{
return 1;
}
-static BOOL mikmod_Init( void )
+static BOOL
+mikmod_Init (void)
{
buffer_size = 32768;
- if (!( audiobuffer = ( SBYTE * ) g_malloc( buffer_size ) ))
+ if (!(audiobuffer = (SBYTE *) g_malloc (buffer_size)))
return 1;
-
- return VC_Init();
+
+ return VC_Init ();
}
-static void mikmod_Exit( void )
+static void
+mikmod_Exit (void)
{
- VC_Exit();
+ VC_Exit ();
- if ( audiobuffer )
- {
- g_free(audiobuffer);
+ if (audiobuffer) {
+ g_free (audiobuffer);
audiobuffer = NULL;
- }
+ }
}
-static void mikmod_Update( void )
+static void
+mikmod_Update (void)
{
gint length;
GstBuffer *outdata;
- length = VC_WriteBytes((SBYTE *) audiobuffer, buffer_size);
-
- outdata = gst_buffer_new();
+ length = VC_WriteBytes ((SBYTE *) audiobuffer, buffer_size);
+
+ outdata = gst_buffer_new ();
- GST_BUFFER_DATA( outdata ) = g_memdup( audiobuffer, length );
- GST_BUFFER_SIZE( outdata ) = length;
+ GST_BUFFER_DATA (outdata) = g_memdup (audiobuffer, length);
+ GST_BUFFER_SIZE (outdata) = length;
- GST_BUFFER_TIMESTAMP( outdata ) = timestamp;
+ GST_BUFFER_TIMESTAMP (outdata) = timestamp;
- if ( need_sync == 1 )
- {
+ if (need_sync == 1) {
/* FIXME, send a flush event or something */
- need_sync = 0 ;
+ need_sync = 0;
}
- gst_pad_push( srcpad, GST_DATA (outdata ));
-
+ gst_pad_push (srcpad, GST_DATA (outdata));
+
}
-static BOOL mikmod_Reset( void )
+static BOOL
+mikmod_Reset (void)
{
- VC_Exit();
- return VC_Init();
+ VC_Exit ();
+ return VC_Init ();
}
-MDRIVER drv_gst =
-{
- NULL,
- "mikmod",
- "mikmod output driver v1.0",
- 0, 255,
+MDRIVER drv_gst = {
+ NULL,
+ "mikmod",
+ "mikmod output driver v1.0",
+ 0, 255,
#if (LIBMIKMOD_VERSION > 0x030106)
- "mikmod",
- NULL,
+ "mikmod",
+ NULL,
#endif
- mikmod_IsThere,
- VC_SampleLoad,
- VC_SampleUnload,
- VC_SampleSpace,
- VC_SampleLength,
- mikmod_Init,
- mikmod_Exit,
- mikmod_Reset,
- VC_SetNumVoices,
- VC_PlayStart,
- VC_PlayStop,
- mikmod_Update,
- NULL,
- VC_VoiceSetVolume,
- VC_VoiceGetVolume,
- VC_VoiceSetFrequency,
- VC_VoiceGetFrequency,
- VC_VoiceSetPanning,
- VC_VoiceGetPanning,
- VC_VoicePlay,
- VC_VoiceStop,
- VC_VoiceStopped,
- VC_VoiceGetPosition,
- VC_VoiceRealVolume
+ mikmod_IsThere,
+ VC_SampleLoad,
+ VC_SampleUnload,
+ VC_SampleSpace,
+ VC_SampleLength,
+ mikmod_Init,
+ mikmod_Exit,
+ mikmod_Reset,
+ VC_SetNumVoices,
+ VC_PlayStart,
+ VC_PlayStop,
+ mikmod_Update,
+ NULL,
+ VC_VoiceSetVolume,
+ VC_VoiceGetVolume,
+ VC_VoiceSetFrequency,
+ VC_VoiceGetFrequency,
+ VC_VoiceSetPanning,
+ VC_VoiceGetPanning,
+ VC_VoicePlay,
+ VC_VoiceStop,
+ VC_VoiceStopped,
+ VC_VoiceGetPosition,
+ VC_VoiceRealVolume
};
diff --git a/ext/mikmod/gstmikmod.c b/ext/mikmod/gstmikmod.c
index f8a6a4e8..89e057c1 100644
--- a/ext/mikmod/gstmikmod.c
+++ b/ext/mikmod/gstmikmod.c
@@ -34,12 +34,14 @@ GstElementDetails mikmod_details = {
/* Filter signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_SONGNAME,
ARG_MODTYPE,
@@ -62,68 +64,67 @@ GstPad *srcpad;
GstClockTime timestamp;
int need_sync;
-static GstStaticPadTemplate mikmod_src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+static GstStaticPadTemplate mikmod_src_factory = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- "audio/x-raw-int, "
+ GST_STATIC_CAPS ("audio/x-raw-int, "
"endianness = (int) BYTE_ORDER, "
"signed = (boolean) TRUE, "
"width = (int) 16, "
"depth = (int) 16, "
"rate = (int) { 8000, 11025, 22050, 44100 }, "
"channels = (int) [ 1, 2 ]; "
- "audio/x-raw-int, "
+ "audio/x-raw-int, "
"signed = (boolean) FALSE, "
"width = (int) 8, "
"depth = (int) 8, "
"rate = (int) { 8000, 11025, 22050, 44100 }, "
- "channels = (int) [ 1, 2 ]"
- )
-);
+ "channels = (int) [ 1, 2 ]")
+ );
static GstStaticPadTemplate mikmod_sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("audio/x-mod")
-);
+ );
-static void gst_mikmod_base_init (gpointer g_class);
-static void gst_mikmod_class_init (GstMikModClass *klass);
-static void gst_mikmod_init (GstMikMod *filter);
-static void gst_mikmod_set_property (GObject *object, guint id, const GValue *value, GParamSpec *pspec );
-static void gst_mikmod_get_property (GObject *object, guint id, GValue *value, GParamSpec *pspec );
-static GstPadLinkReturn gst_mikmod_srclink (GstPad *pad, const GstCaps *caps);
-static GstCaps * gst_mikmod_srcfixate (GstPad *pad, const GstCaps *caps);
-static void gst_mikmod_loop (GstElement *element);
-static gboolean gst_mikmod_setup (GstMikMod *mikmod);
-static GstElementStateReturn gst_mikmod_change_state (GstElement *element);
+static void gst_mikmod_base_init (gpointer g_class);
+static void gst_mikmod_class_init (GstMikModClass * klass);
+static void gst_mikmod_init (GstMikMod * filter);
+static void gst_mikmod_set_property (GObject * object, guint id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_mikmod_get_property (GObject * object, guint id, GValue * value,
+ GParamSpec * pspec);
+static GstPadLinkReturn gst_mikmod_srclink (GstPad * pad, const GstCaps * caps);
+static GstCaps *gst_mikmod_srcfixate (GstPad * pad, const GstCaps * caps);
+static void gst_mikmod_loop (GstElement * element);
+static gboolean gst_mikmod_setup (GstMikMod * mikmod);
+static GstElementStateReturn gst_mikmod_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
GType
-gst_mikmod_get_type(void) {
+gst_mikmod_get_type (void)
+{
static GType mikmod_type = 0;
if (!mikmod_type) {
static const GTypeInfo mikmod_info = {
- sizeof(GstMikModClass),
+ sizeof (GstMikModClass),
gst_mikmod_base_init,
NULL,
- (GClassInitFunc)gst_mikmod_class_init,
+ (GClassInitFunc) gst_mikmod_class_init,
NULL,
NULL,
- sizeof(GstMikMod),
+ sizeof (GstMikMod),
0,
- (GInstanceInitFunc)gst_mikmod_init,
+ (GInstanceInitFunc) gst_mikmod_init,
};
- mikmod_type = g_type_register_static(GST_TYPE_ELEMENT, "GstMikmod", &mikmod_info, 0);
+ mikmod_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstMikmod", &mikmod_info, 0);
}
return mikmod_type;
}
@@ -141,58 +142,58 @@ gst_mikmod_base_init (gpointer g_class)
}
static void
-gst_mikmod_class_init (GstMikModClass *klass)
+gst_mikmod_class_init (GstMikModClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- 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_SONGNAME,
- g_param_spec_string("songname","songname","songname",
- NULL, G_PARAM_READABLE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MODTYPE,
- g_param_spec_string("modtype", "modtype", "modtype",
- NULL, G_PARAM_READABLE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MUSICVOLUME,
- g_param_spec_int("musicvolume", "musivolume", "musicvolume",
- 0, 128, 128, G_PARAM_READWRITE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PANSEP,
- g_param_spec_int("pansep", "pansep", "pansep",
- 0, 128, 128, G_PARAM_READWRITE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_REVERB,
- g_param_spec_int("reverb", "reverb", "reverb",
- 0, 15, 0, G_PARAM_READWRITE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SNDFXVOLUME,
- g_param_spec_int("sndfxvolume", "sndfxvolume", "sndfxvolume",
- 0, 128, 128, G_PARAM_READWRITE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VOLUME,
- g_param_spec_int("volume", "volume", "volume",
- 0, 128, 96, G_PARAM_READWRITE ));
-
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_INTERP,
- g_param_spec_boolean("interp", "interp", "interp",
- FALSE, G_PARAM_READWRITE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_REVERSE,
- g_param_spec_boolean("reverse", "reverse", "reverse",
- FALSE, G_PARAM_READWRITE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SURROUND,
- g_param_spec_boolean("surround", "surround", "surround",
- TRUE, G_PARAM_READWRITE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_HQMIXER,
- g_param_spec_boolean("hqmixer", "hqmixer", "hqmixer",
- FALSE, G_PARAM_READWRITE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SOFT_MUSIC,
- g_param_spec_boolean("soft_music", "soft_music", "soft_music",
- TRUE, G_PARAM_READWRITE ));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SOFT_SNDFX,
- g_param_spec_boolean("soft_sndfx", "soft_sndfx", "soft_sndfx",
- TRUE, G_PARAM_READWRITE ));
-
-
+ 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_SONGNAME,
+ g_param_spec_string ("songname", "songname", "songname",
+ NULL, G_PARAM_READABLE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MODTYPE,
+ g_param_spec_string ("modtype", "modtype", "modtype",
+ NULL, G_PARAM_READABLE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MUSICVOLUME,
+ g_param_spec_int ("musicvolume", "musivolume", "musicvolume",
+ 0, 128, 128, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PANSEP,
+ g_param_spec_int ("pansep", "pansep", "pansep",
+ 0, 128, 128, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_REVERB,
+ g_param_spec_int ("reverb", "reverb", "reverb",
+ 0, 15, 0, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SNDFXVOLUME,
+ g_param_spec_int ("sndfxvolume", "sndfxvolume", "sndfxvolume",
+ 0, 128, 128, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VOLUME,
+ g_param_spec_int ("volume", "volume", "volume",
+ 0, 128, 96, G_PARAM_READWRITE));
+
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_INTERP,
+ g_param_spec_boolean ("interp", "interp", "interp",
+ FALSE, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_REVERSE,
+ g_param_spec_boolean ("reverse", "reverse", "reverse",
+ FALSE, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SURROUND,
+ g_param_spec_boolean ("surround", "surround", "surround",
+ TRUE, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HQMIXER,
+ g_param_spec_boolean ("hqmixer", "hqmixer", "hqmixer",
+ FALSE, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SOFT_MUSIC,
+ g_param_spec_boolean ("soft_music", "soft_music", "soft_music",
+ TRUE, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SOFT_SNDFX,
+ g_param_spec_boolean ("soft_sndfx", "soft_sndfx", "soft_sndfx",
+ TRUE, G_PARAM_READWRITE));
+
+
gobject_class->set_property = gst_mikmod_set_property;
gobject_class->get_property = gst_mikmod_get_property;
@@ -201,52 +202,54 @@ gst_mikmod_class_init (GstMikModClass *klass)
static void
-gst_mikmod_init (GstMikMod *filter)
-{
- filter->sinkpad = gst_pad_new_from_template(
- gst_static_pad_template_get (&mikmod_sink_factory),"sink");
- filter->srcpad = gst_pad_new_from_template(
- gst_static_pad_template_get (&mikmod_src_factory),"src");
-
- gst_element_add_pad(GST_ELEMENT(filter),filter->sinkpad);
- gst_element_add_pad(GST_ELEMENT(filter),filter->srcpad);
+gst_mikmod_init (GstMikMod * filter)
+{
+ filter->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&mikmod_sink_factory), "sink");
+ filter->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&mikmod_src_factory), "src");
+
+ gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
+ gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
gst_pad_set_link_function (filter->srcpad, gst_mikmod_srclink);
gst_pad_set_fixate_function (filter->srcpad, gst_mikmod_srcfixate);
-
+
gst_element_set_loop_function (GST_ELEMENT (filter), gst_mikmod_loop);
-
+
filter->Buffer = NULL;
- filter->stereo = TRUE;
- filter->surround = TRUE;
- filter->_16bit = TRUE;
- filter->soft_music = TRUE;
- filter->soft_sndfx = TRUE;
- filter->mixfreq = 44100;
- filter->reverb = 0;
- filter->pansep = 128;
+ filter->stereo = TRUE;
+ filter->surround = TRUE;
+ filter->_16bit = TRUE;
+ filter->soft_music = TRUE;
+ filter->soft_sndfx = TRUE;
+ filter->mixfreq = 44100;
+ filter->reverb = 0;
+ filter->pansep = 128;
filter->musicvolume = 128;
- filter->volume = 96;
+ filter->volume = 96;
filter->sndfxvolume = 128;
- filter->songname = NULL;
- filter->modtype = NULL;
-
+ filter->songname = NULL;
+ filter->modtype = NULL;
+
filter->initialized = FALSE;
}
static GstCaps *
-gst_mikmod_srcfixate (GstPad *pad, const GstCaps *caps)
+gst_mikmod_srcfixate (GstPad * pad, const GstCaps * caps)
{
GstCaps *ret;
GstStructure *structure;
-
+
/* FIXME: select est caps here */
if (gst_caps_get_size (caps) > 1)
return NULL;
ret = gst_caps_copy (caps);
structure = gst_caps_get_structure (ret, 0);
-
+
if (gst_caps_structure_fixate_field_nearest_int (structure, "channels", 2))
return ret;
if (gst_caps_structure_fixate_field_nearest_int (structure, "rate", 44100))
@@ -257,9 +260,9 @@ gst_mikmod_srcfixate (GstPad *pad, const GstCaps *caps)
}
static GstPadLinkReturn
-gst_mikmod_srclink (GstPad *pad, const GstCaps *caps)
+gst_mikmod_srclink (GstPad * pad, const GstCaps * caps)
{
- GstMikMod *filter;
+ GstMikMod *filter;
GstStructure *structure;
gint depth;
gint channels;
@@ -273,68 +276,69 @@ gst_mikmod_srclink (GstPad *pad, const GstCaps *caps)
gst_structure_get_int (structure, "channels", &channels);
filter->stereo = (channels == 2);
gst_structure_get_int (structure, "rate", &filter->mixfreq);
-
+
return gst_mikmod_setup (filter) ? GST_PAD_LINK_OK : GST_PAD_LINK_REFUSED;
}
static void
-gst_mikmod_loop (GstElement *element)
+gst_mikmod_loop (GstElement * element)
{
GstMikMod *mikmod;
GstBuffer *buffer_in;
g_return_if_fail (element != NULL);
g_return_if_fail (GST_IS_MIKMOD (element));
-
+
mikmod = GST_MIKMOD (element);
srcpad = mikmod->srcpad;
mikmod->Buffer = NULL;
-
+
if (!mikmod->initialized) {
- while ((buffer_in = GST_BUFFER (gst_pad_pull( mikmod->sinkpad )))) {
- if ( GST_IS_EVENT (buffer_in) ) {
+ while ((buffer_in = GST_BUFFER (gst_pad_pull (mikmod->sinkpad)))) {
+ if (GST_IS_EVENT (buffer_in)) {
GstEvent *event = GST_EVENT (buffer_in);
-
- if (GST_EVENT_TYPE (event) == GST_EVENT_EOS)
- break;
+
+ if (GST_EVENT_TYPE (event) == GST_EVENT_EOS)
+ break;
} else {
- if ( mikmod->Buffer ) {
- GstBuffer *merge;
- merge = gst_buffer_merge( mikmod->Buffer, buffer_in );
- gst_buffer_unref( buffer_in );
- gst_buffer_unref( mikmod->Buffer );
+ if (mikmod->Buffer) {
+ GstBuffer *merge;
+
+ merge = gst_buffer_merge (mikmod->Buffer, buffer_in);
+ gst_buffer_unref (buffer_in);
+ gst_buffer_unref (mikmod->Buffer);
mikmod->Buffer = merge;
} else {
mikmod->Buffer = buffer_in;
}
}
- }
-
+ }
+
if (!GST_PAD_CAPS (mikmod->srcpad)) {
if (GST_PAD_LINK_SUCCESSFUL (gst_pad_renegotiate (mikmod->srcpad))) {
GST_ELEMENT_ERROR (mikmod, CORE, NEGOTIATION, (NULL), (NULL));
return;
}
}
-
- MikMod_RegisterDriver(&drv_gst);
- MikMod_RegisterAllLoaders();
-
- MikMod_Init("");
- reader = GST_READER_new( mikmod );
- module = Player_LoadGeneric ( reader, 64, 0 );
-
+
+ MikMod_RegisterDriver (&drv_gst);
+ MikMod_RegisterAllLoaders ();
+
+ MikMod_Init ("");
+ reader = GST_READER_new (mikmod);
+ module = Player_LoadGeneric (reader, 64, 0);
+
gst_buffer_unref (mikmod->Buffer);
-
- if ( ! Player_Active() )
- Player_Start(module);
-
+
+ if (!Player_Active ())
+ Player_Start (module);
+
mikmod->initialized = TRUE;
}
- if ( Player_Active() ) {
- timestamp = ( module->sngtime / 1024.0 ) * GST_SECOND;
- drv_gst.Update();
+ if (Player_Active ()) {
+ timestamp = (module->sngtime / 1024.0) * GST_SECOND;
+ drv_gst.Update ();
} else {
gst_element_set_eos (GST_ELEMENT (mikmod));
gst_pad_push (mikmod->srcpad, GST_DATA (gst_event_new (GST_EVENT_EOS)));
@@ -343,7 +347,7 @@ gst_mikmod_loop (GstElement *element)
static gboolean
-gst_mikmod_setup (GstMikMod *mikmod)
+gst_mikmod_setup (GstMikMod * mikmod)
{
md_musicvolume = mikmod->musicvolume;
md_pansep = mikmod->pansep;
@@ -354,28 +358,28 @@ gst_mikmod_setup (GstMikMod *mikmod)
md_mode = 0;
- if ( mikmod->interp )
+ if (mikmod->interp)
md_mode = md_mode | DMODE_INTERP;
- if ( mikmod->reverse )
+ if (mikmod->reverse)
md_mode = md_mode | DMODE_REVERSE;
- if ( mikmod->surround )
+ if (mikmod->surround)
md_mode = md_mode | DMODE_SURROUND;
- if ( mikmod->_16bit )
+ if (mikmod->_16bit)
md_mode = md_mode | DMODE_16BITS;
- if ( mikmod->hqmixer )
+ if (mikmod->hqmixer)
md_mode = md_mode | DMODE_HQMIXER;
- if ( mikmod->soft_music )
+ if (mikmod->soft_music)
md_mode = md_mode | DMODE_SOFT_MUSIC;
- if ( mikmod->soft_sndfx )
+ if (mikmod->soft_sndfx)
md_mode = md_mode | DMODE_SOFT_SNDFX;
- if ( mikmod->stereo )
+ if (mikmod->stereo)
md_mode = md_mode | DMODE_STEREO;
return TRUE;
@@ -383,9 +387,9 @@ gst_mikmod_setup (GstMikMod *mikmod)
static GstElementStateReturn
-gst_mikmod_change_state (GstElement *element)
+gst_mikmod_change_state (GstElement * element)
{
-GstMikMod *mikmod;
+ GstMikMod *mikmod;
g_return_val_if_fail (GST_IS_MIKMOD (element), GST_STATE_FAILURE);
@@ -393,35 +397,31 @@ GstMikMod *mikmod;
GST_DEBUG ("state pending %d", GST_STATE_PENDING (element));
- if (GST_STATE_PENDING (element) == GST_STATE_READY)
- {
- gst_mikmod_setup(mikmod);
-
- if ( Player_Active() )
- {
- Player_TogglePause();
- Player_SetPosition( 0 );
- }
- mikmod->initialized = FALSE;
+ if (GST_STATE_PENDING (element) == GST_STATE_READY) {
+ gst_mikmod_setup (mikmod);
+
+ if (Player_Active ()) {
+ Player_TogglePause ();
+ Player_SetPosition (0);
+ }
+ mikmod->initialized = FALSE;
}
-
- if (GST_STATE_PENDING (element) == GST_STATE_PLAYING)
- {
- if ( Player_Active() && Player_Paused() )
- Player_TogglePause();
- else
- if ( ! Player_Active() )
- Player_Start(module);
-
+
+ if (GST_STATE_PENDING (element) == GST_STATE_PLAYING) {
+ if (Player_Active () && Player_Paused ())
+ Player_TogglePause ();
+ else if (!Player_Active ())
+ Player_Start (module);
+
}
-
- if (GST_STATE_PENDING (element) == GST_STATE_PAUSED)
- if ( Player_Active() && ! Player_Paused() )
- Player_TogglePause();
- if (GST_STATE_PENDING (element) == GST_STATE_NULL)
- MikMod_Exit();
-
+ if (GST_STATE_PENDING (element) == GST_STATE_PAUSED)
+ if (Player_Active () && !Player_Paused ())
+ Player_TogglePause ();
+
+ if (GST_STATE_PENDING (element) == GST_STATE_NULL)
+ MikMod_Exit ();
+
if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
@@ -432,13 +432,14 @@ GstMikMod *mikmod;
static void
-gst_mikmod_set_property (GObject *object, guint id, const GValue *value, GParamSpec *pspec )
+gst_mikmod_set_property (GObject * object, guint id, const GValue * value,
+ GParamSpec * pspec)
{
GstMikMod *filter;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_MIKMOD(object));
- filter = GST_MIKMOD(object);
+ g_return_if_fail (GST_IS_MIKMOD (object));
+ filter = GST_MIKMOD (object);
switch (id) {
case ARG_SONGNAME:
@@ -488,13 +489,14 @@ gst_mikmod_set_property (GObject *object, guint id, const GValue *value, GParamS
}
static void
-gst_mikmod_get_property (GObject *object, guint id, GValue *value, GParamSpec *pspec )
+gst_mikmod_get_property (GObject * object, guint id, GValue * value,
+ GParamSpec * pspec)
{
GstMikMod *filter;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_MIKMOD(object));
- filter = GST_MIKMOD(object);
+ g_return_if_fail (GST_IS_MIKMOD (object));
+ filter = GST_MIKMOD (object);
switch (id) {
case ARG_MUSICVOLUME:
@@ -536,21 +538,17 @@ gst_mikmod_get_property (GObject *object, guint id, GValue *value, GParamSpec *p
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "mikmod", GST_RANK_SECONDARY, GST_TYPE_MIKMOD))
+ if (!gst_element_register (plugin, "mikmod", GST_RANK_SECONDARY,
+ GST_TYPE_MIKMOD))
return FALSE;
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "mikmod",
- "Mikmod plugin library",
- plugin_init,
- VERSION,
- "GPL",
- GST_PACKAGE,
- GST_ORIGIN)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "mikmod",
+ "Mikmod plugin library",
+ plugin_init, VERSION, "GPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/mikmod/gstmikmod.h b/ext/mikmod/gstmikmod.h
index 208fc5b9..ce65f8e8 100644
--- a/ext/mikmod/gstmikmod.h
+++ b/ext/mikmod/gstmikmod.h
@@ -25,13 +25,14 @@
#include <gst/gst.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_MIKMOD \
(gst_mikmod_get_type())
-
+
#define GST_MIKMOD(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MIKMOD,GstMikMod))
#define GST_MIKMOD_CLASS(klass) \
@@ -40,68 +41,70 @@ extern "C" {
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MIKMOD))
#define GST_IS_MIKMOD_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MIKMOD))
-
-struct _GstMikMod {
- GstElement element;
- GstPad *sinkpad, *srcpad;
- GstBuffer *Buffer;
-
- gchar *songname;
- gchar *modtype;
- gint musicvolume;
- gint pansep;
- gint reverb;
- gint sndfxvolume;
- gint volume;
- gint mixfreq;
- gint mode;
- gboolean interp;
- gboolean reverse;
- gboolean surround;
- gboolean _16bit;
- gboolean hqmixer;
- gboolean soft_music;
- gboolean soft_sndfx;
- gboolean stereo;
-
- gboolean initialized;
-};
-
-struct _GstMikModClass {
- GstElementClass parent_class;
-};
-
-typedef struct _GstMikMod GstMikMod;
-typedef struct _GstMikModClass GstMikModClass;
-
-extern MODULE *module;
-extern MREADER *reader;
-extern GstPad *srcpad;
-extern GstClockTime timestamp;
-extern int need_sync;
-
-GType gst_mikmod_get_type(void);
+
+ struct _GstMikMod
+ {
+ GstElement element;
+ GstPad *sinkpad, *srcpad;
+ GstBuffer *Buffer;
+
+ gchar *songname;
+ gchar *modtype;
+ gint musicvolume;
+ gint pansep;
+ gint reverb;
+ gint sndfxvolume;
+ gint volume;
+ gint mixfreq;
+ gint mode;
+ gboolean interp;
+ gboolean reverse;
+ gboolean surround;
+ gboolean _16bit;
+ gboolean hqmixer;
+ gboolean soft_music;
+ gboolean soft_sndfx;
+ gboolean stereo;
+
+ gboolean initialized;
+ };
+
+ struct _GstMikModClass
+ {
+ GstElementClass parent_class;
+ };
+
+ typedef struct _GstMikMod GstMikMod;
+ typedef struct _GstMikModClass GstMikModClass;
+
+ extern MODULE *module;
+ extern MREADER *reader;
+ extern GstPad *srcpad;
+ extern GstClockTime timestamp;
+ extern int need_sync;
+
+ GType gst_mikmod_get_type (void);
/* symbols for mikmod_reader.h */
-struct _GST_READER
-{
- MREADER core;
- GstMikMod *mik;
- guint64 offset;
- gshort eof;
-};
+ struct _GST_READER
+ {
+ MREADER core;
+ GstMikMod *mik;
+ guint64 offset;
+ gshort eof;
+ };
-typedef struct _GST_READER GST_READER;
+ typedef struct _GST_READER GST_READER;
-MREADER *GST_READER_new( GstMikMod *mik );
+ MREADER *GST_READER_new (GstMikMod * mik);
/* symbols for drv_gst.c */
-extern MDRIVER drv_gst;
+ extern MDRIVER drv_gst;
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_MIKMOD_H__ */
+#endif /* __GST_MIKMOD_H__ */
diff --git a/ext/mikmod/mikmod_reader.c b/ext/mikmod/mikmod_reader.c
index 38b8402c..f8e83de1 100644
--- a/ext/mikmod/mikmod_reader.c
+++ b/ext/mikmod/mikmod_reader.c
@@ -9,57 +9,62 @@
extern int need_sync;
-static BOOL GST_READER_Eof ( MREADER *reader );
-static BOOL GST_READER_Read( MREADER *reader, void *ptr, size_t size );
-static int GST_READER_Get ( MREADER *reader );
-static BOOL GST_READER_Seek( MREADER* reader,long offset,int whence );
-static long GST_READER_Tell( MREADER* reader );
+static BOOL GST_READER_Eof (MREADER * reader);
+static BOOL GST_READER_Read (MREADER * reader, void *ptr, size_t size);
+static int GST_READER_Get (MREADER * reader);
+static BOOL GST_READER_Seek (MREADER * reader, long offset, int whence);
+static long GST_READER_Tell (MREADER * reader);
-static BOOL GST_READER_Eof( MREADER *reader )
+static BOOL
+GST_READER_Eof (MREADER * reader)
{
-GST_READER *gst_reader;
+ GST_READER *gst_reader;
- gst_reader = ( GST_READER * ) reader;
+ gst_reader = (GST_READER *) reader;
return gst_reader->eof;
}
-static BOOL GST_READER_Read( MREADER *reader, void *ptr, size_t size )
+static BOOL
+GST_READER_Read (MREADER * reader, void *ptr, size_t size)
{
-GST_READER *gst_reader;
+ GST_READER *gst_reader;
- gst_reader = ( GST_READER * ) reader;
-
- memcpy( ptr, GST_BUFFER_DATA( gst_reader->mik->Buffer ) + gst_reader->offset, size);
- gst_reader->offset = gst_reader->offset + size;
+ gst_reader = (GST_READER *) reader;
+
+ memcpy (ptr, GST_BUFFER_DATA (gst_reader->mik->Buffer) + gst_reader->offset,
+ size);
+ gst_reader->offset = gst_reader->offset + size;
return 1;
}
-static int GST_READER_Get ( MREADER *reader )
+static int
+GST_READER_Get (MREADER * reader)
{
-GST_READER *gst_reader;
-int res;
+ GST_READER *gst_reader;
+ int res;
+
+ gst_reader = (GST_READER *) reader;
- gst_reader = ( GST_READER * ) reader;
-
- res = *( GST_BUFFER_DATA( gst_reader->mik->Buffer ) + gst_reader->offset );
+ res = *(GST_BUFFER_DATA (gst_reader->mik->Buffer) + gst_reader->offset);
gst_reader->offset += 1;
-
+
return res;
}
-static BOOL GST_READER_Seek( MREADER *reader, long offset, int whence )
+static BOOL
+GST_READER_Seek (MREADER * reader, long offset, int whence)
{
-GST_READER *gst_reader;
-
- gst_reader = ( GST_READER * ) reader;
+ GST_READER *gst_reader;
- if ( whence == SEEK_SET )
+ gst_reader = (GST_READER *) reader;
+
+ if (whence == SEEK_SET)
gst_reader->offset = offset;
else
gst_reader->offset += offset;
@@ -68,39 +73,41 @@ GST_READER *gst_reader;
}
-static long GST_READER_Tell( MREADER *reader )
+static long
+GST_READER_Tell (MREADER * reader)
{
-GST_READER *gst_reader;
+ GST_READER *gst_reader;
- gst_reader = ( GST_READER * ) reader;
+ gst_reader = (GST_READER *) reader;
return gst_reader->offset;
}
-MREADER *GST_READER_new( GstMikMod *mik )
+MREADER *
+GST_READER_new (GstMikMod * mik)
{
-GST_READER *gst_reader;
-
- gst_reader = ( GST_READER * ) g_malloc( sizeof( GST_READER ));
+ GST_READER *gst_reader;
+
+ gst_reader = (GST_READER *) g_malloc (sizeof (GST_READER));
gst_reader->offset = 0;
- gst_reader->eof = 0;
- gst_reader->mik = mik;
- if ( gst_reader )
- {
- gst_reader->core.Eof = &GST_READER_Eof;
- gst_reader->core.Read = &GST_READER_Read;
- gst_reader->core.Get = &GST_READER_Get;
- gst_reader->core.Seek = &GST_READER_Seek;
- gst_reader->core.Tell = &GST_READER_Tell;
+ gst_reader->eof = 0;
+ gst_reader->mik = mik;
+ if (gst_reader) {
+ gst_reader->core.Eof = &GST_READER_Eof;
+ gst_reader->core.Read = &GST_READER_Read;
+ gst_reader->core.Get = &GST_READER_Get;
+ gst_reader->core.Seek = &GST_READER_Seek;
+ gst_reader->core.Tell = &GST_READER_Tell;
}
- return ( MREADER *)gst_reader;
+ return (MREADER *) gst_reader;
}
-void GST_READER_free ( MREADER *reader )
+void
+GST_READER_free (MREADER * reader)
{
- if ( reader )
- g_free( reader );
+ if (reader)
+ g_free (reader);
}
diff --git a/ext/mikmod/mikmod_types.c b/ext/mikmod/mikmod_types.c
index f583d082..370f59cb 100644
--- a/ext/mikmod/mikmod_types.c
+++ b/ext/mikmod/mikmod_types.c
@@ -28,197 +28,211 @@
#define MODULEHEADERSIZE 0x438
-
-gboolean MOD_CheckType( GstBuffer *buf )
+
+gboolean
+MOD_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf ) + MODULEHEADERSIZE;
-
- /* Protracker and variants */
- if (( ! memcmp( data, "M.K.", 4 )) || ( ! memcmp( data, "M!K!", 4 )))
- return TRUE;
-
- /* Star Tracker */
- if ((( ! memcmp( data, "FLT", 3 )) || ( ! memcmp( data, "EXO", 3 ))) && ( isdigit( data[3] )))
- return TRUE;
-
- /* Oktalyzer (Amiga) */
- if (! memcmp( data, "OKTA", 4 ))
- return TRUE;
-
- /* Oktalyser (Atari) */
- if ( ! memcmp( data, "CD81", 4 ))
- return TRUE;
-
- /* Fasttracker */
- if (( ! memcmp( data + 1, "CHN", 3 )) && ( isdigit( data[0] )))
- return TRUE;
-
- /* Fasttracker or Taketracker */
- if ((( ! memcmp( data + 2, "CH", 2 )) || ( ! memcmp( data + 2, "CN", 2 ))) && ( isdigit( data[0] )) && ( isdigit( data[1] )))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf) + MODULEHEADERSIZE;
+
+ /* Protracker and variants */
+ if ((!memcmp (data, "M.K.", 4)) || (!memcmp (data, "M!K!", 4)))
+ return TRUE;
+
+ /* Star Tracker */
+ if (((!memcmp (data, "FLT", 3)) || (!memcmp (data, "EXO", 3)))
+ && (isdigit (data[3])))
+ return TRUE;
+
+ /* Oktalyzer (Amiga) */
+ if (!memcmp (data, "OKTA", 4))
+ return TRUE;
+
+ /* Oktalyser (Atari) */
+ if (!memcmp (data, "CD81", 4))
+ return TRUE;
+
+ /* Fasttracker */
+ if ((!memcmp (data + 1, "CHN", 3)) && (isdigit (data[0])))
+ return TRUE;
+
+ /* Fasttracker or Taketracker */
+ if (((!memcmp (data + 2, "CH", 2)) || (!memcmp (data + 2, "CN", 2)))
+ && (isdigit (data[0])) && (isdigit (data[1])))
+ return TRUE;
+
+ return FALSE;
}
-gboolean Mod_669_CheckType( GstBuffer *buf )
+gboolean
+Mod_669_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf );
-
- if( ! memcmp( data, "if", 2 ) || ! memcmp( data, "JN", 2 ))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf);
+
+ if (!memcmp (data, "if", 2) || !memcmp (data, "JN", 2))
+ return TRUE;
+
+ return FALSE;
}
-gboolean Amf_CheckType( GstBuffer *buf )
+gboolean
+Amf_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf );
-
- if( memcmp( data, "AMF", 3) )
- return FALSE;
-
- data = GST_BUFFER_DATA( buf ) + 3;
-
- if (( (gint)*data >= 10 ) && ( (gint)*data <= 14 ))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf);
+
+ if (memcmp (data, "AMF", 3))
+ return FALSE;
+
+ data = GST_BUFFER_DATA (buf) + 3;
+
+ if (((gint) * data >= 10) && ((gint) * data <= 14))
+ return TRUE;
+
+ return FALSE;
}
-gboolean Dsm_CheckType( GstBuffer *buf )
+gboolean
+Dsm_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf );
-
- if( ! memcmp( data, "RIFF", 4 ) && ! memcmp( data + 8, "DSMF", 4 ))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf);
+
+ if (!memcmp (data, "RIFF", 4) && !memcmp (data + 8, "DSMF", 4))
+ return TRUE;
+
+ return FALSE;
}
-gboolean Fam_CheckType( GstBuffer *buf )
+gboolean
+Fam_CheckType (GstBuffer * buf)
{
-gchar *data;
-static unsigned char FARSIG[4+3]={'F','A','R',0xfe,13,10,26};
-
- data = GST_BUFFER_DATA( buf );
-
- if(( memcmp( data, FARSIG, 4 )) || ( memcmp( data + 44, FARSIG + 4, 3 )))
- return FALSE;
-
- return 1;
+ gchar *data;
+ static unsigned char FARSIG[4 + 3] = { 'F', 'A', 'R', 0xfe, 13, 10, 26 };
+
+ data = GST_BUFFER_DATA (buf);
+
+ if ((memcmp (data, FARSIG, 4)) || (memcmp (data + 44, FARSIG + 4, 3)))
+ return FALSE;
+
+ return 1;
}
-gboolean Gdm_CheckType( GstBuffer *buf )
+gboolean
+Gdm_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf );
-
- if ( ! memcmp( data, "GDM\xfe", 4 ) && ! memcmp( data + 71, "GMFS", 4 ))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf);
+
+ if (!memcmp (data, "GDM\xfe", 4) && !memcmp (data + 71, "GMFS", 4))
+ return TRUE;
+
+ return FALSE;
}
-gboolean Imf_CheckType( GstBuffer *buf )
+gboolean
+Imf_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf ) + 0x3c;
-
- if( ! memcmp( data, "IM10", 4))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf) + 0x3c;
+
+ if (!memcmp (data, "IM10", 4))
+ return TRUE;
+
+ return FALSE;
}
-gboolean It_CheckType( GstBuffer *buf )
+gboolean
+It_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf );
-
- if( ! memcmp( data, "IMPM", 4 ))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf);
+
+ if (!memcmp (data, "IMPM", 4))
+ return TRUE;
+
+ return FALSE;
}
-gboolean M15_CheckType( GstBuffer *buf )
+gboolean
+M15_CheckType (GstBuffer * buf)
{
- /* FIXME: M15 CheckType to do */
- return FALSE;
+ /* FIXME: M15 CheckType to do */
+ return FALSE;
}
-gboolean Med_CheckType( GstBuffer *buf )
+gboolean
+Med_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf );
-
- if(( ! memcmp(data, "MMD0", 4 )) || ( memcmp( data, "MMD1", 4 )))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf);
+
+ if ((!memcmp (data, "MMD0", 4)) || (memcmp (data, "MMD1", 4)))
+ return TRUE;
+
+ return FALSE;
}
-gboolean Mtm_CheckType( GstBuffer *buf )
+gboolean
+Mtm_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf );
-
- if( ! memcmp( data, "MTM", 3 ))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf);
+
+ if (!memcmp (data, "MTM", 3))
+ return TRUE;
+
+ return FALSE;
}
-gboolean Okt_CheckType( GstBuffer *buf )
+gboolean
+Okt_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf );
-
- if( ! memcmp( data, "OKTSONG", 8 ))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf);
+
+ if (!memcmp (data, "OKTSONG", 8))
+ return TRUE;
+
+ return FALSE;
}
-gboolean S3m_CheckType( GstBuffer *buf )
+gboolean
+S3m_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf ) + 0x2c;
-
- if( ! memcmp( data, "SCRM", 4 ))
- return TRUE;
-
- return FALSE;
+ gchar *data;
+
+ data = GST_BUFFER_DATA (buf) + 0x2c;
+
+ if (!memcmp (data, "SCRM", 4))
+ return TRUE;
+
+ return FALSE;
}
-gboolean Xm_CheckType( GstBuffer *buf )
+gboolean
+Xm_CheckType (GstBuffer * buf)
{
-gchar *data;
-
- data = GST_BUFFER_DATA( buf );
-
- if( memcmp( data, "Extended Module: ", 17 ))
- return FALSE;
-
- if( data[ 37 ] == 0x1a )
- return TRUE;
-
- return FALSE;
-}
+ gchar *data;
+ data = GST_BUFFER_DATA (buf);
+ if (memcmp (data, "Extended Module: ", 17))
+ return FALSE;
+
+ if (data[37] == 0x1a)
+ return TRUE;
+
+ return FALSE;
+}
diff --git a/ext/mikmod/mikmod_types.h b/ext/mikmod/mikmod_types.h
index c431faf9..8559455c 100644
--- a/ext/mikmod/mikmod_types.h
+++ b/ext/mikmod/mikmod_types.h
@@ -20,25 +20,26 @@
#define __MIKMOD_TYPES_H__
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
-gboolean MOD_CheckType (GstBuffer *buf);
-gboolean Mod_669_CheckType (GstBuffer *buf);
-gboolean Amf_CheckType (GstBuffer *buf);
-gboolean Dsm_CheckType (GstBuffer *buf);
-gboolean Fam_CheckType (GstBuffer *buf);
-gboolean Gdm_CheckType (GstBuffer *buf);
-gboolean Imf_CheckType (GstBuffer *buf);
-gboolean It_CheckType (GstBuffer *buf);
-gboolean M15_CheckType (GstBuffer *buf);
-gboolean Mtm_CheckType (GstBuffer *buf);
-gboolean Okt_CheckType (GstBuffer *buf);
-gboolean S3m_CheckType (GstBuffer *buf);
-gboolean Xm_CheckType (GstBuffer *buf);
+ gboolean MOD_CheckType (GstBuffer * buf);
+ gboolean Mod_669_CheckType (GstBuffer * buf);
+ gboolean Amf_CheckType (GstBuffer * buf);
+ gboolean Dsm_CheckType (GstBuffer * buf);
+ gboolean Fam_CheckType (GstBuffer * buf);
+ gboolean Gdm_CheckType (GstBuffer * buf);
+ gboolean Imf_CheckType (GstBuffer * buf);
+ gboolean It_CheckType (GstBuffer * buf);
+ gboolean M15_CheckType (GstBuffer * buf);
+ gboolean Mtm_CheckType (GstBuffer * buf);
+ gboolean Okt_CheckType (GstBuffer * buf);
+ gboolean S3m_CheckType (GstBuffer * buf);
+ gboolean Xm_CheckType (GstBuffer * buf);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __MIKMOD_TYPES_H__ */
+#endif /* __MIKMOD_TYPES_H__ */
diff --git a/ext/pango/gsttextoverlay.c b/ext/pango/gsttextoverlay.c
index 4264e813..d0b40294 100644
--- a/ext/pango/gsttextoverlay.c
+++ b/ext/pango/gsttextoverlay.c
@@ -11,205 +11,196 @@
/*#include "SDL_blit.h"*/
static GstElementDetails textoverlay_details = {
- "Text Overlay",
- "Filter/Editor/Video",
- "Adds text strings on top of a video buffer",
- "Gustavo J. A. M. Carneiro <gjc@inescporto.pt>"
+ "Text Overlay",
+ "Filter/Editor/Video",
+ "Adds text strings on top of a video buffer",
+ "Gustavo J. A. M. Carneiro <gjc@inescporto.pt>"
};
-enum {
- ARG_0,
- ARG_TEXT,
- ARG_VALIGN,
- ARG_HALIGN,
- ARG_X0,
- ARG_Y0,
- ARG_FONT_DESC,
+enum
+{
+ ARG_0,
+ ARG_TEXT,
+ ARG_VALIGN,
+ ARG_HALIGN,
+ ARG_X0,
+ ARG_Y0,
+ ARG_FONT_DESC,
};
static GstStaticPadTemplate textoverlay_src_template_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("video/x-raw-yuv, "
- "format = (fourcc) I420, "
- "width = (int) [ 1, MAX ], "
- "height = (int) [ 1, MAX ]")
-);
+ "format = (fourcc) I420, "
+ "width = (int) [ 1, MAX ], " "height = (int) [ 1, MAX ]")
+ );
static GstStaticPadTemplate video_sink_template_factory =
-GST_STATIC_PAD_TEMPLATE (
- "video_sink",
+GST_STATIC_PAD_TEMPLATE ("video_sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("video/x-raw-yuv, "
- "format = (fourcc) I420, "
- "width = (int) [ 1, MAX ], "
- "height = (int) [ 1, MAX ]")
-);
+ "format = (fourcc) I420, "
+ "width = (int) [ 1, MAX ], " "height = (int) [ 1, MAX ]")
+ );
static GstStaticPadTemplate text_sink_template_factory =
-GST_STATIC_PAD_TEMPLATE (
- "text_sink",
+ GST_STATIC_PAD_TEMPLATE ("text_sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("text/x-pango-markup; text/plain")
-);
-
-static void gst_textoverlay_base_init (gpointer g_class);
-static void gst_textoverlay_class_init(GstTextOverlayClass *klass);
-static void gst_textoverlay_init(GstTextOverlay *overlay);
-static void gst_textoverlay_set_property(GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_textoverlay_get_property(GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static GstElementStateReturn gst_textoverlay_change_state(GstElement *element);
-static void gst_textoverlay_finalize(GObject *object);
+ );
+
+static void gst_textoverlay_base_init (gpointer g_class);
+static void gst_textoverlay_class_init (GstTextOverlayClass * klass);
+static void gst_textoverlay_init (GstTextOverlay * overlay);
+static void gst_textoverlay_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_textoverlay_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_textoverlay_change_state (GstElement *
+ element);
+static void gst_textoverlay_finalize (GObject * object);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_textoverlay_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_textoverlay_get_type(void)
+gst_textoverlay_get_type (void)
{
- static GType textoverlay_type = 0;
-
- if (!textoverlay_type) {
- static const GTypeInfo textoverlay_info = {
- sizeof(GstTextOverlayClass),
- gst_textoverlay_base_init,
- NULL,
- (GClassInitFunc)gst_textoverlay_class_init,
- NULL,
- NULL,
- sizeof(GstTextOverlay),
- 0,
- (GInstanceInitFunc)gst_textoverlay_init,
- };
- textoverlay_type = g_type_register_static(GST_TYPE_ELEMENT, "GstTextOverlay",
- &textoverlay_info, 0);
- }
- return textoverlay_type;
+ static GType textoverlay_type = 0;
+
+ if (!textoverlay_type) {
+ static const GTypeInfo textoverlay_info = {
+ sizeof (GstTextOverlayClass),
+ gst_textoverlay_base_init,
+ NULL,
+ (GClassInitFunc) gst_textoverlay_class_init,
+ NULL,
+ NULL,
+ sizeof (GstTextOverlay),
+ 0,
+ (GInstanceInitFunc) gst_textoverlay_init,
+ };
+ textoverlay_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstTextOverlay",
+ &textoverlay_info, 0);
+ }
+ return textoverlay_type;
}
static void
gst_textoverlay_base_init (gpointer g_class)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&textoverlay_src_template_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_sink_template_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&text_sink_template_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&textoverlay_src_template_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&video_sink_template_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&text_sink_template_factory));
- gst_element_class_set_details (element_class, &textoverlay_details);
+ gst_element_class_set_details (element_class, &textoverlay_details);
}
static void
-gst_textoverlay_class_init(GstTextOverlayClass *klass)
+gst_textoverlay_class_init (GstTextOverlayClass * klass)
{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
-
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
-
- parent_class = g_type_class_peek_parent(klass);
-
- gobject_class->finalize = gst_textoverlay_finalize;
- gobject_class->set_property = gst_textoverlay_set_property;
- gobject_class->get_property = gst_textoverlay_get_property;
-
- gstelement_class->change_state = gst_textoverlay_change_state;
- klass->pango_context = pango_ft2_get_context(72, 72);
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_TEXT,
- g_param_spec_string("text", "text",
- "Text to be display,"
- " in pango markup format.",
- "", G_PARAM_WRITABLE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VALIGN,
- g_param_spec_string("valign", "vertical alignment",
- "Vertical alignment of the text. "
- "Can be either 'baseline', 'bottom', or 'top'",
- "baseline", G_PARAM_WRITABLE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_HALIGN,
- g_param_spec_string("halign", "horizontal alignment",
- "Horizontal alignment of the text. "
- "Can be either 'left', 'right', or 'center'",
- "center", G_PARAM_WRITABLE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_X0,
- g_param_spec_int("x0", "X position",
- "Initial X position."
- " Horizontal aligment takes this point"
- " as reference.",
- G_MININT, G_MAXINT, 0, G_PARAM_WRITABLE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_Y0,
- g_param_spec_int("y0", "Y position",
- "Initial Y position."
- " Vertical aligment takes this point"
- " as reference.",
- G_MININT, G_MAXINT, 0, G_PARAM_WRITABLE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FONT_DESC,
- g_param_spec_string("font-desc", "font description",
- "Pango font description of font "
- "to be used for rendering. "
- "See documentation of "
- "pango_font_description_from_string"
- " for syntax.",
- "", G_PARAM_WRITABLE));
+ GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
+
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class->finalize = gst_textoverlay_finalize;
+ gobject_class->set_property = gst_textoverlay_set_property;
+ gobject_class->get_property = gst_textoverlay_get_property;
+
+ gstelement_class->change_state = gst_textoverlay_change_state;
+ klass->pango_context = pango_ft2_get_context (72, 72);
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TEXT,
+ g_param_spec_string ("text", "text",
+ "Text to be display,"
+ " in pango markup format.", "", G_PARAM_WRITABLE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VALIGN,
+ g_param_spec_string ("valign", "vertical alignment",
+ "Vertical alignment of the text. "
+ "Can be either 'baseline', 'bottom', or 'top'",
+ "baseline", G_PARAM_WRITABLE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HALIGN,
+ g_param_spec_string ("halign", "horizontal alignment",
+ "Horizontal alignment of the text. "
+ "Can be either 'left', 'right', or 'center'",
+ "center", G_PARAM_WRITABLE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_X0,
+ g_param_spec_int ("x0", "X position",
+ "Initial X position."
+ " Horizontal aligment takes this point"
+ " as reference.", G_MININT, G_MAXINT, 0, G_PARAM_WRITABLE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_Y0,
+ g_param_spec_int ("y0", "Y position",
+ "Initial Y position."
+ " Vertical aligment takes this point"
+ " as reference.", G_MININT, G_MAXINT, 0, G_PARAM_WRITABLE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FONT_DESC,
+ g_param_spec_string ("font-desc", "font description",
+ "Pango font description of font "
+ "to be used for rendering. "
+ "See documentation of "
+ "pango_font_description_from_string"
+ " for syntax.", "", G_PARAM_WRITABLE));
}
static void
-resize_bitmap(GstTextOverlay *overlay, int width, int height)
+resize_bitmap (GstTextOverlay * overlay, int width, int height)
{
- FT_Bitmap *bitmap = &overlay->bitmap;
- int pitch = (width|3) + 1;
- int size = pitch*height;
-
- /* no need to keep reallocating; just keep the maximum size so far */
- if (size <= overlay->bitmap_buffer_size) {
- bitmap->rows = height;
- bitmap->width = width;
- bitmap->pitch = pitch;
- memset(bitmap->buffer, 0, overlay->bitmap_buffer_size);
- return;
- }
- if (!bitmap->buffer) {
- /* initialize */
- bitmap->pixel_mode = ft_pixel_mode_grays;
- bitmap->num_grays = 256;
- }
- if (bitmap->buffer)
- bitmap->buffer = g_realloc(bitmap->buffer, size);
- else
- bitmap->buffer = g_malloc(size);
+ FT_Bitmap *bitmap = &overlay->bitmap;
+ int pitch = (width | 3) + 1;
+ int size = pitch * height;
+
+ /* no need to keep reallocating; just keep the maximum size so far */
+ if (size <= overlay->bitmap_buffer_size) {
bitmap->rows = height;
bitmap->width = width;
bitmap->pitch = pitch;
- memset(bitmap->buffer, 0, size);
- overlay->bitmap_buffer_size = size;
+ memset (bitmap->buffer, 0, overlay->bitmap_buffer_size);
+ return;
+ }
+ if (!bitmap->buffer) {
+ /* initialize */
+ bitmap->pixel_mode = ft_pixel_mode_grays;
+ bitmap->num_grays = 256;
+ }
+ if (bitmap->buffer)
+ bitmap->buffer = g_realloc (bitmap->buffer, size);
+ else
+ bitmap->buffer = g_malloc (size);
+ bitmap->rows = height;
+ bitmap->width = width;
+ bitmap->pitch = pitch;
+ memset (bitmap->buffer, 0, size);
+ overlay->bitmap_buffer_size = size;
}
static void
-render_text(GstTextOverlay *overlay)
+render_text (GstTextOverlay * overlay)
{
- PangoRectangle ink_rect, logical_rect;
+ PangoRectangle ink_rect, logical_rect;
- pango_layout_get_pixel_extents(overlay->layout, &ink_rect, &logical_rect);
- resize_bitmap(overlay, ink_rect.width, ink_rect.height + ink_rect.y);
- pango_ft2_render_layout(&overlay->bitmap, overlay->layout, 0, 0);
- overlay->baseline_y = ink_rect.y;
+ pango_layout_get_pixel_extents (overlay->layout, &ink_rect, &logical_rect);
+ resize_bitmap (overlay, ink_rect.width, ink_rect.height + ink_rect.y);
+ pango_ft2_render_layout (&overlay->bitmap, overlay->layout, 0, 0);
+ overlay->baseline_y = ink_rect.y;
}
/* static GstPadLinkReturn */
@@ -220,154 +211,157 @@ render_text(GstTextOverlay *overlay)
static GstPadLinkReturn
-gst_textoverlay_video_sinkconnect(GstPad *pad, const GstCaps *caps)
+gst_textoverlay_video_sinkconnect (GstPad * pad, const GstCaps * caps)
{
- GstTextOverlay *overlay;
- GstStructure *structure;
+ GstTextOverlay *overlay;
+ GstStructure *structure;
- overlay = GST_TEXTOVERLAY(gst_pad_get_parent(pad));
+ overlay = GST_TEXTOVERLAY (gst_pad_get_parent (pad));
- structure = gst_caps_get_structure (caps, 0);
- overlay->width = overlay->height = 0;
- gst_structure_get_int (structure, "width", &overlay->width);
- gst_structure_get_int (structure, "height", &overlay->height);
+ structure = gst_caps_get_structure (caps, 0);
+ overlay->width = overlay->height = 0;
+ gst_structure_get_int (structure, "width", &overlay->width);
+ gst_structure_get_int (structure, "height", &overlay->height);
- return gst_pad_try_set_caps(overlay->srcpad, caps);
+ return gst_pad_try_set_caps (overlay->srcpad, caps);
}
static void
-gst_text_overlay_blit_yuv420(GstTextOverlay *overlay, FT_Bitmap *bitmap,
- guchar *pixbuf, int x0, int y0)
+gst_text_overlay_blit_yuv420 (GstTextOverlay * overlay, FT_Bitmap * bitmap,
+ guchar * pixbuf, int x0, int y0)
{
- int y; /* text bitmap coordinates */
- int x1, y1; /* video buffer coordinates */
- int rowinc, bit_rowinc, uv_rowinc;
- guchar *p, *bitp, *u_p;
- int video_width = overlay->width, video_height = overlay->height;
- int bitmap_x0 = x0 < 1? -(x0 - 1) : 1; /* 1 pixel border */
- int bitmap_y0 = y0 < 1? -(y0 - 1) : 1; /* 1 pixel border */
- int bitmap_width = bitmap->width - bitmap_x0;
- int bitmap_height = bitmap->rows - bitmap_y0;
- int u_plane_size;
- int skip_y, skip_x;
- guchar v;
-
- if (x0 + bitmap_x0 + bitmap_width > video_width - 1) /* 1 pixel border */
- bitmap_width -= x0 + bitmap_x0 + bitmap_width - video_width + 1;
- if (y0 + bitmap_y0 + bitmap_height > video_height - 1) /* 1 pixel border */
- bitmap_height -= y0 + bitmap_y0 + bitmap_height - video_height + 1;
-
- rowinc = video_width - bitmap_width;
- uv_rowinc = video_width / 2 - bitmap_width / 2;
- bit_rowinc = bitmap->pitch - bitmap_width;
- u_plane_size = (video_width / 2)*(video_height / 2);
-
- y1 = y0 + bitmap_y0;
- x1 = x0 + bitmap_x0;
- p = pixbuf + video_width*y1 + x1;
- bitp = bitmap->buffer + bitmap->pitch*bitmap_y0 + bitmap_x0;
- for (y = bitmap_y0; y < bitmap_height; y++){
- int n;
- for(n=bitmap_width; n>0; --n){
- v = *bitp;
- if (v) {
- p[-1] = CLAMP(p[-1] - v, 0, 255);
- p[ 1] = CLAMP(p[ 1] - v, 0, 255);
- p[-video_width] = CLAMP(p[-video_width] - v, 0, 255);
- p[ video_width] = CLAMP(p[ video_width] - v, 0, 255);
- }
- p++;
- bitp++;
+ int y; /* text bitmap coordinates */
+ int x1, y1; /* video buffer coordinates */
+ int rowinc, bit_rowinc, uv_rowinc;
+ guchar *p, *bitp, *u_p;
+ int video_width = overlay->width, video_height = overlay->height;
+ int bitmap_x0 = x0 < 1 ? -(x0 - 1) : 1; /* 1 pixel border */
+ int bitmap_y0 = y0 < 1 ? -(y0 - 1) : 1; /* 1 pixel border */
+ int bitmap_width = bitmap->width - bitmap_x0;
+ int bitmap_height = bitmap->rows - bitmap_y0;
+ int u_plane_size;
+ int skip_y, skip_x;
+ guchar v;
+
+ if (x0 + bitmap_x0 + bitmap_width > video_width - 1) /* 1 pixel border */
+ bitmap_width -= x0 + bitmap_x0 + bitmap_width - video_width + 1;
+ if (y0 + bitmap_y0 + bitmap_height > video_height - 1) /* 1 pixel border */
+ bitmap_height -= y0 + bitmap_y0 + bitmap_height - video_height + 1;
+
+ rowinc = video_width - bitmap_width;
+ uv_rowinc = video_width / 2 - bitmap_width / 2;
+ bit_rowinc = bitmap->pitch - bitmap_width;
+ u_plane_size = (video_width / 2) * (video_height / 2);
+
+ y1 = y0 + bitmap_y0;
+ x1 = x0 + bitmap_x0;
+ p = pixbuf + video_width * y1 + x1;
+ bitp = bitmap->buffer + bitmap->pitch * bitmap_y0 + bitmap_x0;
+ for (y = bitmap_y0; y < bitmap_height; y++) {
+ int n;
+
+ for (n = bitmap_width; n > 0; --n) {
+ v = *bitp;
+ if (v) {
+ p[-1] = CLAMP (p[-1] - v, 0, 255);
+ p[1] = CLAMP (p[1] - v, 0, 255);
+ p[-video_width] = CLAMP (p[-video_width] - v, 0, 255);
+ p[video_width] = CLAMP (p[video_width] - v, 0, 255);
}
- p += rowinc;
- bitp += bit_rowinc;
+ p++;
+ bitp++;
}
+ p += rowinc;
+ bitp += bit_rowinc;
+ }
+
+ y = bitmap_y0;
+ y1 = y0 + bitmap_y0;
+ x1 = x0 + bitmap_x0;
+ bitp = bitmap->buffer + bitmap->pitch * bitmap_y0 + bitmap_x0;
+ p = pixbuf + video_width * y1 + x1;
+ u_p =
+ pixbuf + video_width * video_height + (video_width >> 1) * (y1 >> 1) +
+ (x1 >> 1);
+ skip_y = 0;
+ skip_x = 0;
+
+ for (; y < bitmap_height; y++) {
+ int n;
- y = bitmap_y0;
- y1 = y0 + bitmap_y0;
x1 = x0 + bitmap_x0;
- bitp = bitmap->buffer + bitmap->pitch*bitmap_y0 + bitmap_x0;
- p = pixbuf + video_width*y1 + x1;
- u_p = pixbuf + video_width*video_height + (video_width >> 1)*(y1 >> 1) + (x1 >> 1);
- skip_y = 0;
skip_x = 0;
-
- for ( ; y < bitmap_height; y++){
- int n;
- x1 = x0 + bitmap_x0;
- skip_x = 0;
- for(n = bitmap_width; n>0; --n){
- v = *bitp;
- if (v) {
- *p = v;
- if (!skip_y) {
- u_p[0] = u_p[u_plane_size] = 0x80;
- }
- }
+ for (n = bitmap_width; n > 0; --n) {
+ v = *bitp;
+ if (v) {
+ *p = v;
if (!skip_y) {
- skip_x = !skip_x;
- if (!skip_x) u_p++;
+ u_p[0] = u_p[u_plane_size] = 0x80;
}
- p++;
- bitp++;
}
- /*if (!skip_x && !skip_y) u_p--; */
- p += rowinc;
- bitp += bit_rowinc;
- skip_y = !skip_y;
- u_p += skip_y? uv_rowinc : 0;
+ if (!skip_y) {
+ skip_x = !skip_x;
+ if (!skip_x)
+ u_p++;
+ }
+ p++;
+ bitp++;
}
+ /*if (!skip_x && !skip_y) u_p--; */
+ p += rowinc;
+ bitp += bit_rowinc;
+ skip_y = !skip_y;
+ u_p += skip_y ? uv_rowinc : 0;
+ }
}
static void
-gst_textoverlay_video_chain(GstPad *pad, GstData *_data)
+gst_textoverlay_video_chain (GstPad * pad, GstData * _data)
{
- GstBuffer *buf = GST_BUFFER (_data);
- GstTextOverlay *overlay;
- guchar *pixbuf;
- gint x0, y0;
-
- g_return_if_fail(pad != NULL);
- g_return_if_fail(GST_IS_PAD(pad));
- g_return_if_fail(buf != NULL);
- overlay = GST_TEXTOVERLAY(gst_pad_get_parent(pad));
- g_return_if_fail(overlay != NULL);
- g_return_if_fail(GST_IS_TEXTOVERLAY(overlay));
-
- pixbuf = GST_BUFFER_DATA(buf);
-
- x0 = overlay->x0;
- y0 = overlay->y0;
- switch (overlay->valign)
- {
+ GstBuffer *buf = GST_BUFFER (_data);
+ GstTextOverlay *overlay;
+ guchar *pixbuf;
+ gint x0, y0;
+
+ g_return_if_fail (pad != NULL);
+ g_return_if_fail (GST_IS_PAD (pad));
+ g_return_if_fail (buf != NULL);
+ overlay = GST_TEXTOVERLAY (gst_pad_get_parent (pad));
+ g_return_if_fail (overlay != NULL);
+ g_return_if_fail (GST_IS_TEXTOVERLAY (overlay));
+
+ pixbuf = GST_BUFFER_DATA (buf);
+
+ x0 = overlay->x0;
+ y0 = overlay->y0;
+ switch (overlay->valign) {
case GST_TEXT_OVERLAY_VALIGN_BOTTOM:
- y0 += overlay->bitmap.rows;
- break;
+ y0 += overlay->bitmap.rows;
+ break;
case GST_TEXT_OVERLAY_VALIGN_BASELINE:
- y0 -= (overlay->bitmap.rows - overlay->baseline_y);
- break;
+ y0 -= (overlay->bitmap.rows - overlay->baseline_y);
+ break;
case GST_TEXT_OVERLAY_VALIGN_TOP:
- break;
- }
+ break;
+ }
- switch (overlay->halign)
- {
+ switch (overlay->halign) {
case GST_TEXT_OVERLAY_HALIGN_LEFT:
- break;
+ break;
case GST_TEXT_OVERLAY_HALIGN_RIGHT:
- x0 -= overlay->bitmap.width;
- break;
+ x0 -= overlay->bitmap.width;
+ break;
case GST_TEXT_OVERLAY_HALIGN_CENTER:
- x0 -= overlay->bitmap.width / 2;
- break;
- }
+ x0 -= overlay->bitmap.width / 2;
+ break;
+ }
- if (overlay->bitmap.buffer)
- gst_text_overlay_blit_yuv420(overlay, &overlay->bitmap, pixbuf, x0, y0);
+ if (overlay->bitmap.buffer)
+ gst_text_overlay_blit_yuv420 (overlay, &overlay->bitmap, pixbuf, x0, y0);
- gst_pad_push(overlay->srcpad, GST_DATA (buf));
+ gst_pad_push (overlay->srcpad, GST_DATA (buf));
}
#define PAST_END(buffer, time) \
@@ -377,270 +371,271 @@ gst_textoverlay_video_chain(GstPad *pad, GstData *_data)
< (time))
static void
-gst_textoverlay_loop(GstElement *element)
+gst_textoverlay_loop (GstElement * element)
{
- GstTextOverlay *overlay;
- GstBuffer *video_frame;
- guint64 now;
-
- g_return_if_fail(element != NULL);
- g_return_if_fail(GST_IS_TEXTOVERLAY(element));
- overlay = GST_TEXTOVERLAY(element);
-
- video_frame = GST_BUFFER (gst_pad_pull(overlay->video_sinkpad));
- now = GST_BUFFER_TIMESTAMP(video_frame);
-
- /*
- * This state machine has a bug that can't be resolved easily.
- * (Needs a more complicated state machine.) Basically, if the
- * text that came from a buffer from the sink pad is being
- * displayed, and the default text is changed by set_parameter,
- * we'll incorrectly display the default text.
- *
- * Otherwise, this is a pretty decent state machine that handles
- * buffer timestamps and durations correctly. (I think)
- */
-
- while (overlay->next_buffer == NULL){
- GST_DEBUG("attempting to pull a buffer");
-
- /* read all text buffers until we get one "in the future" */
- if(!GST_PAD_IS_USABLE(overlay->text_sinkpad)){
- break;
- }
- overlay->next_buffer = GST_BUFFER (gst_pad_pull(overlay->text_sinkpad));
- if (!overlay->next_buffer)
- break;
-
- if (PAST_END(overlay->next_buffer, now)){
- gst_buffer_unref(overlay->next_buffer);
- overlay->next_buffer = NULL;
- }
+ GstTextOverlay *overlay;
+ GstBuffer *video_frame;
+ guint64 now;
+
+ g_return_if_fail (element != NULL);
+ g_return_if_fail (GST_IS_TEXTOVERLAY (element));
+ overlay = GST_TEXTOVERLAY (element);
+
+ video_frame = GST_BUFFER (gst_pad_pull (overlay->video_sinkpad));
+ now = GST_BUFFER_TIMESTAMP (video_frame);
+
+ /*
+ * This state machine has a bug that can't be resolved easily.
+ * (Needs a more complicated state machine.) Basically, if the
+ * text that came from a buffer from the sink pad is being
+ * displayed, and the default text is changed by set_parameter,
+ * we'll incorrectly display the default text.
+ *
+ * Otherwise, this is a pretty decent state machine that handles
+ * buffer timestamps and durations correctly. (I think)
+ */
+
+ while (overlay->next_buffer == NULL) {
+ GST_DEBUG ("attempting to pull a buffer");
+
+ /* read all text buffers until we get one "in the future" */
+ if (!GST_PAD_IS_USABLE (overlay->text_sinkpad)) {
+ break;
}
+ overlay->next_buffer = GST_BUFFER (gst_pad_pull (overlay->text_sinkpad));
+ if (!overlay->next_buffer)
+ break;
- if (overlay->next_buffer &&
- (GST_BUFFER_TIMESTAMP(overlay->next_buffer) <= now ||
- GST_BUFFER_TIMESTAMP(overlay->next_buffer) == GST_CLOCK_TIME_NONE)){
- GST_DEBUG("using new buffer");
-
- if (overlay->current_buffer){
- gst_buffer_unref (overlay->current_buffer);
- }
- overlay->current_buffer = overlay->next_buffer;
+ if (PAST_END (overlay->next_buffer, now)) {
+ gst_buffer_unref (overlay->next_buffer);
overlay->next_buffer = NULL;
+ }
+ }
- GST_DEBUG ( "rendering '%*s'",
- GST_BUFFER_SIZE(overlay->current_buffer),
- GST_BUFFER_DATA(overlay->current_buffer));
- pango_layout_set_markup(overlay->layout,
- GST_BUFFER_DATA(overlay->current_buffer),
- GST_BUFFER_SIZE(overlay->current_buffer));
- render_text(overlay);
- overlay->need_render = FALSE;
+ if (overlay->next_buffer &&
+ (GST_BUFFER_TIMESTAMP (overlay->next_buffer) <= now ||
+ GST_BUFFER_TIMESTAMP (overlay->next_buffer) == GST_CLOCK_TIME_NONE)) {
+ GST_DEBUG ("using new buffer");
+
+ if (overlay->current_buffer) {
+ gst_buffer_unref (overlay->current_buffer);
}
+ overlay->current_buffer = overlay->next_buffer;
+ overlay->next_buffer = NULL;
- if (overlay->current_buffer && PAST_END(overlay->current_buffer, now)){
- GST_DEBUG("dropping old buffer");
+ GST_DEBUG ("rendering '%*s'",
+ GST_BUFFER_SIZE (overlay->current_buffer),
+ GST_BUFFER_DATA (overlay->current_buffer));
+ pango_layout_set_markup (overlay->layout,
+ GST_BUFFER_DATA (overlay->current_buffer),
+ GST_BUFFER_SIZE (overlay->current_buffer));
+ render_text (overlay);
+ overlay->need_render = FALSE;
+ }
- gst_buffer_unref(overlay->current_buffer);
- overlay->current_buffer = NULL;
+ if (overlay->current_buffer && PAST_END (overlay->current_buffer, now)) {
+ GST_DEBUG ("dropping old buffer");
- overlay->need_render = TRUE;
- }
+ gst_buffer_unref (overlay->current_buffer);
+ overlay->current_buffer = NULL;
- if(overlay->need_render){
- GST_DEBUG ( "rendering '%s'", overlay->default_text);
- pango_layout_set_markup(overlay->layout,
- overlay->default_text, strlen(overlay->default_text));
- render_text(overlay);
+ overlay->need_render = TRUE;
+ }
- overlay->need_render = FALSE;
- }
+ if (overlay->need_render) {
+ GST_DEBUG ("rendering '%s'", overlay->default_text);
+ pango_layout_set_markup (overlay->layout,
+ overlay->default_text, strlen (overlay->default_text));
+ render_text (overlay);
+
+ overlay->need_render = FALSE;
+ }
- gst_textoverlay_video_chain(overlay->srcpad, GST_DATA (video_frame));
+ gst_textoverlay_video_chain (overlay->srcpad, GST_DATA (video_frame));
}
static GstElementStateReturn
-gst_textoverlay_change_state(GstElement *element)
+gst_textoverlay_change_state (GstElement * element)
{
- GstTextOverlay *overlay;
+ GstTextOverlay *overlay;
- overlay = GST_TEXTOVERLAY(element);
+ overlay = GST_TEXTOVERLAY (element);
- switch (GST_STATE_TRANSITION(element))
- {
+ switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_PAUSED_TO_PLAYING:
- break;
+ break;
case GST_STATE_PLAYING_TO_PAUSED:
- break;
+ break;
case GST_STATE_PAUSED_TO_READY:
- break;
- }
+ break;
+ }
- parent_class->change_state(element);
+ parent_class->change_state (element);
- return GST_STATE_SUCCESS;
+ return GST_STATE_SUCCESS;
}
static void
-gst_textoverlay_finalize(GObject *object)
+gst_textoverlay_finalize (GObject * object)
{
- GstTextOverlay *overlay = GST_TEXTOVERLAY(object);
-
- if (overlay->layout) {
- g_object_unref(overlay->layout);
- overlay->layout = NULL;
- }
- if (overlay->bitmap.buffer) {
- g_free(overlay->bitmap.buffer);
- overlay->bitmap.buffer = NULL;
- }
-
- G_OBJECT_CLASS(parent_class)->finalize(object);
+ GstTextOverlay *overlay = GST_TEXTOVERLAY (object);
+
+ if (overlay->layout) {
+ g_object_unref (overlay->layout);
+ overlay->layout = NULL;
+ }
+ if (overlay->bitmap.buffer) {
+ g_free (overlay->bitmap.buffer);
+ overlay->bitmap.buffer = NULL;
+ }
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
-gst_textoverlay_init(GstTextOverlay *overlay)
+gst_textoverlay_init (GstTextOverlay * overlay)
{
- /* video sink */
- overlay->video_sinkpad = gst_pad_new_from_template(
- gst_static_pad_template_get (&video_sink_template_factory), "video_sink");
+ /* video sink */
+ overlay->video_sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&video_sink_template_factory), "video_sink");
/* gst_pad_set_chain_function(overlay->video_sinkpad, gst_textoverlay_video_chain); */
- gst_pad_set_link_function(overlay->video_sinkpad, gst_textoverlay_video_sinkconnect);
- gst_element_add_pad(GST_ELEMENT(overlay), overlay->video_sinkpad);
-
- /* text sink */
- overlay->text_sinkpad = gst_pad_new_from_template(
- gst_static_pad_template_get (&text_sink_template_factory), "text_sink");
+ gst_pad_set_link_function (overlay->video_sinkpad,
+ gst_textoverlay_video_sinkconnect);
+ gst_element_add_pad (GST_ELEMENT (overlay), overlay->video_sinkpad);
+
+ /* text sink */
+ overlay->text_sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&text_sink_template_factory), "text_sink");
/* gst_pad_set_link_function(overlay->text_sinkpad, gst_textoverlay_text_sinkconnect); */
- gst_element_add_pad(GST_ELEMENT(overlay), overlay->text_sinkpad);
+ gst_element_add_pad (GST_ELEMENT (overlay), overlay->text_sinkpad);
- /* (video) source */
- overlay->srcpad = gst_pad_new_from_template(
- gst_static_pad_template_get (&textoverlay_src_template_factory), "src");
- gst_element_add_pad(GST_ELEMENT(overlay), overlay->srcpad);
+ /* (video) source */
+ overlay->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&textoverlay_src_template_factory), "src");
+ gst_element_add_pad (GST_ELEMENT (overlay), overlay->srcpad);
- overlay->layout = pango_layout_new(GST_TEXTOVERLAY_GET_CLASS(overlay)->pango_context);
- memset(&overlay->bitmap, 0, sizeof(overlay->bitmap));
+ overlay->layout =
+ pango_layout_new (GST_TEXTOVERLAY_GET_CLASS (overlay)->pango_context);
+ memset (&overlay->bitmap, 0, sizeof (overlay->bitmap));
- overlay->halign = GST_TEXT_OVERLAY_HALIGN_CENTER;
- overlay->valign = GST_TEXT_OVERLAY_VALIGN_BASELINE;
- overlay->x0 = overlay->y0 = 0;
+ overlay->halign = GST_TEXT_OVERLAY_HALIGN_CENTER;
+ overlay->valign = GST_TEXT_OVERLAY_VALIGN_BASELINE;
+ overlay->x0 = overlay->y0 = 0;
- overlay->default_text = g_strdup("");
- overlay->need_render = TRUE;
+ overlay->default_text = g_strdup ("");
+ overlay->need_render = TRUE;
- gst_element_set_loop_function(GST_ELEMENT(overlay), gst_textoverlay_loop);
+ gst_element_set_loop_function (GST_ELEMENT (overlay), gst_textoverlay_loop);
}
static void
-gst_textoverlay_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_textoverlay_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
- GstTextOverlay *overlay;
+ GstTextOverlay *overlay;
- /* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_TEXTOVERLAY(object));
- overlay = GST_TEXTOVERLAY(object);
+ /* it's not null if we got it, but it might not be ours */
+ g_return_if_fail (GST_IS_TEXTOVERLAY (object));
+ overlay = GST_TEXTOVERLAY (object);
- switch (prop_id)
- {
+ switch (prop_id) {
case ARG_TEXT:
- if(overlay->default_text){
- g_free(overlay->default_text);
- }
- overlay->default_text = g_strdup(g_value_get_string(value));
- overlay->need_render = TRUE;
- break;
+ if (overlay->default_text) {
+ g_free (overlay->default_text);
+ }
+ overlay->default_text = g_strdup (g_value_get_string (value));
+ overlay->need_render = TRUE;
+ break;
case ARG_VALIGN:
- if (strcasecmp(g_value_get_string(value), "baseline") == 0)
- overlay->valign = GST_TEXT_OVERLAY_VALIGN_BASELINE;
- else if (strcasecmp(g_value_get_string(value), "bottom") == 0)
- overlay->valign = GST_TEXT_OVERLAY_VALIGN_BOTTOM;
- else if (strcasecmp(g_value_get_string(value), "top") == 0)
- overlay->valign = GST_TEXT_OVERLAY_VALIGN_TOP;
- else
- g_warning("Invalid 'valign' property value: %s",
- g_value_get_string(value));
- break;
+ if (strcasecmp (g_value_get_string (value), "baseline") == 0)
+ overlay->valign = GST_TEXT_OVERLAY_VALIGN_BASELINE;
+ else if (strcasecmp (g_value_get_string (value), "bottom") == 0)
+ overlay->valign = GST_TEXT_OVERLAY_VALIGN_BOTTOM;
+ else if (strcasecmp (g_value_get_string (value), "top") == 0)
+ overlay->valign = GST_TEXT_OVERLAY_VALIGN_TOP;
+ else
+ g_warning ("Invalid 'valign' property value: %s",
+ g_value_get_string (value));
+ break;
case ARG_HALIGN:
- if (strcasecmp(g_value_get_string(value), "left") == 0)
- overlay->halign = GST_TEXT_OVERLAY_HALIGN_LEFT;
- else if (strcasecmp(g_value_get_string(value), "right") == 0)
- overlay->halign = GST_TEXT_OVERLAY_HALIGN_RIGHT;
- else if (strcasecmp(g_value_get_string(value), "center") == 0)
- overlay->halign = GST_TEXT_OVERLAY_HALIGN_CENTER;
- else
- g_warning("Invalid 'halign' property value: %s",
- g_value_get_string(value));
- break;
+ if (strcasecmp (g_value_get_string (value), "left") == 0)
+ overlay->halign = GST_TEXT_OVERLAY_HALIGN_LEFT;
+ else if (strcasecmp (g_value_get_string (value), "right") == 0)
+ overlay->halign = GST_TEXT_OVERLAY_HALIGN_RIGHT;
+ else if (strcasecmp (g_value_get_string (value), "center") == 0)
+ overlay->halign = GST_TEXT_OVERLAY_HALIGN_CENTER;
+ else
+ g_warning ("Invalid 'halign' property value: %s",
+ g_value_get_string (value));
+ break;
case ARG_X0:
- overlay->x0 = g_value_get_int(value);
- break;
+ overlay->x0 = g_value_get_int (value);
+ break;
case ARG_Y0:
- overlay->y0 = g_value_get_int(value);
- break;
+ overlay->y0 = g_value_get_int (value);
+ break;
case ARG_FONT_DESC:
{
- PangoFontDescription *desc;
- desc = pango_font_description_from_string(g_value_get_string(value));
- if (desc) {
- g_message("font description set: %s", g_value_get_string(value));
- pango_layout_set_font_description(overlay->layout, desc);
- pango_font_description_free(desc);
- render_text(overlay);
- } else
- g_warning("font description parse failed: %s", g_value_get_string(value));
- break;
+ PangoFontDescription *desc;
+
+ desc = pango_font_description_from_string (g_value_get_string (value));
+ if (desc) {
+ g_message ("font description set: %s", g_value_get_string (value));
+ pango_layout_set_font_description (overlay->layout, desc);
+ pango_font_description_free (desc);
+ render_text (overlay);
+ } else
+ g_warning ("font description parse failed: %s",
+ g_value_get_string (value));
+ break;
}
default:
- break;
- }
+ break;
+ }
}
static void
-gst_textoverlay_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_textoverlay_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
- GstTextOverlay *overlay;
+ GstTextOverlay *overlay;
- /* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_TEXTOVERLAY(object));
- overlay = GST_TEXTOVERLAY(object);
+ /* it's not null if we got it, but it might not be ours */
+ g_return_if_fail (GST_IS_TEXTOVERLAY (object));
+ overlay = GST_TEXTOVERLAY (object);
- switch (prop_id) {
+ switch (prop_id) {
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static gboolean
-plugin_init(GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "textoverlay", GST_RANK_PRIMARY, GST_TYPE_TEXTOVERLAY))
- return FALSE;
+ if (!gst_element_register (plugin, "textoverlay", GST_RANK_PRIMARY,
+ GST_TYPE_TEXTOVERLAY))
+ return FALSE;
- /*texttestsrc_plugin_init(module, plugin);*/
- /*subparse_plugin_init(module, plugin);*/
- return TRUE;
+ /*texttestsrc_plugin_init(module, plugin); */
+ /*subparse_plugin_init(module, plugin); */
+ return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"textoverlay",
- "Text overlay",
- plugin_init,
- VERSION,
- "GPL",
- GST_PACKAGE,
- GST_ORIGIN)
-
+ "Text overlay", plugin_init, VERSION, "GPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/pango/gsttextoverlay.h b/ext/pango/gsttextoverlay.h
index b039acac..08ad8145 100644
--- a/ext/pango/gsttextoverlay.h
+++ b/ext/pango/gsttextoverlay.h
@@ -6,7 +6,6 @@
#include <pango/pangoft2.h>
G_BEGIN_DECLS
-
#define GST_TYPE_TEXTOVERLAY (gst_textoverlay_get_type())
#define GST_TEXTOVERLAY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),\
GST_TYPE_TEXTOVERLAY, GstTextOverlay))
@@ -18,56 +17,60 @@ G_BEGIN_DECLS
GST_TYPE_TEXTOVERLAY))
#define GST_IS_TEXTOVERLAY_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),\
GST_TYPE_TEXTOVERLAY))
-
-typedef struct _GstTextOverlay GstTextOverlay;
+typedef struct _GstTextOverlay GstTextOverlay;
typedef struct _GstTextOverlayClass GstTextOverlayClass;
typedef enum _GstTextOverlayVAlign GstTextOverlayVAlign;
typedef enum _GstTextOverlayHAlign GstTextOverlayHAlign;
-enum _GstTextOverlayVAlign {
- GST_TEXT_OVERLAY_VALIGN_BASELINE,
- GST_TEXT_OVERLAY_VALIGN_BOTTOM,
- GST_TEXT_OVERLAY_VALIGN_TOP,
+enum _GstTextOverlayVAlign
+{
+ GST_TEXT_OVERLAY_VALIGN_BASELINE,
+ GST_TEXT_OVERLAY_VALIGN_BOTTOM,
+ GST_TEXT_OVERLAY_VALIGN_TOP,
};
-enum _GstTextOverlayHAlign {
- GST_TEXT_OVERLAY_HALIGN_LEFT,
- GST_TEXT_OVERLAY_HALIGN_CENTER,
- GST_TEXT_OVERLAY_HALIGN_RIGHT,
+enum _GstTextOverlayHAlign
+{
+ GST_TEXT_OVERLAY_HALIGN_LEFT,
+ GST_TEXT_OVERLAY_HALIGN_CENTER,
+ GST_TEXT_OVERLAY_HALIGN_RIGHT,
};
-struct _GstTextOverlay {
- GstElement element;
+struct _GstTextOverlay
+{
+ GstElement element;
- GstPad *video_sinkpad;
- GstPad *text_sinkpad;
- GstPad *srcpad;
- gint width;
- gint height;
- PangoLayout *layout;
- FT_Bitmap bitmap;
- gint bitmap_buffer_size;
- gint baseline_y;
- GstTextOverlayVAlign valign;
- GstTextOverlayHAlign halign;
- gint x0;
- gint y0;
- GstBuffer *current_buffer;
- GstBuffer *next_buffer;
- gchar *default_text;
- gboolean need_render;
+ GstPad *video_sinkpad;
+ GstPad *text_sinkpad;
+ GstPad *srcpad;
+ gint width;
+ gint height;
+ PangoLayout *layout;
+ FT_Bitmap bitmap;
+ gint bitmap_buffer_size;
+ gint baseline_y;
+ GstTextOverlayVAlign valign;
+ GstTextOverlayHAlign halign;
+ gint x0;
+ gint y0;
+ GstBuffer *current_buffer;
+ GstBuffer *next_buffer;
+ gchar *default_text;
+ gboolean need_render;
};
-struct _GstTextOverlayClass {
- GstElementClass parent_class;
+struct _GstTextOverlayClass
+{
+ GstElementClass parent_class;
- PangoContext *pango_context;
+ PangoContext *pango_context;
};
-GType gst_textoverlay_get_type(void) G_GNUC_CONST;
+GType
+gst_textoverlay_get_type (void)
+ G_GNUC_CONST;
G_END_DECLS
-
#endif /* __GST_TEXTOVERLAY_H */
diff --git a/ext/pango/gsttimeoverlay.c b/ext/pango/gsttimeoverlay.c
index 9a3b292e..9ce5c897 100644
--- a/ext/pango/gsttimeoverlay.c
+++ b/ext/pango/gsttimeoverlay.c
@@ -45,25 +45,30 @@
/* GstTimeoverlay signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static void gst_timeoverlay_base_init (gpointer g_class);
-static void gst_timeoverlay_class_init (gpointer g_class, gpointer class_data);
-static void gst_timeoverlay_init (GTypeInstance *instance, gpointer g_class);
+static void gst_timeoverlay_base_init (gpointer g_class);
+static void gst_timeoverlay_class_init (gpointer g_class, gpointer class_data);
+static void gst_timeoverlay_init (GTypeInstance * instance, gpointer g_class);
-static void gst_timeoverlay_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_timeoverlay_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_timeoverlay_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_timeoverlay_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static void gst_timeoverlay_planar411(GstVideofilter *videofilter, void *dest, void *src);
-static void gst_timeoverlay_setup(GstVideofilter *videofilter);
+static void gst_timeoverlay_planar411 (GstVideofilter * videofilter, void *dest,
+ void *src);
+static void gst_timeoverlay_setup (GstVideofilter * videofilter);
GType
gst_timeoverlay_get_type (void)
@@ -72,44 +77,43 @@ gst_timeoverlay_get_type (void)
if (!timeoverlay_type) {
static const GTypeInfo timeoverlay_info = {
- sizeof(GstTimeoverlayClass),
+ sizeof (GstTimeoverlayClass),
gst_timeoverlay_base_init,
NULL,
gst_timeoverlay_class_init,
NULL,
NULL,
- sizeof(GstTimeoverlay),
+ sizeof (GstTimeoverlay),
0,
gst_timeoverlay_init,
};
- timeoverlay_type = g_type_register_static(GST_TYPE_VIDEOFILTER,
- "GstTimeoverlay", &timeoverlay_info, 0);
+ timeoverlay_type = g_type_register_static (GST_TYPE_VIDEOFILTER,
+ "GstTimeoverlay", &timeoverlay_info, 0);
}
return timeoverlay_type;
}
static GstVideofilterFormat gst_timeoverlay_formats[] = {
- { "I420", 12, gst_timeoverlay_planar411, },
+ {"I420", 12, gst_timeoverlay_planar411,},
};
-
+
static void
gst_timeoverlay_base_init (gpointer g_class)
{
- static GstElementDetails timeoverlay_details = GST_ELEMENT_DETAILS (
- "Time Overlay",
- "Filter/Editor/Video",
- "Overlays the time on a video stream",
- "David Schleef <ds@schleef.org>"
- );
+ static GstElementDetails timeoverlay_details =
+ GST_ELEMENT_DETAILS ("Time Overlay",
+ "Filter/Editor/Video",
+ "Overlays the time 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, &timeoverlay_details);
- for(i=0;i<G_N_ELEMENTS(gst_timeoverlay_formats);i++){
- gst_videofilter_class_add_format(videofilter_class,
+ for (i = 0; i < G_N_ELEMENTS (gst_timeoverlay_formats); i++) {
+ gst_videofilter_class_add_format (videofilter_class,
gst_timeoverlay_formats + i);
}
@@ -126,10 +130,10 @@ gst_timeoverlay_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_TIMEOVERLAY_METHOD, GST_TIMEOVERLAY_METHOD_1,
- G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_METHOD,
+ g_param_spec_enum ("method", "method", "method",
+ GST_TYPE_TIMEOVERLAY_METHOD, GST_TIMEOVERLAY_METHOD_1,
+ G_PARAM_READWRITE));
#endif
gobject_class->set_property = gst_timeoverlay_set_property;
@@ -139,28 +143,29 @@ gst_timeoverlay_class_init (gpointer g_class, gpointer class_data)
}
static void
-gst_timeoverlay_init (GTypeInstance *instance, gpointer g_class)
+gst_timeoverlay_init (GTypeInstance * instance, gpointer g_class)
{
GstTimeoverlay *timeoverlay = GST_TIMEOVERLAY (instance);
GstVideofilter *videofilter;
- GST_DEBUG("gst_timeoverlay_init");
+ GST_DEBUG ("gst_timeoverlay_init");
- videofilter = GST_VIDEOFILTER(timeoverlay);
+ videofilter = GST_VIDEOFILTER (timeoverlay);
/* do stuff */
}
static void
-gst_timeoverlay_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_timeoverlay_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstTimeoverlay *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_TIMEOVERLAY(object));
- src = GST_TIMEOVERLAY(object);
+ g_return_if_fail (GST_IS_TIMEOVERLAY (object));
+ src = GST_TIMEOVERLAY (object);
- GST_DEBUG("gst_timeoverlay_set_property");
+ GST_DEBUG ("gst_timeoverlay_set_property");
switch (prop_id) {
#if 0
case ARG_METHOD:
@@ -173,13 +178,14 @@ gst_timeoverlay_set_property (GObject *object, guint prop_id, const GValue *valu
}
static void
-gst_timeoverlay_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_timeoverlay_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstTimeoverlay *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_TIMEOVERLAY(object));
- src = GST_TIMEOVERLAY(object);
+ g_return_if_fail (GST_IS_TIMEOVERLAY (object));
+ src = GST_TIMEOVERLAY (object);
switch (prop_id) {
#if 0
@@ -193,35 +199,29 @@ gst_timeoverlay_get_property (GObject *object, guint prop_id, GValue *value, GPa
}
}
-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, "timeoverlay", GST_RANK_NONE,
GST_TYPE_TIMEOVERLAY);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "timeoverlay",
- "Time overlay",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
-
-static void gst_timeoverlay_setup(GstVideofilter *videofilter)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "timeoverlay",
+ "Time overlay", plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
+
+ static void gst_timeoverlay_setup (GstVideofilter * videofilter)
{
GstTimeoverlay *timeoverlay;
PangoFontDescription *font_description;
PangoContext *context;
- g_return_if_fail(GST_IS_TIMEOVERLAY(videofilter));
- timeoverlay = GST_TIMEOVERLAY(videofilter);
+ g_return_if_fail (GST_IS_TIMEOVERLAY (videofilter));
+ timeoverlay = GST_TIMEOVERLAY (videofilter);
/* if any setup needs to be done, do it here */
@@ -246,7 +246,8 @@ static void gst_timeoverlay_setup(GstVideofilter *videofilter)
}
-static char *gst_timeoverlay_print_smpte_time(guint64 time)
+static char *
+gst_timeoverlay_print_smpte_time (guint64 time)
{
int hours;
int minutes;
@@ -254,21 +255,21 @@ static char *gst_timeoverlay_print_smpte_time(guint64 time)
int ms;
double x;
- x = rint((time + 500000)*1e-6);
+ x = rint ((time + 500000) * 1e-6);
- hours = floor(x/(60*60*1000));
- x -= hours*60*60*1000;
- minutes = floor(x/(60*1000));
- x -= minutes*60*1000;
- seconds = floor(x/(1000));
- x -= seconds*1000;
- ms = rint(x);
+ hours = floor (x / (60 * 60 * 1000));
+ x -= hours * 60 * 60 * 1000;
+ minutes = floor (x / (60 * 1000));
+ x -= minutes * 60 * 1000;
+ seconds = floor (x / (1000));
+ x -= seconds * 1000;
+ ms = rint (x);
- return g_strdup_printf("%02d:%02d:%02d.%03d",hours,minutes,seconds,ms);
+ return g_strdup_printf ("%02d:%02d:%02d.%03d", hours, minutes, seconds, ms);
}
-static void gst_timeoverlay_planar411(GstVideofilter *videofilter,
- void *dest, void *src)
+static void
+gst_timeoverlay_planar411 (GstVideofilter * videofilter, void *dest, void *src)
{
GstTimeoverlay *timeoverlay;
int width;
@@ -280,19 +281,21 @@ static void gst_timeoverlay_planar411(GstVideofilter *videofilter,
char *string;
int i;
- g_return_if_fail(GST_IS_TIMEOVERLAY(videofilter));
- timeoverlay = GST_TIMEOVERLAY(videofilter);
+ g_return_if_fail (GST_IS_TIMEOVERLAY (videofilter));
+ timeoverlay = GST_TIMEOVERLAY (videofilter);
- width = gst_videofilter_get_input_width(videofilter);
- height = gst_videofilter_get_input_height(videofilter);
+ width = gst_videofilter_get_input_width (videofilter);
+ height = gst_videofilter_get_input_height (videofilter);
- width = gst_videofilter_get_input_width(videofilter);
- height = gst_videofilter_get_input_height(videofilter);
+ width = gst_videofilter_get_input_width (videofilter);
+ height = gst_videofilter_get_input_height (videofilter);
layout = pango_layout_new (timeoverlay->context);
- string = gst_timeoverlay_print_smpte_time(GST_BUFFER_TIMESTAMP(videofilter->in_buf));
- pango_layout_set_text (layout, string, strlen(string));
- g_free(string);
+ string =
+ gst_timeoverlay_print_smpte_time (GST_BUFFER_TIMESTAMP (videofilter->
+ in_buf));
+ pango_layout_set_text (layout, string, strlen (string));
+ g_free (string);
pango_layout_set_alignment (layout, PANGO_ALIGN_LEFT);
pango_layout_set_width (layout, -1);
@@ -303,15 +306,15 @@ static void gst_timeoverlay_planar411(GstVideofilter *videofilter,
//hheight = 20;
- memcpy(dest, src, videofilter->from_buf_size);
+ memcpy (dest, src, videofilter->from_buf_size);
- for(i=0;i<b_height;i++){
- memset(dest + i*width, 0, b_width);
+ for (i = 0; i < b_height; i++) {
+ memset (dest + i * width, 0, b_width);
}
- for(i=0;i<b_height/2;i++){
- memset(dest + width*height + i*(width/2), 128, b_width/2);
- memset(dest + width*height + (width/2)*(height/2) + i*(width/2), 128,
- b_width/2);
+ for (i = 0; i < b_height / 2; i++) {
+ memset (dest + width * height + i * (width / 2), 128, b_width / 2);
+ memset (dest + width * height + (width / 2) * (height / 2) +
+ i * (width / 2), 128, b_width / 2);
}
bitmap.rows = b_height;
bitmap.width = b_width;
@@ -322,4 +325,3 @@ static void gst_timeoverlay_planar411(GstVideofilter *videofilter,
pango_ft2_render_layout (&bitmap, layout, 0, 0);
}
-
diff --git a/ext/pango/gsttimeoverlay.h b/ext/pango/gsttimeoverlay.h
index 505f8f04..a591bd6a 100644
--- a/ext/pango/gsttimeoverlay.h
+++ b/ext/pango/gsttimeoverlay.h
@@ -29,7 +29,6 @@
G_BEGIN_DECLS
-
#define GST_TYPE_TIMEOVERLAY \
(gst_timeoverlay_get_type())
#define GST_TIMEOVERLAY(obj) \
@@ -40,11 +39,11 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TIMEOVERLAY))
#define GST_IS_TIMEOVERLAY_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_TIMEOVERLAY))
-
typedef struct _GstTimeoverlay GstTimeoverlay;
typedef struct _GstTimeoverlayClass GstTimeoverlayClass;
-struct _GstTimeoverlay {
+struct _GstTimeoverlay
+{
GstVideofilter videofilter;
PangoFontDescription *font_description;
@@ -52,13 +51,12 @@ struct _GstTimeoverlay {
};
-struct _GstTimeoverlayClass {
+struct _GstTimeoverlayClass
+{
GstVideofilterClass parent_class;
};
-GType gst_timeoverlay_get_type(void);
+GType gst_timeoverlay_get_type (void);
G_END_DECLS
-
#endif /* __GST_TIMEOVERLAY_H__ */
-
diff --git a/ext/raw1394/gst1394.c b/ext/raw1394/gst1394.c
index 0a5a8b7a..250a5764 100644
--- a/ext/raw1394/gst1394.c
+++ b/ext/raw1394/gst1394.c
@@ -27,23 +27,17 @@
#include "gstdv1394src.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register(plugin, "dv1394src", GST_RANK_NONE, GST_TYPE_DV1394SRC))
+ if (!gst_element_register (plugin, "dv1394src", GST_RANK_NONE,
+ GST_TYPE_DV1394SRC))
return FALSE;
return TRUE;
}
-GST_PLUGIN_DEFINE(
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "gst1394",
- "Source for DV data via IEEE1394 interface",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-);
-
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "gst1394",
+ "Source for DV data via IEEE1394 interface",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN);
diff --git a/ext/raw1394/gstdv1394src.c b/ext/raw1394/gstdv1394src.c
index a044d0f3..9509ea2c 100644
--- a/ext/raw1394/gstdv1394src.c
+++ b/ext/raw1394/gstdv1394src.c
@@ -31,84 +31,85 @@
#define NTSC_FRAMESIZE 120000
/* Filter signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_CONSECUTIVE,
ARG_SKIP,
ARG_DROP_INCOMPLETE,
};
-static GstElementDetails gst_dv1394src_details = GST_ELEMENT_DETAILS (
- "Firewire (1394) DV Source",
- "Source/Video",
- "Source for DV video data from firewire port",
- "Erik Walthinsen <omega@temple-baptist.com>\n"
- "Daniel Fischer <dan@f3c.com>"
-);
+static GstElementDetails gst_dv1394src_details =
+GST_ELEMENT_DETAILS ("Firewire (1394) DV Source",
+ "Source/Video",
+ "Source for DV video data from firewire port",
+ "Erik Walthinsen <omega@temple-baptist.com>\n"
+ "Daniel Fischer <dan@f3c.com>");
#if 0
-static GstPadTemplate*
+static GstPadTemplate *
gst_dv1394src_factory (void)
{
static GstPadTemplate *template = NULL;
if (!template) {
- template = gst_pad_template_new (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- "dv1394src",
- "video/dv",
- gst_props_new (
- "format", GST_PROPS_LIST (
- G_TYPE_STRING ("NTSC"),
- G_TYPE_STRING ("PAL")
- ),
- NULL)
- ),
- NULL);
+ template = gst_pad_template_new ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("dv1394src",
+ "video/dv",
+ gst_props_new ("format", GST_PROPS_LIST (G_TYPE_STRING ("NTSC"),
+ G_TYPE_STRING ("PAL")
+ ), NULL)
+ ), NULL);
}
return template;
}
#endif
-static void gst_dv1394src_base_init (gpointer g_class);
-static void gst_dv1394src_class_init (GstDV1394SrcClass *klass);
-static void gst_dv1394src_init (GstDV1394Src *filter);
+static void gst_dv1394src_base_init (gpointer g_class);
+static void gst_dv1394src_class_init (GstDV1394SrcClass * klass);
+static void gst_dv1394src_init (GstDV1394Src * filter);
-static void gst_dv1394src_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_dv1394src_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_dv1394src_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_dv1394src_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static GstElementStateReturn gst_dv1394src_change_state (GstElement *element);
+static GstElementStateReturn gst_dv1394src_change_state (GstElement * element);
-static GstData * gst_dv1394src_get (GstPad *pad);
+static GstData *gst_dv1394src_get (GstPad * pad);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_filter_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_dv1394src_get_type(void) {
+gst_dv1394src_get_type (void)
+{
static GType gst_dv1394src_type = 0;
if (!gst_dv1394src_type) {
static const GTypeInfo gst_dv1394src_info = {
- sizeof(GstDV1394Src),
+ sizeof (GstDV1394Src),
gst_dv1394src_base_init,
NULL,
- (GClassInitFunc)gst_dv1394src_class_init,
+ (GClassInitFunc) gst_dv1394src_class_init,
NULL,
NULL,
- sizeof(GstDV1394Src),
+ sizeof (GstDV1394Src),
0,
- (GInstanceInitFunc)gst_dv1394src_init,
+ (GInstanceInitFunc) gst_dv1394src_init,
};
- gst_dv1394src_type = g_type_register_static(GST_TYPE_ELEMENT, "DV1394Src", &gst_dv1394src_info, 0);
+ gst_dv1394src_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "DV1394Src",
+ &gst_dv1394src_info, 0);
}
return gst_dv1394src_type;
}
@@ -122,25 +123,26 @@ gst_dv1394src_base_init (gpointer g_class)
}
static void
-gst_dv1394src_class_init (GstDV1394SrcClass *klass)
+gst_dv1394src_class_init (GstDV1394SrcClass * 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_CONSECUTIVE,
- g_param_spec_int("consecutive","consecutive frames","send n consecutive frames after skipping",
- 1, G_MAXINT,1,G_PARAM_READWRITE));
- g_object_class_install_property( G_OBJECT_CLASS(klass), ARG_SKIP,
- g_param_spec_int("skip","skip frames","skip n frames",
- 0, G_MAXINT,1,G_PARAM_READWRITE));
- g_object_class_install_property( G_OBJECT_CLASS(klass), ARG_DROP_INCOMPLETE,
- g_param_spec_boolean("drop_incomplete","drop_incomplete","drop incomplete frames",
- TRUE, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_CONSECUTIVE,
+ g_param_spec_int ("consecutive", "consecutive frames",
+ "send n consecutive frames after skipping", 1, G_MAXINT, 1,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SKIP,
+ g_param_spec_int ("skip", "skip frames", "skip n frames", 0, G_MAXINT, 1,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DROP_INCOMPLETE,
+ g_param_spec_boolean ("drop_incomplete", "drop_incomplete",
+ "drop incomplete frames", TRUE, 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_dv1394src_set_property;
gobject_class->get_property = gst_dv1394src_get_property;
@@ -149,7 +151,7 @@ gst_dv1394src_class_init (GstDV1394SrcClass *klass)
}
static void
-gst_dv1394src_init (GstDV1394Src *dv1394src)
+gst_dv1394src_init (GstDV1394Src * dv1394src)
{
dv1394src->srcpad = gst_pad_new ("src", GST_PAD_SRC);
gst_pad_set_get_function (dv1394src->srcpad, gst_dv1394src_get);
@@ -158,188 +160,199 @@ gst_dv1394src_init (GstDV1394Src *dv1394src)
dv1394src->card = 0;
dv1394src->port = 0;
dv1394src->channel = 63;
-
+
dv1394src->consecutive = 1;
dv1394src->skip = 0;
dv1394src->drop_incomplete = TRUE;
-
+
/* initialized when first header received */
- dv1394src->frameSize=0;
-
+ dv1394src->frameSize = 0;
+
dv1394src->buf = NULL;
dv1394src->frame = NULL;
dv1394src->frameSequence = 0;
}
static void
-gst_dv1394src_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_dv1394src_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstDV1394Src *filter;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_DV1394SRC(object));
- filter = GST_DV1394SRC(object);
+ g_return_if_fail (GST_IS_DV1394SRC (object));
+ filter = GST_DV1394SRC (object);
switch (prop_id) {
case ARG_SKIP:
- filter->skip = g_value_get_int(value);
- break;
+ filter->skip = g_value_get_int (value);
+ break;
case ARG_CONSECUTIVE:
- filter->consecutive = g_value_get_int(value);
- break;
+ filter->consecutive = g_value_get_int (value);
+ break;
case ARG_DROP_INCOMPLETE:
- filter->drop_incomplete = g_value_get_boolean(value);
- break;
+ filter->drop_incomplete = g_value_get_boolean (value);
+ break;
default:
break;
}
}
static void
-gst_dv1394src_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_dv1394src_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstDV1394Src *filter;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_DV1394SRC(object));
- filter = GST_DV1394SRC(object);
+ g_return_if_fail (GST_IS_DV1394SRC (object));
+ filter = GST_DV1394SRC (object);
switch (prop_id) {
case ARG_SKIP:
- g_value_set_int( value, filter->skip );
- break;
+ g_value_set_int (value, filter->skip);
+ break;
case ARG_CONSECUTIVE:
- g_value_set_int( value, filter->consecutive );
- break;
+ g_value_set_int (value, filter->consecutive);
+ break;
case ARG_DROP_INCOMPLETE:
- g_value_set_boolean( value, filter->drop_incomplete );
- break;
+ g_value_set_boolean (value, filter->drop_incomplete);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
-static
-int gst_dv1394src_iso_receive(raw1394handle_t handle,int channel,size_t len,quadlet_t *data) {
- GstDV1394Src *dv1394src = GST_DV1394SRC (raw1394_get_userdata(handle));
+static int
+gst_dv1394src_iso_receive (raw1394handle_t handle, int channel, size_t len,
+ quadlet_t * data)
+{
+ GstDV1394Src *dv1394src = GST_DV1394SRC (raw1394_get_userdata (handle));
if (len > 16) {
- /*
- the following code taken from kino-0.51 (Dan Dennedy/Charles Yates)
- */
- unsigned char *p = (unsigned char*) & data[3];
- int section_type = p[0] >> 5; /* section type is in bits 5 - 7 */
- int dif_sequence = p[1] >> 4; /* dif sequence number is in bits 4 - 7 */
- int dif_block = p[2];
-
- /* if we are at the beginning of a frame,
- we set buf=frame, and alloc a new buffer for frame
- */
-
- if (section_type == 0 && dif_sequence == 0) { // dif header
-
- if( !dv1394src->negotiated) {
- // figure format (NTSC/PAL)
- if( p[3] & 0x80 ) {
- // PAL
- dv1394src->frameSize = PAL_FRAMESIZE;
- GST_DEBUG ("PAL data");
- if (gst_pad_try_set_caps (dv1394src->srcpad,
- gst_caps_new_simple ("video/dv",
- "format", G_TYPE_STRING, "PAL", NULL)) <= 0) {
- GST_ELEMENT_ERROR (dv1394src, CORE, NEGOTIATION, (NULL),
- ("Could not set source caps for PAL"));
- return 0;
- }
- } else {
- // NTSC (untested)
- dv1394src->frameSize = NTSC_FRAMESIZE;
- GST_DEBUG ("NTSC data [untested] - please report success/failure to <dan@f3c.com>");
- if (gst_pad_try_set_caps (dv1394src->srcpad,
- gst_caps_new_simple ("video/dv",
- "format", G_TYPE_STRING, "NTSC", NULL)) <= 0) {
- GST_ELEMENT_ERROR (dv1394src, CORE, NEGOTIATION, (NULL),
- ("Could not set source caps for NTSC"));
- return 0;
- }
- }
- dv1394src->negotiated = TRUE;
- }
-
- // drop last frame when not complete
- if( !dv1394src->drop_incomplete || dv1394src->bytesInFrame == dv1394src->frameSize ) {
- dv1394src->buf = dv1394src->frame;
- } else {
- GST_INFO_OBJECT (GST_ELEMENT(dv1394src), "incomplete frame dropped");
- }
- dv1394src->frame = NULL;
-
- dv1394src->frameSequence++;
-
- if( dv1394src->frameSequence % (dv1394src->skip+dv1394src->consecutive) < dv1394src->consecutive ) {
- dv1394src->frame = gst_buffer_new_and_alloc (dv1394src->frameSize);
- }
- dv1394src->bytesInFrame = 0;
- }
-
- if (dv1394src->frame != NULL) {
- void *data = GST_BUFFER_DATA( dv1394src->frame );
-
-
- switch (section_type) {
- case 0: /* 1 Header block */
- /* p[3] |= 0x80; // hack to force PAL data */
- memcpy(data + dif_sequence * 150 * 80, p, 480);
- break;
-
- case 1: /* 2 Subcode blocks */
- memcpy(data + dif_sequence * 150 * 80 + (1 + dif_block) * 80, p, 480);
- break;
-
- case 2: /* 3 VAUX blocks */
- memcpy(data + dif_sequence * 150 * 80 + (3 + dif_block) * 80, p, 480);
- break;
-
- case 3: /* 9 Audio blocks interleaved with video */
- memcpy(data + dif_sequence * 150 * 80 + (6 + dif_block * 16) * 80, p, 480);
- break;
-
- case 4: /* 135 Video blocks interleaved with audio */
- memcpy(data + dif_sequence * 150 * 80 + (7 + (dif_block / 15) + dif_block) * 80, p, 480);
- break;
-
- default: /* we can´t handle any other data */
- break;
- }
- dv1394src->bytesInFrame += 480;
- }
+ /*
+ the following code taken from kino-0.51 (Dan Dennedy/Charles Yates)
+ */
+ unsigned char *p = (unsigned char *) &data[3];
+ int section_type = p[0] >> 5; /* section type is in bits 5 - 7 */
+ int dif_sequence = p[1] >> 4; /* dif sequence number is in bits 4 - 7 */
+ int dif_block = p[2];
+
+ /* if we are at the beginning of a frame,
+ we set buf=frame, and alloc a new buffer for frame
+ */
+
+ if (section_type == 0 && dif_sequence == 0) { // dif header
+
+ if (!dv1394src->negotiated) {
+ // figure format (NTSC/PAL)
+ if (p[3] & 0x80) {
+ // PAL
+ dv1394src->frameSize = PAL_FRAMESIZE;
+ GST_DEBUG ("PAL data");
+ if (gst_pad_try_set_caps (dv1394src->srcpad,
+ gst_caps_new_simple ("video/dv",
+ "format", G_TYPE_STRING, "PAL", NULL)) <= 0) {
+ GST_ELEMENT_ERROR (dv1394src, CORE, NEGOTIATION, (NULL),
+ ("Could not set source caps for PAL"));
+ return 0;
+ }
+ } else {
+ // NTSC (untested)
+ dv1394src->frameSize = NTSC_FRAMESIZE;
+ GST_DEBUG
+ ("NTSC data [untested] - please report success/failure to <dan@f3c.com>");
+ if (gst_pad_try_set_caps (dv1394src->srcpad,
+ gst_caps_new_simple ("video/dv", "format", G_TYPE_STRING,
+ "NTSC", NULL)) <= 0) {
+ GST_ELEMENT_ERROR (dv1394src, CORE, NEGOTIATION, (NULL),
+ ("Could not set source caps for NTSC"));
+ return 0;
+ }
+ }
+ dv1394src->negotiated = TRUE;
+ }
+ // drop last frame when not complete
+ if (!dv1394src->drop_incomplete
+ || dv1394src->bytesInFrame == dv1394src->frameSize) {
+ dv1394src->buf = dv1394src->frame;
+ } else {
+ GST_INFO_OBJECT (GST_ELEMENT (dv1394src), "incomplete frame dropped");
+ }
+ dv1394src->frame = NULL;
+
+ dv1394src->frameSequence++;
+
+ if (dv1394src->frameSequence % (dv1394src->skip +
+ dv1394src->consecutive) < dv1394src->consecutive) {
+ dv1394src->frame = gst_buffer_new_and_alloc (dv1394src->frameSize);
+ }
+ dv1394src->bytesInFrame = 0;
+ }
+
+ if (dv1394src->frame != NULL) {
+ void *data = GST_BUFFER_DATA (dv1394src->frame);
+
+
+ switch (section_type) {
+ case 0: /* 1 Header block */
+ /* p[3] |= 0x80; // hack to force PAL data */
+ memcpy (data + dif_sequence * 150 * 80, p, 480);
+ break;
+
+ case 1: /* 2 Subcode blocks */
+ memcpy (data + dif_sequence * 150 * 80 + (1 + dif_block) * 80, p,
+ 480);
+ break;
+
+ case 2: /* 3 VAUX blocks */
+ memcpy (data + dif_sequence * 150 * 80 + (3 + dif_block) * 80, p,
+ 480);
+ break;
+
+ case 3: /* 9 Audio blocks interleaved with video */
+ memcpy (data + dif_sequence * 150 * 80 + (6 + dif_block * 16) * 80, p,
+ 480);
+ break;
+
+ case 4: /* 135 Video blocks interleaved with audio */
+ memcpy (data + dif_sequence * 150 * 80 + (7 + (dif_block / 15) +
+ dif_block) * 80, p, 480);
+ break;
+
+ default: /* we can´t handle any other data */
+ break;
+ }
+ dv1394src->bytesInFrame += 480;
+ }
}
return 0;
}
-static
-int gst_dv1394src_bus_reset(raw1394handle_t handle,
- unsigned int generation) {
- GST_INFO_OBJECT (GST_DV1394SRC(raw1394_get_userdata(handle)),"have bus reset");
+static int
+gst_dv1394src_bus_reset (raw1394handle_t handle, unsigned int generation)
+{
+ GST_INFO_OBJECT (GST_DV1394SRC (raw1394_get_userdata (handle)),
+ "have bus reset");
return 0;
}
static GstData *
-gst_dv1394src_get (GstPad *pad)
+gst_dv1394src_get (GstPad * pad)
{
- GstDV1394Src *dv1394src = GST_DV1394SRC (GST_PAD_PARENT(pad));
+ GstDV1394Src *dv1394src = GST_DV1394SRC (GST_PAD_PARENT (pad));
dv1394src->buf = NULL;
while (dv1394src->buf == NULL)
- raw1394_loop_iterate(dv1394src->handle);
+ raw1394_loop_iterate (dv1394src->handle);
- return GST_DATA(dv1394src->buf);
-}
+ return GST_DATA (dv1394src->buf);
+}
static GstElementStateReturn
-gst_dv1394src_change_state (GstElement *element)
+gst_dv1394src_change_state (GstElement * element)
{
GstDV1394Src *dv1394src;
@@ -348,46 +361,49 @@ gst_dv1394src_change_state (GstElement *element)
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_NULL_TO_READY:
- if ((dv1394src->handle = raw1394_new_handle()) == NULL) {
- GST_INFO_OBJECT (dv1394src,"can't get raw1394 handle");
- return GST_STATE_FAILURE;
+ if ((dv1394src->handle = raw1394_new_handle ()) == NULL) {
+ GST_INFO_OBJECT (dv1394src, "can't get raw1394 handle");
+ return GST_STATE_FAILURE;
}
- raw1394_set_userdata(dv1394src->handle,dv1394src);
- dv1394src->numcards = raw1394_get_port_info(dv1394src->handle,dv1394src->pinfo,16);
+ raw1394_set_userdata (dv1394src->handle, dv1394src);
+ dv1394src->numcards =
+ raw1394_get_port_info (dv1394src->handle, dv1394src->pinfo, 16);
if (dv1394src->numcards == 0) {
- GST_INFO_OBJECT (dv1394src,"no cards available for raw1394");
- return GST_STATE_FAILURE;
+ GST_INFO_OBJECT (dv1394src, "no cards available for raw1394");
+ return GST_STATE_FAILURE;
}
if (dv1394src->pinfo[dv1394src->card].nodes <= 1) {
- GST_INFO_OBJECT (dv1394src,"there are no nodes on the 1394 bus");
- return GST_STATE_FAILURE;
+ GST_INFO_OBJECT (dv1394src, "there are no nodes on the 1394 bus");
+ return GST_STATE_FAILURE;
}
- if (raw1394_set_port(dv1394src->handle,dv1394src->port) < 0) {
- GST_INFO_OBJECT (dv1394src,"can't set 1394 port %d",dv1394src->port);
- return GST_STATE_FAILURE;
+ if (raw1394_set_port (dv1394src->handle, dv1394src->port) < 0) {
+ GST_INFO_OBJECT (dv1394src, "can't set 1394 port %d", dv1394src->port);
+ return GST_STATE_FAILURE;
}
- raw1394_set_iso_handler(dv1394src->handle,dv1394src->channel,gst_dv1394src_iso_receive);
- raw1394_set_bus_reset_handler(dv1394src->handle,gst_dv1394src_bus_reset);
+ raw1394_set_iso_handler (dv1394src->handle, dv1394src->channel,
+ gst_dv1394src_iso_receive);
+ raw1394_set_bus_reset_handler (dv1394src->handle,
+ gst_dv1394src_bus_reset);
dv1394src->started = FALSE;
GST_DEBUG ("successfully opened up 1394 connection");
break;
case GST_STATE_PAUSED_TO_PLAYING:
- if (raw1394_start_iso_rcv(dv1394src->handle,dv1394src->channel) < 0) {
- GST_INFO_OBJECT (dv1394src,"can't start 1394 iso receive");
- return GST_STATE_FAILURE;
+ if (raw1394_start_iso_rcv (dv1394src->handle, dv1394src->channel) < 0) {
+ GST_INFO_OBJECT (dv1394src, "can't start 1394 iso receive");
+ return GST_STATE_FAILURE;
}
break;
case GST_STATE_PLAYING_TO_PAUSED:
- raw1394_stop_iso_rcv(dv1394src->handle, dv1394src->channel);
+ raw1394_stop_iso_rcv (dv1394src->handle, dv1394src->channel);
break;
case GST_STATE_READY_TO_NULL:
- raw1394_destroy_handle(dv1394src->handle);
+ raw1394_destroy_handle (dv1394src->handle);
break;
default:
break;
}
- /* if we haven't failed already, give the parent class a chance to ;-) */
+ /* if we haven't failed already, give the parent class a chance to ;-) */
if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
diff --git a/ext/raw1394/gstdv1394src.h b/ext/raw1394/gstdv1394src.h
index 7d384fd0..2ba4ab3d 100644
--- a/ext/raw1394/gstdv1394src.h
+++ b/ext/raw1394/gstdv1394src.h
@@ -27,8 +27,9 @@
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_DV1394SRC \
@@ -42,45 +43,47 @@ extern "C" {
#define GST_IS_DV1394SRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DV1394SRC))
-typedef struct _GstDV1394Src GstDV1394Src;
-typedef struct _GstDV1394SrcClass GstDV1394SrcClass;
+ typedef struct _GstDV1394Src GstDV1394Src;
+ typedef struct _GstDV1394SrcClass GstDV1394SrcClass;
-struct _GstDV1394Src {
- GstElement element;
+ struct _GstDV1394Src
+ {
+ GstElement element;
- GstPad *srcpad;
+ GstPad *srcpad;
- // consecutive=2, skip=4 will skip 4 frames, then let 2 consecutive ones thru
- gint consecutive;
- gint skip;
- gboolean drop_incomplete;
+ // consecutive=2, skip=4 will skip 4 frames, then let 2 consecutive ones thru
+ gint consecutive;
+ gint skip;
+ gboolean drop_incomplete;
- int numcards,numports;
- int card,port,channel;
+ int numcards, numports;
+ int card, port, channel;
- struct raw1394_portinfo pinfo[16];
- raw1394handle_t handle;
+ struct raw1394_portinfo pinfo[16];
+ raw1394handle_t handle;
- gboolean started;
- GstBuffer *buf;
-
- GstBuffer *frame;
- guint frameSize;
- guint bytesInFrame;
- guint frameSequence;
+ gboolean started;
+ GstBuffer *buf;
- gboolean negotiated;
-};
+ GstBuffer *frame;
+ guint frameSize;
+ guint bytesInFrame;
+ guint frameSequence;
-struct _GstDV1394SrcClass {
- GstElementClass parent_class;
-};
+ gboolean negotiated;
+ };
-GType gst_dv1394src_get_type(void);
+ struct _GstDV1394SrcClass
+ {
+ GstElementClass parent_class;
+ };
+
+ GType gst_dv1394src_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_GST1394_H__ */
+#endif /* __GST_GST1394_H__ */
diff --git a/ext/shout2/gstshout2.c b/ext/shout2/gstshout2.c
index 3b07dd7d..4a1d4a1e 100644
--- a/ext/shout2/gstshout2.c
+++ b/ext/shout2/gstshout2.c
@@ -29,177 +29,163 @@ static GstElementDetails shout2send_details = {
"An Icecast plugin",
"Sink/Network",
"Sends data to an icecast server",
- "Wim Taymans <wim.taymans@chello.be>\n"
- "Pedro Corte-Real <typo@netcabo.pt>"
+ "Wim Taymans <wim.taymans@chello.be>\n" "Pedro Corte-Real <typo@netcabo.pt>"
};
unsigned int audio_format = 100;
/* Shout2send signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
- ARG_IP, /* the ip of the server */
- ARG_PORT, /* the encoder port number on the server */
- ARG_PASSWORD, /* the encoder password on the server */
- ARG_PUBLIC, /* is this stream public? */
- ARG_NAME, /* Name of the stream */
- ARG_DESCRIPTION, /* Description of the stream */
- ARG_GENRE, /* Genre of the stream */
-
- ARG_PROTOCOL, /* Protocol to connect with */
-
- ARG_MOUNT, /* mountpoint of stream (icecast only) */
- ARG_URL, /* Url of stream (I'm guessing) */
+ ARG_IP, /* the ip of the server */
+ ARG_PORT, /* the encoder port number on the server */
+ ARG_PASSWORD, /* the encoder password on the server */
+ ARG_PUBLIC, /* is this stream public? */
+ ARG_NAME, /* Name of the stream */
+ ARG_DESCRIPTION, /* Description of the stream */
+ ARG_GENRE, /* Genre of the stream */
+
+ ARG_PROTOCOL, /* Protocol to connect with */
+
+ ARG_MOUNT, /* mountpoint of stream (icecast only) */
+ ARG_URL, /* Url of stream (I'm guessing) */
};
-static GstPadTemplate*
+static GstPadTemplate *
sink_template_factory (void)
{
static GstPadTemplate *template = NULL;
-
+
if (!template) {
- template = gst_pad_template_new (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- gst_caps_new (
- "shout2send_sink",
- "application/ogg",
- NULL),
- gst_caps_new (
- "shout2send_sink",
- "audio/mpeg",
- gst_props_new (
- "mpegversion", GST_PROPS_INT (1),
- "layer", GST_PROPS_INT_RANGE (1, 3),
- NULL
- )),
- NULL);
+ template = gst_pad_template_new ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ gst_caps_new ("shout2send_sink",
+ "application/ogg",
+ NULL),
+ gst_caps_new ("shout2send_sink",
+ "audio/mpeg",
+ gst_props_new ("mpegversion", GST_PROPS_INT (1),
+ "layer", GST_PROPS_INT_RANGE (1, 3), NULL)), NULL);
}
return template;
}
-static void gst_shout2send_class_init (GstShout2sendClass *klass);
-static void gst_shout2send_base_init (GstShout2sendClass *klass);
-static void gst_shout2send_init (GstShout2send *shout2send);
+static void gst_shout2send_class_init (GstShout2sendClass * klass);
+static void gst_shout2send_base_init (GstShout2sendClass * klass);
+static void gst_shout2send_init (GstShout2send * shout2send);
-static void gst_shout2send_chain (GstPad *pad, GstData *_data);
-static GstPadLinkReturn gst_shout2send_connect (GstPad *pad, GstCaps *caps);
+static void gst_shout2send_chain (GstPad * pad, GstData * _data);
+static GstPadLinkReturn gst_shout2send_connect (GstPad * pad, GstCaps * caps);
-static void gst_shout2send_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_shout2send_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_shout2send_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_shout2send_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static GstElementStateReturn gst_shout2send_change_state (GstElement *element);
+static GstElementStateReturn gst_shout2send_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_shout2send_signals[LAST_SIGNAL] = { 0 }; */
#define GST_TYPE_SHOUT_PROTOCOL (gst_shout2send_protocol_get_type())
static GType
-gst_shout2send_protocol_get_type (void)
+gst_shout2send_protocol_get_type (void)
{
static GType shout2send_protocol_type = 0;
static GEnumValue shout2send_protocol[] = {
- { SHOUT2SEND_PROTOCOL_ICE, "1", "Ice Protocol"},
- { SHOUT2SEND_PROTOCOL_XAUDIOCAST, "2", "Xaudiocast Protocol (icecast 1.3.x)"},
- { SHOUT2SEND_PROTOCOL_ICY, "3", "Icy Protocol (ShoutCast)"},
- { SHOUT2SEND_PROTOCOL_HTTP, "4", "Http Protocol (icecast 2.x)"},
+ {SHOUT2SEND_PROTOCOL_ICE, "1", "Ice Protocol"},
+ {SHOUT2SEND_PROTOCOL_XAUDIOCAST, "2",
+ "Xaudiocast Protocol (icecast 1.3.x)"},
+ {SHOUT2SEND_PROTOCOL_ICY, "3", "Icy Protocol (ShoutCast)"},
+ {SHOUT2SEND_PROTOCOL_HTTP, "4", "Http Protocol (icecast 2.x)"},
{0, NULL, NULL},
};
if (!shout2send_protocol_type) {
- shout2send_protocol_type = g_enum_register_static ("GstShout2SendProtocol", shout2send_protocol);
+ shout2send_protocol_type =
+ g_enum_register_static ("GstShout2SendProtocol", shout2send_protocol);
}
return shout2send_protocol_type;
}
GType
-gst_shout2send_get_type(void)
+gst_shout2send_get_type (void)
{
static GType shout2send_type = 0;
if (!shout2send_type) {
static const GTypeInfo shout2send_info = {
- sizeof(GstShout2sendClass),
- (GBaseInitFunc)gst_shout2send_base_init,
+ sizeof (GstShout2sendClass),
+ (GBaseInitFunc) gst_shout2send_base_init,
NULL,
- (GClassInitFunc)gst_shout2send_class_init,
+ (GClassInitFunc) gst_shout2send_class_init,
NULL,
NULL,
- sizeof(GstShout2send),
+ sizeof (GstShout2send),
0,
- (GInstanceInitFunc)gst_shout2send_init,
+ (GInstanceInitFunc) gst_shout2send_init,
};
- shout2send_type = g_type_register_static(GST_TYPE_ELEMENT, "GstShout2send", &shout2send_info, 0);
+ shout2send_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstShout2send",
+ &shout2send_info, 0);
}
return shout2send_type;
}
static void
-gst_shout2send_base_init (GstShout2sendClass *klass)
+gst_shout2send_base_init (GstShout2sendClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class, sink_template_factory());
+ gst_element_class_add_pad_template (element_class, sink_template_factory ());
gst_element_class_set_details (element_class, &shout2send_details);
}
static void
-gst_shout2send_class_init (GstShout2sendClass *klass)
+gst_shout2send_class_init (GstShout2sendClass * 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_IP,
- g_param_spec_string("ip","ip","ip",
- NULL, G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PORT,
- g_param_spec_int("port","port","port",
- 1,G_MAXUSHORT,8000,G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_IP, g_param_spec_string ("ip", "ip", "ip", NULL, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PORT, g_param_spec_int ("port", "port", "port", 1, G_MAXUSHORT, 8000, G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PASSWORD,
- g_param_spec_string("password","password","password",
- NULL, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PASSWORD, g_param_spec_string ("password", "password", "password", NULL, G_PARAM_READWRITE)); /* CHECKME */
/* metadata */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_NAME,
- g_param_spec_string("name","name","name",
- NULL, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_NAME, g_param_spec_string ("name", "name", "name", NULL, G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DESCRIPTION,
- g_param_spec_string("description","description","description",
- NULL, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DESCRIPTION, g_param_spec_string ("description", "description", "description", NULL, G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_GENRE,
- g_param_spec_string("genre","genre","genre",
- NULL, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_GENRE, g_param_spec_string ("genre", "genre", "genre", NULL, G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PROTOCOL,
- g_param_spec_enum ("protocol", "protocol", "Connection Protocol to use",
- GST_TYPE_SHOUT_PROTOCOL, SHOUT2SEND_PROTOCOL_HTTP, G_PARAM_READWRITE));
+ g_param_spec_enum ("protocol", "protocol", "Connection Protocol to use",
+ GST_TYPE_SHOUT_PROTOCOL, SHOUT2SEND_PROTOCOL_HTTP,
+ G_PARAM_READWRITE));
/* icecast only */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MOUNT,
- g_param_spec_string("mount","mount","mount",
- NULL, G_PARAM_READWRITE)); /* CHECKME */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MOUNT, g_param_spec_string ("mount", "mount", "mount", NULL, G_PARAM_READWRITE)); /* CHECKME */
+
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_URL, g_param_spec_string ("url", "url", "url", NULL, G_PARAM_READWRITE)); /* CHECKME */
+
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_URL,
- g_param_spec_string("url","url","url",
- NULL, G_PARAM_READWRITE)); /* CHECKME */
-
-
gobject_class->set_property = gst_shout2send_set_property;
gobject_class->get_property = gst_shout2send_get_property;
@@ -207,11 +193,12 @@ gst_shout2send_class_init (GstShout2sendClass *klass)
}
static void
-gst_shout2send_init (GstShout2send *shout2send)
+gst_shout2send_init (GstShout2send * shout2send)
{
- shout2send->sinkpad = gst_pad_new_from_template (sink_template_factory (), "sink");
- gst_element_add_pad(GST_ELEMENT(shout2send),shout2send->sinkpad);
- gst_pad_set_chain_function(shout2send->sinkpad,gst_shout2send_chain);
+ shout2send->sinkpad =
+ gst_pad_new_from_template (sink_template_factory (), "sink");
+ gst_element_add_pad (GST_ELEMENT (shout2send), shout2send->sinkpad);
+ gst_pad_set_chain_function (shout2send->sinkpad, gst_shout2send_chain);
gst_pad_set_link_function (shout2send->sinkpad, gst_shout2send_connect);
@@ -227,15 +214,15 @@ gst_shout2send_init (GstShout2send *shout2send)
}
static void
-gst_shout2send_chain (GstPad *pad, GstData *_data)
+gst_shout2send_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstShout2send *shout2send;
glong ret;
- 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);
shout2send = GST_SHOUT2SEND (GST_OBJECT_PARENT (pad));
@@ -243,9 +230,9 @@ gst_shout2send_chain (GstPad *pad, GstData *_data)
g_return_if_fail (GST_IS_SHOUT2SEND (shout2send));
ret = shout_send (shout2send->conn, GST_BUFFER_DATA (buf),
- GST_BUFFER_SIZE (buf));
+ GST_BUFFER_SIZE (buf));
if (ret != SHOUTERR_SUCCESS) {
- g_warning ("send error: %s...\n", shout_get_error(shout2send->conn));
+ g_warning ("send error: %s...\n", shout_get_error (shout2send->conn));
}
shout_sync (shout2send->conn);
@@ -254,147 +241,145 @@ gst_shout2send_chain (GstPad *pad, GstData *_data)
}
static void
-gst_shout2send_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_shout2send_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstShout2send *shout2send;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_SHOUT2SEND(object));
- shout2send = GST_SHOUT2SEND(object);
+ g_return_if_fail (GST_IS_SHOUT2SEND (object));
+ shout2send = GST_SHOUT2SEND (object);
switch (prop_id) {
- case ARG_IP:
- if (shout2send->ip)
- g_free (shout2send->ip);
- shout2send->ip = g_strdup (g_value_get_string (value));
- break;
-
- case ARG_PORT:
- shout2send->port = g_value_get_int (value);
- break;
-
- case ARG_PASSWORD:
- if (shout2send->password)
- g_free (shout2send->password);
- shout2send->password = g_strdup (g_value_get_string (value));
- break;
-
- case ARG_NAME: /* Name of the stream */
- if (shout2send->name)
- g_free (shout2send->name);
- shout2send->name = g_strdup (g_value_get_string (value));
- break;
-
- case ARG_DESCRIPTION: /* Description of the stream */
- if (shout2send->description)
- g_free (shout2send->description);
- shout2send->description = g_strdup (g_value_get_string (value));
- break;
-
- case ARG_GENRE: /* Genre of the stream */
- if (shout2send->genre)
- g_free (shout2send->genre);
- shout2send->genre = g_strdup (g_value_get_string (value));
- break;
-
- case ARG_PROTOCOL: /* protocol to connect with */
- shout2send->protocol = g_value_get_enum (value);
- break;
-
- case ARG_MOUNT: /* mountpoint of stream (icecast only) */
- if (shout2send->mount)
- g_free (shout2send->mount);
- shout2send->mount = g_strdup (g_value_get_string (value));
- break;
-
- case ARG_URL: /* Url of the stream (I'm guessing) */
- if (shout2send->url)
- g_free (shout2send->url);
- shout2send->url = g_strdup (g_value_get_string (value));
- break;
-
- default:
- break;
+ case ARG_IP:
+ if (shout2send->ip)
+ g_free (shout2send->ip);
+ shout2send->ip = g_strdup (g_value_get_string (value));
+ break;
+
+ case ARG_PORT:
+ shout2send->port = g_value_get_int (value);
+ break;
+
+ case ARG_PASSWORD:
+ if (shout2send->password)
+ g_free (shout2send->password);
+ shout2send->password = g_strdup (g_value_get_string (value));
+ break;
+
+ case ARG_NAME: /* Name of the stream */
+ if (shout2send->name)
+ g_free (shout2send->name);
+ shout2send->name = g_strdup (g_value_get_string (value));
+ break;
+
+ case ARG_DESCRIPTION: /* Description of the stream */
+ if (shout2send->description)
+ g_free (shout2send->description);
+ shout2send->description = g_strdup (g_value_get_string (value));
+ break;
+
+ case ARG_GENRE: /* Genre of the stream */
+ if (shout2send->genre)
+ g_free (shout2send->genre);
+ shout2send->genre = g_strdup (g_value_get_string (value));
+ break;
+
+ case ARG_PROTOCOL: /* protocol to connect with */
+ shout2send->protocol = g_value_get_enum (value);
+ break;
+
+ case ARG_MOUNT: /* mountpoint of stream (icecast only) */
+ if (shout2send->mount)
+ g_free (shout2send->mount);
+ shout2send->mount = g_strdup (g_value_get_string (value));
+ break;
+
+ case ARG_URL: /* Url of the stream (I'm guessing) */
+ if (shout2send->url)
+ g_free (shout2send->url);
+ shout2send->url = g_strdup (g_value_get_string (value));
+ break;
+
+ default:
+ break;
}
}
static void
-gst_shout2send_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_shout2send_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstShout2send *shout2send;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_SHOUT2SEND(object));
- shout2send = GST_SHOUT2SEND(object);
+ g_return_if_fail (GST_IS_SHOUT2SEND (object));
+ shout2send = GST_SHOUT2SEND (object);
switch (prop_id) {
-
- case ARG_IP:
- g_value_set_string (value, shout2send->ip);
- break;
- case ARG_PORT:
- g_value_set_int (value, shout2send->port);
- break;
- case ARG_PASSWORD:
- g_value_set_string (value, shout2send->password);
- break;
-
- case ARG_NAME: /* Name of the stream */
- g_value_set_string (value, shout2send->name);
- break;
-
- case ARG_DESCRIPTION: /* Description of the stream */
- g_value_set_string (value, shout2send->description);
- break;
-
- case ARG_GENRE: /* Genre of the stream */
- g_value_set_string (value, shout2send->genre);
- break;
-
- case ARG_PROTOCOL: /* protocol to connect with */
- g_value_set_enum (value, shout2send->protocol);
- break;
-
- case ARG_MOUNT: /* mountpoint of stream (icecast only) */
- g_value_set_string (value, shout2send->mount);
- break;
-
- case ARG_URL: /* Url of stream (I'm guessing) */
- g_value_set_string (value, shout2send->url);
- break;
-
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
+
+ case ARG_IP:
+ g_value_set_string (value, shout2send->ip);
+ break;
+ case ARG_PORT:
+ g_value_set_int (value, shout2send->port);
+ break;
+ case ARG_PASSWORD:
+ g_value_set_string (value, shout2send->password);
+ break;
+
+ case ARG_NAME: /* Name of the stream */
+ g_value_set_string (value, shout2send->name);
+ break;
+
+ case ARG_DESCRIPTION: /* Description of the stream */
+ g_value_set_string (value, shout2send->description);
+ break;
+
+ case ARG_GENRE: /* Genre of the stream */
+ g_value_set_string (value, shout2send->genre);
+ break;
+
+ case ARG_PROTOCOL: /* protocol to connect with */
+ g_value_set_enum (value, shout2send->protocol);
+ break;
+
+ case ARG_MOUNT: /* mountpoint of stream (icecast only) */
+ g_value_set_string (value, shout2send->mount);
+ break;
+
+ case ARG_URL: /* Url of stream (I'm guessing) */
+ g_value_set_string (value, shout2send->url);
+ break;
+
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
}
}
static GstPadLinkReturn
-gst_shout2send_connect (GstPad *pad, GstCaps *caps)
-
+gst_shout2send_connect (GstPad * pad, GstCaps * caps)
{
-
- if (!strcmp(gst_caps_get_mime (caps), "audio/mpeg"))
- {
- audio_format = SHOUT_FORMAT_MP3;
- return GST_PAD_LINK_OK;
- }
-
- if (!strcmp(gst_caps_get_mime (caps), "application/ogg"))
- {
- audio_format = SHOUT_FORMAT_VORBIS;
- return GST_PAD_LINK_OK;
- }
- else {
+
+ if (!strcmp (gst_caps_get_mime (caps), "audio/mpeg")) {
+ audio_format = SHOUT_FORMAT_MP3;
+ return GST_PAD_LINK_OK;
+ }
+
+ if (!strcmp (gst_caps_get_mime (caps), "application/ogg")) {
+ audio_format = SHOUT_FORMAT_VORBIS;
+ return GST_PAD_LINK_OK;
+ } else {
return GST_PAD_LINK_REFUSED;
}
-
+
}
static GstElementStateReturn
-gst_shout2send_change_state (GstElement *element)
+gst_shout2send_change_state (GstElement * element)
{
GstShout2send *shout2send;
@@ -405,144 +390,147 @@ gst_shout2send_change_state (GstElement *element)
g_return_val_if_fail (GST_IS_SHOUT2SEND (element), GST_STATE_FAILURE);
- shout2send = GST_SHOUT2SEND(element);
+ shout2send = GST_SHOUT2SEND (element);
GST_DEBUG ("state pending %d", GST_STATE_PENDING (element));
/* if going down into NULL state, close the file if it's open */
switch (GST_STATE_TRANSITION (element)) {
- case GST_STATE_NULL_TO_READY:
- shout2send->conn = shout_new();
-
- switch (shout2send->protocol) {
- case SHOUT2SEND_PROTOCOL_ICE:
- proto = SHOUT_PROTOCOL_ICE;
- break;
- case SHOUT2SEND_PROTOCOL_XAUDIOCAST:
- proto = SHOUT_PROTOCOL_XAUDIOCAST;
- break;
- case SHOUT2SEND_PROTOCOL_ICY:
- proto = SHOUT_PROTOCOL_ICY;
- break;
- case SHOUT2SEND_PROTOCOL_HTTP:
- proto = SHOUT_PROTOCOL_HTTP;
- break;
- }
-
- if (shout_set_protocol(shout2send->conn, proto) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting protocol: %s\n", shout_get_error(shout2send->conn));
- }
-
- /* --- FIXME: shout requires an ip, and fails if it is given a host. */
- /* may want to put convert_to_ip(shout2send->ip) here */
-
-
- if (shout_set_host(shout2send->conn, shout2send->ip) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting host: %s\n", shout_get_error(shout2send->conn));
- }
- /* --- */
-
- if (shout_set_port(shout2send->conn, shout2send->port) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting port: %s\n", shout_get_error(shout2send->conn));
- }
-
- if(shout_set_password(shout2send->conn, shout2send->password) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting password: %s\n", shout_get_error(shout2send->conn));
- }
-
- if (shout_set_name(shout2send->conn, shout2send->name) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting name: %s\n", shout_get_error(shout2send->conn));
- }
-
- if (shout_set_description(shout2send->conn, shout2send->description) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting name: %s\n", shout_get_error(shout2send->conn));
- }
-
- if (shout_set_genre(shout2send->conn, shout2send->genre) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting name: %s\n", shout_get_error(shout2send->conn));
- }
-
- if (shout_set_mount(shout2send->conn, shout2send->mount) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting mount point: %s\n", shout_get_error(shout2send->conn));
- }
-
- if (shout_set_user(shout2send->conn, "source") != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting user: %s\n", shout_get_error(shout2send->conn));
- }
-
- gst_version(&major,&minor,&micro);
-
- version_string = g_strdup_printf("GStreamer %d.%d.%d", major,minor,micro);
-
- if (shout_set_agent(shout2send->conn, version_string) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting agent: %s\n", shout_get_error(shout2send->conn));
- }
-
- g_free (version_string);
-
-
-
- break;
- case GST_STATE_READY_TO_PAUSED:
-
- /* This sets the format acording to the capabilities of what
- we are being given as input. */
-
- if (shout_set_format(shout2send->conn, audio_format) != SHOUTERR_SUCCESS)
- {
- g_error ("Error setting connection format: %s\n", shout_get_error(shout2send->conn));
- }
-
- if (shout_open (shout2send->conn) == SHOUTERR_SUCCESS) {
- g_print ("connected to server...\n");
- }
- else {
- g_warning ("Couldn't connect to server: %s", shout_get_error(shout2send->conn));
+ case GST_STATE_NULL_TO_READY:
+ shout2send->conn = shout_new ();
+
+ switch (shout2send->protocol) {
+ case SHOUT2SEND_PROTOCOL_ICE:
+ proto = SHOUT_PROTOCOL_ICE;
+ break;
+ case SHOUT2SEND_PROTOCOL_XAUDIOCAST:
+ proto = SHOUT_PROTOCOL_XAUDIOCAST;
+ break;
+ case SHOUT2SEND_PROTOCOL_ICY:
+ proto = SHOUT_PROTOCOL_ICY;
+ break;
+ case SHOUT2SEND_PROTOCOL_HTTP:
+ proto = SHOUT_PROTOCOL_HTTP;
+ break;
+ }
+
+ if (shout_set_protocol (shout2send->conn, proto) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting protocol: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ /* --- FIXME: shout requires an ip, and fails if it is given a host. */
+ /* may want to put convert_to_ip(shout2send->ip) here */
+
+
+ if (shout_set_host (shout2send->conn, shout2send->ip) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting host: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+ /* --- */
+
+ if (shout_set_port (shout2send->conn,
+ shout2send->port) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting port: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ if (shout_set_password (shout2send->conn,
+ shout2send->password) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting password: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ if (shout_set_name (shout2send->conn,
+ shout2send->name) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting name: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ if (shout_set_description (shout2send->conn,
+ shout2send->description) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting name: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ if (shout_set_genre (shout2send->conn,
+ shout2send->genre) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting name: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ if (shout_set_mount (shout2send->conn,
+ shout2send->mount) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting mount point: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ if (shout_set_user (shout2send->conn, "source") != SHOUTERR_SUCCESS) {
+ g_error ("Error setting user: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ gst_version (&major, &minor, &micro);
+
+ version_string =
+ g_strdup_printf ("GStreamer %d.%d.%d", major, minor, micro);
+
+ if (shout_set_agent (shout2send->conn,
+ version_string) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting agent: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ g_free (version_string);
+
+
+
+ break;
+ case GST_STATE_READY_TO_PAUSED:
+
+ /* This sets the format acording to the capabilities of what
+ we are being given as input. */
+
+ if (shout_set_format (shout2send->conn, audio_format) != SHOUTERR_SUCCESS) {
+ g_error ("Error setting connection format: %s\n",
+ shout_get_error (shout2send->conn));
+ }
+
+ if (shout_open (shout2send->conn) == SHOUTERR_SUCCESS) {
+ g_print ("connected to server...\n");
+ } else {
+ g_warning ("Couldn't connect to server: %s",
+ shout_get_error (shout2send->conn));
+ shout_close (shout2send->conn);
+ shout_free (shout2send->conn);
+ return GST_STATE_FAILURE;
+ }
+ break;
+ case GST_STATE_PAUSED_TO_READY:
shout_close (shout2send->conn);
shout_free (shout2send->conn);
- return GST_STATE_FAILURE;
- }
- break;
- case GST_STATE_PAUSED_TO_READY:
- shout_close (shout2send->conn);
- shout_free (shout2send->conn);
- break;
- default:
- break;
+ break;
+ default:
+ break;
}
-
+
/* if we haven't failed already, give the parent class a chance to ;-) */
if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
-
+
return GST_STATE_SUCCESS;
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "shout2send", GST_RANK_NONE,
- GST_TYPE_SHOUT2SEND);
+ GST_TYPE_SHOUT2SEND);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "shout2send",
- "Sends data to an icecast server using libshout2",
- plugin_init,
- VERSION,
- "LGPL",
- "libshout2",
- "http://www.icecast.org/download.html"
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "shout2send",
+ "Sends data to an icecast server using libshout2",
+ plugin_init,
+ VERSION, "LGPL", "libshout2", "http://www.icecast.org/download.html")
diff --git a/ext/shout2/gstshout2.h b/ext/shout2/gstshout2.h
index 70631298..62ff44b9 100644
--- a/ext/shout2/gstshout2.h
+++ b/ext/shout2/gstshout2.h
@@ -25,47 +25,51 @@
#include <shout/shout.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
/* Protocol type enum */
-typedef enum {
- SHOUT2SEND_PROTOCOL_ICE = 1,
- SHOUT2SEND_PROTOCOL_XAUDIOCAST,
- SHOUT2SEND_PROTOCOL_ICY,
- SHOUT2SEND_PROTOCOL_HTTP
-} GstShout2SendProtocol;
+ typedef enum
+ {
+ SHOUT2SEND_PROTOCOL_ICE = 1,
+ SHOUT2SEND_PROTOCOL_XAUDIOCAST,
+ SHOUT2SEND_PROTOCOL_ICY,
+ SHOUT2SEND_PROTOCOL_HTTP
+ } GstShout2SendProtocol;
/* Definition of structure storing data for this element. */
-typedef struct _GstShout2send GstShout2send;
-struct _GstShout2send {
- GstElement element;
+ typedef struct _GstShout2send GstShout2send;
+ struct _GstShout2send
+ {
+ GstElement element;
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
- GstShout2SendProtocol protocol;
+ GstShout2SendProtocol protocol;
- shout_t *conn;
+ shout_t *conn;
- gchar *ip;
- guint port;
- gchar *password;
- gchar *name;
- gchar *description;
- gchar *genre;
- gchar *mount;
- gchar *url;
+ gchar *ip;
+ guint port;
+ gchar *password;
+ gchar *name;
+ gchar *description;
+ gchar *genre;
+ gchar *mount;
+ gchar *url;
-};
+ };
/* Standard definition defining a class for this element. */
-typedef struct _GstShout2sendClass GstShout2sendClass;
-struct _GstShout2sendClass {
- GstElementClass parent_class;
-};
+ typedef struct _GstShout2sendClass GstShout2sendClass;
+ struct _GstShout2sendClass
+ {
+ GstElementClass parent_class;
+ };
/* Standard macros for defining types for this element. */
#define GST_TYPE_SHOUT2SEND \
@@ -80,12 +84,12 @@ struct _GstShout2sendClass {
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SHOUT2SEND))
/* Standard function returning type information. */
-GType gst_shout2send_get_type(void);
+ GType gst_shout2send_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_SHOUT2SEND_H__ */
+#endif /* __GST_SHOUT2SEND_H__ */
diff --git a/ext/speex/gstspeex.c b/ext/speex/gstspeex.c
index df2f230c..0b0de0bf 100644
--- a/ext/speex/gstspeex.c
+++ b/ext/speex/gstspeex.c
@@ -24,24 +24,21 @@
#include "gstspeexenc.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "speexenc", GST_RANK_NONE, GST_TYPE_SPEEXENC))
+ if (!gst_element_register (plugin, "speexenc", GST_RANK_NONE,
+ GST_TYPE_SPEEXENC))
return FALSE;
- if (!gst_element_register (plugin, "speexdec", GST_RANK_PRIMARY, GST_TYPE_SPEEXDEC))
+ if (!gst_element_register (plugin, "speexdec", GST_RANK_PRIMARY,
+ GST_TYPE_SPEEXDEC))
return FALSE;
-
+
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "speex",
- "Speex plugin library",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "speex",
+ "Speex plugin library",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/speex/gstspeexdec.c b/ext/speex/gstspeexdec.c
index a5ab788e..364ae669 100644
--- a/ext/speex/gstspeexdec.c
+++ b/ext/speex/gstspeexdec.c
@@ -36,72 +36,72 @@ GstElementDetails gst_speexdec_details = {
};
/* SpeexDec signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static void gst_speexdec_base_init (gpointer g_class);
-static void gst_speexdec_class_init (GstSpeexDec *klass);
-static void gst_speexdec_init (GstSpeexDec *speexdec);
+static void gst_speexdec_base_init (gpointer g_class);
+static void gst_speexdec_class_init (GstSpeexDec * klass);
+static void gst_speexdec_init (GstSpeexDec * speexdec);
-static void gst_speexdec_chain (GstPad *pad, GstData *_data);
-static GstPadLinkReturn gst_speexdec_sinkconnect (GstPad *pad, const GstCaps *caps);
+static void gst_speexdec_chain (GstPad * pad, GstData * _data);
+static GstPadLinkReturn gst_speexdec_sinkconnect (GstPad * pad,
+ const GstCaps * caps);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_speexdec_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_speexdec_get_type(void) {
+gst_speexdec_get_type (void)
+{
static GType speexdec_type = 0;
if (!speexdec_type) {
static const GTypeInfo speexdec_info = {
- sizeof(GstSpeexDecClass),
+ sizeof (GstSpeexDecClass),
gst_speexdec_base_init,
NULL,
- (GClassInitFunc)gst_speexdec_class_init,
+ (GClassInitFunc) gst_speexdec_class_init,
NULL,
NULL,
- sizeof(GstSpeexDec),
+ sizeof (GstSpeexDec),
0,
- (GInstanceInitFunc)gst_speexdec_init,
+ (GInstanceInitFunc) gst_speexdec_init,
};
- speexdec_type = g_type_register_static(GST_TYPE_ELEMENT, "GstSpeexDec", &speexdec_info, 0);
+ speexdec_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstSpeexDec", &speexdec_info,
+ 0);
}
return speexdec_type;
}
static GstStaticPadTemplate speex_sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-speex, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) 1"
- )
-);
-
-static GstStaticPadTemplate speex_src_template =
-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"
- )
-);
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-speex, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) 1")
+ );
+
+static GstStaticPadTemplate speex_src_template = 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")
+ );
static void
gst_speexdec_base_init (gpointer g_class)
@@ -109,30 +109,31 @@ gst_speexdec_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 (&speex_src_template));
+ gst_static_pad_template_get (&speex_src_template));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&speex_sink_template));
+ gst_static_pad_template_get (&speex_sink_template));
gst_element_class_set_details (element_class, &gst_speexdec_details);
}
static void
-gst_speexdec_class_init (GstSpeexDec *klass)
+gst_speexdec_class_init (GstSpeexDec * klass)
{
GstElementClass *gstelement_class;
- gstelement_class = (GstElementClass*)klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
}
static void
-gst_speexdec_init (GstSpeexDec *speexdec)
+gst_speexdec_init (GstSpeexDec * speexdec)
{
GST_DEBUG ("gst_speexdec_init: initializing");
/* create the sink and src pads */
- speexdec->sinkpad = gst_pad_new_from_template (speexdec_sink_template, "sink");
+ speexdec->sinkpad =
+ gst_pad_new_from_template (speexdec_sink_template, "sink");
gst_element_add_pad (GST_ELEMENT (speexdec), speexdec->sinkpad);
gst_pad_set_chain_function (speexdec->sinkpad, gst_speexdec_chain);
gst_pad_set_link_function (speexdec->sinkpad, gst_speexdec_sinkconnect);
@@ -144,43 +145,40 @@ gst_speexdec_init (GstSpeexDec *speexdec)
}
static GstPadLinkReturn
-gst_speexdec_sinkconnect (GstPad *pad, const GstCaps *caps)
+gst_speexdec_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstSpeexDec *speexdec;
gint rate;
GstStructure *structure;
-
+
speexdec = GST_SPEEXDEC (gst_pad_get_parent (pad));
structure = gst_caps_get_structure (caps, 0);
- gst_structure_get_int (structure, "rate", &rate);
-
- if (gst_pad_set_explicit_caps (speexdec->srcpad,
- gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "width", G_TYPE_INT, 16,
- "depth", G_TYPE_INT, 16,
- "rate", G_TYPE_INT, rate,
- "channels", G_TYPE_INT, 1,
- NULL)))
- {
+ gst_structure_get_int (structure, "rate", &rate);
+
+ if (gst_pad_set_explicit_caps (speexdec->srcpad,
+ gst_caps_new_simple ("audio/x-raw-int",
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "signed", G_TYPE_BOOLEAN, TRUE,
+ "width", G_TYPE_INT, 16,
+ "depth", G_TYPE_INT, 16,
+ "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, 1, NULL))) {
return GST_PAD_LINK_OK;
}
return GST_PAD_LINK_REFUSED;
}
static void
-gst_speexdec_chain (GstPad *pad, GstData *_data)
+gst_speexdec_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstSpeexDec *speexdec;
gchar *data;
guint size;
- 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)); */
speexdec = GST_SPEEXDEC (gst_pad_get_parent (pad));
@@ -188,6 +186,5 @@ gst_speexdec_chain (GstPad *pad, GstData *_data)
data = GST_BUFFER_DATA (buf);
size = GST_BUFFER_SIZE (buf);
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
-
diff --git a/ext/speex/gstspeexdec.h b/ext/speex/gstspeexdec.h
index c679dc18..6723742c 100644
--- a/ext/speex/gstspeexdec.h
+++ b/ext/speex/gstspeexdec.h
@@ -26,8 +26,9 @@
#include <speex.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_SPEEXDEC \
@@ -41,26 +42,28 @@ extern "C" {
#define GST_IS_SPEEXDEC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SPEEXDEC))
-typedef struct _GstSpeexDec GstSpeexDec;
-typedef struct _GstSpeexDecClass GstSpeexDecClass;
+ typedef struct _GstSpeexDec GstSpeexDec;
+ typedef struct _GstSpeexDecClass GstSpeexDecClass;
-struct _GstSpeexDec {
- GstElement element;
+ struct _GstSpeexDec
+ {
+ GstElement element;
- /* pads */
- GstPad *sinkpad,*srcpad;
-};
+ /* pads */
+ GstPad *sinkpad, *srcpad;
+ };
-struct _GstSpeexDecClass {
- GstElementClass parent_class;
-};
+ struct _GstSpeexDecClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_speexdec_get_type(void);
+ GType gst_speexdec_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_SPEEXDEC_H__ */
+#endif /* __GST_SPEEXDEC_H__ */
diff --git a/ext/speex/gstspeexenc.c b/ext/speex/gstspeexenc.c
index 1db431d3..d1b4ae39 100644
--- a/ext/speex/gstspeexenc.c
+++ b/ext/speex/gstspeexenc.c
@@ -36,23 +36,26 @@ GstElementDetails gst_speexenc_details = {
};
/* SpeexEnc signals and args */
-enum {
+enum
+{
FRAME_ENCODED,
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-static void gst_speexenc_base_init (gpointer g_class);
-static void gst_speexenc_class_init (GstSpeexEnc *klass);
-static void gst_speexenc_init (GstSpeexEnc *speexenc);
+static void gst_speexenc_base_init (gpointer g_class);
+static void gst_speexenc_class_init (GstSpeexEnc * klass);
+static void gst_speexenc_init (GstSpeexEnc * speexenc);
-static void gst_speexenc_chain (GstPad *pad,GstData *_data);
-static GstPadLinkReturn gst_speexenc_sinkconnect (GstPad *pad, const GstCaps *caps);
+static void gst_speexenc_chain (GstPad * pad, GstData * _data);
+static GstPadLinkReturn gst_speexenc_sinkconnect (GstPad * pad,
+ const GstCaps * caps);
static GstElementClass *parent_class = NULL;
static guint gst_speexenc_signals[LAST_SIGNAL] = { 0 };
@@ -74,42 +77,37 @@ gst_speexenc_get_type (void)
0,
(GInstanceInitFunc) gst_speexenc_init,
};
- speexenc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstSpeexEnc", &speexenc_info, 0);
+ speexenc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstSpeexEnc", &speexenc_info,
+ 0);
}
return speexenc_type;
}
static GstStaticPadTemplate speex_sink_template =
-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"
- )
-);
-
-static GstStaticPadTemplate speex_src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-speex, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) 1"
- )
-);
+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")
+ );
+
+static GstStaticPadTemplate speex_src_template = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-speex, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) 1")
+ );
static void
gst_speexenc_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 (&speex_sink_template));
gst_element_class_add_pad_template (element_class,
@@ -119,28 +117,29 @@ gst_speexenc_base_init (gpointer g_class)
}
static void
-gst_speexenc_class_init (GstSpeexEnc *klass)
+gst_speexenc_class_init (GstSpeexEnc * 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);
gst_speexenc_signals[FRAME_ENCODED] =
- g_signal_new ("frame-encoded", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstSpeexEncClass, frame_encoded), NULL, NULL,
- g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+ g_signal_new ("frame-encoded", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstSpeexEncClass, frame_encoded),
+ NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
}
static void
-gst_speexenc_init (GstSpeexEnc *speexenc)
+gst_speexenc_init (GstSpeexEnc * speexenc)
{
/* create the sink and src pads */
- speexenc->sinkpad = gst_pad_new_from_template (speexenc_sink_template, "sink");
+ speexenc->sinkpad =
+ gst_pad_new_from_template (speexenc_sink_template, "sink");
gst_element_add_pad (GST_ELEMENT (speexenc), speexenc->sinkpad);
gst_pad_set_chain_function (speexenc->sinkpad, gst_speexenc_chain);
gst_pad_set_link_function (speexenc->sinkpad, gst_speexenc_sinkconnect);
@@ -148,7 +147,7 @@ gst_speexenc_init (GstSpeexEnc *speexenc)
speexenc->srcpad = gst_pad_new_from_template (speexenc_src_template, "src");
gst_element_add_pad (GST_ELEMENT (speexenc), speexenc->srcpad);
- speex_bits_init(&speexenc->bits);
+ speex_bits_init (&speexenc->bits);
speexenc->mode = &speex_nb_mode;
speexenc->bufsize = 0;
speexenc->packet_count = 0;
@@ -156,7 +155,7 @@ gst_speexenc_init (GstSpeexEnc *speexenc)
}
static GstPadLinkReturn
-gst_speexenc_sinkconnect (GstPad *pad, const GstCaps *caps)
+gst_speexenc_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstSpeexEnc *speexenc;
GstStructure *structure;
@@ -166,16 +165,15 @@ gst_speexenc_sinkconnect (GstPad *pad, const GstCaps *caps)
structure = gst_caps_get_structure (caps, 0);
gst_structure_get_int (structure, "rate", &speexenc->rate);
if (gst_pad_try_set_caps (speexenc->srcpad,
- gst_caps_new_simple ("audio/x-speex",
- "rate", G_TYPE_INT, speexenc->rate,
- "channels", G_TYPE_INT, 1,
- NULL)))
- {
- speex_init_header(&speexenc->header, speexenc->rate, 1, speexenc->mode);
+ gst_caps_new_simple ("audio/x-speex",
+ "rate", G_TYPE_INT, speexenc->rate,
+ "channels", G_TYPE_INT, 1, NULL))) {
+ speex_init_header (&speexenc->header, speexenc->rate, 1, speexenc->mode);
speexenc->header.frames_per_packet = speexenc->n_packets;
- speexenc->state = speex_encoder_init(speexenc->mode);
- speex_encoder_ctl(speexenc->state, SPEEX_GET_FRAME_SIZE, &speexenc->frame_size);
+ speexenc->state = speex_encoder_init (speexenc->mode);
+ speex_encoder_ctl (speexenc->state, SPEEX_GET_FRAME_SIZE,
+ &speexenc->frame_size);
return GST_PAD_LINK_OK;
}
@@ -184,7 +182,7 @@ gst_speexenc_sinkconnect (GstPad *pad, const GstCaps *caps)
}
static void
-gst_speexenc_chain (GstPad *pad, GstData *_data)
+gst_speexenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstSpeexEnc *speexenc;
@@ -201,22 +199,20 @@ gst_speexenc_chain (GstPad *pad, GstData *_data)
g_return_if_fail (buf != NULL);
speexenc = GST_SPEEXENC (GST_OBJECT_PARENT (pad));
-
+
if (!GST_PAD_CAPS (speexenc->srcpad)) {
if (!gst_pad_try_set_caps (speexenc->srcpad,
- gst_caps_new_simple ("audio/x-speex",
- "rate", G_TYPE_INT, speexenc->rate,
- "channels", G_TYPE_INT, 1,
- NULL)))
- {
+ gst_caps_new_simple ("audio/x-speex",
+ "rate", G_TYPE_INT, speexenc->rate,
+ "channels", G_TYPE_INT, 1, NULL))) {
GST_ELEMENT_ERROR (speexenc, CORE, NEGOTIATION, (NULL), (NULL));
return;
}
}
if (speexenc->packet_count == 0) {
- header_data = speex_header_to_packet(&speexenc->header, &size);
+ header_data = speex_header_to_packet (&speexenc->header, &size);
outbuf = gst_buffer_new ();
GST_BUFFER_DATA (outbuf) = header_data;
@@ -231,7 +227,8 @@ gst_speexenc_chain (GstPad *pad, GstData *_data)
frame_size = speexenc->frame_size;
if (speexenc->bufsize && (speexenc->bufsize + size >= frame_size)) {
- memcpy (speexenc->buffer + speexenc->bufsize, data, (frame_size - speexenc->bufsize) * sizeof (gint16));
+ memcpy (speexenc->buffer + speexenc->bufsize, data,
+ (frame_size - speexenc->bufsize) * sizeof (gint16));
for (i = 0; i < frame_size; i++)
input[i] = speexenc->buffer[i];
@@ -243,10 +240,10 @@ gst_speexenc_chain (GstPad *pad, GstData *_data)
GstBuffer *outbuf;
outbuf = gst_buffer_new_and_alloc (frame_size * speexenc->n_packets);
- GST_BUFFER_SIZE (outbuf) = speex_bits_write(&speexenc->bits,
- GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf));
+ GST_BUFFER_SIZE (outbuf) = speex_bits_write (&speexenc->bits,
+ GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf));
GST_BUFFER_TIMESTAMP (outbuf) = speexenc->next_ts;
- speex_bits_reset(&speexenc->bits);
+ speex_bits_reset (&speexenc->bits);
gst_pad_push (speexenc->srcpad, GST_DATA (outbuf));
speexenc->next_ts += frame_size * GST_SECOND / speexenc->rate;
@@ -269,10 +266,10 @@ gst_speexenc_chain (GstPad *pad, GstData *_data)
GstBuffer *outbuf;
outbuf = gst_buffer_new_and_alloc (frame_size * speexenc->n_packets);
- GST_BUFFER_SIZE (outbuf) = speex_bits_write(&speexenc->bits,
- GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf));
+ GST_BUFFER_SIZE (outbuf) = speex_bits_write (&speexenc->bits,
+ GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf));
GST_BUFFER_TIMESTAMP (outbuf) = speexenc->next_ts;
- speex_bits_reset(&speexenc->bits);
+ speex_bits_reset (&speexenc->bits);
gst_pad_push (speexenc->srcpad, GST_DATA (outbuf));
speexenc->next_ts += frame_size * GST_SECOND / speexenc->rate;
@@ -286,6 +283,6 @@ gst_speexenc_chain (GstPad *pad, GstData *_data)
memcpy (speexenc->buffer + speexenc->bufsize, data, size * sizeof (gint16));
speexenc->bufsize += size;
}
-
- gst_buffer_unref(buf);
+
+ gst_buffer_unref (buf);
}
diff --git a/ext/speex/gstspeexenc.h b/ext/speex/gstspeexenc.h
index 4677f6a1..4da1e787 100644
--- a/ext/speex/gstspeexenc.h
+++ b/ext/speex/gstspeexenc.h
@@ -28,8 +28,9 @@
#include <speex_header.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
#define GST_TYPE_SPEEXENC \
@@ -43,44 +44,45 @@ extern "C" {
#define GST_IS_SPEEXENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SPEEXENC))
-typedef struct _GstSpeexEnc GstSpeexEnc;
-typedef struct _GstSpeexEncClass GstSpeexEncClass;
+ typedef struct _GstSpeexEnc GstSpeexEnc;
+ typedef struct _GstSpeexEncClass GstSpeexEncClass;
-struct _GstSpeexEnc {
- GstElement element;
+ struct _GstSpeexEnc
+ {
+ GstElement element;
- /* pads */
- GstPad *sinkpad,
- *srcpad;
+ /* pads */
+ GstPad *sinkpad, *srcpad;
- gint packet_count;
- gint n_packets;
+ gint packet_count;
+ gint n_packets;
- SpeexBits bits;
- SpeexHeader header;
- SpeexMode *mode;
- void *state;
- gint frame_size;
- gint16 buffer[2000];
- gint bufsize;
- guint64 next_ts;
+ SpeexBits bits;
+ SpeexHeader header;
+ SpeexMode *mode;
+ void *state;
+ gint frame_size;
+ gint16 buffer[2000];
+ gint bufsize;
+ guint64 next_ts;
- gint rate;
-};
+ gint rate;
+ };
-struct _GstSpeexEncClass {
- GstElementClass parent_class;
+ struct _GstSpeexEncClass
+ {
+ GstElementClass parent_class;
- /* signals */
- void (*frame_encoded) (GstElement *element);
-};
+ /* signals */
+ void (*frame_encoded) (GstElement * element);
+ };
-GType gst_speexenc_get_type(void);
+ GType gst_speexenc_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_SPEEXENC_H__ */
+#endif /* __GST_SPEEXENC_H__ */
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;
};
diff --git a/sys/oss/gstossaudio.c b/sys/oss/gstossaudio.c
index 4387eb07..ecbbd9bc 100644
--- a/sys/oss/gstossaudio.c
+++ b/sys/oss/gstossaudio.c
@@ -32,17 +32,17 @@ extern gchar *__gst_oss_plugin_dir;
GST_DEBUG_CATEGORY (oss_debug);
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_library_load ("gstaudio"))
return FALSE;
if (!gst_element_register (plugin, "ossmixer", GST_RANK_PRIMARY,
- GST_TYPE_OSSELEMENT) ||
+ GST_TYPE_OSSELEMENT) ||
!gst_element_register (plugin, "osssrc", GST_RANK_PRIMARY,
- GST_TYPE_OSSSRC) ||
+ GST_TYPE_OSSSRC) ||
!gst_element_register (plugin, "osssink", GST_RANK_PRIMARY,
- GST_TYPE_OSSSINK)) {
+ GST_TYPE_OSSSINK)) {
return FALSE;
}
@@ -56,14 +56,8 @@ plugin_init (GstPlugin *plugin)
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "ossaudio",
- "OSS (Open Sound System) support for GStreamer",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "ossaudio",
+ "OSS (Open Sound System) support for GStreamer",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/sys/oss/gstosselement.c b/sys/oss/gstosselement.c
index 7dfac627..56dd20da 100644
--- a/sys/oss/gstosselement.c
+++ b/sys/oss/gstosselement.c
@@ -39,7 +39,8 @@
#include "gstosselement.h"
#include "gstossmixer.h"
-enum {
+enum
+{
ARG_0,
ARG_DEVICE,
ARG_MIXERDEV,
@@ -47,49 +48,45 @@ enum {
};
/* elementfactory information */
-static GstElementDetails gst_osselement_details = GST_ELEMENT_DETAILS (
- "Audio Mixer (OSS)",
- "Generic/Audio",
- "OSS-based mixer element",
- "Ronald Bultje <rbultje@ronald.bitfreak.net>"
-);
-
-static void gst_osselement_base_init (GstOssElementClass *klass);
-static void gst_osselement_class_init (GstOssElementClass *klass);
-
-static void gst_ossprobe_interface_init (GstPropertyProbeInterface *iface);
-static void gst_osselement_init (GstOssElement *oss);
-static void gst_osselement_dispose (GObject *object);
-
-static void gst_osselement_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_osselement_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static GstElementStateReturn gst_osselement_change_state (GstElement *element);
+static GstElementDetails gst_osselement_details =
+GST_ELEMENT_DETAILS ("Audio Mixer (OSS)",
+ "Generic/Audio",
+ "OSS-based mixer element",
+ "Ronald Bultje <rbultje@ronald.bitfreak.net>");
+
+static void gst_osselement_base_init (GstOssElementClass * klass);
+static void gst_osselement_class_init (GstOssElementClass * klass);
+
+static void gst_ossprobe_interface_init (GstPropertyProbeInterface * iface);
+static void gst_osselement_init (GstOssElement * oss);
+static void gst_osselement_dispose (GObject * object);
+
+static void gst_osselement_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_osselement_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_osselement_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_osssrc_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_osselement_get_type (void)
+gst_osselement_get_type (void)
{
static GType osselement_type = 0;
if (!osselement_type) {
static const GTypeInfo osselement_info = {
- sizeof(GstOssElementClass),
- (GBaseInitFunc)gst_osselement_base_init,
+ sizeof (GstOssElementClass),
+ (GBaseInitFunc) gst_osselement_base_init,
NULL,
- (GClassInitFunc)gst_osselement_class_init,
+ (GClassInitFunc) gst_osselement_class_init,
NULL,
NULL,
- sizeof(GstOssElement),
+ sizeof (GstOssElement),
0,
- (GInstanceInitFunc)gst_osselement_init
+ (GInstanceInitFunc) gst_osselement_init
};
static const GInterfaceInfo ossiface_info = {
(GInterfaceInitFunc) gst_oss_interface_init,
@@ -108,24 +105,20 @@ gst_osselement_get_type (void)
};
osselement_type = g_type_register_static (GST_TYPE_ELEMENT,
- "GstOssElement",
- &osselement_info, 0);
+ "GstOssElement", &osselement_info, 0);
g_type_add_interface_static (osselement_type,
- GST_TYPE_IMPLEMENTS_INTERFACE,
- &ossiface_info);
+ GST_TYPE_IMPLEMENTS_INTERFACE, &ossiface_info);
g_type_add_interface_static (osselement_type,
- GST_TYPE_MIXER,
- &ossmixer_info);
+ GST_TYPE_MIXER, &ossmixer_info);
g_type_add_interface_static (osselement_type,
- GST_TYPE_PROPERTY_PROBE,
- &ossprobe_info);
+ GST_TYPE_PROPERTY_PROBE, &ossprobe_info);
}
return osselement_type;
}
static void
-gst_osselement_base_init (GstOssElementClass *klass)
+gst_osselement_base_init (GstOssElementClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
@@ -135,36 +128,36 @@ gst_osselement_base_init (GstOssElementClass *klass)
}
static void
-gst_osselement_class_init (GstOssElementClass *klass)
+gst_osselement_class_init (GstOssElementClass * 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_DEVICE,
- g_param_spec_string ("device", "Device", "OSS device (/dev/dspN usually)",
- "default", G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MIXERDEV,
- g_param_spec_string ("mixerdev", "Mixer device",
- "OSS mixer device (/dev/mixerN usually)",
- "default", G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DEVICE_NAME,
- g_param_spec_string ("device_name", "Device name", "Name of the device",
- NULL, G_PARAM_READABLE));
-
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DEVICE,
+ g_param_spec_string ("device", "Device", "OSS device (/dev/dspN usually)",
+ "default", G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MIXERDEV,
+ g_param_spec_string ("mixerdev", "Mixer device",
+ "OSS mixer device (/dev/mixerN usually)",
+ "default", G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DEVICE_NAME,
+ g_param_spec_string ("device_name", "Device name", "Name of the device",
+ NULL, G_PARAM_READABLE));
+
gobject_class->set_property = gst_osselement_set_property;
gobject_class->get_property = gst_osselement_get_property;
- gobject_class->dispose = gst_osselement_dispose;
+ gobject_class->dispose = gst_osselement_dispose;
gstelement_class->change_state = gst_osselement_change_state;
}
static const GList *
-gst_ossprobe_get_properties (GstPropertyProbe *probe)
+gst_ossprobe_get_properties (GstPropertyProbe * probe)
{
GObjectClass *klass = G_OBJECT_GET_CLASS (probe);
static GList *list = NULL;
@@ -180,10 +173,8 @@ gst_ossprobe_get_properties (GstPropertyProbe *probe)
#define MAX_OSS_DEVICES 16
static void
-gst_osselement_probe (gchar *device_base,
- gint device_num,
- gchar **name,
- dev_t *devno)
+gst_osselement_probe (gchar * device_base,
+ gint device_num, gchar ** name, dev_t * devno)
{
gchar *device = NULL;
struct stat s;
@@ -208,22 +199,22 @@ gst_osselement_probe (gchar *device_base,
*name = device;
*devno = s.st_rdev;
- return;
+ return;
end:
g_free (device);
}
-static GList*
-device_combination_append (GList *device_combinations,
- GstOssDeviceCombination *combi)
+static GList *
+device_combination_append (GList * device_combinations,
+ GstOssDeviceCombination * combi)
{
GList *it;
for (it = device_combinations; it != NULL; it = it->next) {
GstOssDeviceCombination *cur;
- cur = (GstOssDeviceCombination*)it->data;
+ cur = (GstOssDeviceCombination *) it->data;
if (cur->dev == combi->dev) {
return device_combinations;
}
@@ -233,8 +224,7 @@ device_combination_append (GList *device_combinations,
}
static gboolean
-gst_osselement_class_probe_devices (GstOssElementClass *klass,
- gboolean check)
+gst_osselement_class_probe_devices (GstOssElementClass * klass, gboolean check)
{
GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
static gboolean init = FALSE;
@@ -249,6 +239,7 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass,
padtempllist = gst_element_class_get_pad_template_list (eklass);
if (padtempllist != NULL) {
GstPadTemplate *firstpadtempl = padtempllist->data;
+
if (GST_PAD_TEMPLATE_DIRECTION (firstpadtempl) == GST_PAD_SINK) {
openmode = O_WRONLY;
}
@@ -258,9 +249,12 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass,
if (!init && !check) {
#define MIXER 0
#define DSP 1
- gchar *dev_base[][2] = { {"/dev/mixer", "/dev/dsp"},
- {"/dev/sound/mixer", "/dev/sound/dsp"},
- {NULL, NULL}};
+ gchar *dev_base[][2] = { {"/dev/mixer", "/dev/dsp"}
+ ,
+ {"/dev/sound/mixer", "/dev/sound/dsp"}
+ ,
+ {NULL, NULL}
+ };
gint n;
gint base;
@@ -285,36 +279,36 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass,
dev_t dsp_dev;
dev_t mixer_dev;
- gst_osselement_probe (dev_base[base][DSP], n, &dsp, &dsp_dev);
+ gst_osselement_probe (dev_base[base][DSP], n, &dsp, &dsp_dev);
if (dsp == NULL) {
continue;
}
gst_osselement_probe (dev_base[base][MIXER], n, &mixer, &mixer_dev);
/* does the device exist (can we open them)? */
-
+
/* we just check the dsp. we assume the mixer always works.
* we don't need a mixer anyway (says OSS)... If we are a
* mixer element, we use the mixer anyway. */
if ((fd = open (mixer ? mixer :
- dsp, openmode | O_NONBLOCK)) > 0 || errno == EBUSY) {
+ dsp, openmode | O_NONBLOCK)) > 0 || errno == EBUSY) {
GstOssDeviceCombination *combi;
-
+
if (fd > 0)
close (fd);
-
+
/* yay! \o/ */
combi = g_new0 (GstOssDeviceCombination, 1);
- combi->dsp = dsp;
+ combi->dsp = dsp;
combi->mixer = mixer;
device_combinations = device_combination_append (device_combinations,
- combi);
+ combi);
} else {
g_free (dsp);
g_free (mixer);
}
}
}
-
+
init = TRUE;
}
@@ -324,7 +318,7 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass,
}
static GValueArray *
-gst_osselement_class_list_devices (GstOssElementClass *klass)
+gst_osselement_class_list_devices (GstOssElementClass * klass)
{
GValueArray *array;
GValue value = { 0 };
@@ -350,9 +344,8 @@ gst_osselement_class_list_devices (GstOssElementClass *klass)
}
static void
-gst_ossprobe_probe_property (GstPropertyProbe *probe,
- guint prop_id,
- const GParamSpec *pspec)
+gst_ossprobe_probe_property (GstPropertyProbe * probe,
+ guint prop_id, const GParamSpec * pspec)
{
GstOssElementClass *klass = GST_OSSELEMENT_GET_CLASS (probe);
@@ -367,9 +360,8 @@ gst_ossprobe_probe_property (GstPropertyProbe *probe,
}
static gboolean
-gst_ossprobe_needs_probe (GstPropertyProbe *probe,
- guint prop_id,
- const GParamSpec *pspec)
+gst_ossprobe_needs_probe (GstPropertyProbe * probe,
+ guint prop_id, const GParamSpec * pspec)
{
GstOssElementClass *klass = GST_OSSELEMENT_GET_CLASS (probe);
gboolean ret = FALSE;
@@ -387,9 +379,8 @@ gst_ossprobe_needs_probe (GstPropertyProbe *probe,
}
static GValueArray *
-gst_ossprobe_get_values (GstPropertyProbe *probe,
- guint prop_id,
- const GParamSpec *pspec)
+gst_ossprobe_get_values (GstPropertyProbe * probe,
+ guint prop_id, const GParamSpec * pspec)
{
GstOssElementClass *klass = GST_OSSELEMENT_GET_CLASS (probe);
GValueArray *array = NULL;
@@ -407,16 +398,16 @@ gst_ossprobe_get_values (GstPropertyProbe *probe,
}
static void
-gst_ossprobe_interface_init (GstPropertyProbeInterface *iface)
+gst_ossprobe_interface_init (GstPropertyProbeInterface * iface)
{
iface->get_properties = gst_ossprobe_get_properties;
iface->probe_property = gst_ossprobe_probe_property;
- iface->needs_probe = gst_ossprobe_needs_probe;
- iface->get_values = gst_ossprobe_get_values;
+ iface->needs_probe = gst_ossprobe_needs_probe;
+ iface->get_values = gst_ossprobe_get_values;
}
-static void
-gst_osselement_init (GstOssElement *oss)
+static void
+gst_osselement_init (GstOssElement * oss)
{
oss->device = g_strdup ("/dev/dsp");
oss->mixer_dev = g_strdup ("/dev/mixer");
@@ -429,7 +420,7 @@ gst_osselement_init (GstOssElement *oss)
}
static void
-gst_osselement_dispose (GObject *object)
+gst_osselement_dispose (GObject * object)
{
GstOssElement *oss = (GstOssElement *) object;
@@ -439,8 +430,8 @@ gst_osselement_dispose (GObject *object)
G_OBJECT_CLASS (parent_class)->dispose (object);
}
-void
-gst_osselement_reset (GstOssElement *oss)
+void
+gst_osselement_reset (GstOssElement * oss)
{
oss->law = 0;
oss->endianness = G_BYTE_ORDER;
@@ -457,14 +448,14 @@ gst_osselement_reset (GstOssElement *oss)
oss->format = AFMT_S16_BE;
#else
oss->format = AFMT_S16_LE;
-#endif /* WORDS_BIGENDIAN */
+#endif /* WORDS_BIGENDIAN */
}
-static gboolean
-gst_ossformat_get (gint law, gint endianness, gboolean sign, gint width, gint depth,
- gint *format, gint *bps)
+static gboolean
+gst_ossformat_get (gint law, gint endianness, gboolean sign, gint width,
+ gint depth, gint * format, gint * bps)
{
- if (width != depth)
+ if (width != depth)
return FALSE;
*bps = 1;
@@ -472,52 +463,39 @@ gst_ossformat_get (gint law, gint endianness, gboolean sign, gint width, gint de
if (law == 0) {
if (width == 16) {
if (sign == TRUE) {
- if (endianness == G_LITTLE_ENDIAN) {
+ if (endianness == G_LITTLE_ENDIAN) {
*format = AFMT_S16_LE;
- GST_DEBUG (
- "16 bit signed LE, no law (%d)", *format);
- }
- else if (endianness == G_BIG_ENDIAN) {
+ GST_DEBUG ("16 bit signed LE, no law (%d)", *format);
+ } else if (endianness == G_BIG_ENDIAN) {
*format = AFMT_S16_BE;
- GST_DEBUG (
- "16 bit signed BE, no law (%d)", *format);
+ GST_DEBUG ("16 bit signed BE, no law (%d)", *format);
}
- }
- else {
- if (endianness == G_LITTLE_ENDIAN) {
+ } else {
+ if (endianness == G_LITTLE_ENDIAN) {
*format = AFMT_U16_LE;
- GST_DEBUG (
- "16 bit unsigned LE, no law (%d)", *format);
- }
- else if (endianness == G_BIG_ENDIAN) {
+ GST_DEBUG ("16 bit unsigned LE, no law (%d)", *format);
+ } else if (endianness == G_BIG_ENDIAN) {
*format = AFMT_U16_BE;
- GST_DEBUG (
- "16 bit unsigned BE, no law (%d)", *format);
+ GST_DEBUG ("16 bit unsigned BE, no law (%d)", *format);
}
}
*bps = 2;
- }
- else if (width == 8) {
+ } else if (width == 8) {
if (sign == TRUE) {
*format = AFMT_S8;
- GST_DEBUG (
- "8 bit signed, no law (%d)", *format);
- }
- else {
- *format = AFMT_U8;
- GST_DEBUG (
- "8 bit unsigned, no law (%d)", *format);
+ GST_DEBUG ("8 bit signed, no law (%d)", *format);
+ } else {
+ *format = AFMT_U8;
+ GST_DEBUG ("8 bit unsigned, no law (%d)", *format);
}
*bps = 1;
}
} else if (law == 1) {
*format = AFMT_MU_LAW;
- GST_DEBUG (
- "mu law (%d)", *format);
+ GST_DEBUG ("mu law (%d)", *format);
} else if (law == 2) {
*format = AFMT_A_LAW;
- GST_DEBUG (
- "a law (%d)", *format);
+ GST_DEBUG ("a law (%d)", *format);
} else {
g_critical ("unknown law");
return FALSE;
@@ -526,34 +504,33 @@ gst_ossformat_get (gint law, gint endianness, gboolean sign, gint width, gint de
return TRUE;
}
-gboolean
-gst_osselement_parse_caps (GstOssElement *oss, const GstCaps *caps)
+gboolean
+gst_osselement_parse_caps (GstOssElement * oss, const GstCaps * caps)
{
gint bps, format;
GstStructure *structure;
structure = gst_caps_get_structure (caps, 0);
- gst_structure_get_int (structure, "width", &oss->width);
- gst_structure_get_int (structure, "depth", &oss->depth);
-
- if (oss->width != oss->depth)
+ gst_structure_get_int (structure, "width", &oss->width);
+ gst_structure_get_int (structure, "depth", &oss->depth);
+
+ if (oss->width != oss->depth)
+ return FALSE;
+
+ gst_structure_get_int (structure, "law", &oss->law);
+ gst_structure_get_int (structure, "endianness", &oss->endianness);
+ gst_structure_get_boolean (structure, "signed", &oss->sign);
+
+ if (!gst_ossformat_get (oss->law, oss->endianness, oss->sign,
+ oss->width, oss->depth, &format, &bps)) {
+ GST_DEBUG ("could not get format");
return FALSE;
-
- gst_structure_get_int (structure, "law", &oss->law);
- gst_structure_get_int (structure, "endianness", &oss->endianness);
- gst_structure_get_boolean (structure, "signed", &oss->sign);
-
- if (!gst_ossformat_get (oss->law, oss->endianness, oss->sign,
- oss->width, oss->depth, &format, &bps))
- {
- GST_DEBUG ("could not get format");
- return FALSE;
}
- gst_structure_get_int (structure, "channels", &oss->channels);
- gst_structure_get_int (structure, "rate", &oss->rate);
-
+ gst_structure_get_int (structure, "channels", &oss->channels);
+ gst_structure_get_int (structure, "rate", &oss->rate);
+
oss->bps = bps * oss->channels * oss->rate;
oss->format = format;
@@ -571,38 +548,37 @@ G_STMT_START { \
gst_structure_get_boolean (structure, name, dest); \
} G_STMT_END
-gboolean
-gst_osselement_merge_fixed_caps (GstOssElement *oss, GstCaps *caps)
+gboolean
+gst_osselement_merge_fixed_caps (GstOssElement * oss, GstCaps * caps)
{
gint bps, format;
GstStructure *structure;
structure = gst_caps_get_structure (caps, 0);
-
+
/* peel off fixed stuff from the caps */
- gst_structure_get_int (structure, "law", &oss->law);
+ gst_structure_get_int (structure, "law", &oss->law);
gst_structure_get_int (structure, "endianness", &oss->endianness);
- gst_structure_get_boolean (structure, "signed", &oss->sign);
- gst_structure_get_int (structure, "width", &oss->width);
- gst_structure_get_int (structure, "depth", &oss->depth);
-
- if (!gst_ossformat_get (oss->law, oss->endianness, oss->sign,
- oss->width, oss->depth, &format, &bps))
- {
- return FALSE;
+ gst_structure_get_boolean (structure, "signed", &oss->sign);
+ gst_structure_get_int (structure, "width", &oss->width);
+ gst_structure_get_int (structure, "depth", &oss->depth);
+
+ if (!gst_ossformat_get (oss->law, oss->endianness, oss->sign,
+ oss->width, oss->depth, &format, &bps)) {
+ return FALSE;
}
- gst_structure_get_int (structure, "rate", &oss->rate);
- gst_structure_get_int (structure, "channels", &oss->channels);
-
+ gst_structure_get_int (structure, "rate", &oss->rate);
+ gst_structure_get_int (structure, "channels", &oss->channels);
+
oss->bps = bps * oss->channels * oss->rate;
oss->format = format;
-
+
return TRUE;
}
-gboolean
-gst_osselement_sync_parms (GstOssElement *oss)
+gboolean
+gst_osselement_sync_parms (GstOssElement * oss)
{
audio_buf_info space;
int frag;
@@ -613,33 +589,32 @@ gst_osselement_sync_parms (GstOssElement *oss)
if (oss->fd == -1)
return FALSE;
-
+
if (oss->fragment >> 16)
frag = oss->fragment;
else
frag = 0x7FFF0000 | oss->fragment;
-
- GST_INFO ("osselement: setting sound card to %dHz %d format %s (%08x fragment)",
- oss->rate, oss->format,
- (oss->channels == 2) ? "stereo" : "mono", frag);
+
+ GST_INFO
+ ("osselement: setting sound card to %dHz %d format %s (%08x fragment)",
+ oss->rate, oss->format, (oss->channels == 2) ? "stereo" : "mono", frag);
ioctl (oss->fd, SNDCTL_DSP_SETFRAGMENT, &frag);
ioctl (oss->fd, SNDCTL_DSP_RESET, 0);
- target_format = oss->format;
+ target_format = oss->format;
target_channels = oss->channels;
- target_rate = oss->rate;
+ target_rate = oss->rate;
- ioctl (oss->fd, SNDCTL_DSP_SETFMT, &oss->format);
+ ioctl (oss->fd, SNDCTL_DSP_SETFMT, &oss->format);
ioctl (oss->fd, SNDCTL_DSP_CHANNELS, &oss->channels);
- ioctl (oss->fd, SNDCTL_DSP_SPEED, &oss->rate);
+ ioctl (oss->fd, SNDCTL_DSP_SPEED, &oss->rate);
ioctl (oss->fd, SNDCTL_DSP_GETBLKSIZE, &oss->fragment_size);
if (oss->mode == GST_OSSELEMENT_WRITE) {
ioctl (oss->fd, SNDCTL_DSP_GETOSPACE, &space);
- }
- else {
+ } else {
ioctl (oss->fd, SNDCTL_DSP_GETISPACE, &space);
}
@@ -651,25 +626,26 @@ gst_osselement_sync_parms (GstOssElement *oss)
frag_ln++;
}
oss->fragment = space.fragstotal << 16 | frag_ln;
-
+
GST_INFO ("osselement: set sound card to %dHz, %d format, %s "
- "(%d bytes buffer, %08x fragment)",
- oss->rate, oss->format,
- (oss->channels == 2) ? "stereo" : "mono",
- space.bytes, oss->fragment);
+ "(%d bytes buffer, %08x fragment)",
+ oss->rate, oss->format,
+ (oss->channels == 2) ? "stereo" : "mono", space.bytes, oss->fragment);
oss->fragment_time = (GST_SECOND * oss->fragment_size) / oss->bps;
- GST_INFO ("fragment time %u %" G_GUINT64_FORMAT "\n",
- oss->bps, oss->fragment_time);
+ GST_INFO ("fragment time %u %" G_GUINT64_FORMAT "\n",
+ oss->bps, oss->fragment_time);
- if (target_format != oss->format ||
- target_channels != oss->channels ||
- target_rate != oss->rate)
- {
+ if (target_format != oss->format ||
+ target_channels != oss->channels || target_rate != oss->rate) {
if (target_channels != oss->channels)
- g_warning ("couldn't set the right number of channels (wanted %d, got %d), enjoy the tone difference", target_channels, oss->channels);
+ g_warning
+ ("couldn't set the right number of channels (wanted %d, got %d), enjoy the tone difference",
+ target_channels, oss->channels);
if (target_rate != oss->rate)
- g_warning ("couldn't set the right sample rate (wanted %d, got %d), enjoy the speed difference", target_rate, oss->rate);
+ g_warning
+ ("couldn't set the right sample rate (wanted %d, got %d), enjoy the speed difference",
+ target_rate, oss->rate);
if (target_format != oss->format)
g_warning ("couldn't set requested OSS format, enjoy the noise :)");
/* we could eventually return FALSE here, or just do some additional tests
@@ -679,7 +655,7 @@ gst_osselement_sync_parms (GstOssElement *oss)
}
static gboolean
-gst_osselement_open_audio (GstOssElement *oss)
+gst_osselement_open_audio (GstOssElement * oss)
{
gint caps;
GstOssOpenMode mode = GST_OSSELEMENT_READ;
@@ -693,6 +669,7 @@ gst_osselement_open_audio (GstOssElement *oss)
padlist = gst_element_get_pad_list (GST_ELEMENT (oss));
if (padlist != NULL) {
GstPad *firstpad = padlist->data;
+
if (GST_PAD_IS_SINK (firstpad)) {
mode = GST_OSSELEMENT_WRITE;
}
@@ -708,12 +685,11 @@ gst_osselement_open_audio (GstOssElement *oss)
if (oss->fd >= 0) {
close (oss->fd);
-
+
/* re-open the sound device in blocking mode */
oss->fd = open (oss->device, O_WRONLY);
}
- }
- else {
+ } else {
oss->fd = open (oss->device, O_RDONLY);
}
@@ -721,37 +697,37 @@ gst_osselement_open_audio (GstOssElement *oss)
switch (errno) {
case EBUSY:
GST_ELEMENT_ERROR (oss, RESOURCE, BUSY,
- (_("OSS device \"%s\" is already in use by another program."), oss->device),
- (NULL));
+ (_("OSS device \"%s\" is already in use by another program."),
+ oss->device), (NULL));
break;
case EACCES:
case ETXTBSY:
- if (mode == GST_OSSELEMENT_WRITE)
+ if (mode == GST_OSSELEMENT_WRITE)
GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
- (_("Could not access device \"%s\", check its permissions."), oss->device),
- GST_ERROR_SYSTEM);
- else
+ (_("Could not access device \"%s\", check its permissions."),
+ oss->device), GST_ERROR_SYSTEM);
+ else
GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- (_("Could not access device \"%s\", check its permissions."), oss->device),
- GST_ERROR_SYSTEM);
+ (_("Could not access device \"%s\", check its permissions."),
+ oss->device), GST_ERROR_SYSTEM);
break;
case ENXIO:
case ENODEV:
case ENOENT:
GST_ELEMENT_ERROR (oss, RESOURCE, NOT_FOUND,
- (_("Device \"%s\" does not exist."), oss->device),
- GST_ERROR_SYSTEM);
+ (_("Device \"%s\" does not exist."), oss->device),
+ GST_ERROR_SYSTEM);
break;
default:
/* FIXME: strerror is not threadsafe */
- if (mode == GST_OSSELEMENT_WRITE)
+ if (mode == GST_OSSELEMENT_WRITE)
GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
- (_("Could not open device \"%s\" for writing."), oss->device),
- GST_ERROR_SYSTEM);
- else
+ (_("Could not open device \"%s\" for writing."), oss->device),
+ GST_ERROR_SYSTEM);
+ else
GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- (_("Could not open device \"%s\" for reading."), oss->device),
- GST_ERROR_SYSTEM);
+ (_("Could not open device \"%s\" for reading."), oss->device),
+ GST_ERROR_SYSTEM);
break;
}
return FALSE;
@@ -765,40 +741,58 @@ gst_osselement_open_audio (GstOssElement *oss)
GST_INFO ("osselement: Capabilities %08x", caps);
- if (caps & DSP_CAP_DUPLEX) GST_INFO ( "osselement: Full duplex");
- if (caps & DSP_CAP_REALTIME) GST_INFO ( "osselement: Realtime");
- if (caps & DSP_CAP_BATCH) GST_INFO ( "osselement: Batch");
- if (caps & DSP_CAP_COPROC) GST_INFO ( "osselement: Has coprocessor");
- if (caps & DSP_CAP_TRIGGER) GST_INFO ( "osselement: Trigger");
- if (caps & DSP_CAP_MMAP) GST_INFO ( "osselement: Direct access");
+ if (caps & DSP_CAP_DUPLEX)
+ GST_INFO ("osselement: Full duplex");
+ if (caps & DSP_CAP_REALTIME)
+ GST_INFO ("osselement: Realtime");
+ if (caps & DSP_CAP_BATCH)
+ GST_INFO ("osselement: Batch");
+ if (caps & DSP_CAP_COPROC)
+ GST_INFO ("osselement: Has coprocessor");
+ if (caps & DSP_CAP_TRIGGER)
+ GST_INFO ("osselement: Trigger");
+ if (caps & DSP_CAP_MMAP)
+ GST_INFO ("osselement: Direct access");
#ifdef DSP_CAP_MULTI
- if (caps & DSP_CAP_MULTI) GST_INFO ( "osselement: Multiple open");
+ if (caps & DSP_CAP_MULTI)
+ GST_INFO ("osselement: Multiple open");
#endif /* DSP_CAP_MULTI */
#ifdef DSP_CAP_BIND
- if (caps & DSP_CAP_BIND) GST_INFO ( "osselement: Channel binding");
+ if (caps & DSP_CAP_BIND)
+ GST_INFO ("osselement: Channel binding");
#endif /* DSP_CAP_BIND */
- ioctl(oss->fd, SNDCTL_DSP_GETFMTS, &caps);
-
- GST_INFO ( "osselement: Formats %08x", caps);
- if (caps & AFMT_MU_LAW) GST_INFO ( "osselement: MU_LAW");
- if (caps & AFMT_A_LAW) GST_INFO ( "osselement: A_LAW");
- if (caps & AFMT_IMA_ADPCM) GST_INFO ( "osselement: IMA_ADPCM");
- if (caps & AFMT_U8) GST_INFO ( "osselement: U8");
- if (caps & AFMT_S16_LE) GST_INFO ( "osselement: S16_LE");
- if (caps & AFMT_S16_BE) GST_INFO ( "osselement: S16_BE");
- if (caps & AFMT_S8) GST_INFO ( "osselement: S8");
- if (caps & AFMT_U16_LE) GST_INFO ( "osselement: U16_LE");
- if (caps & AFMT_U16_BE) GST_INFO ( "osselement: U16_BE");
- if (caps & AFMT_MPEG) GST_INFO ( "osselement: MPEG");
+ ioctl (oss->fd, SNDCTL_DSP_GETFMTS, &caps);
+
+ GST_INFO ("osselement: Formats %08x", caps);
+ if (caps & AFMT_MU_LAW)
+ GST_INFO ("osselement: MU_LAW");
+ if (caps & AFMT_A_LAW)
+ GST_INFO ("osselement: A_LAW");
+ if (caps & AFMT_IMA_ADPCM)
+ GST_INFO ("osselement: IMA_ADPCM");
+ if (caps & AFMT_U8)
+ GST_INFO ("osselement: U8");
+ if (caps & AFMT_S16_LE)
+ GST_INFO ("osselement: S16_LE");
+ if (caps & AFMT_S16_BE)
+ GST_INFO ("osselement: S16_BE");
+ if (caps & AFMT_S8)
+ GST_INFO ("osselement: S8");
+ if (caps & AFMT_U16_LE)
+ GST_INFO ("osselement: U16_LE");
+ if (caps & AFMT_U16_BE)
+ GST_INFO ("osselement: U16_BE");
+ if (caps & AFMT_MPEG)
+ GST_INFO ("osselement: MPEG");
#ifdef AFMT_AC3
- if (caps & AFMT_AC3) GST_INFO ( "osselement: AC3");
+ if (caps & AFMT_AC3)
+ GST_INFO ("osselement: AC3");
#endif
- GST_INFO ("osselement: opened audio (%s) with fd=%d",
- oss->device, oss->fd);
+ GST_INFO ("osselement: opened audio (%s) with fd=%d", oss->device, oss->fd);
oss->caps = caps;
@@ -809,23 +803,21 @@ do_mixer:
}
static void
-gst_osselement_close_audio (GstOssElement *oss)
+gst_osselement_close_audio (GstOssElement * oss)
{
gst_ossmixer_free_list (oss);
- if (oss->fd < 0)
+ if (oss->fd < 0)
return;
- close(oss->fd);
+ close (oss->fd);
oss->fd = -1;
}
gboolean
-gst_osselement_convert (GstOssElement *oss,
- GstFormat src_format,
- gint64 src_value,
- GstFormat *dest_format,
- gint64 *dest_value)
+gst_osselement_convert (GstOssElement * oss,
+ GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value)
{
gboolean res = TRUE;
@@ -840,38 +832,38 @@ gst_osselement_convert (GstOssElement *oss,
switch (src_format) {
case GST_FORMAT_BYTES:
switch (*dest_format) {
- case GST_FORMAT_TIME:
+ case GST_FORMAT_TIME:
*dest_value = src_value * GST_SECOND / oss->bps;
- break;
- case GST_FORMAT_DEFAULT:
+ break;
+ case GST_FORMAT_DEFAULT:
*dest_value = src_value / (oss->width * oss->channels / 8);
- break;
- default:
- res = FALSE;
+ break;
+ default:
+ res = FALSE;
}
break;
case GST_FORMAT_TIME:
switch (*dest_format) {
- case GST_FORMAT_BYTES:
+ case GST_FORMAT_BYTES:
*dest_value = src_value * oss->bps / GST_SECOND;
- break;
- case GST_FORMAT_DEFAULT:
+ break;
+ case GST_FORMAT_DEFAULT:
*dest_value = src_value * oss->rate / GST_SECOND;
- break;
- default:
- res = FALSE;
+ break;
+ default:
+ res = FALSE;
}
break;
case GST_FORMAT_DEFAULT:
switch (*dest_format) {
- case GST_FORMAT_TIME:
+ case GST_FORMAT_TIME:
*dest_value = src_value * GST_SECOND / oss->rate;
- break;
- case GST_FORMAT_BYTES:
+ break;
+ case GST_FORMAT_BYTES:
*dest_value = src_value * oss->width * oss->channels / 8;
- break;
- default:
- res = FALSE;
+ break;
+ default:
+ res = FALSE;
}
break;
default:
@@ -881,11 +873,9 @@ gst_osselement_convert (GstOssElement *oss,
return res;
}
-static void
-gst_osselement_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+static void
+gst_osselement_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
{
GstOssElement *oss = GST_OSSELEMENT (object);
@@ -894,34 +884,34 @@ gst_osselement_set_property (GObject *object,
/* disallow changing the device while it is opened
get_property("device") should return the right one */
if (gst_element_get_state (GST_ELEMENT (oss)) == GST_STATE_NULL) {
- g_free (oss->device);
- oss->device = g_strdup (g_value_get_string (value));
+ g_free (oss->device);
+ oss->device = g_strdup (g_value_get_string (value));
- /* let's assume that if we have a device map for the mixer,
+ /* let's assume that if we have a device map for the mixer,
* we're allowed to do all that automagically here */
- if (GST_OSSELEMENT_GET_CLASS (oss)->device_combinations != NULL) {
- GList *list = GST_OSSELEMENT_GET_CLASS (oss)->device_combinations;
+ if (GST_OSSELEMENT_GET_CLASS (oss)->device_combinations != NULL) {
+ GList *list = GST_OSSELEMENT_GET_CLASS (oss)->device_combinations;
- while (list) {
- GstOssDeviceCombination *combi = list->data;
+ while (list) {
+ GstOssDeviceCombination *combi = list->data;
- if (!strcmp (combi->dsp, oss->device)) {
- g_free (oss->mixer_dev);
- oss->mixer_dev = g_strdup (combi->mixer);
- break;
- }
+ if (!strcmp (combi->dsp, oss->device)) {
+ g_free (oss->mixer_dev);
+ oss->mixer_dev = g_strdup (combi->mixer);
+ break;
+ }
- list = list->next;
- }
- }
+ list = list->next;
+ }
+ }
}
break;
case ARG_MIXERDEV:
/* disallow changing the device while it is opened
get_property("mixerdev") should return the right one */
if (gst_element_get_state (GST_ELEMENT (oss)) == GST_STATE_NULL) {
- g_free (oss->mixer_dev);
- oss->mixer_dev = g_strdup (g_value_get_string (value));
+ g_free (oss->mixer_dev);
+ oss->mixer_dev = g_strdup (g_value_get_string (value));
}
break;
default:
@@ -929,11 +919,9 @@ gst_osselement_set_property (GObject *object,
}
}
-static void
-gst_osselement_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+static void
+gst_osselement_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
{
GstOssElement *oss = GST_OSSELEMENT (object);
@@ -953,15 +941,15 @@ gst_osselement_get_property (GObject *object,
}
}
-static GstElementStateReturn
-gst_osselement_change_state (GstElement *element)
+static GstElementStateReturn
+gst_osselement_change_state (GstElement * element)
{
GstOssElement *oss = GST_OSSELEMENT (element);
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_NULL_TO_READY:
if (!gst_osselement_open_audio (oss)) {
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
GST_INFO ("osselement: opened sound device");
break;
@@ -973,7 +961,7 @@ gst_osselement_change_state (GstElement *element)
default:
break;
}
-
+
if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
diff --git a/sys/oss/gstosselement.h b/sys/oss/gstosselement.h
index 3ce84a2c..1b73ec49 100644
--- a/sys/oss/gstosselement.h
+++ b/sys/oss/gstosselement.h
@@ -30,7 +30,6 @@ GST_DEBUG_CATEGORY_EXTERN (oss_debug);
#define GST_CAT_DEFAULT oss_debug
G_BEGIN_DECLS
-
#define GST_TYPE_OSSELEMENT \
(gst_osselement_get_type())
#define GST_OSSELEMENT(obj) \
@@ -43,16 +42,17 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSSELEMENT))
#define GST_OSSELEMENT_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_OSSELEMENT, GstOssElementClass))
-
typedef struct _GstOssElement GstOssElement;
typedef struct _GstOssElementClass GstOssElementClass;
-typedef enum {
+typedef enum
+{
GST_OSSELEMENT_READ,
GST_OSSELEMENT_WRITE,
} GstOssOpenMode;
-typedef struct _GstOssDeviceCombination {
+typedef struct _GstOssDeviceCombination
+{
gchar *dsp, *mixer;
dev_t dev;
} GstOssDeviceCombination;
@@ -60,65 +60,57 @@ typedef struct _GstOssDeviceCombination {
struct _GstOssElement
{
/* yes, we're a gstelement too */
- GstElement parent;
+ GstElement parent;
- gchar *device,
- *mixer_dev;
+ gchar *device, *mixer_dev;
/* device state */
- int fd;
- int caps; /* the capabilities */
- gint format;
- gint fragment;
- guint64 fragment_time;
- gint fragment_size;
+ int fd;
+ int caps; /* the capabilities */
+ gint format;
+ gint fragment;
+ guint64 fragment_time;
+ gint fragment_size;
GstOssOpenMode mode;
/* stats bytes per *second* */
- guint bps;
+ guint bps;
/* parameters */
- gint law;
- gint endianness;
- gboolean sign;
- gint width;
- gint depth;
- gint channels;
- gint rate;
+ gint law;
+ gint endianness;
+ gboolean sign;
+ gint width;
+ gint depth;
+ gint channels;
+ gint rate;
/* mixer stuff */
- GList *tracklist;
- guint32 stereomask,
- recdevs,
- recmask,
- mixcaps;
- gint mixer_fd;
- gchar *device_name;
+ GList *tracklist;
+ guint32 stereomask, recdevs, recmask, mixcaps;
+ gint mixer_fd;
+ gchar *device_name;
};
-struct _GstOssElementClass {
+struct _GstOssElementClass
+{
GstElementClass klass;
- GList *device_combinations;
+ GList *device_combinations;
};
-GType gst_osselement_get_type (void);
+GType gst_osselement_get_type (void);
/* some useful functions */
-gboolean gst_osselement_parse_caps (GstOssElement *oss,
- const GstCaps *caps);
-gboolean gst_osselement_merge_fixed_caps (GstOssElement *oss,
- GstCaps *caps);
-
-gboolean gst_osselement_sync_parms (GstOssElement *oss);
-void gst_osselement_reset (GstOssElement *oss);
-
-gboolean gst_osselement_convert (GstOssElement *oss,
- GstFormat src_format,
- gint64 src_value,
- GstFormat *dest_format,
- gint64 *dest_value);
+gboolean gst_osselement_parse_caps (GstOssElement * oss, const GstCaps * caps);
+gboolean gst_osselement_merge_fixed_caps (GstOssElement * oss, GstCaps * caps);
-G_END_DECLS
+gboolean gst_osselement_sync_parms (GstOssElement * oss);
+void gst_osselement_reset (GstOssElement * oss);
+gboolean gst_osselement_convert (GstOssElement * oss,
+ GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+
+G_END_DECLS
#endif /* __GST_OSS_ELEMENT_H__ */
diff --git a/sys/oss/gstossmixer.c b/sys/oss/gstossmixer.c
index 6bc89ccd..a9e7222c 100644
--- a/sys/oss/gstossmixer.c
+++ b/sys/oss/gstossmixer.c
@@ -37,27 +37,22 @@
#define MASK_BIT_IS_SET(mask, bit) \
(mask & (1 << bit))
-static void gst_ossmixer_track_class_init (GstOssMixerTrackClass *klass);
-static void gst_ossmixer_track_init (GstOssMixerTrack *track);
+static void gst_ossmixer_track_class_init (GstOssMixerTrackClass * klass);
+static void gst_ossmixer_track_init (GstOssMixerTrack * track);
-static gboolean gst_ossmixer_supported (GstImplementsInterface *iface,
- GType iface_type);
-static const GList *
- gst_ossmixer_list_tracks (GstMixer *ossmixer);
-
-static void gst_ossmixer_set_volume (GstMixer *ossmixer,
- GstMixerTrack *track,
- gint *volumes);
-static void gst_ossmixer_get_volume (GstMixer *ossmixer,
- GstMixerTrack *track,
- gint *volumes);
-
-static void gst_ossmixer_set_record (GstMixer *ossmixer,
- GstMixerTrack *track,
- gboolean record);
-static void gst_ossmixer_set_mute (GstMixer *ossmixer,
- GstMixerTrack *track,
- gboolean mute);
+static gboolean gst_ossmixer_supported (GstImplementsInterface * iface,
+ GType iface_type);
+static const GList *gst_ossmixer_list_tracks (GstMixer * ossmixer);
+
+static void gst_ossmixer_set_volume (GstMixer * ossmixer,
+ GstMixerTrack * track, gint * volumes);
+static void gst_ossmixer_get_volume (GstMixer * ossmixer,
+ GstMixerTrack * track, gint * volumes);
+
+static void gst_ossmixer_set_record (GstMixer * ossmixer,
+ GstMixerTrack * track, gboolean record);
+static void gst_ossmixer_set_mute (GstMixer * ossmixer,
+ GstMixerTrack * track, gboolean mute);
static const gchar **labels = NULL;
static GstMixerTrackClass *parent_class = NULL;
@@ -76,39 +71,41 @@ fill_labels (void)
{
gint i, pos;
gchar *origs[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_LABELS;
- struct {
+ struct
+ {
gchar *given, *wanted;
} cases[] = {
/* Note: this list is simply ripped from soundcard.h. For
* some people, some values might be missing (3D surround,
* etc.) - feel free to add them. That's the reason why
* I'm doing this in such a horribly complicated way. */
- { "Vol ", _("Volume") },
- { "Bass ", _("Bass") },
- { "Trebl", _("Treble") },
- { "Synth", _("Synth") },
- { "Pcm ", _("PCM") },
- { "Spkr ", _("Speaker") },
- { "Line ", _("Line-in") },
- { "Mic ", _("Microphone") },
- { "CD ", _("CD") },
- { "Mix ", _("Mixer") },
- { "Pcm2 ", _("PCM-2") },
- { "Rec ", _("Record") },
- { "IGain", _("In-gain") },
- { "OGain", _("Out-gain") },
- { "Line1", _("Line-1") },
- { "Line2", _("Line-2") },
- { "Line3", _("Line-3") },
- { "Digital1", _("Digital-1") },
- { "Digital2", _("Digital-2") },
- { "Digital3", _("Digital-3") },
- { "PhoneIn", _("Phone-in") },
- { "PhoneOut", _("Phone-out") },
- { "Video", _("Video") },
- { "Radio", _("Radio") },
- { "Monitor", _("Monitor") },
- { NULL, NULL }
+ {
+ "Vol ", _("Volume")}, {
+ "Bass ", _("Bass")}, {
+ "Trebl", _("Treble")}, {
+ "Synth", _("Synth")}, {
+ "Pcm ", _("PCM")}, {
+ "Spkr ", _("Speaker")}, {
+ "Line ", _("Line-in")}, {
+ "Mic ", _("Microphone")}, {
+ "CD ", _("CD")}, {
+ "Mix ", _("Mixer")}, {
+ "Pcm2 ", _("PCM-2")}, {
+ "Rec ", _("Record")}, {
+ "IGain", _("In-gain")}, {
+ "OGain", _("Out-gain")}, {
+ "Line1", _("Line-1")}, {
+ "Line2", _("Line-2")}, {
+ "Line3", _("Line-3")}, {
+ "Digital1", _("Digital-1")}, {
+ "Digital2", _("Digital-2")}, {
+ "Digital3", _("Digital-3")}, {
+ "PhoneIn", _("Phone-in")}, {
+ "PhoneOut", _("Phone-out")}, {
+ "Video", _("Video")}, {
+ "Radio", _("Radio")}, {
+ "Monitor", _("Monitor")}, {
+ NULL, NULL}
};
labels = g_malloc (sizeof (gchar *) * SOUND_MIXER_NRDEVICES);
@@ -116,8 +113,8 @@ fill_labels (void)
for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) {
for (pos = 0; cases[pos].given != NULL; pos++) {
if (!strcmp (cases[pos].given, origs[i])) {
- labels[i] = g_strdup (cases[pos].wanted);
- break;
+ labels[i] = g_strdup (cases[pos].wanted);
+ break;
}
}
if (cases[pos].given == NULL)
@@ -146,31 +143,28 @@ gst_ossmixer_track_get_type (void)
gst_ossmixer_track_type =
g_type_register_static (GST_TYPE_MIXER_TRACK,
- "GstOssMixerTrack",
- &ossmixer_track_info, 0);
+ "GstOssMixerTrack", &ossmixer_track_info, 0);
}
return gst_ossmixer_track_type;
}
static void
-gst_ossmixer_track_class_init (GstOssMixerTrackClass *klass)
+gst_ossmixer_track_class_init (GstOssMixerTrackClass * klass)
{
parent_class = g_type_class_ref (GST_TYPE_MIXER_TRACK);
}
static void
-gst_ossmixer_track_init (GstOssMixerTrack *track)
+gst_ossmixer_track_init (GstOssMixerTrack * track)
{
track->lvol = track->rvol = 0;
track->track_num = 0;
}
GstMixerTrack *
-gst_ossmixer_track_new (GstOssElement *oss,
- gint track_num,
- gint max_chans,
- gint flags)
+gst_ossmixer_track_new (GstOssElement * oss,
+ gint track_num, gint max_chans, gint flags)
{
GstOssMixerTrack *osstrack;
GstMixerTrack *track;
@@ -189,9 +183,9 @@ gst_ossmixer_track_new (GstOssElement *oss,
osstrack->track_num = track_num;
/* volume */
- if (ioctl(oss->mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
- g_warning("Error getting device (%d) volume: %s",
- osstrack->track_num, strerror(errno));
+ if (ioctl (oss->mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
+ g_warning ("Error getting device (%d) volume: %s",
+ osstrack->track_num, strerror (errno));
volume = 0;
}
osstrack->lvol = (volume & 0xff);
@@ -203,17 +197,17 @@ gst_ossmixer_track_new (GstOssElement *oss,
}
void
-gst_oss_interface_init (GstImplementsInterfaceClass *klass)
+gst_oss_interface_init (GstImplementsInterfaceClass * klass)
{
/* default virtual functions */
klass->supported = gst_ossmixer_supported;
}
void
-gst_ossmixer_interface_init (GstMixerClass *klass)
+gst_ossmixer_interface_init (GstMixerClass * klass)
{
GST_MIXER_TYPE (klass) = GST_MIXER_HARDWARE;
-
+
/* default virtual functions */
klass->list_tracks = gst_ossmixer_list_tracks;
klass->set_volume = gst_ossmixer_set_volume;
@@ -223,8 +217,7 @@ gst_ossmixer_interface_init (GstMixerClass *klass)
}
static gboolean
-gst_ossmixer_supported (GstImplementsInterface *iface,
- GType iface_type)
+gst_ossmixer_supported (GstImplementsInterface * iface, GType iface_type)
{
g_assert (iface_type == GST_TYPE_MIXER);
@@ -232,8 +225,7 @@ gst_ossmixer_supported (GstImplementsInterface *iface,
}
static gboolean
-gst_ossmixer_contains_track (GstOssElement *oss,
- GstOssMixerTrack *osstrack)
+gst_ossmixer_contains_track (GstOssElement * oss, GstOssMixerTrack * osstrack)
{
const GList *item;
@@ -245,15 +237,14 @@ gst_ossmixer_contains_track (GstOssElement *oss,
}
static const GList *
-gst_ossmixer_list_tracks (GstMixer *mixer)
+gst_ossmixer_list_tracks (GstMixer * mixer)
{
return (const GList *) GST_OSSELEMENT (mixer)->tracklist;
}
static void
-gst_ossmixer_get_volume (GstMixer *mixer,
- GstMixerTrack *track,
- gint *volumes)
+gst_ossmixer_get_volume (GstMixer * mixer,
+ GstMixerTrack * track, gint * volumes)
{
gint volume;
GstOssElement *oss = GST_OSSELEMENT (mixer);
@@ -270,9 +261,9 @@ gst_ossmixer_get_volume (GstMixer *mixer,
}
} else {
/* get */
- if (ioctl(oss->mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
- g_warning("Error getting recording device (%d) volume: %s",
- osstrack->track_num, strerror(errno));
+ if (ioctl (oss->mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
+ g_warning ("Error getting recording device (%d) volume: %s",
+ osstrack->track_num, strerror (errno));
volume = 0;
}
@@ -284,9 +275,8 @@ gst_ossmixer_get_volume (GstMixer *mixer,
}
static void
-gst_ossmixer_set_volume (GstMixer *mixer,
- GstMixerTrack *track,
- gint *volumes)
+gst_ossmixer_set_volume (GstMixer * mixer,
+ GstMixerTrack * track, gint * volumes)
{
gint volume;
GstOssElement *oss = GST_OSSELEMENT (mixer);
@@ -304,9 +294,9 @@ gst_ossmixer_set_volume (GstMixer *mixer,
}
/* set */
- if (ioctl(oss->mixer_fd, MIXER_WRITE (osstrack->track_num), &volume) < 0) {
- g_warning("Error setting recording device (%d) volume (0x%x): %s",
- osstrack->track_num, volume, strerror(errno));
+ if (ioctl (oss->mixer_fd, MIXER_WRITE (osstrack->track_num), &volume) < 0) {
+ g_warning ("Error setting recording device (%d) volume (0x%x): %s",
+ osstrack->track_num, volume, strerror (errno));
return;
}
}
@@ -318,9 +308,7 @@ gst_ossmixer_set_volume (GstMixer *mixer,
}
static void
-gst_ossmixer_set_mute (GstMixer *mixer,
- GstMixerTrack *track,
- gboolean mute)
+gst_ossmixer_set_mute (GstMixer * mixer, GstMixerTrack * track, gboolean mute)
{
int volume;
GstOssElement *oss = GST_OSSELEMENT (mixer);
@@ -339,9 +327,9 @@ gst_ossmixer_set_mute (GstMixer *mixer,
}
}
- if (ioctl(oss->mixer_fd, MIXER_WRITE(osstrack->track_num), &volume) < 0) {
- g_warning("Error setting mixer recording device volume (0x%x): %s",
- volume, strerror(errno));
+ if (ioctl (oss->mixer_fd, MIXER_WRITE (osstrack->track_num), &volume) < 0) {
+ g_warning ("Error setting mixer recording device volume (0x%x): %s",
+ volume, strerror (errno));
return;
}
@@ -353,9 +341,8 @@ gst_ossmixer_set_mute (GstMixer *mixer,
}
static void
-gst_ossmixer_set_record (GstMixer *mixer,
- GstMixerTrack *track,
- gboolean record)
+gst_ossmixer_set_record (GstMixer * mixer,
+ GstMixerTrack * track, gboolean record)
{
GstOssElement *oss = GST_OSSELEMENT (mixer);
GstOssMixerTrack *osstrack = GST_OSSMIXER_TRACK (track);
@@ -372,8 +359,10 @@ gst_ossmixer_set_record (GstMixer *mixer,
/* if we're exclusive, then we need to unset the current one(s) */
if (oss->mixcaps & SOUND_CAP_EXCL_INPUT) {
GList *track;
+
for (track = oss->tracklist; track != NULL; track = track->next) {
GstMixerTrack *turn = (GstMixerTrack *) track->data;
+
turn->flags &= ~GST_MIXER_TRACK_RECORD;
}
oss->recdevs = 0;
@@ -387,9 +376,9 @@ gst_ossmixer_set_record (GstMixer *mixer,
}
/* set it to the device */
- if (ioctl(oss->mixer_fd, SOUND_MIXER_WRITE_RECSRC, &oss->recdevs) < 0) {
- g_warning("Error setting mixer recording devices (0x%x): %s",
- oss->recdevs, strerror(errno));
+ if (ioctl (oss->mixer_fd, SOUND_MIXER_WRITE_RECSRC, &oss->recdevs) < 0) {
+ g_warning ("Error setting mixer recording devices (0x%x): %s",
+ oss->recdevs, strerror (errno));
return;
}
@@ -401,11 +390,12 @@ gst_ossmixer_set_record (GstMixer *mixer,
}
void
-gst_ossmixer_build_list (GstOssElement *oss)
+gst_ossmixer_build_list (GstOssElement * oss)
{
gint i, devmask, master = -1;
const GList *pads = gst_element_get_pad_list (GST_ELEMENT (oss));
GstPadDirection dir = GST_PAD_UNKNOWN;
+
#ifdef SOUND_MIXER_INFO
struct mixer_info minfo;
#endif
@@ -416,7 +406,7 @@ gst_ossmixer_build_list (GstOssElement *oss)
if (oss->mixer_fd == -1) {
/* this is valid. OSS devices don't need to expose a mixer */
GST_DEBUG ("Failed to open mixer device %s, mixing disabled: %s",
- oss->mixer_dev, strerror (errno));
+ oss->mixer_dev, strerror (errno));
return;
}
@@ -427,9 +417,9 @@ gst_ossmixer_build_list (GstOssElement *oss)
/* get masks */
if (ioctl (oss->mixer_fd, SOUND_MIXER_READ_RECMASK, &oss->recmask) < 0 ||
ioctl (oss->mixer_fd, SOUND_MIXER_READ_RECSRC, &oss->recdevs) < 0 ||
- ioctl (oss->mixer_fd, SOUND_MIXER_READ_STEREODEVS, &oss->stereomask) < 0 ||
- ioctl (oss->mixer_fd, SOUND_MIXER_READ_DEVMASK, &devmask) < 0 ||
- ioctl (oss->mixer_fd, SOUND_MIXER_READ_CAPS, &oss->mixcaps) < 0) {
+ ioctl (oss->mixer_fd, SOUND_MIXER_READ_STEREODEVS, &oss->stereomask) < 0
+ || ioctl (oss->mixer_fd, SOUND_MIXER_READ_DEVMASK, &devmask) < 0
+ || ioctl (oss->mixer_fd, SOUND_MIXER_READ_CAPS, &oss->mixcaps) < 0) {
GST_DEBUG ("Failed to get device masks - disabling mixer");
close (oss->mixer_fd);
oss->mixer_fd = -1;
@@ -451,7 +441,7 @@ gst_ossmixer_build_list (GstOssElement *oss)
else if (devmask & SOUND_MASK_PCM)
master = SOUND_MIXER_PCM;
else if (devmask & SOUND_MASK_SPEAKER)
- master = SOUND_MIXER_SPEAKER; /* doubtful... */
+ master = SOUND_MIXER_SPEAKER; /* doubtful... */
/* else: no master, so we won't set any */
/* build track list */
@@ -462,31 +452,30 @@ gst_ossmixer_build_list (GstOssElement *oss)
/* track exists, make up capabilities */
if (MASK_BIT_IS_SET (oss->stereomask, i))
- stereo = TRUE;
+ stereo = TRUE;
if (MASK_BIT_IS_SET (oss->recmask, i))
- input = TRUE;
+ input = TRUE;
if (MASK_BIT_IS_SET (oss->recdevs, i))
- record = TRUE;
+ record = TRUE;
/* do we want this in our list? */
if ((dir == GST_PAD_SRC && input == FALSE) ||
- (dir == GST_PAD_SINK && i != SOUND_MIXER_PCM))
- continue;
+ (dir == GST_PAD_SINK && i != SOUND_MIXER_PCM))
+ continue;
/* add track to list */
track = gst_ossmixer_track_new (oss, i, stereo ? 2 : 1,
- (record ? GST_MIXER_TRACK_RECORD : 0) |
- (input ? GST_MIXER_TRACK_INPUT :
- GST_MIXER_TRACK_OUTPUT) |
- ((master != i) ? 0 :
- GST_MIXER_TRACK_MASTER));
+ (record ? GST_MIXER_TRACK_RECORD : 0) |
+ (input ? GST_MIXER_TRACK_INPUT :
+ GST_MIXER_TRACK_OUTPUT) |
+ ((master != i) ? 0 : GST_MIXER_TRACK_MASTER));
oss->tracklist = g_list_append (oss->tracklist, track);
}
}
}
void
-gst_ossmixer_free_list (GstOssElement *oss)
+gst_ossmixer_free_list (GstOssElement * oss)
{
if (oss->mixer_fd == -1)
return;
diff --git a/sys/oss/gstossmixer.h b/sys/oss/gstossmixer.h
index dd2fb4fc..100d6afd 100644
--- a/sys/oss/gstossmixer.h
+++ b/sys/oss/gstossmixer.h
@@ -27,7 +27,6 @@
#include "gstosselement.h"
G_BEGIN_DECLS
-
#define GST_TYPE_OSSMIXER_TRACK \
(gst_ossmixer_track_get_type ())
#define GST_OSSMIXER_TRACK(obj) \
@@ -40,25 +39,25 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_OSSMIXER_TRACK))
#define GST_IS_OSSMIXER_TRACK_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_OSSMIXER_TRACK))
-
-typedef struct _GstOssMixerTrack {
+ typedef struct _GstOssMixerTrack
+{
GstMixerTrack parent;
- gint lvol, rvol;
- gint track_num;
+ gint lvol, rvol;
+ gint track_num;
} GstOssMixerTrack;
-typedef struct _GstOssMixerTrackClass {
+typedef struct _GstOssMixerTrackClass
+{
GstMixerTrackClass parent;
} GstOssMixerTrackClass;
-GType gst_ossmixer_track_get_type (void);
+GType gst_ossmixer_track_get_type (void);
-void gst_ossmixer_interface_init (GstMixerClass *klass);
-void gst_oss_interface_init (GstImplementsInterfaceClass *klass);
-void gst_ossmixer_build_list (GstOssElement *oss);
-void gst_ossmixer_free_list (GstOssElement *oss);
+void gst_ossmixer_interface_init (GstMixerClass * klass);
+void gst_oss_interface_init (GstImplementsInterfaceClass * klass);
+void gst_ossmixer_build_list (GstOssElement * oss);
+void gst_ossmixer_free_list (GstOssElement * oss);
G_END_DECLS
-
#endif /* __GST_OSS_MIXER_H__ */
diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c
index ab56274a..053eba46 100644
--- a/sys/oss/gstosssink.c
+++ b/sys/oss/gstosssink.c
@@ -32,50 +32,52 @@
#include "gstosssink.h"
/* elementfactory information */
-static GstElementDetails gst_osssink_details = GST_ELEMENT_DETAILS (
- "Audio Sink (OSS)",
- "Sink/Audio",
- "Output to a sound card via OSS",
- "Erik Walthinsen <omega@cse.ogi.edu>, "
- "Wim Taymans <wim.taymans@chello.be>"
-);
-
-static void gst_osssink_base_init (gpointer g_class);
-static void gst_osssink_class_init (GstOssSinkClass *klass);
-static void gst_osssink_init (GstOssSink *osssink);
-static void gst_osssink_dispose (GObject *object);
-
-static GstElementStateReturn gst_osssink_change_state (GstElement *element);
-static void gst_osssink_set_clock (GstElement *element, GstClock *clock);
-static GstClock* gst_osssink_get_clock (GstElement *element);
-static GstClockTime gst_osssink_get_time (GstClock *clock, gpointer data);
-
-static const GstFormat* gst_osssink_get_formats (GstPad *pad);
-static gboolean gst_osssink_convert (GstPad *pad, GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value);
-static const GstQueryType* gst_osssink_get_query_types (GstPad *pad);
-static gboolean gst_osssink_query (GstElement *element, GstQueryType type,
- GstFormat *format, gint64 *value);
-static gboolean gst_osssink_sink_query (GstPad *pad, GstQueryType type,
- GstFormat *format, gint64 *value);
-
-static GstCaps * gst_osssink_sink_fixate (GstPad *pad, const GstCaps *caps);
-static GstPadLinkReturn gst_osssink_sinkconnect (GstPad *pad, const GstCaps *caps);
-
-static void gst_osssink_set_property (GObject *object, guint prop_id, const GValue *value,
- GParamSpec *pspec);
-static void gst_osssink_get_property (GObject *object, guint prop_id, GValue *value,
- GParamSpec *pspec);
-
-static void gst_osssink_chain (GstPad *pad,GstData *_data);
+static GstElementDetails gst_osssink_details =
+GST_ELEMENT_DETAILS ("Audio Sink (OSS)",
+ "Sink/Audio",
+ "Output to a sound card via OSS",
+ "Erik Walthinsen <omega@cse.ogi.edu>, "
+ "Wim Taymans <wim.taymans@chello.be>");
+
+static void gst_osssink_base_init (gpointer g_class);
+static void gst_osssink_class_init (GstOssSinkClass * klass);
+static void gst_osssink_init (GstOssSink * osssink);
+static void gst_osssink_dispose (GObject * object);
+
+static GstElementStateReturn gst_osssink_change_state (GstElement * element);
+static void gst_osssink_set_clock (GstElement * element, GstClock * clock);
+static GstClock *gst_osssink_get_clock (GstElement * element);
+static GstClockTime gst_osssink_get_time (GstClock * clock, gpointer data);
+
+static const GstFormat *gst_osssink_get_formats (GstPad * pad);
+static gboolean gst_osssink_convert (GstPad * pad, GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+static const GstQueryType *gst_osssink_get_query_types (GstPad * pad);
+static gboolean gst_osssink_query (GstElement * element, GstQueryType type,
+ GstFormat * format, gint64 * value);
+static gboolean gst_osssink_sink_query (GstPad * pad, GstQueryType type,
+ GstFormat * format, gint64 * value);
+
+static GstCaps *gst_osssink_sink_fixate (GstPad * pad, const GstCaps * caps);
+static GstPadLinkReturn gst_osssink_sinkconnect (GstPad * pad,
+ const GstCaps * caps);
+
+static void gst_osssink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_osssink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+
+static void gst_osssink_chain (GstPad * pad, GstData * _data);
/* OssSink signals and args */
-enum {
+enum
+{
SIGNAL_HANDOFF,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_MUTE,
ARG_FRAGMENT,
@@ -86,19 +88,16 @@ enum {
};
static GstStaticPadTemplate osssink_sink_factory =
-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, FALSE }, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
+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, FALSE }, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
static GstElementClass *parent_class = NULL;
static guint gst_osssink_signals[LAST_SIGNAL] = { 0 };
@@ -110,24 +109,26 @@ gst_osssink_get_type (void)
if (!osssink_type) {
static const GTypeInfo osssink_info = {
- sizeof(GstOssSinkClass),
+ sizeof (GstOssSinkClass),
gst_osssink_base_init,
NULL,
- (GClassInitFunc)gst_osssink_class_init,
+ (GClassInitFunc) gst_osssink_class_init,
NULL,
NULL,
- sizeof(GstOssSink),
+ sizeof (GstOssSink),
0,
- (GInstanceInitFunc)gst_osssink_init,
+ (GInstanceInitFunc) gst_osssink_init,
};
- osssink_type = g_type_register_static (GST_TYPE_OSSELEMENT, "GstOssSink", &osssink_info, 0);
+ osssink_type =
+ g_type_register_static (GST_TYPE_OSSELEMENT, "GstOssSink",
+ &osssink_info, 0);
}
return osssink_type;
}
static void
-gst_osssink_dispose (GObject *object)
+gst_osssink_dispose (GObject * object)
{
GstOssSink *osssink = (GstOssSink *) object;
@@ -140,65 +141,71 @@ static void
gst_osssink_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
+
gst_element_class_set_details (element_class, &gst_osssink_details);
- gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&osssink_sink_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&osssink_sink_factory));
}
static void
-gst_osssink_class_init (GstOssSinkClass *klass)
+gst_osssink_class_init (GstOssSinkClass * 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_OSSELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_OSSELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MUTE,
- g_param_spec_boolean ("mute", "Mute", "Mute the audio",
- FALSE, G_PARAM_READWRITE));
+ g_param_spec_boolean ("mute", "Mute", "Mute the audio",
+ FALSE, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SYNC,
- g_param_spec_boolean ("sync", "Sync", "If syncing on timestamps should be enabled",
- TRUE, G_PARAM_READWRITE));
+ g_param_spec_boolean ("sync", "Sync",
+ "If syncing on timestamps should be enabled", TRUE,
+ G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FRAGMENT,
- g_param_spec_int ("fragment", "Fragment",
- "The fragment as 0xMMMMSSSS (MMMM = total fragments, 2^SSSS = fragment size)",
- 0, G_MAXINT, 6, G_PARAM_READWRITE));
+ g_param_spec_int ("fragment", "Fragment",
+ "The fragment as 0xMMMMSSSS (MMMM = total fragments, 2^SSSS = fragment size)",
+ 0, G_MAXINT, 6, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BUFFER_SIZE,
- g_param_spec_uint ("buffer_size", "Buffer size", "Size of buffers in osssink's bufferpool (bytes)",
- 0, G_MAXINT, 4096, G_PARAM_READWRITE));
+ g_param_spec_uint ("buffer_size", "Buffer size",
+ "Size of buffers in osssink's bufferpool (bytes)", 0, G_MAXINT, 4096,
+ G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_CHUNK_SIZE,
- g_param_spec_uint ("chunk_size", "Chunk size", "Write data in chunk sized buffers",
- 0, G_MAXUINT, 4096, G_PARAM_READWRITE));
+ g_param_spec_uint ("chunk_size", "Chunk size",
+ "Write data in chunk sized buffers", 0, G_MAXUINT, 4096,
+ G_PARAM_READWRITE));
gst_osssink_signals[SIGNAL_HANDOFF] =
- g_signal_new ("handoff", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstOssSinkClass, handoff), NULL, NULL,
- g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
-
+ g_signal_new ("handoff", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GstOssSinkClass, handoff), NULL, NULL,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
gobject_class->set_property = gst_osssink_set_property;
gobject_class->get_property = gst_osssink_get_property;
- gobject_class->dispose = gst_osssink_dispose;
-
+ gobject_class->dispose = gst_osssink_dispose;
+
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_osssink_change_state);
- gstelement_class->query = GST_DEBUG_FUNCPTR (gst_osssink_query);
- gstelement_class->set_clock = gst_osssink_set_clock;
- gstelement_class->get_clock = gst_osssink_get_clock;
-
+ gstelement_class->query = GST_DEBUG_FUNCPTR (gst_osssink_query);
+ gstelement_class->set_clock = gst_osssink_set_clock;
+ gstelement_class->get_clock = gst_osssink_get_clock;
+
}
-static void
-gst_osssink_init (GstOssSink *osssink)
+static void
+gst_osssink_init (GstOssSink * osssink)
{
- osssink->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&osssink_sink_factory), "sink");
+ osssink->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&osssink_sink_factory), "sink");
gst_element_add_pad (GST_ELEMENT (osssink), osssink->sinkpad);
gst_pad_set_link_function (osssink->sinkpad, gst_osssink_sinkconnect);
gst_pad_set_fixate_function (osssink->sinkpad, gst_osssink_sink_fixate);
gst_pad_set_convert_function (osssink->sinkpad, gst_osssink_convert);
gst_pad_set_query_function (osssink->sinkpad, gst_osssink_sink_query);
- gst_pad_set_query_type_function (osssink->sinkpad, gst_osssink_get_query_types);
+ gst_pad_set_query_type_function (osssink->sinkpad,
+ gst_osssink_get_query_types);
gst_pad_set_formats_function (osssink->sinkpad, gst_osssink_get_formats);
gst_pad_set_chain_function (osssink->sinkpad, gst_osssink_chain);
@@ -209,8 +216,10 @@ gst_osssink_init (GstOssSink *osssink)
osssink->mute = FALSE;
osssink->sync = TRUE;
osssink->resync = TRUE;
- osssink->provided_clock = gst_audio_clock_new ("ossclock", gst_osssink_get_time, osssink);
- gst_object_set_parent (GST_OBJECT (osssink->provided_clock), GST_OBJECT (osssink));
+ osssink->provided_clock =
+ gst_audio_clock_new ("ossclock", gst_osssink_get_time, osssink);
+ gst_object_set_parent (GST_OBJECT (osssink->provided_clock),
+ GST_OBJECT (osssink));
osssink->handled = 0;
GST_FLAG_SET (osssink, GST_ELEMENT_THREAD_SUGGESTED);
@@ -218,12 +227,14 @@ gst_osssink_init (GstOssSink *osssink)
}
static GstCaps *
-gst_osssink_sink_fixate (GstPad *pad, const GstCaps *caps)
+gst_osssink_sink_fixate (GstPad * pad, const GstCaps * caps)
{
GstCaps *newcaps;
GstStructure *structure;
- newcaps = gst_caps_new_full (gst_structure_copy(gst_caps_get_structure (caps, 0)), NULL);
+ newcaps =
+ gst_caps_new_full (gst_structure_copy (gst_caps_get_structure (caps, 0)),
+ NULL);
structure = gst_caps_get_structure (newcaps, 0);
if (gst_caps_structure_fixate_field_nearest_int (structure, "rate", 44100)) {
@@ -244,8 +255,8 @@ gst_osssink_sink_fixate (GstPad *pad, const GstCaps *caps)
return NULL;
}
-static GstPadLinkReturn
-gst_osssink_sinkconnect (GstPad *pad, const GstCaps *caps)
+static GstPadLinkReturn
+gst_osssink_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstOssSink *osssink = GST_OSSSINK (gst_pad_get_parent (pad));
@@ -260,7 +271,7 @@ gst_osssink_sinkconnect (GstPad *pad, const GstCaps *caps)
}
static inline gint
-gst_osssink_get_delay (GstOssSink *osssink)
+gst_osssink_get_delay (GstOssSink * osssink)
{
gint delay = 0;
gint ret;
@@ -275,19 +286,19 @@ gst_osssink_get_delay (GstOssSink *osssink)
#endif
if (ret < 0) {
audio_buf_info info;
+
if (ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_GETOSPACE, &info) < 0) {
delay = 0;
- }
- else {
- delay = (info.fragstotal * info.fragsize) - info.bytes;
+ } else {
+ delay = (info.fragstotal * info.fragsize) - info.bytes;
}
}
return delay;
}
-static GstClockTime
-gst_osssink_get_time (GstClock *clock, gpointer data)
+static GstClockTime
+gst_osssink_get_time (GstClock * clock, gpointer data)
{
GstOssSink *osssink = GST_OSSSINK (data);
gint delay;
@@ -305,39 +316,41 @@ gst_osssink_get_time (GstClock *clock, gpointer data)
* happen anymore, so remove the second code path after april 2004 */
if (delay > (gint64) osssink->handled) {
/*g_warning ("Delay %d > osssink->handled %" G_GUINT64_FORMAT
- ", setting to osssink->handled",
- delay, osssink->handled);*/
+ ", setting to osssink->handled",
+ delay, osssink->handled); */
delay = osssink->handled;
}
- res = ((gint64) osssink->handled - delay) * GST_SECOND / GST_OSSELEMENT (osssink)->bps;
+ res =
+ ((gint64) osssink->handled -
+ delay) * GST_SECOND / GST_OSSELEMENT (osssink)->bps;
if (res < 0)
res = 0;
return res;
}
-static GstClock*
-gst_osssink_get_clock (GstElement *element)
+static GstClock *
+gst_osssink_get_clock (GstElement * element)
{
GstOssSink *osssink;
-
+
osssink = GST_OSSSINK (element);
return GST_CLOCK (osssink->provided_clock);
}
static void
-gst_osssink_set_clock (GstElement *element, GstClock *clock)
+gst_osssink_set_clock (GstElement * element, GstClock * clock)
{
GstOssSink *osssink;
-
+
osssink = GST_OSSSINK (element);
- osssink->clock = clock;
+ osssink->clock = clock;
}
-static void
-gst_osssink_chain (GstPad *pad, GstData *_data)
+static void
+gst_osssink_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstOssSink *osssink;
@@ -354,23 +367,25 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
- ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_SYNC, 0);
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock), FALSE);
+ ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_SYNC, 0);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock),
+ FALSE);
gst_pad_event_default (pad, event);
- return;
+ return;
case GST_EVENT_DISCONTINUOUS:
- osssink->resync = TRUE;
- /* pass-through */
+ osssink->resync = TRUE;
+ /* pass-through */
default:
gst_pad_event_default (pad, event);
- return;
+ return;
}
g_assert_not_reached ();
}
if (!GST_OSSELEMENT (osssink)->bps) {
gst_buffer_unref (buf);
- GST_ELEMENT_ERROR (osssink, CORE, NEGOTIATION, (NULL), ("format wasn't negotiated before chain function"));
+ GST_ELEMENT_ERROR (osssink, CORE, NEGOTIATION, (NULL),
+ ("format wasn't negotiated before chain function"));
return;
}
@@ -388,11 +403,13 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
} else {
buftime = soundtime;
}
- GST_LOG_OBJECT (osssink, "time: real %"G_GUINT64_FORMAT", buffer: %"G_GUINT64_FORMAT,
- soundtime, buftime);
+ GST_LOG_OBJECT (osssink,
+ "time: real %" G_GUINT64_FORMAT ", buffer: %" G_GUINT64_FORMAT, soundtime,
+ buftime);
if (MAX (buftime, soundtime) - MIN (buftime, soundtime) > (GST_SECOND / 10)) {
/* we need to adjust to the buffers here */
- GST_INFO_OBJECT (osssink, "need sync: real %"G_GUINT64_FORMAT", buffer: %"G_GUINT64_FORMAT,
+ GST_INFO_OBJECT (osssink,
+ "need sync: real %" G_GUINT64_FORMAT ", buffer: %" G_GUINT64_FORMAT,
soundtime, buftime);
if (soundtime > buftime) {
/* do *not* throw frames out. It's useless. The next frame will come in
@@ -400,29 +417,35 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
* This is a placeholder for what - some day - should become QoS, i.e.
* sending events upstream to drop buffers. */
} else {
- guint64 to_handle = (((buftime - soundtime) * GST_OSSELEMENT(osssink)->bps / GST_SECOND) /
- ((GST_OSSELEMENT (osssink)->width / 8) * GST_OSSELEMENT (osssink)->channels)) *
- (GST_OSSELEMENT (osssink)->width / 8) * GST_OSSELEMENT (osssink)->channels;
+ guint64 to_handle =
+ (((buftime -
+ soundtime) * GST_OSSELEMENT (osssink)->bps / GST_SECOND) /
+ ((GST_OSSELEMENT (osssink)->width / 8) *
+ GST_OSSELEMENT (osssink)->channels)) *
+ (GST_OSSELEMENT (osssink)->width / 8) *
+ GST_OSSELEMENT (osssink)->channels;
if (!osssink->resync) {
- guint8 *buf = g_new (guint8, to_handle);
-
- memset (buf, (GST_OSSELEMENT (osssink)->width == 8) ? 0 : 128, to_handle);
- while (to_handle > 0) {
- gint done = write (GST_OSSELEMENT (osssink)->fd, buf,
- MIN (to_handle, osssink->chunk_size));
- if (done == -1 && errno != EINTR) {
- break;
- } else {
- to_handle -= done;
- osssink->handled += done;
- }
- }
- g_free(buf);
+ guint8 *buf = g_new (guint8, to_handle);
+
+ memset (buf, (GST_OSSELEMENT (osssink)->width == 8) ? 0 : 128,
+ to_handle);
+ while (to_handle > 0) {
+ gint done = write (GST_OSSELEMENT (osssink)->fd, buf,
+ MIN (to_handle, osssink->chunk_size));
+
+ if (done == -1 && errno != EINTR) {
+ break;
+ } else {
+ to_handle -= done;
+ osssink->handled += done;
+ }
+ }
+ g_free (buf);
} else {
- /* Timestamps at start-of-stream (MPEG) or after seek (hey,
- * again MPEG!) can be borken, therefore this hacklet. */
- osssink->handled += to_handle;
+ /* Timestamps at start-of-stream (MPEG) or after seek (hey,
+ * again MPEG!) can be borken, therefore this hacklet. */
+ osssink->handled += to_handle;
}
}
}
@@ -431,13 +454,13 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
if (!osssink->mute) {
while (to_write > 0) {
- gint done = write (GST_OSSELEMENT (osssink)->fd, data,
- MIN (to_write, osssink->chunk_size));
- if (done == -1) {
- if (errno != EINTR)
+ gint done = write (GST_OSSELEMENT (osssink)->fd, data,
+ MIN (to_write, osssink->chunk_size));
+
+ if (done == -1) {
+ if (errno != EINTR)
break;
- }
- else {
+ } else {
to_write -= done;
data += done;
osssink->handled += done;
@@ -448,13 +471,14 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
}
}
- gst_audio_clock_update_time ((GstAudioClock*)osssink->provided_clock, gst_osssink_get_time (osssink->provided_clock, osssink));
+ gst_audio_clock_update_time ((GstAudioClock *) osssink->provided_clock,
+ gst_osssink_get_time (osssink->provided_clock, osssink));
gst_buffer_unref (buf);
}
-static const GstFormat*
-gst_osssink_get_formats (GstPad *pad)
+static const GstFormat *
+gst_osssink_get_formats (GstPad * pad)
{
static const GstFormat formats[] = {
GST_FORMAT_TIME,
@@ -466,20 +490,19 @@ gst_osssink_get_formats (GstPad *pad)
}
static gboolean
-gst_osssink_convert (GstPad *pad, GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value)
+gst_osssink_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
+ GstFormat * dest_format, gint64 * dest_value)
{
GstOssSink *osssink;
osssink = GST_OSSSINK (gst_pad_get_parent (pad));
-
+
return gst_osselement_convert (GST_OSSELEMENT (osssink),
- src_format, src_value,
- dest_format, dest_value);
+ src_format, src_value, dest_format, dest_value);
}
-static const GstQueryType*
-gst_osssink_get_query_types (GstPad *pad)
+static const GstQueryType *
+gst_osssink_get_query_types (GstPad * pad)
{
static const GstQueryType query_types[] = {
GST_QUERY_LATENCY,
@@ -490,32 +513,33 @@ gst_osssink_get_query_types (GstPad *pad)
}
static gboolean
-gst_osssink_sink_query (GstPad *pad, GstQueryType type, GstFormat *format, gint64 *value)
+gst_osssink_sink_query (GstPad * pad, GstQueryType type, GstFormat * format,
+ gint64 * value)
{
gboolean res = TRUE;
GstOssSink *osssink;
osssink = GST_OSSSINK (gst_pad_get_parent (pad));
-
+
switch (type) {
case GST_QUERY_LATENCY:
- if (!gst_osssink_convert (pad,
- GST_FORMAT_BYTES, gst_osssink_get_delay (osssink),
- format, value))
- {
- res = FALSE;
+ if (!gst_osssink_convert (pad,
+ GST_FORMAT_BYTES, gst_osssink_get_delay (osssink),
+ format, value)) {
+ res = FALSE;
}
break;
case GST_QUERY_POSITION:
- if (!gst_osssink_convert (pad,
- GST_FORMAT_TIME, gst_element_get_time (GST_ELEMENT (osssink)),
- format, value))
- {
- res = FALSE;
+ if (!gst_osssink_convert (pad,
+ GST_FORMAT_TIME, gst_element_get_time (GST_ELEMENT (osssink)),
+ format, value)) {
+ res = FALSE;
}
break;
default:
- res = gst_pad_query (gst_pad_get_peer (osssink->sinkpad), type, format, value);
+ res =
+ gst_pad_query (gst_pad_get_peer (osssink->sinkpad), type, format,
+ value);
break;
}
@@ -523,15 +547,17 @@ gst_osssink_sink_query (GstPad *pad, GstQueryType type, GstFormat *format, gint6
}
static gboolean
-gst_osssink_query (GstElement *element, GstQueryType type, GstFormat *format, gint64 *value)
+gst_osssink_query (GstElement * element, GstQueryType type, GstFormat * format,
+ gint64 * value)
{
GstOssSink *osssink = GST_OSSSINK (element);
return gst_osssink_sink_query (osssink->sinkpad, type, format, value);
}
-static void
-gst_osssink_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+static void
+gst_osssink_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstOssSink *osssink;
@@ -563,8 +589,9 @@ gst_osssink_set_property (GObject *object, guint prop_id, const GValue *value, G
}
}
-static void
-gst_osssink_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+static void
+gst_osssink_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstOssSink *osssink;
@@ -592,8 +619,8 @@ gst_osssink_get_property (GObject *object, guint prop_id, GValue *value, GParamS
}
}
-static GstElementStateReturn
-gst_osssink_change_state (GstElement *element)
+static GstElementStateReturn
+gst_osssink_change_state (GstElement * element)
{
GstOssSink *osssink;
@@ -603,16 +630,18 @@ gst_osssink_change_state (GstElement *element)
case GST_STATE_READY_TO_PAUSED:
break;
case GST_STATE_PAUSED_TO_PLAYING:
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock), TRUE);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock),
+ TRUE);
break;
case GST_STATE_PLAYING_TO_PAUSED:
- if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN))
- ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET, 0);
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock), FALSE);
+ if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN))
+ ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET, 0);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock),
+ FALSE);
break;
case GST_STATE_PAUSED_TO_READY:
if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN))
- ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET, 0);
+ ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET, 0);
gst_osselement_reset (GST_OSSELEMENT (osssink));
osssink->handled = 0;
osssink->resync = TRUE;
@@ -620,7 +649,7 @@ gst_osssink_change_state (GstElement *element)
default:
break;
}
-
+
if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
diff --git a/sys/oss/gstosssink.h b/sys/oss/gstosssink.h
index f484007b..e633ac52 100644
--- a/sys/oss/gstosssink.h
+++ b/sys/oss/gstosssink.h
@@ -31,7 +31,6 @@
#include <gst/audio/audioclock.h>
G_BEGIN_DECLS
-
#define GST_TYPE_OSSSINK \
(gst_osssink_get_type())
#define GST_OSSSINK(obj) \
@@ -42,41 +41,42 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSSSINK))
#define GST_IS_OSSSINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSSSINK))
+ typedef enum
+{
+ GST_OSSSINK_OPEN = GST_ELEMENT_FLAG_LAST,
-typedef enum {
- GST_OSSSINK_OPEN = GST_ELEMENT_FLAG_LAST,
-
- GST_OSSSINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST+2,
+ GST_OSSSINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
} GstOssSinkFlags;
typedef struct _GstOssSink GstOssSink;
typedef struct _GstOssSinkClass GstOssSinkClass;
-struct _GstOssSink {
- GstOssElement element;
+struct _GstOssSink
+{
+ GstOssElement element;
- GstPad *sinkpad;
+ GstPad *sinkpad;
- GstClock *provided_clock;
- GstClock *clock;
- gboolean resync;
- gboolean sync;
- guint64 handled;
+ GstClock *provided_clock;
+ GstClock *clock;
+ gboolean resync;
+ gboolean sync;
+ guint64 handled;
- gboolean mute;
- guint bufsize;
- guint chunk_size;
+ gboolean mute;
+ guint bufsize;
+ guint chunk_size;
};
-struct _GstOssSinkClass {
+struct _GstOssSinkClass
+{
GstOssElementClass parent_class;
/* signals */
- void (*handoff) (GstElement *element,GstPad *pad);
+ void (*handoff) (GstElement * element, GstPad * pad);
};
-GType gst_osssink_get_type(void);
+GType gst_osssink_get_type (void);
G_END_DECLS
-
#endif /* __GST_OSSSINK_H__ */
diff --git a/sys/oss/gstosssrc.c b/sys/oss/gstosssrc.c
index 4bdcb0d2..5803865e 100644
--- a/sys/oss/gstosssrc.c
+++ b/sys/oss/gstosssrc.c
@@ -37,92 +37,93 @@
#include <gst/audio/audioclock.h>
/* elementfactory information */
-static GstElementDetails gst_osssrc_details = GST_ELEMENT_DETAILS (
- "Audio Source (OSS)",
- "Source/Audio",
- "Read from the sound card",
- "Erik Walthinsen <omega@cse.ogi.edu>"
-);
+static GstElementDetails gst_osssrc_details =
+GST_ELEMENT_DETAILS ("Audio Source (OSS)",
+ "Source/Audio",
+ "Read from the sound card",
+ "Erik Walthinsen <omega@cse.ogi.edu>");
/* OssSrc signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_BUFFERSIZE,
ARG_FRAGMENT,
};
-static GstStaticPadTemplate osssrc_src_factory =
-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, FALSE }, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
-
-static void gst_osssrc_base_init (gpointer g_class);
-static void gst_osssrc_class_init (GstOssSrcClass *klass);
-static void gst_osssrc_init (GstOssSrc *osssrc);
-static void gst_osssrc_dispose (GObject *object);
-
-static GstPadLinkReturn gst_osssrc_srcconnect (GstPad *pad, const GstCaps *caps);
-static const GstFormat* gst_osssrc_get_formats (GstPad *pad);
-static gboolean gst_osssrc_convert (GstPad *pad,
- GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value);
-
-static void gst_osssrc_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_osssrc_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
-static GstElementStateReturn gst_osssrc_change_state (GstElement *element);
-
-static void gst_osssrc_set_clock (GstElement *element, GstClock *clock);
-static GstClock* gst_osssrc_get_clock (GstElement *element);
-static GstClockTime gst_osssrc_get_time (GstClock *clock, gpointer data);
-
-static const GstEventMask* gst_osssrc_get_event_masks (GstPad *pad);
-static gboolean gst_osssrc_src_event (GstPad *pad, GstEvent *event);
-static gboolean gst_osssrc_send_event (GstElement *element, GstEvent *event);
-static const GstQueryType* gst_osssrc_get_query_types (GstPad *pad);
-static gboolean gst_osssrc_src_query (GstPad *pad, GstQueryType type,
- GstFormat *format, gint64 *value);
-
-static GstData * gst_osssrc_get (GstPad *pad);
+static GstStaticPadTemplate osssrc_src_factory = 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, FALSE }, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
+
+static void gst_osssrc_base_init (gpointer g_class);
+static void gst_osssrc_class_init (GstOssSrcClass * klass);
+static void gst_osssrc_init (GstOssSrc * osssrc);
+static void gst_osssrc_dispose (GObject * object);
+
+static GstPadLinkReturn gst_osssrc_srcconnect (GstPad * pad,
+ const GstCaps * caps);
+static const GstFormat *gst_osssrc_get_formats (GstPad * pad);
+static gboolean gst_osssrc_convert (GstPad * pad,
+ GstFormat src_format, gint64 src_value,
+ GstFormat * dest_format, gint64 * dest_value);
+
+static void gst_osssrc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_osssrc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_osssrc_change_state (GstElement * element);
+
+static void gst_osssrc_set_clock (GstElement * element, GstClock * clock);
+static GstClock *gst_osssrc_get_clock (GstElement * element);
+static GstClockTime gst_osssrc_get_time (GstClock * clock, gpointer data);
+
+static const GstEventMask *gst_osssrc_get_event_masks (GstPad * pad);
+static gboolean gst_osssrc_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_osssrc_send_event (GstElement * element, GstEvent * event);
+static const GstQueryType *gst_osssrc_get_query_types (GstPad * pad);
+static gboolean gst_osssrc_src_query (GstPad * pad, GstQueryType type,
+ GstFormat * format, gint64 * value);
+
+static GstData *gst_osssrc_get (GstPad * pad);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_osssrc_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_osssrc_get_type (void)
+gst_osssrc_get_type (void)
{
static GType osssrc_type = 0;
if (!osssrc_type) {
static const GTypeInfo osssrc_info = {
- sizeof(GstOssSrcClass),
+ sizeof (GstOssSrcClass),
gst_osssrc_base_init,
NULL,
- (GClassInitFunc)gst_osssrc_class_init,
+ (GClassInitFunc) gst_osssrc_class_init,
NULL,
NULL,
- sizeof(GstOssSrc),
+ sizeof (GstOssSrc),
0,
- (GInstanceInitFunc)gst_osssrc_init,
+ (GInstanceInitFunc) gst_osssrc_init,
};
- osssrc_type = g_type_register_static (GST_TYPE_OSSELEMENT, "GstOssSrc", &osssrc_info, 0);
+ osssrc_type =
+ g_type_register_static (GST_TYPE_OSSELEMENT, "GstOssSrc", &osssrc_info,
+ 0);
}
return osssrc_type;
}
@@ -131,32 +132,34 @@ static void
gst_osssrc_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
+
gst_element_class_set_details (element_class, &gst_osssrc_details);
- gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&osssrc_src_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&osssrc_src_factory));
}
static void
-gst_osssrc_class_init (GstOssSrcClass *klass)
+gst_osssrc_class_init (GstOssSrcClass * 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_OSSELEMENT);
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BUFFERSIZE,
- g_param_spec_ulong ("buffersize","Buffer Size","The size of the buffers with samples",
- 0, G_MAXULONG, 0, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BUFFERSIZE,
+ g_param_spec_ulong ("buffersize", "Buffer Size",
+ "The size of the buffers with samples", 0, G_MAXULONG, 0,
+ G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FRAGMENT,
- g_param_spec_int ("fragment", "Fragment",
- "The fragment as 0xMMMMSSSS (MMMM = total fragments, 2^SSSS = fragment size)",
- 0, G_MAXINT, 6, G_PARAM_READWRITE));
-
+ g_param_spec_int ("fragment", "Fragment",
+ "The fragment as 0xMMMMSSSS (MMMM = total fragments, 2^SSSS = fragment size)",
+ 0, G_MAXINT, 6, G_PARAM_READWRITE));
+
gobject_class->set_property = gst_osssrc_set_property;
gobject_class->get_property = gst_osssrc_get_property;
- gobject_class->dispose = gst_osssrc_dispose;
+ gobject_class->dispose = gst_osssrc_dispose;
gstelement_class->change_state = gst_osssrc_change_state;
gstelement_class->send_event = gst_osssrc_send_event;
@@ -165,11 +168,12 @@ gst_osssrc_class_init (GstOssSrcClass *klass)
gstelement_class->get_clock = gst_osssrc_get_clock;
}
-static void
-gst_osssrc_init (GstOssSrc *osssrc)
+static void
+gst_osssrc_init (GstOssSrc * osssrc)
{
- osssrc->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&osssrc_src_factory), "src");
+ osssrc->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&osssrc_src_factory), "src");
gst_pad_set_get_function (osssrc->srcpad, gst_osssrc_get);
gst_pad_set_link_function (osssrc->srcpad, gst_osssrc_srcconnect);
gst_pad_set_convert_function (osssrc->srcpad, gst_osssrc_convert);
@@ -185,14 +189,16 @@ gst_osssrc_init (GstOssSrc *osssrc)
osssrc->buffersize = 4096;
osssrc->curoffset = 0;
- osssrc->provided_clock = gst_audio_clock_new ("ossclock", gst_osssrc_get_time, osssrc);
- gst_object_set_parent (GST_OBJECT (osssrc->provided_clock), GST_OBJECT (osssrc));
-
+ osssrc->provided_clock =
+ gst_audio_clock_new ("ossclock", gst_osssrc_get_time, osssrc);
+ gst_object_set_parent (GST_OBJECT (osssrc->provided_clock),
+ GST_OBJECT (osssrc));
+
osssrc->clock = NULL;
}
static void
-gst_osssrc_dispose (GObject *object)
+gst_osssrc_dispose (GObject * object)
{
GstOssSrc *osssrc = (GstOssSrc *) object;
@@ -201,12 +207,12 @@ gst_osssrc_dispose (GObject *object)
G_OBJECT_CLASS (parent_class)->dispose (object);
}
-static GstPadLinkReturn
-gst_osssrc_srcconnect (GstPad *pad, const GstCaps *caps)
+static GstPadLinkReturn
+gst_osssrc_srcconnect (GstPad * pad, const GstCaps * caps)
{
GstOssSrc *src;
- src = GST_OSSSRC(gst_pad_get_parent (pad));
+ src = GST_OSSSRC (gst_pad_get_parent (pad));
if (!gst_osselement_parse_caps (GST_OSSELEMENT (src), caps))
return GST_PAD_LINK_REFUSED;
@@ -218,12 +224,12 @@ gst_osssrc_srcconnect (GstPad *pad, const GstCaps *caps)
}
static gboolean
-gst_osssrc_negotiate (GstPad *pad)
+gst_osssrc_negotiate (GstPad * pad)
{
GstOssSrc *src;
GstCaps *allowed;
- src = GST_OSSSRC(gst_pad_get_parent (pad));
+ src = GST_OSSSRC (gst_pad_get_parent (pad));
allowed = gst_pad_get_allowed_caps (pad);
@@ -232,24 +238,24 @@ gst_osssrc_negotiate (GstPad *pad)
if (!gst_osselement_sync_parms (GST_OSSELEMENT (src)))
return FALSE;
-
+
/* set caps on src pad */
- if (gst_pad_try_set_caps (src->srcpad,
- gst_caps_new_simple("audio/x-raw-int",
- "endianness", G_TYPE_INT, GST_OSSELEMENT (src)->endianness,
- "signed", G_TYPE_BOOLEAN, GST_OSSELEMENT (src)->sign,
- "width", G_TYPE_INT, GST_OSSELEMENT (src)->width,
- "depth", G_TYPE_INT, GST_OSSELEMENT (src)->depth,
- "rate", G_TYPE_INT, GST_OSSELEMENT (src)->rate,
- "channels", G_TYPE_INT, GST_OSSELEMENT (src)->channels,
- NULL)) <= 0) {
+ if (gst_pad_try_set_caps (src->srcpad,
+ gst_caps_new_simple ("audio/x-raw-int",
+ "endianness", G_TYPE_INT, GST_OSSELEMENT (src)->endianness,
+ "signed", G_TYPE_BOOLEAN, GST_OSSELEMENT (src)->sign,
+ "width", G_TYPE_INT, GST_OSSELEMENT (src)->width,
+ "depth", G_TYPE_INT, GST_OSSELEMENT (src)->depth,
+ "rate", G_TYPE_INT, GST_OSSELEMENT (src)->rate,
+ "channels", G_TYPE_INT, GST_OSSELEMENT (src)->channels,
+ NULL)) <= 0) {
return FALSE;
}
return TRUE;
}
-static GstClockTime
-gst_osssrc_get_time (GstClock *clock, gpointer data)
+static GstClockTime
+gst_osssrc_get_time (GstClock * clock, gpointer data)
{
GstOssSrc *osssrc = GST_OSSSRC (data);
audio_buf_info info;
@@ -257,40 +263,41 @@ gst_osssrc_get_time (GstClock *clock, gpointer data)
if (!GST_OSSELEMENT (osssrc)->bps)
return 0;
- if (ioctl(GST_OSSELEMENT (osssrc)->fd, SNDCTL_DSP_GETISPACE, &info) < 0)
+ if (ioctl (GST_OSSELEMENT (osssrc)->fd, SNDCTL_DSP_GETISPACE, &info) < 0)
return 0;
- return (osssrc->curoffset + info.bytes) * GST_SECOND / GST_OSSELEMENT (osssrc)->bps;
+ return (osssrc->curoffset +
+ info.bytes) * GST_SECOND / GST_OSSELEMENT (osssrc)->bps;
}
-static GstClock*
-gst_osssrc_get_clock (GstElement *element)
+static GstClock *
+gst_osssrc_get_clock (GstElement * element)
{
GstOssSrc *osssrc;
-
+
osssrc = GST_OSSSRC (element);
return GST_CLOCK (osssrc->provided_clock);
}
static void
-gst_osssrc_set_clock (GstElement *element, GstClock *clock)
+gst_osssrc_set_clock (GstElement * element, GstClock * clock)
{
GstOssSrc *osssrc;
-
+
osssrc = GST_OSSSRC (element);
osssrc->clock = clock;
}
-
+
static GstData *
-gst_osssrc_get (GstPad *pad)
+gst_osssrc_get (GstPad * pad)
{
GstOssSrc *src;
GstBuffer *buf;
glong readbytes;
- src = GST_OSSSRC(gst_pad_get_parent (pad));
+ src = GST_OSSSRC (gst_pad_get_parent (pad));
GST_DEBUG ("attempting to read something from the soundcard");
@@ -298,9 +305,9 @@ gst_osssrc_get (GstPad *pad)
src->need_eos = FALSE;
return GST_DATA (gst_event_new (GST_EVENT_EOS));
}
-
+
buf = gst_buffer_new_and_alloc (src->buffersize);
-
+
if (!GST_PAD_CAPS (pad)) {
/* nothing was negotiated, we can decide on a format */
if (!gst_osssrc_negotiate (pad)) {
@@ -312,12 +319,12 @@ gst_osssrc_get (GstPad *pad)
if (GST_OSSELEMENT (src)->bps == 0) {
gst_buffer_unref (buf);
GST_ELEMENT_ERROR (src, CORE, NEGOTIATION, (NULL),
- ("format wasn't negotiated before chain function"));
+ ("format wasn't negotiated before chain function"));
return GST_DATA (gst_event_new (GST_EVENT_INTERRUPT));
}
- readbytes = read (GST_OSSELEMENT (src)->fd,GST_BUFFER_DATA (buf),
- src->buffersize);
+ readbytes = read (GST_OSSELEMENT (src)->fd, GST_BUFFER_DATA (buf),
+ src->buffersize);
if (readbytes < 0) {
gst_buffer_unref (buf);
GST_ELEMENT_ERROR (src, RESOURCE, READ, (NULL), GST_ERROR_SYSTEM);
@@ -334,20 +341,23 @@ gst_osssrc_get (GstPad *pad)
GST_BUFFER_OFFSET (buf) = src->curoffset;
/* FIXME: we are falsely assuming that we are the master clock here */
- GST_BUFFER_TIMESTAMP (buf) = src->curoffset * GST_SECOND / GST_OSSELEMENT (src)->bps;
- GST_BUFFER_DURATION (buf) = (GST_SECOND * GST_BUFFER_SIZE (buf)) /
- (GST_OSSELEMENT (src)->bps * GST_OSSELEMENT (src)->rate);
+ GST_BUFFER_TIMESTAMP (buf) =
+ src->curoffset * GST_SECOND / GST_OSSELEMENT (src)->bps;
+ GST_BUFFER_DURATION (buf) =
+ (GST_SECOND * GST_BUFFER_SIZE (buf)) / (GST_OSSELEMENT (src)->bps *
+ GST_OSSELEMENT (src)->rate);
src->curoffset += readbytes;
- GST_DEBUG ("pushed buffer from soundcard of %ld bytes, timestamp %" G_GINT64_FORMAT,
- readbytes, GST_BUFFER_TIMESTAMP (buf));
+ GST_DEBUG ("pushed buffer from soundcard of %ld bytes, timestamp %"
+ G_GINT64_FORMAT, readbytes, GST_BUFFER_TIMESTAMP (buf));
return GST_DATA (buf);
}
-static void
-gst_osssrc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+static void
+gst_osssrc_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstOssSrc *src;
@@ -360,14 +370,15 @@ gst_osssrc_set_property (GObject *object, guint prop_id, const GValue *value, GP
case ARG_FRAGMENT:
GST_OSSELEMENT (src)->fragment = g_value_get_int (value);
gst_osselement_sync_parms (GST_OSSELEMENT (src));
- break;
+ break;
default:
break;
}
}
-static void
-gst_osssrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+static void
+gst_osssrc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstOssSrc *src;
@@ -386,11 +397,11 @@ gst_osssrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
}
}
-static GstElementStateReturn
-gst_osssrc_change_state (GstElement *element)
+static GstElementStateReturn
+gst_osssrc_change_state (GstElement * element)
{
GstOssSrc *osssrc = GST_OSSSRC (element);
-
+
GST_DEBUG ("osssrc: state change");
switch (GST_STATE_TRANSITION (element)) {
@@ -398,14 +409,16 @@ gst_osssrc_change_state (GstElement *element)
osssrc->curoffset = 0;
break;
case GST_STATE_PAUSED_TO_PLAYING:
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssrc->provided_clock), TRUE);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssrc->provided_clock),
+ TRUE);
break;
case GST_STATE_PLAYING_TO_PAUSED:
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssrc->provided_clock), FALSE);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssrc->provided_clock),
+ FALSE);
break;
case GST_STATE_PAUSED_TO_READY:
if (GST_FLAG_IS_SET (element, GST_OSSSRC_OPEN))
- ioctl (GST_OSSELEMENT (osssrc)->fd, SNDCTL_DSP_RESET, 0);
+ ioctl (GST_OSSELEMENT (osssrc)->fd, SNDCTL_DSP_RESET, 0);
break;
default:
break;
@@ -413,12 +426,12 @@ gst_osssrc_change_state (GstElement *element)
if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
-
+
return GST_STATE_SUCCESS;
}
-static const GstFormat*
-gst_osssrc_get_formats (GstPad *pad)
+static const GstFormat *
+gst_osssrc_get_formats (GstPad * pad)
{
static const GstFormat formats[] = {
GST_FORMAT_TIME,
@@ -430,30 +443,30 @@ gst_osssrc_get_formats (GstPad *pad)
}
static gboolean
-gst_osssrc_convert (GstPad *pad, GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value)
+gst_osssrc_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
+ GstFormat * dest_format, gint64 * dest_value)
{
GstOssSrc *osssrc;
osssrc = GST_OSSSRC (gst_pad_get_parent (pad));
return gst_osselement_convert (GST_OSSELEMENT (osssrc), src_format, src_value,
- dest_format, dest_value);
+ dest_format, dest_value);
}
-static const GstEventMask*
-gst_osssrc_get_event_masks (GstPad *pad)
+static const GstEventMask *
+gst_osssrc_get_event_masks (GstPad * pad)
{
static const GstEventMask gst_osssrc_src_event_masks[] = {
- { GST_EVENT_EOS, 0 },
- { GST_EVENT_SIZE, 0 },
- { 0, }
+ {GST_EVENT_EOS, 0},
+ {GST_EVENT_SIZE, 0},
+ {0,}
};
return gst_osssrc_src_event_masks;
-}
+}
static gboolean
-gst_osssrc_src_event (GstPad *pad, GstEvent *event)
+gst_osssrc_src_event (GstPad * pad, GstEvent * event)
{
GstOssSrc *osssrc;
gboolean retval = FALSE;
@@ -471,16 +484,14 @@ gst_osssrc_src_event (GstPad *pad, GstEvent *event)
gint64 value;
format = GST_FORMAT_BYTES;
-
+
/* convert to bytes */
- if (gst_osselement_convert (GST_OSSELEMENT (osssrc),
- GST_EVENT_SIZE_FORMAT (event),
- GST_EVENT_SIZE_VALUE (event),
- &format, &value))
- {
- osssrc->buffersize = GST_EVENT_SIZE_VALUE (event);
- g_object_notify (G_OBJECT (osssrc), "buffersize");
- retval = TRUE;
+ if (gst_osselement_convert (GST_OSSELEMENT (osssrc),
+ GST_EVENT_SIZE_FORMAT (event),
+ GST_EVENT_SIZE_VALUE (event), &format, &value)) {
+ osssrc->buffersize = GST_EVENT_SIZE_VALUE (event);
+ g_object_notify (G_OBJECT (osssrc), "buffersize");
+ retval = TRUE;
}
}
default:
@@ -491,40 +502,39 @@ gst_osssrc_src_event (GstPad *pad, GstEvent *event)
}
static gboolean
-gst_osssrc_send_event (GstElement *element,
- GstEvent *event)
+gst_osssrc_send_event (GstElement * element, GstEvent * event)
{
GstOssSrc *osssrc = GST_OSSSRC (element);
return gst_osssrc_src_event (osssrc->srcpad, event);
}
-static const GstQueryType*
-gst_osssrc_get_query_types (GstPad *pad)
+static const GstQueryType *
+gst_osssrc_get_query_types (GstPad * pad)
{
static const GstQueryType query_types[] = {
GST_QUERY_POSITION,
0,
};
return query_types;
-}
+}
static gboolean
-gst_osssrc_src_query (GstPad *pad, GstQueryType type, GstFormat *format, gint64 *value)
+gst_osssrc_src_query (GstPad * pad, GstQueryType type, GstFormat * format,
+ gint64 * value)
{
gboolean res = FALSE;
GstOssSrc *osssrc;
-
+
osssrc = GST_OSSSRC (gst_pad_get_parent (pad));
-
+
switch (type) {
case GST_QUERY_POSITION:
- res = gst_osselement_convert (GST_OSSELEMENT (osssrc),
- GST_FORMAT_BYTES, osssrc->curoffset,
- format, value);
+ res = gst_osselement_convert (GST_OSSELEMENT (osssrc),
+ GST_FORMAT_BYTES, osssrc->curoffset, format, value);
break;
default:
break;
}
return res;
-}
+}
diff --git a/sys/oss/gstosssrc.h b/sys/oss/gstosssrc.h
index 2bc6204f..e74db748 100644
--- a/sys/oss/gstosssrc.h
+++ b/sys/oss/gstosssrc.h
@@ -29,7 +29,6 @@
#include "gstosselement.h"
G_BEGIN_DECLS
-
#define GST_TYPE_OSSSRC \
(gst_osssrc_get_type())
#define GST_OSSSRC(obj) \
@@ -40,38 +39,39 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSSSRC))
#define GST_IS_OSSSRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSSSRC))
+ typedef enum
+{
+ GST_OSSSRC_OPEN = GST_ELEMENT_FLAG_LAST,
-typedef enum {
- GST_OSSSRC_OPEN = GST_ELEMENT_FLAG_LAST,
-
- GST_OSSSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST+2,
+ GST_OSSSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
} GstOssSrcFlags;
typedef struct _GstOssSrc GstOssSrc;
typedef struct _GstOssSrcClass GstOssSrcClass;
-struct _GstOssSrc {
- GstOssElement element;
+struct _GstOssSrc
+{
+ GstOssElement element;
/* pads */
- GstPad *srcpad;
+ GstPad *srcpad;
+
+ gboolean need_eos; /* Do we need to emit an EOS? */
- gboolean need_eos; /* Do we need to emit an EOS? */
-
/* blocking */
- gulong curoffset;
- gulong buffersize;
+ gulong curoffset;
+ gulong buffersize;
/* clocks */
GstClock *provided_clock, *clock;
};
-struct _GstOssSrcClass {
+struct _GstOssSrcClass
+{
GstOssElementClass parent_class;
};
-GType gst_osssrc_get_type(void);
+GType gst_osssrc_get_type (void);
G_END_DECLS
-
#endif /* __GST_OSSSRC_H__ */
diff --git a/sys/v4l2/gstv4l2.c b/sys/v4l2/gstv4l2.c
index dffb3f07..633ce52e 100644
--- a/sys/v4l2/gstv4l2.c
+++ b/sys/v4l2/gstv4l2.c
@@ -29,7 +29,7 @@
#include "gstv4l2src.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
/* actually, we can survive without it, but I'll create
* that handling later on. */
@@ -37,9 +37,9 @@ plugin_init (GstPlugin *plugin)
return FALSE;
if (!gst_element_register (plugin, "v4l2element",
- GST_RANK_NONE, GST_TYPE_V4L2ELEMENT) ||
+ GST_RANK_NONE, GST_TYPE_V4L2ELEMENT) ||
!gst_element_register (plugin, "v4l2src",
- GST_RANK_NONE, GST_TYPE_V4L2SRC))
+ GST_RANK_NONE, GST_TYPE_V4L2SRC))
return FALSE;
#ifdef ENABLE_NLS
@@ -50,14 +50,8 @@ plugin_init (GstPlugin *plugin)
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "video4linux2",
- "elements for Video 4 Linux 2",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "video4linux2",
+ "elements for Video 4 Linux 2",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/sys/v4l2/gstv4l2colorbalance.c b/sys/v4l2/gstv4l2colorbalance.c
index 0fd18677..274043d8 100644
--- a/sys/v4l2/gstv4l2colorbalance.c
+++ b/sys/v4l2/gstv4l2colorbalance.c
@@ -28,19 +28,17 @@
#include "gstv4l2element.h"
static void
-gst_v4l2_color_balance_channel_class_init(GstV4l2ColorBalanceChannelClass *klass);
-static void
-gst_v4l2_color_balance_channel_init (GstV4l2ColorBalanceChannel *channel);
-
-static const GList *
-gst_v4l2_color_balance_list_channels (GstColorBalance *balance);
-static void
-gst_v4l2_color_balance_set_value (GstColorBalance *balance,
- GstColorBalanceChannel *channel,
- gint value);
-static gint
-gst_v4l2_color_balance_get_value (GstColorBalance *balance,
- GstColorBalanceChannel *channel);
+gst_v4l2_color_balance_channel_class_init (GstV4l2ColorBalanceChannelClass *
+ klass);
+static void gst_v4l2_color_balance_channel_init (GstV4l2ColorBalanceChannel *
+ channel);
+
+static const GList *gst_v4l2_color_balance_list_channels (GstColorBalance *
+ balance);
+static void gst_v4l2_color_balance_set_value (GstColorBalance * balance,
+ GstColorBalanceChannel * channel, gint value);
+static gint gst_v4l2_color_balance_get_value (GstColorBalance * balance,
+ GstColorBalanceChannel * channel);
static GstColorBalanceChannelClass *parent_class = NULL;
@@ -65,30 +63,30 @@ gst_v4l2_color_balance_channel_get_type (void)
gst_v4l2_color_balance_channel_type =
g_type_register_static (GST_TYPE_COLOR_BALANCE_CHANNEL,
- "GstV4l2ColorBalanceChannel",
- &v4l2_tuner_channel_info, 0);
+ "GstV4l2ColorBalanceChannel", &v4l2_tuner_channel_info, 0);
}
return gst_v4l2_color_balance_channel_type;
}
static void
-gst_v4l2_color_balance_channel_class_init (GstV4l2ColorBalanceChannelClass *klass)
+gst_v4l2_color_balance_channel_class_init (GstV4l2ColorBalanceChannelClass *
+ klass)
{
parent_class = g_type_class_ref (GST_TYPE_COLOR_BALANCE_CHANNEL);
}
static void
-gst_v4l2_color_balance_channel_init (GstV4l2ColorBalanceChannel *channel)
+gst_v4l2_color_balance_channel_init (GstV4l2ColorBalanceChannel * channel)
{
channel->index = 0;
}
void
-gst_v4l2_color_balance_interface_init (GstColorBalanceClass *klass)
+gst_v4l2_color_balance_interface_init (GstColorBalanceClass * klass)
{
GST_COLOR_BALANCE_TYPE (klass) = GST_COLOR_BALANCE_HARDWARE;
-
+
/* default virtual functions */
klass->list_channels = gst_v4l2_color_balance_list_channels;
klass->set_value = gst_v4l2_color_balance_set_value;
@@ -96,8 +94,8 @@ gst_v4l2_color_balance_interface_init (GstColorBalanceClass *klass)
}
static gboolean
-gst_v4l2_color_balance_contains_channel (GstV4l2Element *v4l2element,
- GstV4l2ColorBalanceChannel *v4l2channel)
+gst_v4l2_color_balance_contains_channel (GstV4l2Element * v4l2element,
+ GstV4l2ColorBalanceChannel * v4l2channel)
{
const GList *item;
@@ -109,42 +107,40 @@ gst_v4l2_color_balance_contains_channel (GstV4l2Element *v4l2element
}
static const GList *
-gst_v4l2_color_balance_list_channels (GstColorBalance *balance)
+gst_v4l2_color_balance_list_channels (GstColorBalance * balance)
{
return GST_V4L2ELEMENT (balance)->colors;
}
static void
-gst_v4l2_color_balance_set_value (GstColorBalance *balance,
- GstColorBalanceChannel *channel,
- gint value)
+gst_v4l2_color_balance_set_value (GstColorBalance * balance,
+ GstColorBalanceChannel * channel, gint value)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (balance);
GstV4l2ColorBalanceChannel *v4l2channel =
- GST_V4L2_COLOR_BALANCE_CHANNEL (channel);
+ GST_V4L2_COLOR_BALANCE_CHANNEL (channel);
/* assert that we're opened and that we're using a known item */
g_return_if_fail (GST_V4L2_IS_OPEN (v4l2element));
g_return_if_fail (gst_v4l2_color_balance_contains_channel (v4l2element,
- v4l2channel));
+ v4l2channel));
gst_v4l2_set_attribute (v4l2element, v4l2channel->index, value);
}
static gint
-gst_v4l2_color_balance_get_value (GstColorBalance *balance,
- GstColorBalanceChannel *channel)
+gst_v4l2_color_balance_get_value (GstColorBalance * balance,
+ GstColorBalanceChannel * channel)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (balance);
GstV4l2ColorBalanceChannel *v4l2channel =
- GST_V4L2_COLOR_BALANCE_CHANNEL (channel);
+ GST_V4L2_COLOR_BALANCE_CHANNEL (channel);
gint value;
/* assert that we're opened and that we're using a known item */
g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2element), 0);
g_return_val_if_fail (gst_v4l2_color_balance_contains_channel (v4l2element,
- v4l2channel),
- 0);
+ v4l2channel), 0);
if (!gst_v4l2_get_attribute (v4l2element, v4l2channel->index, &value))
return 0;
diff --git a/sys/v4l2/gstv4l2colorbalance.h b/sys/v4l2/gstv4l2colorbalance.h
index 4003203b..f0de44ce 100644
--- a/sys/v4l2/gstv4l2colorbalance.h
+++ b/sys/v4l2/gstv4l2colorbalance.h
@@ -27,7 +27,6 @@
#include "v4l2_calls.h"
G_BEGIN_DECLS
-
#define GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL \
(gst_v4l2_color_balance_channel_get_type ())
#define GST_V4L2_COLOR_BALANCE_CHANNEL(obj) \
@@ -40,19 +39,20 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL))
#define GST_IS_V4L2_COLOR_BALANCE_CHANNEL_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL))
-
-typedef struct _GstV4l2ColorBalanceChannel {
+ typedef struct _GstV4l2ColorBalanceChannel
+{
GstColorBalanceChannel parent;
guint32 index;
} GstV4l2ColorBalanceChannel;
-typedef struct _GstV4l2ColorBalanceChannelClass {
+typedef struct _GstV4l2ColorBalanceChannelClass
+{
GstColorBalanceChannelClass parent;
} GstV4l2ColorBalanceChannelClass;
-GType gst_v4l2_color_balance_channel_get_type (void);
+GType gst_v4l2_color_balance_channel_get_type (void);
-void gst_v4l2_color_balance_interface_init (GstColorBalanceClass *klass);
+void gst_v4l2_color_balance_interface_init (GstColorBalanceClass * klass);
#endif /* __GST_V4L2_COLOR_BALANCE_H__ */
diff --git a/sys/v4l2/gstv4l2element.c b/sys/v4l2/gstv4l2element.c
index eb12501d..246d4949 100644
--- a/sys/v4l2/gstv4l2element.c
+++ b/sys/v4l2/gstv4l2element.c
@@ -35,21 +35,23 @@
/* elementfactory details */
static GstElementDetails gst_v4l2element_details = {
- "Generic video4linux2 Element",
- "Generic/Video",
- "Generic plugin for handling common video4linux2 calls",
- "Ronald Bultje <rbultje@ronald.bitfreak.net>"
+ "Generic video4linux2 Element",
+ "Generic/Video",
+ "Generic plugin for handling common video4linux2 calls",
+ "Ronald Bultje <rbultje@ronald.bitfreak.net>"
};
/* V4l2Element signals and args */
-enum {
+enum
+{
/* FILL ME */
SIGNAL_OPEN,
SIGNAL_CLOSE,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_DEVICE,
ARG_DEVICE_NAME,
@@ -60,20 +62,16 @@ enum {
};
-static void gst_v4l2element_class_init (GstV4l2ElementClass *klass);
-static void gst_v4l2element_base_init (GstV4l2ElementClass *klass);
-static void gst_v4l2element_init (GstV4l2Element *v4lelement);
-static void gst_v4l2element_dispose (GObject *object);
-static void gst_v4l2element_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_v4l2element_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
+static void gst_v4l2element_class_init (GstV4l2ElementClass * klass);
+static void gst_v4l2element_base_init (GstV4l2ElementClass * klass);
+static void gst_v4l2element_init (GstV4l2Element * v4lelement);
+static void gst_v4l2element_dispose (GObject * object);
+static void gst_v4l2element_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_v4l2element_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
static GstElementStateReturn
- gst_v4l2element_change_state (GstElement *element);
+gst_v4l2element_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
@@ -81,260 +79,244 @@ static guint gst_v4l2element_signals[LAST_SIGNAL] = { 0 };
static gboolean
-gst_v4l2_iface_supported (GstImplementsInterface *iface,
- GType iface_type)
+gst_v4l2_iface_supported (GstImplementsInterface * iface, GType iface_type)
{
- GstV4l2Element *v4l2element = GST_V4L2ELEMENT (iface);
+ GstV4l2Element *v4l2element = GST_V4L2ELEMENT (iface);
- g_assert (iface_type == GST_TYPE_TUNER ||
- iface_type == GST_TYPE_X_OVERLAY ||
- iface_type == GST_TYPE_COLOR_BALANCE);
+ g_assert (iface_type == GST_TYPE_TUNER ||
+ iface_type == GST_TYPE_X_OVERLAY || iface_type == GST_TYPE_COLOR_BALANCE);
- if (v4l2element->video_fd == -1)
- return FALSE;
+ if (v4l2element->video_fd == -1)
+ return FALSE;
- if (iface_type == GST_TYPE_X_OVERLAY &&
- !GST_V4L2_IS_OVERLAY(v4l2element))
- return FALSE;
+ if (iface_type == GST_TYPE_X_OVERLAY && !GST_V4L2_IS_OVERLAY (v4l2element))
+ return FALSE;
- return TRUE;
+ return TRUE;
}
static void
-gst_v4l2_interface_init (GstImplementsInterfaceClass *klass)
+gst_v4l2_interface_init (GstImplementsInterfaceClass * klass)
{
- /* default virtual functions */
- klass->supported = gst_v4l2_iface_supported;
+ /* default virtual functions */
+ klass->supported = gst_v4l2_iface_supported;
}
static const GList *
-gst_v4l2_probe_get_properties (GstPropertyProbe *probe)
+gst_v4l2_probe_get_properties (GstPropertyProbe * probe)
{
- GObjectClass *klass = G_OBJECT_GET_CLASS (probe);
- static GList *list = NULL;
+ GObjectClass *klass = G_OBJECT_GET_CLASS (probe);
+ static GList *list = NULL;
- if (!list) {
- list = g_list_append (NULL,
- g_object_class_find_property (klass, "device"));
- }
+ if (!list) {
+ list = g_list_append (NULL, g_object_class_find_property (klass, "device"));
+ }
- return list;
+ return list;
}
static gboolean
-gst_v4l2_class_probe_devices (GstV4l2ElementClass *klass,
- gboolean check)
+gst_v4l2_class_probe_devices (GstV4l2ElementClass * klass, gboolean check)
{
- static gboolean init = FALSE;
- static GList *devices = NULL;
-
- if (!init && !check) {
- gchar *dev_base[] = { "/dev/video", "/dev/v4l/video", NULL };
- gint base, n, fd;
-
- while (devices) {
- GList *item = devices;
- gchar *device = item->data;
-
- devices = g_list_remove (devices, item);
- g_free (device);
- }
-
- /* detect /dev entries */
- for (n = 0; n < 64; n++) {
- for (base = 0; dev_base[base] != NULL; base++) {
- struct stat s;
- gchar *device = g_strdup_printf ("%s%d",
- dev_base[base], n);
-
- /* does the /dev/ entry exist at all? */
- if (stat (device, &s) == 0) {
- /* yes: is a device attached? */
- if ((fd = open (device, O_RDONLY)) > 0 ||
- errno == EBUSY) {
- if (fd > 0)
- close (fd);
-
- devices =
- g_list_append (devices,
- device);
- break;
- }
- }
- g_free (device);
- }
- }
-
- init = TRUE;
+ static gboolean init = FALSE;
+ static GList *devices = NULL;
+
+ if (!init && !check) {
+ gchar *dev_base[] = { "/dev/video", "/dev/v4l/video", NULL };
+ gint base, n, fd;
+
+ while (devices) {
+ GList *item = devices;
+ gchar *device = item->data;
+
+ devices = g_list_remove (devices, item);
+ g_free (device);
+ }
+
+ /* detect /dev entries */
+ for (n = 0; n < 64; n++) {
+ for (base = 0; dev_base[base] != NULL; base++) {
+ struct stat s;
+ gchar *device = g_strdup_printf ("%s%d",
+ dev_base[base], n);
+
+ /* does the /dev/ entry exist at all? */
+ if (stat (device, &s) == 0) {
+ /* yes: is a device attached? */
+ if ((fd = open (device, O_RDONLY)) > 0 || errno == EBUSY) {
+ if (fd > 0)
+ close (fd);
+
+ devices = g_list_append (devices, device);
+ break;
+ }
}
+ g_free (device);
+ }
+ }
- klass->devices = devices;
+ init = TRUE;
+ }
- return init;
+ klass->devices = devices;
+
+ return init;
}
static void
-gst_v4l2_probe_probe_property (GstPropertyProbe *probe,
- guint prop_id,
- const GParamSpec *pspec)
+gst_v4l2_probe_probe_property (GstPropertyProbe * probe,
+ guint prop_id, const GParamSpec * pspec)
{
- GstV4l2ElementClass *klass = GST_V4L2ELEMENT_GET_CLASS (probe);
-
- switch (prop_id) {
- case ARG_DEVICE:
- gst_v4l2_class_probe_devices (klass, FALSE);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
- break;
- }
+ GstV4l2ElementClass *klass = GST_V4L2ELEMENT_GET_CLASS (probe);
+
+ switch (prop_id) {
+ case ARG_DEVICE:
+ gst_v4l2_class_probe_devices (klass, FALSE);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
+ break;
+ }
}
static gboolean
-gst_v4l2_probe_needs_probe (GstPropertyProbe *probe,
- guint prop_id,
- const GParamSpec *pspec)
+gst_v4l2_probe_needs_probe (GstPropertyProbe * probe,
+ guint prop_id, const GParamSpec * pspec)
{
- GstV4l2ElementClass *klass = GST_V4L2ELEMENT_GET_CLASS (probe);
- gboolean ret = FALSE;
-
- switch (prop_id) {
- case ARG_DEVICE:
- ret = !gst_v4l2_class_probe_devices (klass, TRUE);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
- break;
- }
+ GstV4l2ElementClass *klass = GST_V4L2ELEMENT_GET_CLASS (probe);
+ gboolean ret = FALSE;
- return ret;
+ switch (prop_id) {
+ case ARG_DEVICE:
+ ret = !gst_v4l2_class_probe_devices (klass, TRUE);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
+ break;
+ }
+
+ return ret;
}
static GValueArray *
-gst_v4l2_class_list_devices (GstV4l2ElementClass *klass)
+gst_v4l2_class_list_devices (GstV4l2ElementClass * klass)
{
- GValueArray *array;
- GValue value = { 0 };
- GList *item;
+ GValueArray *array;
+ GValue value = { 0 };
+ GList *item;
- if (!klass->devices)
- return NULL;
+ if (!klass->devices)
+ return NULL;
- array = g_value_array_new (g_list_length (klass->devices));
- item = klass->devices;
- g_value_init (&value, G_TYPE_STRING);
- while (item) {
- gchar *device = item->data;
+ array = g_value_array_new (g_list_length (klass->devices));
+ item = klass->devices;
+ g_value_init (&value, G_TYPE_STRING);
+ while (item) {
+ gchar *device = item->data;
- g_value_set_string (&value, device);
- g_value_array_append (array, &value);
+ g_value_set_string (&value, device);
+ g_value_array_append (array, &value);
- item = item->next;
- }
- g_value_unset (&value);
+ item = item->next;
+ }
+ g_value_unset (&value);
- return array;
+ return array;
}
static GValueArray *
-gst_v4l2_probe_get_values (GstPropertyProbe *probe,
- guint prop_id,
- const GParamSpec *pspec)
+gst_v4l2_probe_get_values (GstPropertyProbe * probe,
+ guint prop_id, const GParamSpec * pspec)
{
- GstV4l2ElementClass *klass = GST_V4L2ELEMENT_GET_CLASS (probe);
- GValueArray *array = NULL;
-
- switch (prop_id) {
- case ARG_DEVICE:
- array = gst_v4l2_class_list_devices (klass);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
- break;
- }
+ GstV4l2ElementClass *klass = GST_V4L2ELEMENT_GET_CLASS (probe);
+ GValueArray *array = NULL;
+
+ switch (prop_id) {
+ case ARG_DEVICE:
+ array = gst_v4l2_class_list_devices (klass);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
+ break;
+ }
- return array;
+ return array;
}
static void
-gst_v4l2_property_probe_interface_init (GstPropertyProbeInterface *iface)
+gst_v4l2_property_probe_interface_init (GstPropertyProbeInterface * iface)
{
- iface->get_properties = gst_v4l2_probe_get_properties;
- iface->probe_property = gst_v4l2_probe_probe_property;
- iface->needs_probe = gst_v4l2_probe_needs_probe;
- iface->get_values = gst_v4l2_probe_get_values;
+ iface->get_properties = gst_v4l2_probe_get_properties;
+ iface->probe_property = gst_v4l2_probe_probe_property;
+ iface->needs_probe = gst_v4l2_probe_needs_probe;
+ iface->get_values = gst_v4l2_probe_get_values;
}
GType
gst_v4l2element_get_type (void)
{
- static GType v4l2element_type = 0;
-
- if (!v4l2element_type) {
- static const GTypeInfo v4l2element_info = {
- sizeof(GstV4l2ElementClass),
- (GBaseInitFunc) gst_v4l2element_base_init,
- NULL,
- (GClassInitFunc) gst_v4l2element_class_init,
- NULL,
- NULL,
- sizeof(GstV4l2Element),
- 0,
- (GInstanceInitFunc) gst_v4l2element_init,
- NULL
- };
- static const GInterfaceInfo v4l2iface_info = {
- (GInterfaceInitFunc) gst_v4l2_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_tuner_info = {
- (GInterfaceInitFunc) gst_v4l2_tuner_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_xoverlay_info = {
- (GInterfaceInitFunc) gst_v4l2_xoverlay_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_colorbalance_info = {
- (GInterfaceInitFunc) gst_v4l2_color_balance_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_propertyprobe_info = {
- (GInterfaceInitFunc) gst_v4l2_property_probe_interface_init,
- NULL,
- NULL,
- };
-
- v4l2element_type =
- g_type_register_static(GST_TYPE_ELEMENT,
- "GstV4l2Element", &v4l2element_info, 0);
-
- g_type_add_interface_static (v4l2element_type,
- GST_TYPE_IMPLEMENTS_INTERFACE,
- &v4l2iface_info);
- g_type_add_interface_static (v4l2element_type,
- GST_TYPE_TUNER,
- &v4l2_tuner_info);
- g_type_add_interface_static (v4l2element_type,
- GST_TYPE_X_OVERLAY,
- &v4l2_xoverlay_info);
- g_type_add_interface_static (v4l2element_type,
- GST_TYPE_COLOR_BALANCE,
- &v4l2_colorbalance_info);
- g_type_add_interface_static (v4l2element_type,
- GST_TYPE_PROPERTY_PROBE,
- &v4l2_propertyprobe_info);
- }
+ static GType v4l2element_type = 0;
+
+ if (!v4l2element_type) {
+ static const GTypeInfo v4l2element_info = {
+ sizeof (GstV4l2ElementClass),
+ (GBaseInitFunc) gst_v4l2element_base_init,
+ NULL,
+ (GClassInitFunc) gst_v4l2element_class_init,
+ NULL,
+ NULL,
+ sizeof (GstV4l2Element),
+ 0,
+ (GInstanceInitFunc) gst_v4l2element_init,
+ NULL
+ };
+ static const GInterfaceInfo v4l2iface_info = {
+ (GInterfaceInitFunc) gst_v4l2_interface_init,
+ NULL,
+ NULL,
+ };
+ static const GInterfaceInfo v4l2_tuner_info = {
+ (GInterfaceInitFunc) gst_v4l2_tuner_interface_init,
+ NULL,
+ NULL,
+ };
+ static const GInterfaceInfo v4l2_xoverlay_info = {
+ (GInterfaceInitFunc) gst_v4l2_xoverlay_interface_init,
+ NULL,
+ NULL,
+ };
+ static const GInterfaceInfo v4l2_colorbalance_info = {
+ (GInterfaceInitFunc) gst_v4l2_color_balance_interface_init,
+ NULL,
+ NULL,
+ };
+ static const GInterfaceInfo v4l2_propertyprobe_info = {
+ (GInterfaceInitFunc) gst_v4l2_property_probe_interface_init,
+ NULL,
+ NULL,
+ };
+
+ v4l2element_type =
+ g_type_register_static (GST_TYPE_ELEMENT,
+ "GstV4l2Element", &v4l2element_info, 0);
+
+ g_type_add_interface_static (v4l2element_type,
+ GST_TYPE_IMPLEMENTS_INTERFACE, &v4l2iface_info);
+ g_type_add_interface_static (v4l2element_type,
+ GST_TYPE_TUNER, &v4l2_tuner_info);
+ g_type_add_interface_static (v4l2element_type,
+ GST_TYPE_X_OVERLAY, &v4l2_xoverlay_info);
+ g_type_add_interface_static (v4l2element_type,
+ GST_TYPE_COLOR_BALANCE, &v4l2_colorbalance_info);
+ g_type_add_interface_static (v4l2element_type,
+ GST_TYPE_PROPERTY_PROBE, &v4l2_propertyprobe_info);
+ }
- return v4l2element_type;
+ return v4l2element_type;
}
@@ -342,80 +324,78 @@ gst_v4l2element_get_type (void)
GType
gst_v4l2_device_get_type (void)
{
- static GType v4l2_device_type = 0;
-
- if (v4l2_device_type == 0) {
- static const GFlagsValue values[] = {
- { V4L2_CAP_VIDEO_CAPTURE, "CAPTURE",
- "Device can capture" },
- { V4L2_CAP_VIDEO_OUTPUT, "PLAYBACK",
- "Device can playback" },
- { V4L2_CAP_VIDEO_OVERLAY, "OVERLAY",
- "Device can do overlay" },
- { V4L2_CAP_TUNER, "TUNER",
- "Device has a tuner" },
- { V4L2_CAP_AUDIO, "AUDIO",
- "Device handles audio" },
- { 0, NULL, NULL }
- };
-
- v4l2_device_type =
- g_flags_register_static ("GstV4l2DeviceTypeFlags",
- values);
- }
+ static GType v4l2_device_type = 0;
+
+ if (v4l2_device_type == 0) {
+ static const GFlagsValue values[] = {
+ {V4L2_CAP_VIDEO_CAPTURE, "CAPTURE",
+ "Device can capture"},
+ {V4L2_CAP_VIDEO_OUTPUT, "PLAYBACK",
+ "Device can playback"},
+ {V4L2_CAP_VIDEO_OVERLAY, "OVERLAY",
+ "Device can do overlay"},
+ {V4L2_CAP_TUNER, "TUNER",
+ "Device has a tuner"},
+ {V4L2_CAP_AUDIO, "AUDIO",
+ "Device handles audio"},
+ {0, NULL, NULL}
+ };
+
+ v4l2_device_type =
+ g_flags_register_static ("GstV4l2DeviceTypeFlags", values);
+ }
- return v4l2_device_type;
+ return v4l2_device_type;
}
static void
-gst_v4l2element_base_init (GstV4l2ElementClass *klass)
+gst_v4l2element_base_init (GstV4l2ElementClass * klass)
{
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
- klass->devices = NULL;
+ klass->devices = NULL;
- gst_element_class_set_details (gstelement_class,
- &gst_v4l2element_details);
+ gst_element_class_set_details (gstelement_class, &gst_v4l2element_details);
}
static void
-gst_v4l2element_class_init (GstV4l2ElementClass *klass)
+gst_v4l2element_class_init (GstV4l2ElementClass * klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
- g_object_class_install_property(gobject_class, ARG_DEVICE,
- g_param_spec_string("device", "Device", "Device location",
- NULL, G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_DEVICE_NAME,
- g_param_spec_string("device_name", "Device name",
- "Name of the device", NULL, G_PARAM_READABLE));
- g_object_class_install_property(gobject_class, ARG_FLAGS,
- g_param_spec_flags("flags", "Flags", "Device type flags",
- GST_TYPE_V4L2_DEVICE_FLAGS, 0, G_PARAM_READABLE));
- g_object_class_install_property(gobject_class, ARG_NORM,
- g_param_spec_string("norm", "norm",
- "Norm to use", NULL, G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_CHANNEL,
- g_param_spec_string("channel", "channel",
- "input/output to switch to", NULL, G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_FREQUENCY,
+ g_object_class_install_property (gobject_class, ARG_DEVICE,
+ g_param_spec_string ("device", "Device", "Device location",
+ NULL, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_DEVICE_NAME,
+ g_param_spec_string ("device_name", "Device name",
+ "Name of the device", NULL, G_PARAM_READABLE));
+ g_object_class_install_property (gobject_class, ARG_FLAGS,
+ g_param_spec_flags ("flags", "Flags", "Device type flags",
+ GST_TYPE_V4L2_DEVICE_FLAGS, 0, G_PARAM_READABLE));
+ g_object_class_install_property (gobject_class, ARG_NORM,
+ g_param_spec_string ("norm", "norm",
+ "Norm to use", NULL, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_CHANNEL,
+ g_param_spec_string ("channel", "channel",
+ "input/output to switch to", NULL, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_FREQUENCY,
g_param_spec_ulong ("frequency", "frequency",
"frequency to tune to", 0, G_MAXULONG, 0, G_PARAM_READWRITE));
/* signals */
gst_v4l2element_signals[SIGNAL_OPEN] =
- g_signal_new("open", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(GstV4l2ElementClass, open),
- NULL, NULL, g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
+ g_signal_new ("open", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GstV4l2ElementClass, open),
+ NULL, NULL, g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
gst_v4l2element_signals[SIGNAL_CLOSE] =
- g_signal_new("close", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(GstV4l2ElementClass, close),
- NULL, NULL, g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
+ g_signal_new ("close", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GstV4l2ElementClass, close),
+ NULL, NULL, g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
gobject_class->set_property = gst_v4l2element_set_property;
gobject_class->get_property = gst_v4l2element_get_property;
@@ -426,29 +406,29 @@ gst_v4l2element_class_init (GstV4l2ElementClass *klass)
static void
-gst_v4l2element_init (GstV4l2Element *v4l2element)
+gst_v4l2element_init (GstV4l2Element * v4l2element)
{
- /* some default values */
- v4l2element->video_fd = -1;
- v4l2element->buffer = NULL;
- v4l2element->device = g_strdup("/dev/video");
- v4l2element->display = g_strdup(g_getenv("DISPLAY"));
+ /* some default values */
+ v4l2element->video_fd = -1;
+ v4l2element->buffer = NULL;
+ v4l2element->device = g_strdup ("/dev/video");
+ v4l2element->display = g_strdup (g_getenv ("DISPLAY"));
- v4l2element->channels = NULL;
- v4l2element->norms = NULL;
- v4l2element->colors = NULL;
+ v4l2element->channels = NULL;
+ v4l2element->norms = NULL;
+ v4l2element->colors = NULL;
- v4l2element->overlay = gst_v4l2_xoverlay_new(v4l2element);
+ v4l2element->overlay = gst_v4l2_xoverlay_new (v4l2element);
}
static void
-gst_v4l2element_dispose (GObject *object)
+gst_v4l2element_dispose (GObject * object)
{
- GstV4l2Element *v4l2element = GST_V4L2ELEMENT(object);
+ GstV4l2Element *v4l2element = GST_V4L2ELEMENT (object);
if (v4l2element->overlay) {
- gst_v4l2_xoverlay_free(v4l2element);
+ gst_v4l2_xoverlay_free (v4l2element);
}
if (v4l2element->display) {
@@ -461,37 +441,36 @@ gst_v4l2element_dispose (GObject *object)
v4l2element->norm = NULL;
g_free (v4l2element->channel);
v4l2element->channel = NULL;
-
+
if (((GObjectClass *) parent_class)->dispose)
- ((GObjectClass *) parent_class)->dispose(object);
+ ((GObjectClass *) parent_class)->dispose (object);
}
static void
-gst_v4l2element_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+gst_v4l2element_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
{
GstV4l2Element *v4l2element;
GstTuner *tuner;
-
+
/* it's not null if we got it, but it might not be ours */
g_return_if_fail (GST_IS_V4L2ELEMENT (object));
v4l2element = GST_V4L2ELEMENT (object);
/* stupid GstInterface */
tuner = (GstTuner *) object;
-
+
switch (prop_id) {
case ARG_DEVICE:
- if (!GST_V4L2_IS_OPEN(v4l2element)) {
+ if (!GST_V4L2_IS_OPEN (v4l2element)) {
if (v4l2element->device)
- g_free(v4l2element->device);
- v4l2element->device = g_value_dup_string(value);
+ g_free (v4l2element->device);
+ v4l2element->device = g_value_dup_string (value);
}
break;
case ARG_NORM:
- if (GST_V4L2_IS_OPEN(v4l2element)) {
+ if (GST_V4L2_IS_OPEN (v4l2element)) {
GstTunerNorm *norm = gst_tuner_get_norm (tuner);
+
if (norm) {
gst_tuner_set_norm (tuner, norm);
}
@@ -502,8 +481,9 @@ gst_v4l2element_set_property (GObject *object,
}
break;
case ARG_CHANNEL:
- if (GST_V4L2_IS_OPEN(v4l2element)) {
+ if (GST_V4L2_IS_OPEN (v4l2element)) {
GstTunerChannel *channel = gst_tuner_get_channel (tuner);
+
if (channel) {
gst_tuner_set_channel (tuner, channel);
}
@@ -514,9 +494,11 @@ gst_v4l2element_set_property (GObject *object,
}
break;
case ARG_FREQUENCY:
- if (GST_V4L2_IS_OPEN(v4l2element)) {
+ if (GST_V4L2_IS_OPEN (v4l2element)) {
GstTunerChannel *channel;
- if (!v4l2element->channel) return;
+
+ if (!v4l2element->channel)
+ return;
channel = gst_tuner_get_channel (tuner);
g_assert (channel);
gst_tuner_set_frequency (tuner, channel, g_value_get_ulong (value));
@@ -533,94 +515,91 @@ gst_v4l2element_set_property (GObject *object,
static void
-gst_v4l2element_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+gst_v4l2element_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
{
- GstV4l2Element *v4l2element;
-
- /* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_V4L2ELEMENT(object));
- v4l2element = GST_V4L2ELEMENT(object);
-
- switch (prop_id) {
- case ARG_DEVICE:
- g_value_set_string(value, v4l2element->device);
- break;
- case ARG_DEVICE_NAME: {
- gchar *new = NULL;
- if (GST_V4L2_IS_OPEN(v4l2element))
- new = v4l2element->vcap.card;
- g_value_set_string(value, new);
- break;
- }
- case ARG_FLAGS: {
- guint flags = 0;
- if (GST_V4L2_IS_OPEN(v4l2element)) {
- flags |= v4l2element->vcap.capabilities &
- 30007;
- }
- g_value_set_flags(value, flags);
- break;
- }
- case ARG_NORM:
- g_value_set_string (value, v4l2element->norm);
- break;
- case ARG_CHANNEL:
- g_value_set_string (value, v4l2element->channel);
- break;
- case ARG_FREQUENCY:
- g_value_set_ulong (value, v4l2element->frequency);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
+ GstV4l2Element *v4l2element;
+
+ /* it's not null if we got it, but it might not be ours */
+ g_return_if_fail (GST_IS_V4L2ELEMENT (object));
+ v4l2element = GST_V4L2ELEMENT (object);
+
+ switch (prop_id) {
+ case ARG_DEVICE:
+ g_value_set_string (value, v4l2element->device);
+ break;
+ case ARG_DEVICE_NAME:{
+ gchar *new = NULL;
+
+ if (GST_V4L2_IS_OPEN (v4l2element))
+ new = v4l2element->vcap.card;
+ g_value_set_string (value, new);
+ break;
+ }
+ case ARG_FLAGS:{
+ guint flags = 0;
+
+ if (GST_V4L2_IS_OPEN (v4l2element)) {
+ flags |= v4l2element->vcap.capabilities & 30007;
+ }
+ g_value_set_flags (value, flags);
+ break;
+ }
+ case ARG_NORM:
+ g_value_set_string (value, v4l2element->norm);
+ break;
+ case ARG_CHANNEL:
+ g_value_set_string (value, v4l2element->channel);
+ break;
+ case ARG_FREQUENCY:
+ g_value_set_ulong (value, v4l2element->frequency);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static GstElementStateReturn
-gst_v4l2element_change_state (GstElement *element)
+gst_v4l2element_change_state (GstElement * element)
{
- GstV4l2Element *v4l2element;
-
- g_return_val_if_fail(GST_IS_V4L2ELEMENT(element), GST_STATE_FAILURE);
-
- v4l2element = GST_V4L2ELEMENT(element);
-
- /* if going down into NULL state, close the device if it's open
- * if going to READY, open the device (and set some options)
- */
- switch (GST_STATE_TRANSITION(element)) {
- case GST_STATE_NULL_TO_READY:
- gst_v4l2_set_display(v4l2element);
-
- if (!gst_v4l2_open(v4l2element))
- return GST_STATE_FAILURE;
-
- gst_v4l2_xoverlay_open(v4l2element);
-
- /* emit a signal! whoopie! */
- g_signal_emit(G_OBJECT(v4l2element),
- gst_v4l2element_signals[SIGNAL_OPEN], 0,
- v4l2element->device);
- break;
- case GST_STATE_READY_TO_NULL:
- gst_v4l2_xoverlay_close(v4l2element);
-
- if (!gst_v4l2_close(v4l2element))
- return GST_STATE_FAILURE;
-
- /* emit yet another signal! wheehee! */
- g_signal_emit(G_OBJECT(v4l2element),
- gst_v4l2element_signals[SIGNAL_CLOSE], 0,
- v4l2element->device);
- break;
- }
+ GstV4l2Element *v4l2element;
+
+ g_return_val_if_fail (GST_IS_V4L2ELEMENT (element), GST_STATE_FAILURE);
+
+ v4l2element = GST_V4L2ELEMENT (element);
+
+ /* if going down into NULL state, close the device if it's open
+ * if going to READY, open the device (and set some options)
+ */
+ switch (GST_STATE_TRANSITION (element)) {
+ case GST_STATE_NULL_TO_READY:
+ gst_v4l2_set_display (v4l2element);
+
+ if (!gst_v4l2_open (v4l2element))
+ return GST_STATE_FAILURE;
+
+ gst_v4l2_xoverlay_open (v4l2element);
+
+ /* emit a signal! whoopie! */
+ g_signal_emit (G_OBJECT (v4l2element),
+ gst_v4l2element_signals[SIGNAL_OPEN], 0, v4l2element->device);
+ break;
+ case GST_STATE_READY_TO_NULL:
+ gst_v4l2_xoverlay_close (v4l2element);
+
+ if (!gst_v4l2_close (v4l2element))
+ return GST_STATE_FAILURE;
+
+ /* emit yet another signal! wheehee! */
+ g_signal_emit (G_OBJECT (v4l2element),
+ gst_v4l2element_signals[SIGNAL_CLOSE], 0, v4l2element->device);
+ break;
+ }
- if (GST_ELEMENT_CLASS(parent_class)->change_state)
- return GST_ELEMENT_CLASS(parent_class)->change_state(element);
+ if (GST_ELEMENT_CLASS (parent_class)->change_state)
+ return GST_ELEMENT_CLASS (parent_class)->change_state (element);
- return GST_STATE_SUCCESS;
+ return GST_STATE_SUCCESS;
}
diff --git a/sys/v4l2/gstv4l2element.h b/sys/v4l2/gstv4l2element.h
index e46b2440..7dcd6846 100644
--- a/sys/v4l2/gstv4l2element.h
+++ b/sys/v4l2/gstv4l2element.h
@@ -55,53 +55,53 @@
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_V4L2ELEMENT, GstV4l2ElementClass))
-typedef struct _GstV4l2Element GstV4l2Element;
-typedef struct _GstV4l2ElementClass GstV4l2ElementClass;
+typedef struct _GstV4l2Element GstV4l2Element;
+typedef struct _GstV4l2ElementClass GstV4l2ElementClass;
-struct _GstV4l2Element {
- GstElement element;
+struct _GstV4l2Element
+{
+ GstElement element;
- /* the video device */
- char *device;
+ /* the video device */
+ char *device;
- /* the video-device's file descriptor */
- gint video_fd;
+ /* the video-device's file descriptor */
+ gint video_fd;
- /* the video buffer (mmap()'ed) */
- guint8 **buffer;
+ /* the video buffer (mmap()'ed) */
+ guint8 **buffer;
- /* the video-device's capabilities */
- struct v4l2_capability vcap;
+ /* the video-device's capabilities */
+ struct v4l2_capability vcap;
- /* the toys available to us */
- GList *channels;
- GList *norms;
- GList *colors;
+ /* the toys available to us */
+ GList *channels;
+ GList *norms;
+ GList *colors;
- /* X-overlay */
- GstXWindowListener *overlay;
- XID xwindow_id;
+ /* X-overlay */
+ GstXWindowListener *overlay;
+ XID xwindow_id;
- /* properties */
- gchar *norm;
- gchar *channel;
- gulong frequency;
+ /* properties */
+ gchar *norm;
+ gchar *channel;
+ gulong frequency;
- /* caching values */
- gchar *display;
+ /* caching values */
+ gchar *display;
};
-struct _GstV4l2ElementClass {
- GstElementClass parent_class;
+struct _GstV4l2ElementClass
+{
+ GstElementClass parent_class;
- /* probed devices */
- GList *devices;
+ /* probed devices */
+ GList *devices;
- /* signals */
- void (*open) (GstElement *element,
- const gchar *device);
- void (*close) (GstElement *element,
- const gchar *device);
+ /* signals */
+ void (*open) (GstElement * element, const gchar * device);
+ void (*close) (GstElement * element, const gchar * device);
};
diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c
index 8b0abe1a..5e5cdddc 100644
--- a/sys/v4l2/gstv4l2src.c
+++ b/sys/v4l2/gstv4l2src.c
@@ -31,115 +31,102 @@ GST_DEBUG_CATEGORY (v4l2src_debug);
/* elementfactory details */
static GstElementDetails gst_v4l2src_details = {
- "Video (video4linux2) Source",
- "Source/Video",
- "Reads frames (compressed or uncompressed) from a video4linux2 device",
- "Ronald Bultje <rbultje@ronald.bitfreak.net>"
+ "Video (video4linux2) Source",
+ "Source/Video",
+ "Reads frames (compressed or uncompressed) from a video4linux2 device",
+ "Ronald Bultje <rbultje@ronald.bitfreak.net>"
};
/* V4l2Src signals and args */
-enum {
- SIGNAL_FRAME_CAPTURE,
- SIGNAL_FRAME_DROP,
- SIGNAL_FRAME_INSERT,
- SIGNAL_FRAME_LOST,
- LAST_SIGNAL
+enum
+{
+ SIGNAL_FRAME_CAPTURE,
+ SIGNAL_FRAME_DROP,
+ SIGNAL_FRAME_INSERT,
+ SIGNAL_FRAME_LOST,
+ LAST_SIGNAL
};
/* arguments */
-enum {
- ARG_0,
- ARG_NUMBUFS,
- ARG_BUFSIZE,
- ARG_USE_FIXED_FPS
+enum
+{
+ ARG_0,
+ ARG_NUMBUFS,
+ ARG_BUFSIZE,
+ ARG_USE_FIXED_FPS
};
guint32 gst_v4l2_formats[] = {
/* from Linux 2.6.0 videodev2.h */
- V4L2_PIX_FMT_RGB332, /* 8 RGB-3-3-2 */
- V4L2_PIX_FMT_RGB555, /* 16 RGB-5-5-5 */
- V4L2_PIX_FMT_RGB565, /* 16 RGB-5-6-5 */
- V4L2_PIX_FMT_RGB555X, /* 16 RGB-5-5-5 BE */
- V4L2_PIX_FMT_RGB565X, /* 16 RGB-5-6-5 BE */
- V4L2_PIX_FMT_BGR24, /* 24 BGR-8-8-8 */
- V4L2_PIX_FMT_RGB24, /* 24 RGB-8-8-8 */
- V4L2_PIX_FMT_BGR32, /* 32 BGR-8-8-8-8 */
- V4L2_PIX_FMT_RGB32, /* 32 RGB-8-8-8-8 */
- V4L2_PIX_FMT_GREY, /* 8 Greyscale */
- V4L2_PIX_FMT_YVU410, /* 9 YVU 4:1:0 */
- V4L2_PIX_FMT_YVU420, /* 12 YVU 4:2:0 */
- V4L2_PIX_FMT_YUYV, /* 16 YUV 4:2:2 */
- V4L2_PIX_FMT_UYVY, /* 16 YUV 4:2:2 */
- V4L2_PIX_FMT_YUV422P, /* 16 YVU422 planar */
- V4L2_PIX_FMT_YUV411P, /* 16 YVU411 planar */
- V4L2_PIX_FMT_Y41P, /* 12 YUV 4:1:1 */
- V4L2_PIX_FMT_NV12, /* 12 Y/CbCr 4:2:0 */
- V4L2_PIX_FMT_NV21, /* 12 Y/CrCb 4:2:0 */
- V4L2_PIX_FMT_YUV410, /* 9 YUV 4:1:0 */
- V4L2_PIX_FMT_YUV420, /* 12 YUV 4:2:0 */
- V4L2_PIX_FMT_YYUV, /* 16 YUV 4:2:2 */
- V4L2_PIX_FMT_HI240, /* 8 8-bit color */
- V4L2_PIX_FMT_MJPEG, /* Motion-JPEG */
- V4L2_PIX_FMT_JPEG, /* JFIF JPEG */
- V4L2_PIX_FMT_DV, /* 1394 */
- V4L2_PIX_FMT_MPEG, /* MPEG */
- V4L2_PIX_FMT_WNVA /* Winnov hw compres */
+ V4L2_PIX_FMT_RGB332, /* 8 RGB-3-3-2 */
+ V4L2_PIX_FMT_RGB555, /* 16 RGB-5-5-5 */
+ V4L2_PIX_FMT_RGB565, /* 16 RGB-5-6-5 */
+ V4L2_PIX_FMT_RGB555X, /* 16 RGB-5-5-5 BE */
+ V4L2_PIX_FMT_RGB565X, /* 16 RGB-5-6-5 BE */
+ V4L2_PIX_FMT_BGR24, /* 24 BGR-8-8-8 */
+ V4L2_PIX_FMT_RGB24, /* 24 RGB-8-8-8 */
+ V4L2_PIX_FMT_BGR32, /* 32 BGR-8-8-8-8 */
+ V4L2_PIX_FMT_RGB32, /* 32 RGB-8-8-8-8 */
+ V4L2_PIX_FMT_GREY, /* 8 Greyscale */
+ V4L2_PIX_FMT_YVU410, /* 9 YVU 4:1:0 */
+ V4L2_PIX_FMT_YVU420, /* 12 YVU 4:2:0 */
+ V4L2_PIX_FMT_YUYV, /* 16 YUV 4:2:2 */
+ V4L2_PIX_FMT_UYVY, /* 16 YUV 4:2:2 */
+ V4L2_PIX_FMT_YUV422P, /* 16 YVU422 planar */
+ V4L2_PIX_FMT_YUV411P, /* 16 YVU411 planar */
+ V4L2_PIX_FMT_Y41P, /* 12 YUV 4:1:1 */
+ V4L2_PIX_FMT_NV12, /* 12 Y/CbCr 4:2:0 */
+ V4L2_PIX_FMT_NV21, /* 12 Y/CrCb 4:2:0 */
+ V4L2_PIX_FMT_YUV410, /* 9 YUV 4:1:0 */
+ V4L2_PIX_FMT_YUV420, /* 12 YUV 4:2:0 */
+ V4L2_PIX_FMT_YYUV, /* 16 YUV 4:2:2 */
+ V4L2_PIX_FMT_HI240, /* 8 8-bit color */
+ V4L2_PIX_FMT_MJPEG, /* Motion-JPEG */
+ V4L2_PIX_FMT_JPEG, /* JFIF JPEG */
+ V4L2_PIX_FMT_DV, /* 1394 */
+ V4L2_PIX_FMT_MPEG, /* MPEG */
+ V4L2_PIX_FMT_WNVA /* Winnov hw compres */
};
+
#define GST_V4L2_FORMAT_COUNT (G_N_ELEMENTS (gst_v4l2_formats))
GST_FORMATS_FUNCTION (GstPad *, gst_v4l2src_get_formats,
- GST_FORMAT_TIME, GST_FORMAT_DEFAULT);
+ GST_FORMAT_TIME, GST_FORMAT_DEFAULT);
GST_QUERY_TYPE_FUNCTION (GstPad *, gst_v4l2src_get_query_types,
- GST_QUERY_POSITION);
+ GST_QUERY_POSITION);
/* init functions */
-static void gst_v4l2src_class_init (gpointer g_class,
- gpointer class_data);
-static void gst_v4l2src_base_init (gpointer g_class);
-static void gst_v4l2src_init (GTypeInstance * instance,
- gpointer g_class);
+static void gst_v4l2src_class_init (gpointer g_class, gpointer class_data);
+static void gst_v4l2src_base_init (gpointer g_class);
+static void gst_v4l2src_init (GTypeInstance * instance, gpointer g_class);
/* signal functions */
-static void gst_v4l2src_open (GstElement *element,
- const gchar *device);
-static void gst_v4l2src_close (GstElement *element,
- const gchar *device);
+static void gst_v4l2src_open (GstElement * element, const gchar * device);
+static void gst_v4l2src_close (GstElement * element, const gchar * device);
/* pad/buffer functions */
-static const GstCaps * gst_v4l2src_get_all_caps (void);
-static GstPadLinkReturn gst_v4l2src_link (GstPad *pad,
- const GstCaps *caps);
-static GstCaps * gst_v4l2src_getcaps (GstPad *pad);
-static GstCaps * gst_v4l2src_fixate (GstPad * pad,
- const GstCaps * caps);
-static GstData * gst_v4l2src_get (GstPad *pad);
-static gboolean gst_v4l2src_src_convert (GstPad *pad,
- GstFormat src_format,
- gint64 src_value,
- GstFormat *dest_format,
- gint64 *dest_value);
-static gboolean gst_v4l2src_src_query (GstPad *pad,
- GstQueryType type,
- GstFormat *format,
- gint64 *value);
+static const GstCaps *gst_v4l2src_get_all_caps (void);
+static GstPadLinkReturn gst_v4l2src_link (GstPad * pad, const GstCaps * caps);
+static GstCaps *gst_v4l2src_getcaps (GstPad * pad);
+static GstCaps *gst_v4l2src_fixate (GstPad * pad, const GstCaps * caps);
+static GstData *gst_v4l2src_get (GstPad * pad);
+static gboolean gst_v4l2src_src_convert (GstPad * pad,
+ GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+static gboolean gst_v4l2src_src_query (GstPad * pad,
+ GstQueryType type, GstFormat * format, gint64 * value);
/* get/set params */
-static void gst_v4l2src_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_v4l2src_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
+static void gst_v4l2src_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_v4l2src_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
/* state handling */
-static GstElementStateReturn
- gst_v4l2src_change_state (GstElement *element);
+static GstElementStateReturn gst_v4l2src_change_state (GstElement * element);
/* set_clock function for A/V sync */
-static void gst_v4l2src_set_clock (GstElement *element,
- GstClock *clock);
+static void gst_v4l2src_set_clock (GstElement * element, GstClock * clock);
static GstElementClass *parent_class = NULL;
static guint gst_v4l2src_signals[LAST_SIGNAL] = { 0 };
@@ -163,7 +150,7 @@ gst_v4l2src_get_type (void)
gst_v4l2src_init,
NULL
};
- v4l2src_type = g_type_register_static(GST_TYPE_V4L2ELEMENT,
+ v4l2src_type = g_type_register_static (GST_TYPE_V4L2ELEMENT,
"GstV4l2Src", &v4l2src_info, 0);
GST_DEBUG_CATEGORY_INIT (v4l2src_debug, "v4l2src", 0, "v4l2src element");
}
@@ -175,7 +162,7 @@ gst_v4l2src_base_init (gpointer g_class)
{
GstPadTemplate *template;
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class);
-
+
gst_element_class_set_details (gstelement_class, &gst_v4l2src_details);
template = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
@@ -196,40 +183,36 @@ gst_v4l2src_class_init (gpointer g_class, gpointer class_data)
gobject_class->set_property = gst_v4l2src_set_property;
gobject_class->get_property = gst_v4l2src_get_property;
- g_object_class_install_property(gobject_class, ARG_NUMBUFS,
- g_param_spec_int("num_buffers","num_buffers","num_buffers",
- G_MININT,G_MAXINT,0,G_PARAM_READWRITE));
- g_object_class_install_property(gobject_class, ARG_BUFSIZE,
- g_param_spec_int("buffer_size","buffer_size","buffer_size",
- G_MININT,G_MAXINT,0,G_PARAM_READABLE));
+ g_object_class_install_property (gobject_class, ARG_NUMBUFS,
+ g_param_spec_int ("num_buffers", "num_buffers", "num_buffers",
+ G_MININT, G_MAXINT, 0, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_BUFSIZE,
+ g_param_spec_int ("buffer_size", "buffer_size", "buffer_size",
+ G_MININT, G_MAXINT, 0, G_PARAM_READABLE));
- g_object_class_install_property(gobject_class, ARG_USE_FIXED_FPS,
- g_param_spec_boolean("use_fixed_fps", "Use Fixed FPS",
- "Drop/Insert frames to reach a certain FPS (TRUE) "
- "or adapt FPS to suit the number of frabbed frames",
- TRUE, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_USE_FIXED_FPS,
+ g_param_spec_boolean ("use_fixed_fps", "Use Fixed FPS",
+ "Drop/Insert frames to reach a certain FPS (TRUE) "
+ "or adapt FPS to suit the number of frabbed frames",
+ TRUE, G_PARAM_READWRITE));
/* signals */
gst_v4l2src_signals[SIGNAL_FRAME_CAPTURE] =
- g_signal_new("frame-capture", G_TYPE_FROM_CLASS (g_class), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(GstV4l2SrcClass, frame_capture),
- NULL, NULL, g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ g_signal_new ("frame-capture", G_TYPE_FROM_CLASS (g_class),
+ G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstV4l2SrcClass, frame_capture), NULL,
+ NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
gst_v4l2src_signals[SIGNAL_FRAME_DROP] =
- g_signal_new("frame-drop", G_TYPE_FROM_CLASS (g_class), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(GstV4l2SrcClass, frame_drop),
- NULL, NULL, g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ g_signal_new ("frame-drop", G_TYPE_FROM_CLASS (g_class),
+ G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstV4l2SrcClass, frame_drop), NULL,
+ NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
gst_v4l2src_signals[SIGNAL_FRAME_INSERT] =
- g_signal_new("frame_insert", G_TYPE_FROM_CLASS (g_class), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(GstV4l2SrcClass, frame_insert),
- NULL, NULL, g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ g_signal_new ("frame_insert", G_TYPE_FROM_CLASS (g_class),
+ G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstV4l2SrcClass, frame_insert), NULL,
+ NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
gst_v4l2src_signals[SIGNAL_FRAME_LOST] =
- g_signal_new("frame-lost", G_TYPE_FROM_CLASS (g_class), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(GstV4l2SrcClass, frame_lost),
- NULL, NULL, g_cclosure_marshal_VOID__INT,
- G_TYPE_NONE, 1, G_TYPE_INT);
+ g_signal_new ("frame-lost", G_TYPE_FROM_CLASS (g_class),
+ G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstV4l2SrcClass, frame_lost), NULL,
+ NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
gstelement_class->change_state = gst_v4l2src_change_state;
@@ -241,24 +224,26 @@ gst_v4l2src_class_init (gpointer g_class, gpointer class_data)
static void
-gst_v4l2src_init (GTypeInstance *instance, gpointer g_class)
+gst_v4l2src_init (GTypeInstance * instance, gpointer g_class)
{
GstV4l2Src *v4l2src = GST_V4L2SRC (instance);
-
- GST_FLAG_SET(GST_ELEMENT(v4l2src), GST_ELEMENT_THREAD_SUGGESTED);
- v4l2src->srcpad = gst_pad_new_from_template(
- gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (v4l2src), "src"), "src");
- gst_element_add_pad(GST_ELEMENT(v4l2src), v4l2src->srcpad);
+ GST_FLAG_SET (GST_ELEMENT (v4l2src), GST_ELEMENT_THREAD_SUGGESTED);
+
+ v4l2src->srcpad =
+ gst_pad_new_from_template (gst_element_class_get_pad_template
+ (GST_ELEMENT_GET_CLASS (v4l2src), "src"), "src");
+ gst_element_add_pad (GST_ELEMENT (v4l2src), v4l2src->srcpad);
- gst_pad_set_get_function(v4l2src->srcpad, gst_v4l2src_get);
- gst_pad_set_link_function(v4l2src->srcpad, gst_v4l2src_link);
+ gst_pad_set_get_function (v4l2src->srcpad, gst_v4l2src_get);
+ gst_pad_set_link_function (v4l2src->srcpad, gst_v4l2src_link);
gst_pad_set_getcaps_function (v4l2src->srcpad, gst_v4l2src_getcaps);
gst_pad_set_fixate_function (v4l2src->srcpad, gst_v4l2src_fixate);
gst_pad_set_convert_function (v4l2src->srcpad, gst_v4l2src_src_convert);
gst_pad_set_formats_function (v4l2src->srcpad, gst_v4l2src_get_formats);
gst_pad_set_query_function (v4l2src->srcpad, gst_v4l2src_src_query);
- gst_pad_set_query_type_function (v4l2src->srcpad, gst_v4l2src_get_query_types);
+ gst_pad_set_query_type_function (v4l2src->srcpad,
+ gst_v4l2src_get_query_types);
v4l2src->breq.count = 0;
@@ -273,121 +258,113 @@ gst_v4l2src_init (GTypeInstance *instance, gpointer g_class)
static void
-gst_v4l2src_open (GstElement *element,
- const gchar *device)
+gst_v4l2src_open (GstElement * element, const gchar * device)
{
gst_v4l2src_fill_format_list (GST_V4L2SRC (element));
}
static void
-gst_v4l2src_close (GstElement *element,
- const gchar *device)
+gst_v4l2src_close (GstElement * element, const gchar * device)
{
gst_v4l2src_clear_format_list (GST_V4L2SRC (element));
}
static gfloat
-gst_v4l2src_get_fps (GstV4l2Src *v4l2src)
+gst_v4l2src_get_fps (GstV4l2Src * v4l2src)
{
- v4l2_std_id norm;
- const GList *item;
-
- if (!v4l2src->use_fixed_fps &&
- v4l2src->clock != NULL &&
- v4l2src->handled > 0) {
- /* try to get time from clock master and calculate fps */
- GstClockTime time = gst_clock_get_time(v4l2src->clock) -
- v4l2src->substract_time;
- return v4l2src->handled * GST_SECOND / time;
- }
+ v4l2_std_id norm;
+ const GList *item;
+
+ if (!v4l2src->use_fixed_fps && v4l2src->clock != NULL && v4l2src->handled > 0) {
+ /* try to get time from clock master and calculate fps */
+ GstClockTime time = gst_clock_get_time (v4l2src->clock) -
+ v4l2src->substract_time;
+ return v4l2src->handled * GST_SECOND / time;
+ }
- /* if that failed ... */
-
- if (!GST_V4L2_IS_OPEN(GST_V4L2ELEMENT(v4l2src)))
- return 0.;
-
- if (!gst_v4l2_get_norm(GST_V4L2ELEMENT(v4l2src), &norm))
- return 0.;
- for (item = GST_V4L2ELEMENT(v4l2src)->norms;
- item != NULL; item = item->next) {
- GstV4l2TunerNorm *v4l2norm = item->data;
- if (v4l2norm->index == norm)
- return GST_TUNER_NORM(v4l2norm)->fps;
- }
+ /* if that failed ... */
- return 0.;
+ if (!GST_V4L2_IS_OPEN (GST_V4L2ELEMENT (v4l2src)))
+ return 0.;
+
+ if (!gst_v4l2_get_norm (GST_V4L2ELEMENT (v4l2src), &norm))
+ return 0.;
+ for (item = GST_V4L2ELEMENT (v4l2src)->norms; item != NULL; item = item->next) {
+ GstV4l2TunerNorm *v4l2norm = item->data;
+
+ if (v4l2norm->index == norm)
+ return GST_TUNER_NORM (v4l2norm)->fps;
+ }
+
+ return 0.;
}
static gboolean
-gst_v4l2src_src_convert (GstPad *pad,
- GstFormat src_format,
- gint64 src_value,
- GstFormat *dest_format,
- gint64 *dest_value)
+gst_v4l2src_src_convert (GstPad * pad,
+ GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value)
{
- GstV4l2Src *v4l2src;
- gdouble fps;
-
- v4l2src = GST_V4L2SRC (gst_pad_get_parent (pad));
-
- if ((fps = gst_v4l2src_get_fps(v4l2src)) == 0)
- return FALSE;
-
- switch (src_format) {
- case GST_FORMAT_TIME:
- switch (*dest_format) {
- case GST_FORMAT_DEFAULT:
- *dest_value = src_value * fps / GST_SECOND;
- break;
- default:
- return FALSE;
- }
- break;
-
- case GST_FORMAT_DEFAULT:
- switch (*dest_format) {
- case GST_FORMAT_TIME:
- *dest_value = src_value * GST_SECOND / fps;
- break;
- default:
- return FALSE;
- }
- break;
-
- default:
- return FALSE;
- }
+ GstV4l2Src *v4l2src;
+ gdouble fps;
+
+ v4l2src = GST_V4L2SRC (gst_pad_get_parent (pad));
- return TRUE;
+ if ((fps = gst_v4l2src_get_fps (v4l2src)) == 0)
+ return FALSE;
+
+ switch (src_format) {
+ case GST_FORMAT_TIME:
+ switch (*dest_format) {
+ case GST_FORMAT_DEFAULT:
+ *dest_value = src_value * fps / GST_SECOND;
+ break;
+ default:
+ return FALSE;
+ }
+ break;
+
+ case GST_FORMAT_DEFAULT:
+ switch (*dest_format) {
+ case GST_FORMAT_TIME:
+ *dest_value = src_value * GST_SECOND / fps;
+ break;
+ default:
+ return FALSE;
+ }
+ break;
+
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
}
static gboolean
-gst_v4l2src_src_query (GstPad *pad,
- GstQueryType type,
- GstFormat *format,
- gint64 *value)
+gst_v4l2src_src_query (GstPad * pad,
+ GstQueryType type, GstFormat * format, gint64 * value)
{
GstV4l2Src *v4l2src = GST_V4L2SRC (gst_pad_get_parent (pad));
gboolean res = TRUE;
gdouble fps;
- if ((fps = gst_v4l2src_get_fps(v4l2src)) == 0)
+ if ((fps = gst_v4l2src_get_fps (v4l2src)) == 0)
return FALSE;
switch (type) {
case GST_QUERY_POSITION:
switch (*format) {
- case GST_FORMAT_TIME:
- *value = v4l2src->handled * GST_SECOND / fps;
- break;
- case GST_FORMAT_DEFAULT:
- *value = v4l2src->handled;
- break;
- default:
- res = FALSE;
- break;
+ case GST_FORMAT_TIME:
+ *value = v4l2src->handled * GST_SECOND / fps;
+ break;
+ case GST_FORMAT_DEFAULT:
+ *value = v4l2src->handled;
+ break;
+ default:
+ res = FALSE;
+ break;
}
break;
default:
@@ -404,8 +381,8 @@ gst_v4l2src_v4l2fourcc_to_caps (guint32 fourcc)
GstStructure *structure = NULL;
switch (fourcc) {
- case V4L2_PIX_FMT_MJPEG: /* Motion-JPEG */
- case V4L2_PIX_FMT_JPEG: /* JFIF JPEG */
+ case V4L2_PIX_FMT_MJPEG: /* Motion-JPEG */
+ case V4L2_PIX_FMT_JPEG: /* JFIF JPEG */
structure = gst_structure_new ("video/x-jpeg", NULL);
break;
case V4L2_PIX_FMT_RGB332:
@@ -416,21 +393,25 @@ gst_v4l2src_v4l2fourcc_to_caps (guint32 fourcc)
case V4L2_PIX_FMT_RGB24:
case V4L2_PIX_FMT_BGR24:
case V4L2_PIX_FMT_RGB32:
- case V4L2_PIX_FMT_BGR32: {
- guint depth=0, bpp=0;
+ case V4L2_PIX_FMT_BGR32:{
+ guint depth = 0, bpp = 0;
gint endianness = 0;
guint32 r_mask = 0, b_mask = 0, g_mask = 0;
switch (fourcc) {
case V4L2_PIX_FMT_RGB332:
bpp = depth = 8;
- endianness = G_BYTE_ORDER; /* 'like, whatever' */
- r_mask = 0xe0; g_mask = 0x1c; b_mask = 0x03;
+ endianness = G_BYTE_ORDER; /* 'like, whatever' */
+ r_mask = 0xe0;
+ g_mask = 0x1c;
+ b_mask = 0x03;
break;
case V4L2_PIX_FMT_RGB555:
case V4L2_PIX_FMT_RGB555X:
- bpp = 16; depth = 15;
- endianness = fourcc == V4L2_PIX_FMT_RGB555X ? G_BIG_ENDIAN : G_LITTLE_ENDIAN;
+ bpp = 16;
+ depth = 15;
+ endianness =
+ fourcc == V4L2_PIX_FMT_RGB555X ? G_BIG_ENDIAN : G_LITTLE_ENDIAN;
r_mask = 0x7c00;
g_mask = 0x03e0;
b_mask = 0x001f;
@@ -438,7 +419,8 @@ gst_v4l2src_v4l2fourcc_to_caps (guint32 fourcc)
case V4L2_PIX_FMT_RGB565:
case V4L2_PIX_FMT_RGB565X:
bpp = depth = 16;
- endianness = fourcc == V4L2_PIX_FMT_RGB565X ? G_BIG_ENDIAN : G_LITTLE_ENDIAN;
+ endianness =
+ fourcc == V4L2_PIX_FMT_RGB565X ? G_BIG_ENDIAN : G_LITTLE_ENDIAN;
r_mask = 0xf800;
g_mask = 0x07e0;
b_mask = 0x001f;
@@ -471,108 +453,107 @@ gst_v4l2src_v4l2fourcc_to_caps (guint32 fourcc)
b_mask = 0x00ff0000;
break;
default:
- g_assert_not_reached();
+ g_assert_not_reached ();
break;
}
structure = gst_structure_new ("video/x-raw-rgb",
- "bpp", G_TYPE_INT, bpp,
- "depth", G_TYPE_INT, depth,
- "red_mask", G_TYPE_INT, r_mask,
+ "bpp", G_TYPE_INT, bpp,
+ "depth", G_TYPE_INT, depth,
+ "red_mask", G_TYPE_INT, r_mask,
"green_mask", G_TYPE_INT, g_mask,
- "blue_mask", G_TYPE_INT, b_mask,
- "endianness", G_TYPE_INT, endianness,
- NULL);
+ "blue_mask", G_TYPE_INT, b_mask,
+ "endianness", G_TYPE_INT, endianness, NULL);
break;
}
- case V4L2_PIX_FMT_GREY: /* 8 Greyscale */
- case V4L2_PIX_FMT_YUV422P: /* 16 YVU422 planar */
- case V4L2_PIX_FMT_YUV411P: /* 16 YVU411 planar */
- case V4L2_PIX_FMT_NV12: /* 12 Y/CbCr 4:2:0 */
- case V4L2_PIX_FMT_NV21: /* 12 Y/CrCb 4:2:0 */
- case V4L2_PIX_FMT_YYUV: /* 16 YUV 4:2:2 */
- case V4L2_PIX_FMT_HI240: /* 8 8-bit color */
+ case V4L2_PIX_FMT_GREY: /* 8 Greyscale */
+ case V4L2_PIX_FMT_YUV422P: /* 16 YVU422 planar */
+ case V4L2_PIX_FMT_YUV411P: /* 16 YVU411 planar */
+ case V4L2_PIX_FMT_NV12: /* 12 Y/CbCr 4:2:0 */
+ case V4L2_PIX_FMT_NV21: /* 12 Y/CrCb 4:2:0 */
+ case V4L2_PIX_FMT_YYUV: /* 16 YUV 4:2:2 */
+ case V4L2_PIX_FMT_HI240: /* 8 8-bit color */
/* FIXME: get correct fourccs here */
break;
case V4L2_PIX_FMT_YVU410:
case V4L2_PIX_FMT_YUV410:
- case V4L2_PIX_FMT_YUV420: /* I420/IYUV */
+ case V4L2_PIX_FMT_YUV420: /* I420/IYUV */
case V4L2_PIX_FMT_YUYV:
case V4L2_PIX_FMT_YVU420:
case V4L2_PIX_FMT_UYVY:
- case V4L2_PIX_FMT_Y41P: {
+ case V4L2_PIX_FMT_Y41P:{
guint32 fcc = 0;
switch (fourcc) {
case V4L2_PIX_FMT_YVU410:
- fcc = GST_MAKE_FOURCC('Y','V','U','9');
+ fcc = GST_MAKE_FOURCC ('Y', 'V', 'U', '9');
break;
case V4L2_PIX_FMT_YUV410:
- fcc = GST_MAKE_FOURCC('Y','U','V','9');
+ fcc = GST_MAKE_FOURCC ('Y', 'U', 'V', '9');
break;
case V4L2_PIX_FMT_YUV420:
- fcc = GST_MAKE_FOURCC('I','4','2','0');
+ fcc = GST_MAKE_FOURCC ('I', '4', '2', '0');
break;
case V4L2_PIX_FMT_YUYV:
- fcc = GST_MAKE_FOURCC('Y','U','Y','2');
+ fcc = GST_MAKE_FOURCC ('Y', 'U', 'Y', '2');
break;
case V4L2_PIX_FMT_YVU420:
- fcc = GST_MAKE_FOURCC('Y','V','1','2');
+ fcc = GST_MAKE_FOURCC ('Y', 'V', '1', '2');
break;
case V4L2_PIX_FMT_UYVY:
- fcc = GST_MAKE_FOURCC('U','Y','V','Y');
+ fcc = GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y');
break;
case V4L2_PIX_FMT_Y41P:
- fcc = GST_MAKE_FOURCC('Y','4','1','B');
+ fcc = GST_MAKE_FOURCC ('Y', '4', '1', 'B');
break;
default:
- g_assert_not_reached();
+ g_assert_not_reached ();
break;
}
structure = gst_structure_new ("video/x-raw-yuv",
- "format", GST_TYPE_FOURCC, fcc,
- NULL);
+ "format", GST_TYPE_FOURCC, fcc, NULL);
break;
}
case V4L2_PIX_FMT_DV:
- structure = gst_structure_new ("video/x-dv", "systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
+ structure =
+ gst_structure_new ("video/x-dv", "systemstream", G_TYPE_BOOLEAN, TRUE,
+ NULL);
break;
- case V4L2_PIX_FMT_MPEG: /* MPEG */
+ case V4L2_PIX_FMT_MPEG: /* MPEG */
/* someone figure out the MPEG format used... */
break;
- case V4L2_PIX_FMT_WNVA: /* Winnov hw compres */
+ case V4L2_PIX_FMT_WNVA: /* Winnov hw compres */
break;
default:
GST_DEBUG ("Unknown fourcc 0x%08x " GST_FOURCC_FORMAT,
- fourcc, GST_FOURCC_ARGS(fourcc));
+ fourcc, GST_FOURCC_ARGS (fourcc));
break;
}
#if 0
- gst_caps_set_simple (caps,
- "width", G_TYPE_INT, width,
- "height", G_TYPE_INT, height,
- "framerate", G_TYPE_DOUBLE, fps,
- NULL);
+ gst_caps_set_simple (caps,
+ "width", G_TYPE_INT, width,
+ "height", G_TYPE_INT, height, "framerate", G_TYPE_DOUBLE, fps, NULL);
#endif
return structure;
}
static struct v4l2_fmtdesc *
-gst_v4l2src_get_format_from_fourcc (GstV4l2Src *v4l2src, guint32 fourcc)
-{
+gst_v4l2src_get_format_from_fourcc (GstV4l2Src * v4l2src, guint32 fourcc)
+{
struct v4l2_fmtdesc *fmt;
GSList *walk;
-
+
if (fourcc == 0)
return NULL;
-
+
walk = v4l2src->formats;
while (walk) {
fmt = (struct v4l2_fmtdesc *) walk->data;
if (fmt->pixelformat == fourcc)
return fmt;
/* special case for jpeg */
- if ((fmt->pixelformat == V4L2_PIX_FMT_MJPEG && fourcc == V4L2_PIX_FMT_JPEG) ||
- (fmt->pixelformat == V4L2_PIX_FMT_JPEG && fourcc == V4L2_PIX_FMT_MJPEG)) {
+ if ((fmt->pixelformat == V4L2_PIX_FMT_MJPEG && fourcc == V4L2_PIX_FMT_JPEG)
+ || (fmt->pixelformat == V4L2_PIX_FMT_JPEG
+ && fourcc == V4L2_PIX_FMT_MJPEG)) {
return fmt;
}
walk = g_slist_next (walk);
@@ -582,36 +563,36 @@ gst_v4l2src_get_format_from_fourcc (GstV4l2Src *v4l2src, guint32 fourcc)
}
static guint32
-gst_v4l2_fourcc_from_structure (GstStructure *structure)
+gst_v4l2_fourcc_from_structure (GstStructure * structure)
{
guint32 fourcc = 0;
const gchar *mimetype = gst_structure_get_name (structure);
- if (!strcmp(mimetype, "video/x-raw-yuv") ||
- !strcmp(mimetype, "video/x-raw-rgb")) {
- if (!strcmp(mimetype, "video/x-raw-rgb"))
- fourcc = GST_MAKE_FOURCC('R','G','B',' ');
+ if (!strcmp (mimetype, "video/x-raw-yuv") ||
+ !strcmp (mimetype, "video/x-raw-rgb")) {
+ if (!strcmp (mimetype, "video/x-raw-rgb"))
+ fourcc = GST_MAKE_FOURCC ('R', 'G', 'B', ' ');
else
gst_structure_get_fourcc (structure, "format", &fourcc);
switch (fourcc) {
- case GST_MAKE_FOURCC('I','4','2','0'):
- case GST_MAKE_FOURCC('I','Y','U','V'):
+ case GST_MAKE_FOURCC ('I', '4', '2', '0'):
+ case GST_MAKE_FOURCC ('I', 'Y', 'U', 'V'):
fourcc = V4L2_PIX_FMT_YUV420;
break;
- case GST_MAKE_FOURCC('Y','U','Y','2'):
+ case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
fourcc = V4L2_PIX_FMT_YUYV;
break;
- case GST_MAKE_FOURCC('Y','4','1','P'):
+ case GST_MAKE_FOURCC ('Y', '4', '1', 'P'):
fourcc = V4L2_PIX_FMT_Y41P;
break;
- case GST_MAKE_FOURCC('U','Y','V','Y'):
+ case GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'):
fourcc = V4L2_PIX_FMT_UYVY;
break;
- case GST_MAKE_FOURCC('Y','V','1','2'):
+ case GST_MAKE_FOURCC ('Y', 'V', '1', '2'):
fourcc = V4L2_PIX_FMT_YVU420;
break;
- case GST_MAKE_FOURCC('R','G','B',' '): {
+ case GST_MAKE_FOURCC ('R', 'G', 'B', ' '):{
gint depth, endianness, r_mask;
gst_structure_get_int (structure, "depth", &depth);
@@ -624,29 +605,23 @@ gst_v4l2_fourcc_from_structure (GstStructure *structure)
break;
case 15:
fourcc = (endianness == G_LITTLE_ENDIAN) ?
- V4L2_PIX_FMT_RGB555 :
- V4L2_PIX_FMT_RGB555X;
+ V4L2_PIX_FMT_RGB555 : V4L2_PIX_FMT_RGB555X;
break;
case 16:
fourcc = (endianness == G_LITTLE_ENDIAN) ?
- V4L2_PIX_FMT_RGB565 :
- V4L2_PIX_FMT_RGB565X;
+ V4L2_PIX_FMT_RGB565 : V4L2_PIX_FMT_RGB565X;
break;
case 24:
- fourcc = (r_mask == 0xFF) ?
- V4L2_PIX_FMT_BGR24 :
- V4L2_PIX_FMT_RGB24;
+ fourcc = (r_mask == 0xFF) ? V4L2_PIX_FMT_BGR24 : V4L2_PIX_FMT_RGB24;
break;
case 32:
- fourcc = (r_mask == 0xFF) ?
- V4L2_PIX_FMT_BGR32 :
- V4L2_PIX_FMT_RGB32;
+ fourcc = (r_mask == 0xFF) ? V4L2_PIX_FMT_BGR32 : V4L2_PIX_FMT_RGB32;
break;
}
- default:
- break;
+ default:
+ break;
}
- }
+ }
} else if (strcmp (mimetype, "video/x-dv") == 0) {
fourcc = V4L2_PIX_FMT_DV;
} else if (strcmp (mimetype, "video/x-jpeg") == 0) {
@@ -657,7 +632,7 @@ gst_v4l2_fourcc_from_structure (GstStructure *structure)
}
static struct v4l2_fmtdesc *
-gst_v4l2_caps_to_v4l2fourcc (GstV4l2Src *v4l2src, GstStructure *structure)
+gst_v4l2_caps_to_v4l2fourcc (GstV4l2Src * v4l2src, GstStructure * structure)
{
return gst_v4l2src_get_format_from_fourcc (v4l2src,
gst_v4l2_fourcc_from_structure (structure));
@@ -679,8 +654,7 @@ gst_v4l2src_get_all_caps (void)
gst_structure_set (structure,
"width", GST_TYPE_INT_RANGE, 1, 4096,
"height", GST_TYPE_INT_RANGE, 1, 4096,
- "framerate", GST_TYPE_DOUBLE_RANGE, (double) 0, G_MAXDOUBLE,
- NULL);
+ "framerate", GST_TYPE_DOUBLE_RANGE, (double) 0, G_MAXDOUBLE, NULL);
gst_caps_append_structure (caps, structure);
}
@@ -691,7 +665,7 @@ gst_v4l2src_get_all_caps (void)
}
static GstCaps *
-gst_v4l2src_fixate (GstPad *pad, const GstCaps *const_caps)
+gst_v4l2src_fixate (GstPad * pad, const GstCaps * const_caps)
{
gint i;
GstStructure *structure;
@@ -702,25 +676,31 @@ gst_v4l2src_fixate (GstPad *pad, const GstCaps *const_caps)
caps_str = gst_caps_to_string (caps);
GST_DEBUG_OBJECT (gst_pad_get_parent (pad), "fixating caps %s", caps_str);
g_free (caps_str);
-
+
for (i = 0; i < gst_caps_get_size (caps); i++) {
structure = gst_caps_get_structure (caps, i);
- changed |= gst_caps_structure_fixate_field_nearest_int (structure, "width", G_MAXINT);
+ changed |=
+ gst_caps_structure_fixate_field_nearest_int (structure, "width",
+ G_MAXINT);
}
- if (changed) return caps;
+ if (changed)
+ return caps;
for (i = 0; i < gst_caps_get_size (caps); i++) {
structure = gst_caps_get_structure (caps, i);
- changed |= gst_caps_structure_fixate_field_nearest_int (structure, "height", G_MAXINT);
+ changed |=
+ gst_caps_structure_fixate_field_nearest_int (structure, "height",
+ G_MAXINT);
}
- if (changed) return caps;
+ if (changed)
+ return caps;
gst_caps_free (caps);
return NULL;
}
static GstPadLinkReturn
-gst_v4l2src_link (GstPad *pad, const GstCaps *caps)
+gst_v4l2src_link (GstPad * pad, const GstCaps * caps)
{
GstV4l2Src *v4l2src;
GstV4l2Element *v4l2element;
@@ -728,33 +708,33 @@ gst_v4l2src_link (GstPad *pad, const GstCaps *caps)
int w, h;
GstStructure *structure;
- v4l2src = GST_V4L2SRC(gst_pad_get_parent (pad));
- v4l2element = GST_V4L2ELEMENT(v4l2src);
+ v4l2src = GST_V4L2SRC (gst_pad_get_parent (pad));
+ v4l2element = GST_V4L2ELEMENT (v4l2src);
structure = gst_caps_get_structure (caps, 0);
/* clean up if we still haven't cleaned up our previous
* capture session */
- if (GST_V4L2_IS_ACTIVE(v4l2element)) {
- if (!gst_v4l2src_capture_deinit(v4l2src))
- return GST_PAD_LINK_REFUSED;
- } else if (!GST_V4L2_IS_OPEN(v4l2element)) {
- return GST_PAD_LINK_DELAYED;
+ if (GST_V4L2_IS_ACTIVE (v4l2element)) {
+ if (!gst_v4l2src_capture_deinit (v4l2src))
+ return GST_PAD_LINK_REFUSED;
+ } else if (!GST_V4L2_IS_OPEN (v4l2element)) {
+ return GST_PAD_LINK_DELAYED;
}
/* we want our own v4l2 type of fourcc codes */
- if (!(format = gst_v4l2_caps_to_v4l2fourcc(v4l2src, structure))) {
- return GST_PAD_LINK_REFUSED;
+ if (!(format = gst_v4l2_caps_to_v4l2fourcc (v4l2src, structure))) {
+ return GST_PAD_LINK_REFUSED;
}
gst_structure_get_int (structure, "width", &w);
gst_structure_get_int (structure, "height", &h);
/* we found the pixelformat! - try it out */
- if (gst_v4l2src_set_capture(v4l2src, format, w, h)) {
- if (gst_v4l2src_capture_init(v4l2src)) {
- return GST_PAD_LINK_OK;
- }
+ if (gst_v4l2src_set_capture (v4l2src, format, w, h)) {
+ if (gst_v4l2src_capture_init (v4l2src)) {
+ return GST_PAD_LINK_OK;
+ }
}
return GST_PAD_LINK_REFUSED;
@@ -762,29 +742,29 @@ gst_v4l2src_link (GstPad *pad, const GstCaps *caps)
static GstCaps *
-gst_v4l2src_getcaps (GstPad *pad)
+gst_v4l2src_getcaps (GstPad * pad)
{
- GstV4l2Src *v4l2src = GST_V4L2SRC(gst_pad_get_parent (pad));
+ GstV4l2Src *v4l2src = GST_V4L2SRC (gst_pad_get_parent (pad));
GstCaps *caps;
struct v4l2_fmtdesc *format;
int min_w, max_w, min_h, max_h;
GSList *walk;
GstStructure *structure;
- if (!GST_V4L2_IS_OPEN(GST_V4L2ELEMENT(v4l2src))) {
- return gst_caps_new_any ();
+ if (!GST_V4L2_IS_OPEN (GST_V4L2ELEMENT (v4l2src))) {
+ return gst_caps_new_any ();
}
/* build our own capslist */
- caps = gst_caps_new_empty();
+ caps = gst_caps_new_empty ();
walk = v4l2src->formats;
while (walk) {
format = (struct v4l2_fmtdesc *) walk->data;
walk = g_slist_next (walk);
/* get size delimiters */
- if (!gst_v4l2src_get_size_limits(v4l2src, format,
- &min_w, &max_w, &min_h, &max_h)) {
+ if (!gst_v4l2src_get_size_limits (v4l2src, format,
+ &min_w, &max_w, &min_h, &max_h)) {
continue;
}
@@ -795,8 +775,7 @@ gst_v4l2src_getcaps (GstPad *pad)
gst_structure_set (structure,
"width", GST_TYPE_INT_RANGE, min_w, max_w,
"height", GST_TYPE_INT_RANGE, min_h, max_h,
- "framerate", GST_TYPE_DOUBLE_RANGE, (double) 0, G_MAXDOUBLE,
- NULL);
+ "framerate", GST_TYPE_DOUBLE_RANGE, (double) 0, G_MAXDOUBLE, NULL);
gst_caps_append_structure (caps, structure);
}
@@ -805,8 +784,8 @@ gst_v4l2src_getcaps (GstPad *pad)
return caps;
}
-static GstData*
-gst_v4l2src_get (GstPad *pad)
+static GstData *
+gst_v4l2src_get (GstPad * pad)
{
GstV4l2Src *v4l2src;
GstBuffer *buf;
@@ -815,9 +794,9 @@ gst_v4l2src_get (GstPad *pad)
v4l2src = GST_V4L2SRC (gst_pad_get_parent (pad));
- if (v4l2src->use_fixed_fps &&
- (fps = gst_v4l2src_get_fps(v4l2src)) == 0) {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS, (NULL), ("could not get frame rate for element"));
+ if (v4l2src->use_fixed_fps && (fps = gst_v4l2src_get_fps (v4l2src)) == 0) {
+ GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS, (NULL),
+ ("could not get frame rate for element"));
return NULL;
}
@@ -827,13 +806,14 @@ gst_v4l2src_get (GstPad *pad)
v4l2src->need_writes--;
} else {
GstClockTime time;
+
/* grab a frame from the device */
- num = gst_v4l2src_grab_frame(v4l2src);
+ num = gst_v4l2src_grab_frame (v4l2src);
if (num == -1)
return NULL;
/* to check if v4l2 sets the correct time */
- time = GST_TIMEVAL_TO_TIME(v4l2src->pool->buffers[num].buffer.timestamp);
+ time = GST_TIMEVAL_TO_TIME (v4l2src->pool->buffers[num].buffer.timestamp);
if (v4l2src->clock && v4l2src->use_fixed_fps && time != 0) {
gboolean have_frame = FALSE;
@@ -847,9 +827,12 @@ gst_v4l2src_get (GstPad *pad)
/* first check whether we lost any frames according to the device */
if (v4l2src->last_seq != 0) {
- if (v4l2src->pool->buffers[num].buffer.sequence - v4l2src->last_seq > 1) {
- v4l2src->need_writes = v4l2src->pool->buffers[num].buffer.sequence - v4l2src->last_seq;
- g_signal_emit(G_OBJECT(v4l2src), gst_v4l2src_signals[SIGNAL_FRAME_LOST], 0,
+ if (v4l2src->pool->buffers[num].buffer.sequence - v4l2src->last_seq >
+ 1) {
+ v4l2src->need_writes =
+ v4l2src->pool->buffers[num].buffer.sequence - v4l2src->last_seq;
+ g_signal_emit (G_OBJECT (v4l2src),
+ gst_v4l2src_signals[SIGNAL_FRAME_LOST], 0,
v4l2src->need_writes - 1);
}
}
@@ -865,23 +848,27 @@ gst_v4l2src_get (GstPad *pad)
* timeframe. This means that if time - begin_time = X sec,
* we want to have written X*fps frames. If we've written
* more - drop, if we've written less - dup... */
- if (v4l2src->handled * (GST_SECOND/fps) - time > 1.5 * (GST_SECOND/fps)) {
+ if (v4l2src->handled * (GST_SECOND / fps) - time >
+ 1.5 * (GST_SECOND / fps)) {
/* yo dude, we've got too many frames here! Drop! DROP! */
- v4l2src->need_writes--; /* -= (v4l2src->handled - (time / fps)); */
- g_signal_emit(G_OBJECT(v4l2src), gst_v4l2src_signals[SIGNAL_FRAME_DROP], 0);
- } else if (v4l2src->handled * (GST_SECOND/fps) - time < -1.5 * (GST_SECOND/fps)) {
+ v4l2src->need_writes--; /* -= (v4l2src->handled - (time / fps)); */
+ g_signal_emit (G_OBJECT (v4l2src),
+ gst_v4l2src_signals[SIGNAL_FRAME_DROP], 0);
+ } else if (v4l2src->handled * (GST_SECOND / fps) - time <
+ -1.5 * (GST_SECOND / fps)) {
/* this means we're lagging far behind */
- v4l2src->need_writes++; /* += ((time / fps) - v4l2src->handled); */
- g_signal_emit(G_OBJECT(v4l2src), gst_v4l2src_signals[SIGNAL_FRAME_INSERT], 0);
+ v4l2src->need_writes++; /* += ((time / fps) - v4l2src->handled); */
+ g_signal_emit (G_OBJECT (v4l2src),
+ gst_v4l2src_signals[SIGNAL_FRAME_INSERT], 0);
}
if (v4l2src->need_writes > 0) {
have_frame = TRUE;
v4l2src->need_writes--;
} else {
- if (!gst_v4l2src_queue_frame(v4l2src, num))
+ if (!gst_v4l2src_queue_frame (v4l2src, num))
return NULL;
- num = gst_v4l2src_grab_frame(v4l2src);
+ num = gst_v4l2src_grab_frame (v4l2src);
if (num == -1)
return NULL;
}
@@ -889,17 +876,18 @@ gst_v4l2src_get (GstPad *pad)
}
g_assert (num != -1);
- GST_LOG_OBJECT (v4l2src, "buffer %d needs %d writes", num, v4l2src->need_writes + 1);
- i = v4l2src->pool->buffers[num].buffer.bytesused > 0 ?
- v4l2src->pool->buffers[num].buffer.bytesused :
- v4l2src->pool->buffers[num].length;
+ GST_LOG_OBJECT (v4l2src, "buffer %d needs %d writes", num,
+ v4l2src->need_writes + 1);
+ i = v4l2src->pool->buffers[num].buffer.bytesused >
+ 0 ? v4l2src->pool->buffers[num].buffer.bytesused : v4l2src->pool->
+ buffers[num].length;
/* check if this is the last buffer in the queue. If so do a memcpy to put it back asap
to avoid framedrops and deadlocks because of stupid elements */
if (gst_atomic_int_read (&v4l2src->pool->refcount) == v4l2src->breq.count) {
GST_LOG_OBJECT (v4l2src, "using memcpy'd buffer");
buf = gst_buffer_new_and_alloc (i);
memcpy (GST_BUFFER_DATA (buf), v4l2src->pool->buffers[num].start, i);
- if (!gst_v4l2src_queue_frame(v4l2src, num)) {
+ if (!gst_v4l2src_queue_frame (v4l2src, num)) {
gst_data_unref (GST_DATA (buf));
return NULL;
}
@@ -920,7 +908,8 @@ gst_v4l2src_get (GstPad *pad)
GST_BUFFER_DURATION (buf) = GST_SECOND / fps;
} else {
/* calculate time based on our own clock */
- GST_BUFFER_TIMESTAMP(buf) = GST_TIMEVAL_TO_TIME(v4l2src->pool->buffers[num].buffer.timestamp) -
+ GST_BUFFER_TIMESTAMP (buf) =
+ GST_TIMEVAL_TO_TIME (v4l2src->pool->buffers[num].buffer.timestamp) -
v4l2src->substract_time;
}
if (v4l2src->need_writes > 0) {
@@ -932,135 +921,130 @@ gst_v4l2src_get (GstPad *pad)
}
v4l2src->handled++;
- g_signal_emit(G_OBJECT(v4l2src), gst_v4l2src_signals[SIGNAL_FRAME_CAPTURE], 0);
+ g_signal_emit (G_OBJECT (v4l2src), gst_v4l2src_signals[SIGNAL_FRAME_CAPTURE],
+ 0);
return GST_DATA (buf);
}
static void
-gst_v4l2src_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+gst_v4l2src_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
{
- GstV4l2Src *v4l2src;
-
- g_return_if_fail(GST_IS_V4L2SRC(object));
- v4l2src = GST_V4L2SRC(object);
-
- switch (prop_id) {
- case ARG_NUMBUFS:
- if (!GST_V4L2_IS_ACTIVE(GST_V4L2ELEMENT(v4l2src))) {
- v4l2src->breq.count = g_value_get_int(value);
- }
- break;
-
- case ARG_USE_FIXED_FPS:
- if (!GST_V4L2_IS_ACTIVE(GST_V4L2ELEMENT(v4l2src))) {
- v4l2src->use_fixed_fps = g_value_get_boolean(value);
- }
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ GstV4l2Src *v4l2src;
+
+ g_return_if_fail (GST_IS_V4L2SRC (object));
+ v4l2src = GST_V4L2SRC (object);
+
+ switch (prop_id) {
+ case ARG_NUMBUFS:
+ if (!GST_V4L2_IS_ACTIVE (GST_V4L2ELEMENT (v4l2src))) {
+ v4l2src->breq.count = g_value_get_int (value);
+ }
+ break;
+
+ case ARG_USE_FIXED_FPS:
+ if (!GST_V4L2_IS_ACTIVE (GST_V4L2ELEMENT (v4l2src))) {
+ v4l2src->use_fixed_fps = g_value_get_boolean (value);
+ }
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gst_v4l2src_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+gst_v4l2src_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
{
- GstV4l2Src *v4l2src;
+ GstV4l2Src *v4l2src;
- g_return_if_fail(GST_IS_V4L2SRC(object));
- v4l2src = GST_V4L2SRC(object);
+ g_return_if_fail (GST_IS_V4L2SRC (object));
+ v4l2src = GST_V4L2SRC (object);
- switch (prop_id) {
- case ARG_NUMBUFS:
- g_value_set_int(value, v4l2src->breq.count);
- break;
+ switch (prop_id) {
+ case ARG_NUMBUFS:
+ g_value_set_int (value, v4l2src->breq.count);
+ break;
- case ARG_BUFSIZE:
- g_value_set_int(value, v4l2src->format.fmt.pix.sizeimage);
- break;
+ case ARG_BUFSIZE:
+ g_value_set_int (value, v4l2src->format.fmt.pix.sizeimage);
+ break;
- case ARG_USE_FIXED_FPS:
- g_value_set_boolean(value, v4l2src->use_fixed_fps);
- break;
+ case ARG_USE_FIXED_FPS:
+ g_value_set_boolean (value, v4l2src->use_fixed_fps);
+ break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static GstElementStateReturn
-gst_v4l2src_change_state (GstElement *element)
+gst_v4l2src_change_state (GstElement * element)
{
- GstV4l2Src *v4l2src;
- gint transition = GST_STATE_TRANSITION (element);
- GstElementStateReturn parent_return;
- GTimeVal time;
-
- g_return_val_if_fail(GST_IS_V4L2SRC(element), GST_STATE_FAILURE);
- v4l2src = GST_V4L2SRC(element);
-
- if (GST_ELEMENT_CLASS (parent_class)->change_state) {
- parent_return = GST_ELEMENT_CLASS (parent_class)->change_state (element);
- if (parent_return != GST_STATE_SUCCESS)
- return parent_return;
- }
+ GstV4l2Src *v4l2src;
+ gint transition = GST_STATE_TRANSITION (element);
+ GstElementStateReturn parent_return;
+ GTimeVal time;
- switch (transition) {
- case GST_STATE_NULL_TO_READY:
- if (!gst_v4l2src_get_capture(v4l2src))
- return GST_STATE_FAILURE;
- break;
- case GST_STATE_READY_TO_PAUSED:
- v4l2src->handled = 0;
- v4l2src->need_writes = 0;
- v4l2src->substract_time = 0;
- /* buffer setup moved to capsnego */
- break;
- case GST_STATE_PAUSED_TO_PLAYING:
- /* queue all buffer, start streaming capture */
- if (!gst_v4l2src_capture_start(v4l2src))
- return GST_STATE_FAILURE;
- g_get_current_time(&time);
- v4l2src->substract_time = GST_TIMEVAL_TO_TIME(time) -
- v4l2src->substract_time;
- v4l2src->last_seq = 0;
- break;
- case GST_STATE_PLAYING_TO_PAUSED:
- g_get_current_time(&time);
- v4l2src->substract_time = GST_TIMEVAL_TO_TIME(time) -
- v4l2src->substract_time;
- /* de-queue all queued buffers */
- if (!gst_v4l2src_capture_stop(v4l2src))
- return GST_STATE_FAILURE;
- break;
- case GST_STATE_PAUSED_TO_READY:
- /* stop capturing, unmap all buffers */
- if (!gst_v4l2src_capture_deinit(v4l2src))
- return GST_STATE_FAILURE;
- break;
- case GST_STATE_READY_TO_NULL:
- break;
- }
+ g_return_val_if_fail (GST_IS_V4L2SRC (element), GST_STATE_FAILURE);
+ v4l2src = GST_V4L2SRC (element);
+
+ if (GST_ELEMENT_CLASS (parent_class)->change_state) {
+ parent_return = GST_ELEMENT_CLASS (parent_class)->change_state (element);
+ if (parent_return != GST_STATE_SUCCESS)
+ return parent_return;
+ }
- return GST_STATE_SUCCESS;
+ switch (transition) {
+ case GST_STATE_NULL_TO_READY:
+ if (!gst_v4l2src_get_capture (v4l2src))
+ return GST_STATE_FAILURE;
+ break;
+ case GST_STATE_READY_TO_PAUSED:
+ v4l2src->handled = 0;
+ v4l2src->need_writes = 0;
+ v4l2src->substract_time = 0;
+ /* buffer setup moved to capsnego */
+ break;
+ case GST_STATE_PAUSED_TO_PLAYING:
+ /* queue all buffer, start streaming capture */
+ if (!gst_v4l2src_capture_start (v4l2src))
+ return GST_STATE_FAILURE;
+ g_get_current_time (&time);
+ v4l2src->substract_time = GST_TIMEVAL_TO_TIME (time) -
+ v4l2src->substract_time;
+ v4l2src->last_seq = 0;
+ break;
+ case GST_STATE_PLAYING_TO_PAUSED:
+ g_get_current_time (&time);
+ v4l2src->substract_time = GST_TIMEVAL_TO_TIME (time) -
+ v4l2src->substract_time;
+ /* de-queue all queued buffers */
+ if (!gst_v4l2src_capture_stop (v4l2src))
+ return GST_STATE_FAILURE;
+ break;
+ case GST_STATE_PAUSED_TO_READY:
+ /* stop capturing, unmap all buffers */
+ if (!gst_v4l2src_capture_deinit (v4l2src))
+ return GST_STATE_FAILURE;
+ break;
+ case GST_STATE_READY_TO_NULL:
+ break;
+ }
+
+ return GST_STATE_SUCCESS;
}
static void
-gst_v4l2src_set_clock (GstElement *element,
- GstClock *clock)
+gst_v4l2src_set_clock (GstElement * element, GstClock * clock)
{
- GST_V4L2SRC(element)->clock = clock;
+ GST_V4L2SRC (element)->clock = clock;
}
-
diff --git a/sys/v4l2/gstv4l2src.h b/sys/v4l2/gstv4l2src.h
index ca528d1e..d68f9cf8 100644
--- a/sys/v4l2/gstv4l2src.h
+++ b/sys/v4l2/gstv4l2src.h
@@ -38,72 +38,75 @@ GST_DEBUG_CATEGORY_EXTERN (v4l2src_debug);
#define GST_IS_V4L2SRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_V4L2SRC))
-typedef struct _GstV4l2BufferPool GstV4l2BufferPool;
-typedef struct _GstV4l2Buffer GstV4l2Buffer;
-typedef struct _GstV4l2Src GstV4l2Src;
-typedef struct _GstV4l2SrcClass GstV4l2SrcClass;
+typedef struct _GstV4l2BufferPool GstV4l2BufferPool;
+typedef struct _GstV4l2Buffer GstV4l2Buffer;
+typedef struct _GstV4l2Src GstV4l2Src;
+typedef struct _GstV4l2SrcClass GstV4l2SrcClass;
/* global info */
-struct _GstV4l2BufferPool {
- GstAtomicInt refcount; /* number of users: 1 for every buffer, 1 for element */
- gint video_fd;
- guint buffer_count;
- GstV4l2Buffer * buffers;
+struct _GstV4l2BufferPool
+{
+ GstAtomicInt refcount; /* number of users: 1 for every buffer, 1 for element */
+ gint video_fd;
+ guint buffer_count;
+ GstV4l2Buffer *buffers;
};
-struct _GstV4l2Buffer {
- struct v4l2_buffer buffer;
- guint8 * start;
- guint length;
- GstAtomicInt refcount; /* add 1 if in use by element, add 1 if in use by GstBuffer */
- GstV4l2BufferPool * pool;
+struct _GstV4l2Buffer
+{
+ struct v4l2_buffer buffer;
+ guint8 *start;
+ guint length;
+ GstAtomicInt refcount; /* add 1 if in use by element, add 1 if in use by GstBuffer */
+ GstV4l2BufferPool *pool;
};
-struct _GstV4l2Src {
- GstV4l2Element v4l2element;
+struct _GstV4l2Src
+{
+ GstV4l2Element v4l2element;
- /* pads */
- GstPad *srcpad;
+ /* pads */
+ GstPad *srcpad;
- /* internal lists */
- GSList *formats; /* list of available capture formats */
+ /* internal lists */
+ GSList *formats; /* list of available capture formats */
- /* buffers */
- GstV4l2BufferPool *pool;
+ /* buffers */
+ GstV4l2BufferPool *pool;
- struct v4l2_requestbuffers breq;
- struct v4l2_format format;
+ struct v4l2_requestbuffers breq;
+ struct v4l2_format format;
- /* True if we want to stop */
- gboolean quit;
+ /* True if we want to stop */
+ gboolean quit;
- /* A/V sync... frame counter and internal cache */
- gulong handled;
- gint need_writes;
- GstBuffer *cached_buffer;
- gulong last_seq;
+ /* A/V sync... frame counter and internal cache */
+ gulong handled;
+ gint need_writes;
+ GstBuffer *cached_buffer;
+ gulong last_seq;
- /* clock */
- GstClock *clock;
-
- /* time to substract from clock time to get back to timestamp */
- GstClockTime substract_time;
+ /* clock */
+ GstClock *clock;
- /* how are we going to push buffers? */
- gboolean use_fixed_fps;
+ /* time to substract from clock time to get back to timestamp */
+ GstClockTime substract_time;
+
+ /* how are we going to push buffers? */
+ gboolean use_fixed_fps;
};
-struct _GstV4l2SrcClass {
- GstV4l2ElementClass parent_class;
+struct _GstV4l2SrcClass
+{
+ GstV4l2ElementClass parent_class;
- void (*frame_capture) (GObject *object);
- void (*frame_drop) (GObject *object);
- void (*frame_insert) (GObject *object);
- void (*frame_lost) (GObject *object,
- gint num_lost);
+ void (*frame_capture) (GObject * object);
+ void (*frame_drop) (GObject * object);
+ void (*frame_insert) (GObject * object);
+ void (*frame_lost) (GObject * object, gint num_lost);
};
-GType gst_v4l2src_get_type(void);
+GType gst_v4l2src_get_type (void);
#endif /* __GST_V4L2SRC_H__ */
diff --git a/sys/v4l2/gstv4l2tuner.c b/sys/v4l2/gstv4l2tuner.c
index f4f2cd64..5d5626f2 100644
--- a/sys/v4l2/gstv4l2tuner.c
+++ b/sys/v4l2/gstv4l2tuner.c
@@ -30,33 +30,28 @@
#include "gstv4l2element.h"
#include "v4l2_calls.h"
-static void gst_v4l2_tuner_channel_class_init (GstV4l2TunerChannelClass *klass);
-static void gst_v4l2_tuner_channel_init (GstV4l2TunerChannel *channel);
+static void gst_v4l2_tuner_channel_class_init (GstV4l2TunerChannelClass *
+ klass);
+static void gst_v4l2_tuner_channel_init (GstV4l2TunerChannel * channel);
-static void gst_v4l2_tuner_norm_class_init (GstV4l2TunerNormClass *klass);
-static void gst_v4l2_tuner_norm_init (GstV4l2TunerNorm *norm);
+static void gst_v4l2_tuner_norm_class_init (GstV4l2TunerNormClass * klass);
+static void gst_v4l2_tuner_norm_init (GstV4l2TunerNorm * norm);
-static const GList *
- gst_v4l2_tuner_list_channels (GstTuner *mixer);
-static void gst_v4l2_tuner_set_channel (GstTuner *mixer,
- GstTunerChannel *channel);
-static GstTunerChannel *
- gst_v4l2_tuner_get_channel (GstTuner *mixer);
+static const GList *gst_v4l2_tuner_list_channels (GstTuner * mixer);
+static void gst_v4l2_tuner_set_channel (GstTuner * mixer,
+ GstTunerChannel * channel);
+static GstTunerChannel *gst_v4l2_tuner_get_channel (GstTuner * mixer);
-static const GList *
- gst_v4l2_tuner_list_norms (GstTuner *mixer);
-static void gst_v4l2_tuner_set_norm (GstTuner *mixer,
- GstTunerNorm *norm);
-static GstTunerNorm *
- gst_v4l2_tuner_get_norm (GstTuner *mixer);
+static const GList *gst_v4l2_tuner_list_norms (GstTuner * mixer);
+static void gst_v4l2_tuner_set_norm (GstTuner * mixer, GstTunerNorm * norm);
+static GstTunerNorm *gst_v4l2_tuner_get_norm (GstTuner * mixer);
-static void gst_v4l2_tuner_set_frequency (GstTuner *mixer,
- GstTunerChannel *channel,
- gulong frequency);
-static gulong gst_v4l2_tuner_get_frequency (GstTuner *mixer,
- GstTunerChannel *channel);
-static gint gst_v4l2_tuner_signal_strength (GstTuner *mixer,
- GstTunerChannel *channel);
+static void gst_v4l2_tuner_set_frequency (GstTuner * mixer,
+ GstTunerChannel * channel, gulong frequency);
+static gulong gst_v4l2_tuner_get_frequency (GstTuner * mixer,
+ GstTunerChannel * channel);
+static gint gst_v4l2_tuner_signal_strength (GstTuner * mixer,
+ GstTunerChannel * channel);
static GstTunerNormClass *norm_parent_class = NULL;
static GstTunerChannelClass *channel_parent_class = NULL;
@@ -82,21 +77,20 @@ gst_v4l2_tuner_channel_get_type (void)
gst_v4l2_tuner_channel_type =
g_type_register_static (GST_TYPE_TUNER_CHANNEL,
- "GstV4l2TunerChannel",
- &v4l2_tuner_channel_info, 0);
+ "GstV4l2TunerChannel", &v4l2_tuner_channel_info, 0);
}
return gst_v4l2_tuner_channel_type;
}
static void
-gst_v4l2_tuner_channel_class_init (GstV4l2TunerChannelClass *klass)
+gst_v4l2_tuner_channel_class_init (GstV4l2TunerChannelClass * klass)
{
channel_parent_class = g_type_class_ref (GST_TYPE_TUNER_CHANNEL);
}
static void
-gst_v4l2_tuner_channel_init (GstV4l2TunerChannel *channel)
+gst_v4l2_tuner_channel_init (GstV4l2TunerChannel * channel)
{
channel->index = 0;
channel->tuner = 0;
@@ -124,27 +118,26 @@ gst_v4l2_tuner_norm_get_type (void)
gst_v4l2_tuner_norm_type =
g_type_register_static (GST_TYPE_TUNER_NORM,
- "GstV4l2TunerNorm",
- &v4l2_tuner_norm_info, 0);
+ "GstV4l2TunerNorm", &v4l2_tuner_norm_info, 0);
}
return gst_v4l2_tuner_norm_type;
}
static void
-gst_v4l2_tuner_norm_class_init (GstV4l2TunerNormClass *klass)
+gst_v4l2_tuner_norm_class_init (GstV4l2TunerNormClass * klass)
{
norm_parent_class = g_type_class_ref (GST_TYPE_TUNER_NORM);
}
static void
-gst_v4l2_tuner_norm_init (GstV4l2TunerNorm *norm)
+gst_v4l2_tuner_norm_init (GstV4l2TunerNorm * norm)
{
norm->index = 0;
}
void
-gst_v4l2_tuner_interface_init (GstTunerClass *klass)
+gst_v4l2_tuner_interface_init (GstTunerClass * klass)
{
/* default virtual functions */
klass->list_channels = gst_v4l2_tuner_list_channels;
@@ -161,7 +154,7 @@ gst_v4l2_tuner_interface_init (GstTunerClass *klass)
}
static gboolean
-gst_v4l2_tuner_is_sink (GstV4l2Element *v4l2element)
+gst_v4l2_tuner_is_sink (GstV4l2Element * v4l2element)
{
const GList *pads = gst_element_get_pad_list (GST_ELEMENT (v4l2element));
GstPadDirection dir = GST_PAD_UNKNOWN;
@@ -174,8 +167,8 @@ gst_v4l2_tuner_is_sink (GstV4l2Element *v4l2element)
}
static gboolean
-gst_v4l2_tuner_contains_channel (GstV4l2Element *v4l2element,
- GstV4l2TunerChannel *v4l2channel)
+gst_v4l2_tuner_contains_channel (GstV4l2Element * v4l2element,
+ GstV4l2TunerChannel * v4l2channel)
{
const GList *item;
@@ -187,15 +180,14 @@ gst_v4l2_tuner_contains_channel (GstV4l2Element *v4l2element,
}
static const GList *
-gst_v4l2_tuner_list_channels (GstTuner *mixer)
+gst_v4l2_tuner_list_channels (GstTuner * mixer)
{
/* ... or output, if we're a sink... */
return GST_V4L2ELEMENT (mixer)->channels;
}
static void
-gst_v4l2_tuner_set_channel (GstTuner *mixer,
- GstTunerChannel *channel)
+gst_v4l2_tuner_set_channel (GstTuner * mixer, GstTunerChannel * channel)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (mixer);
GstV4l2TunerChannel *v4l2channel = GST_V4L2_TUNER_CHANNEL (channel);
@@ -205,7 +197,7 @@ gst_v4l2_tuner_set_channel (GstTuner *mixer,
g_return_if_fail (gst_v4l2_tuner_contains_channel (v4l2element, v4l2channel));
/* ... or output, if we're a sink... */
- if (gst_v4l2_tuner_is_sink (v4l2element) ?
+ if (gst_v4l2_tuner_is_sink (v4l2element) ?
gst_v4l2_set_output (v4l2element, v4l2channel->index) :
gst_v4l2_set_input (v4l2element, v4l2channel->index)) {
gst_tuner_channel_changed (mixer, channel);
@@ -214,7 +206,7 @@ gst_v4l2_tuner_set_channel (GstTuner *mixer,
}
static GstTunerChannel *
-gst_v4l2_tuner_get_channel (GstTuner *mixer)
+gst_v4l2_tuner_get_channel (GstTuner * mixer)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (mixer);
GList *item;
@@ -238,8 +230,8 @@ gst_v4l2_tuner_get_channel (GstTuner *mixer)
}
static gboolean
-gst_v4l2_tuner_contains_norm (GstV4l2Element *v4l2element,
- GstV4l2TunerNorm *v4l2norm)
+gst_v4l2_tuner_contains_norm (GstV4l2Element * v4l2element,
+ GstV4l2TunerNorm * v4l2norm)
{
const GList *item;
@@ -251,14 +243,13 @@ gst_v4l2_tuner_contains_norm (GstV4l2Element *v4l2element,
}
static const GList *
-gst_v4l2_tuner_list_norms (GstTuner *mixer)
+gst_v4l2_tuner_list_norms (GstTuner * mixer)
{
return GST_V4L2ELEMENT (mixer)->norms;
}
static void
-gst_v4l2_tuner_set_norm (GstTuner *mixer,
- GstTunerNorm *norm)
+gst_v4l2_tuner_set_norm (GstTuner * mixer, GstTunerNorm * norm)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (mixer);
GstV4l2TunerNorm *v4l2norm = GST_V4L2_TUNER_NORM (norm);
@@ -269,12 +260,12 @@ gst_v4l2_tuner_set_norm (GstTuner *mixer,
if (gst_v4l2_set_norm (v4l2element, v4l2norm->index)) {
gst_tuner_norm_changed (mixer, norm);
- g_object_notify (G_OBJECT (v4l2element), "norm");
+ g_object_notify (G_OBJECT (v4l2element), "norm");
}
}
static GstTunerNorm *
-gst_v4l2_tuner_get_norm (GstTuner *mixer)
+gst_v4l2_tuner_get_norm (GstTuner * mixer)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (mixer);
GList *item;
@@ -294,9 +285,8 @@ gst_v4l2_tuner_get_norm (GstTuner *mixer)
}
static void
-gst_v4l2_tuner_set_frequency (GstTuner *mixer,
- GstTunerChannel *channel,
- gulong frequency)
+gst_v4l2_tuner_set_frequency (GstTuner * mixer,
+ GstTunerChannel * channel, gulong frequency)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (mixer);
GstV4l2TunerChannel *v4l2channel = GST_V4L2_TUNER_CHANNEL (channel);
@@ -305,7 +295,7 @@ gst_v4l2_tuner_set_frequency (GstTuner *mixer,
/* assert that we're opened and that we're using a known item */
g_return_if_fail (GST_V4L2_IS_OPEN (v4l2element));
g_return_if_fail (GST_TUNER_CHANNEL_HAS_FLAG (channel,
- GST_TUNER_CHANNEL_FREQUENCY));
+ GST_TUNER_CHANNEL_FREQUENCY));
g_return_if_fail (gst_v4l2_tuner_contains_channel (v4l2element, v4l2channel));
gst_v4l2_get_input (v4l2element, &chan);
@@ -313,14 +303,13 @@ gst_v4l2_tuner_set_frequency (GstTuner *mixer,
GST_TUNER_CHANNEL_HAS_FLAG (channel, GST_TUNER_CHANNEL_FREQUENCY)) {
if (gst_v4l2_set_frequency (v4l2element, v4l2channel->tuner, frequency)) {
gst_tuner_frequency_changed (mixer, channel, frequency);
- g_object_notify (G_OBJECT (v4l2element), "frequency");
+ g_object_notify (G_OBJECT (v4l2element), "frequency");
}
}
}
static gulong
-gst_v4l2_tuner_get_frequency (GstTuner *mixer,
- GstTunerChannel *channel)
+gst_v4l2_tuner_get_frequency (GstTuner * mixer, GstTunerChannel * channel)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (mixer);
GstV4l2TunerChannel *v4l2channel = GST_V4L2_TUNER_CHANNEL (channel);
@@ -330,9 +319,9 @@ gst_v4l2_tuner_get_frequency (GstTuner *mixer,
/* assert that we're opened and that we're using a known item */
g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2element), 0);
g_return_val_if_fail (GST_TUNER_CHANNEL_HAS_FLAG (channel,
- GST_TUNER_CHANNEL_FREQUENCY), 0);
+ GST_TUNER_CHANNEL_FREQUENCY), 0);
g_return_val_if_fail (gst_v4l2_tuner_contains_channel (v4l2element,
- v4l2channel), 0);
+ v4l2channel), 0);
gst_v4l2_get_input (v4l2element, &chan);
if (chan == GST_V4L2_TUNER_CHANNEL (channel)->index &&
@@ -344,8 +333,7 @@ gst_v4l2_tuner_get_frequency (GstTuner *mixer,
}
static gint
-gst_v4l2_tuner_signal_strength (GstTuner *mixer,
- GstTunerChannel *channel)
+gst_v4l2_tuner_signal_strength (GstTuner * mixer, GstTunerChannel * channel)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (mixer);
GstV4l2TunerChannel *v4l2channel = GST_V4L2_TUNER_CHANNEL (channel);
@@ -355,9 +343,9 @@ gst_v4l2_tuner_signal_strength (GstTuner *mixer,
/* assert that we're opened and that we're using a known item */
g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2element), 0);
g_return_val_if_fail (GST_TUNER_CHANNEL_HAS_FLAG (channel,
- GST_TUNER_CHANNEL_FREQUENCY), 0);
+ GST_TUNER_CHANNEL_FREQUENCY), 0);
g_return_val_if_fail (gst_v4l2_tuner_contains_channel (v4l2element,
- v4l2channel), 0);
+ v4l2channel), 0);
gst_v4l2_get_input (v4l2element, &chan);
if (chan == GST_V4L2_TUNER_CHANNEL (channel)->index &&
diff --git a/sys/v4l2/gstv4l2tuner.h b/sys/v4l2/gstv4l2tuner.h
index a768ea2f..729fe221 100644
--- a/sys/v4l2/gstv4l2tuner.h
+++ b/sys/v4l2/gstv4l2tuner.h
@@ -28,7 +28,6 @@
#include "gstv4l2element.h"
G_BEGIN_DECLS
-
#define GST_TYPE_V4L2_TUNER_CHANNEL \
(gst_v4l2_tuner_channel_get_type ())
#define GST_V4L2_TUNER_CHANNEL(obj) \
@@ -41,16 +40,17 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_TUNER_CHANNEL))
#define GST_IS_V4L2_TUNER_CHANNEL_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_TUNER_CHANNEL))
-
-typedef struct _GstV4l2TunerChannel {
+ typedef struct _GstV4l2TunerChannel
+{
GstTunerChannel parent;
- guint32 index;
- guint32 tuner;
- guint32 audio;
+ guint32 index;
+ guint32 tuner;
+ guint32 audio;
} GstV4l2TunerChannel;
-typedef struct _GstV4l2TunerChannelClass {
+typedef struct _GstV4l2TunerChannelClass
+{
GstTunerChannelClass parent;
} GstV4l2TunerChannelClass;
@@ -67,19 +67,21 @@ typedef struct _GstV4l2TunerChannelClass {
#define GST_IS_V4L2_TUNER_NORM_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_TUNER_NORM))
-typedef struct _GstV4l2TunerNorm {
+typedef struct _GstV4l2TunerNorm
+{
GstTunerNorm parent;
- v4l2_std_id index;
+ v4l2_std_id index;
} GstV4l2TunerNorm;
-typedef struct _GstV4l2TunerNormClass {
+typedef struct _GstV4l2TunerNormClass
+{
GstTunerNormClass parent;
} GstV4l2TunerNormClass;
-GType gst_v4l2_tuner_channel_get_type (void);
-GType gst_v4l2_tuner_norm_get_type (void);
+GType gst_v4l2_tuner_channel_get_type (void);
+GType gst_v4l2_tuner_norm_get_type (void);
-void gst_v4l2_tuner_interface_init (GstTunerClass *klass);
+void gst_v4l2_tuner_interface_init (GstTunerClass * klass);
#endif /* __GST_V4L2_TUNER_H__ */
diff --git a/sys/v4l2/gstv4l2xoverlay.c b/sys/v4l2/gstv4l2xoverlay.c
index 10c5f77b..1af62cc1 100644
--- a/sys/v4l2/gstv4l2xoverlay.c
+++ b/sys/v4l2/gstv4l2xoverlay.c
@@ -31,24 +31,23 @@
#include "gstv4l2element.h"
#include "v4l2_calls.h"
-static void gst_v4l2_xoverlay_set_xwindow_id (GstXOverlay *overlay,
- XID xwindow_id);
+static void gst_v4l2_xoverlay_set_xwindow_id (GstXOverlay * overlay,
+ XID xwindow_id);
void
-gst_v4l2_xoverlay_interface_init (GstXOverlayClass *klass)
+gst_v4l2_xoverlay_interface_init (GstXOverlayClass * klass)
{
/* default virtual functions */
klass->set_xwindow_id = gst_v4l2_xoverlay_set_xwindow_id;
}
GstXWindowListener *
-gst_v4l2_xoverlay_new (GstV4l2Element *v4l2element)
+gst_v4l2_xoverlay_new (GstV4l2Element * v4l2element)
{
- GstXWindowListener *xwin =
- gst_x_window_listener_new (NULL,
- (MapWindowFunc) gst_v4l2_enable_overlay,
- (SetWindowFunc) gst_v4l2_set_window,
- (gpointer) v4l2element);
+ GstXWindowListener *xwin = gst_x_window_listener_new (NULL,
+ (MapWindowFunc) gst_v4l2_enable_overlay,
+ (SetWindowFunc) gst_v4l2_set_window,
+ (gpointer) v4l2element);
v4l2element->overlay = xwin;
v4l2element->xwindow_id = 0;
@@ -57,7 +56,7 @@ gst_v4l2_xoverlay_new (GstV4l2Element *v4l2element)
}
void
-gst_v4l2_xoverlay_free (GstV4l2Element *v4l2element)
+gst_v4l2_xoverlay_free (GstV4l2Element * v4l2element)
{
gst_v4l2_xoverlay_close (v4l2element);
g_object_unref (G_OBJECT (v4l2element->overlay));
@@ -65,7 +64,7 @@ gst_v4l2_xoverlay_free (GstV4l2Element *v4l2element)
}
void
-gst_v4l2_xoverlay_open (GstV4l2Element *v4l2element)
+gst_v4l2_xoverlay_open (GstV4l2Element * v4l2element)
{
GstXWindowListener *xwin = v4l2element->overlay;
@@ -73,22 +72,20 @@ gst_v4l2_xoverlay_open (GstV4l2Element *v4l2element)
xwin->display_name = g_strdup (v4l2element->display);
if (v4l2element->xwindow_id != 0 &&
- xwin->display_name &&
- xwin->display_name[0] == ':') {
+ xwin->display_name && xwin->display_name[0] == ':') {
gst_x_window_listener_set_xid (xwin, v4l2element->xwindow_id);
}
}
}
void
-gst_v4l2_xoverlay_close (GstV4l2Element *v4l2element)
+gst_v4l2_xoverlay_close (GstV4l2Element * v4l2element)
{
GstXWindowListener *xwin = v4l2element->overlay;
if (xwin != NULL) {
if (v4l2element->xwindow_id != 0 &&
- xwin->display_name &&
- xwin->display_name[0] == ':') {
+ xwin->display_name && xwin->display_name[0] == ':') {
gst_x_window_listener_set_xid (xwin, 0);
}
@@ -98,8 +95,7 @@ gst_v4l2_xoverlay_close (GstV4l2Element *v4l2element)
}
static void
-gst_v4l2_xoverlay_set_xwindow_id (GstXOverlay *overlay,
- XID xwindow_id)
+gst_v4l2_xoverlay_set_xwindow_id (GstXOverlay * overlay, XID xwindow_id)
{
GstV4l2Element *v4l2element = GST_V4L2ELEMENT (overlay);
GstXWindowListener *xwin = v4l2element->overlay;
@@ -110,9 +106,7 @@ gst_v4l2_xoverlay_set_xwindow_id (GstXOverlay *overlay,
if (gst_element_get_state (GST_ELEMENT (v4l2element)) != GST_STATE_NULL &&
v4l2element->xwindow_id != 0 &&
- xwin != NULL &&
- xwin->display_name &&
- xwin->display_name[0] == ':') {
+ xwin != NULL && xwin->display_name && xwin->display_name[0] == ':') {
gst_x_window_listener_set_xid (xwin, 0);
}
@@ -120,9 +114,7 @@ gst_v4l2_xoverlay_set_xwindow_id (GstXOverlay *overlay,
if (gst_element_get_state (GST_ELEMENT (v4l2element)) != GST_STATE_NULL &&
v4l2element->xwindow_id != 0 &&
- xwin != NULL &&
- xwin->display_name &&
- xwin->display_name[0] == ':') {
+ xwin != NULL && xwin->display_name && xwin->display_name[0] == ':') {
gst_x_window_listener_set_xid (xwin, v4l2element->xwindow_id);
}
}
diff --git a/sys/v4l2/gstv4l2xoverlay.h b/sys/v4l2/gstv4l2xoverlay.h
index cfcdfd35..d5cb7796 100644
--- a/sys/v4l2/gstv4l2xoverlay.h
+++ b/sys/v4l2/gstv4l2xoverlay.h
@@ -27,16 +27,13 @@
#include "gstv4l2element.h"
-G_BEGIN_DECLS
+G_BEGIN_DECLS void gst_v4l2_xoverlay_interface_init (GstXOverlayClass * klass);
-void gst_v4l2_xoverlay_interface_init (GstXOverlayClass *klass);
-
-GstXWindowListener *
- gst_v4l2_xoverlay_new (GstV4l2Element *v4l2element);
-void gst_v4l2_xoverlay_free (GstV4l2Element *v4l2element);
+GstXWindowListener *gst_v4l2_xoverlay_new (GstV4l2Element * v4l2element);
+void gst_v4l2_xoverlay_free (GstV4l2Element * v4l2element);
/* signal handlers */
-void gst_v4l2_xoverlay_open (GstV4l2Element *v4l2element);
-void gst_v4l2_xoverlay_close (GstV4l2Element *v4l2element);
+void gst_v4l2_xoverlay_open (GstV4l2Element * v4l2element);
+void gst_v4l2_xoverlay_close (GstV4l2Element * v4l2element);
#endif /* __GST_V4L2_X_OVERLAY_H__ */
diff --git a/sys/v4l2/v4l2-overlay_calls.c b/sys/v4l2/v4l2-overlay_calls.c
index 4d948d0b..d4a10ab7 100644
--- a/sys/v4l2/v4l2-overlay_calls.c
+++ b/sys/v4l2/v4l2-overlay_calls.c
@@ -43,39 +43,37 @@
******************************************************/
gboolean
-gst_v4l2_set_display (GstV4l2Element *v4l2element)
+gst_v4l2_set_display (GstV4l2Element * v4l2element)
{
- gchar *buff;
-
- if (v4l2element->display)
- g_free(v4l2element->display);
- v4l2element->display = g_strdup(g_getenv("DISPLAY"));
-
- DEBUG("trying to set overlay to '%s'", v4l2element->display);
-
- /* start v4l-conf */
- buff = g_strdup_printf("v4l-conf -q -c %s -d %s",
- v4l2element->device, v4l2element->display);
-
- switch (system(buff)) {
- case -1:
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, FAILED,
- (_("Could not start v4l-conf.")),
- GST_ERROR_SYSTEM);
- g_free(buff);
- return FALSE;
- case 0:
- break;
- default:
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, FAILED,
- (_("Executing v4l-conf failed.")),
- GST_ERROR_SYSTEM);
- g_free(buff);
- return FALSE;
- }
-
- g_free(buff);
- return TRUE;
+ gchar *buff;
+
+ if (v4l2element->display)
+ g_free (v4l2element->display);
+ v4l2element->display = g_strdup (g_getenv ("DISPLAY"));
+
+ DEBUG ("trying to set overlay to '%s'", v4l2element->display);
+
+ /* start v4l-conf */
+ buff = g_strdup_printf ("v4l-conf -q -c %s -d %s",
+ v4l2element->device, v4l2element->display);
+
+ switch (system (buff)) {
+ case -1:
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, FAILED,
+ (_("Could not start v4l-conf.")), GST_ERROR_SYSTEM);
+ g_free (buff);
+ return FALSE;
+ case 0:
+ break;
+ default:
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, FAILED,
+ (_("Executing v4l-conf failed.")), GST_ERROR_SYSTEM);
+ g_free (buff);
+ return FALSE;
+ }
+
+ g_free (buff);
+ return TRUE;
}
@@ -86,38 +84,33 @@ gst_v4l2_set_display (GstV4l2Element *v4l2element)
******************************************************/
gboolean
-gst_v4l2_set_window (GstElement *element,
- gint x,
- gint y,
- gint w,
- gint h,
- struct v4l2_clip *clips,
- gint num_clips)
+gst_v4l2_set_window (GstElement * element,
+ gint x, gint y, gint w, gint h, struct v4l2_clip * clips, gint num_clips)
{
- struct v4l2_format fmt;
- GstV4l2Element *v4l2element = GST_V4L2ELEMENT(element);
-
- DEBUG("trying to set video window to %dx%d,%d,%d", x,y,w,h);
- GST_V4L2_CHECK_OVERLAY(v4l2element);
- GST_V4L2_CHECK_OPEN(v4l2element);
-
- fmt.type = V4L2_CAP_VIDEO_OVERLAY;
- fmt.fmt.win.clipcount = 0;
- fmt.fmt.win.w.left = x;
- fmt.fmt.win.w.top = y;
- fmt.fmt.win.w.width = w;
- fmt.fmt.win.w.height = h;
- fmt.fmt.win.clips = clips;
- fmt.fmt.win.clipcount = num_clips;
- fmt.fmt.win.bitmap = NULL;
-
- if (ioctl(v4l2element->video_fd, VIDIOC_S_FMT, &fmt) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, TOO_LAZY, (NULL),
- ("Failed to set the video window: %s", g_strerror (errno)));
- return FALSE;
- }
-
- return TRUE;
+ struct v4l2_format fmt;
+ GstV4l2Element *v4l2element = GST_V4L2ELEMENT (element);
+
+ DEBUG ("trying to set video window to %dx%d,%d,%d", x, y, w, h);
+ GST_V4L2_CHECK_OVERLAY (v4l2element);
+ GST_V4L2_CHECK_OPEN (v4l2element);
+
+ fmt.type = V4L2_CAP_VIDEO_OVERLAY;
+ fmt.fmt.win.clipcount = 0;
+ fmt.fmt.win.w.left = x;
+ fmt.fmt.win.w.top = y;
+ fmt.fmt.win.w.width = w;
+ fmt.fmt.win.w.height = h;
+ fmt.fmt.win.clips = clips;
+ fmt.fmt.win.clipcount = num_clips;
+ fmt.fmt.win.bitmap = NULL;
+
+ if (ioctl (v4l2element->video_fd, VIDIOC_S_FMT, &fmt) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, TOO_LAZY, (NULL),
+ ("Failed to set the video window: %s", g_strerror (errno)));
+ return FALSE;
+ }
+
+ return TRUE;
}
@@ -128,21 +121,20 @@ gst_v4l2_set_window (GstElement *element,
******************************************************/
gboolean
-gst_v4l2_enable_overlay (GstV4l2Element *v4l2element,
- gboolean enable)
+gst_v4l2_enable_overlay (GstV4l2Element * v4l2element, gboolean enable)
{
- gint doit = enable?1:0;
+ gint doit = enable ? 1 : 0;
- DEBUG("trying to %s overlay display", enable?"enable":"disable");
- GST_V4L2_CHECK_OPEN(v4l2element);
- GST_V4L2_CHECK_OVERLAY(v4l2element);
+ DEBUG ("trying to %s overlay display", enable ? "enable" : "disable");
+ GST_V4L2_CHECK_OPEN (v4l2element);
+ GST_V4L2_CHECK_OVERLAY (v4l2element);
- if (ioctl(v4l2element->video_fd, VIDIOC_OVERLAY, &doit) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, TOO_LAZY, (NULL),
- ("Failed to %s overlay display: %s",
- enable?"enable":"disable", g_strerror (errno)));
- return FALSE;
- }
+ if (ioctl (v4l2element->video_fd, VIDIOC_OVERLAY, &doit) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, TOO_LAZY, (NULL),
+ ("Failed to %s overlay display: %s",
+ enable ? "enable" : "disable", g_strerror (errno)));
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c
index f7c3d3a0..f75ea550 100644
--- a/sys/v4l2/v4l2_calls.c
+++ b/sys/v4l2/v4l2_calls.c
@@ -49,19 +49,19 @@
******************************************************/
static gboolean
-gst_v4l2_get_capabilities (GstV4l2Element *v4l2element)
+gst_v4l2_get_capabilities (GstV4l2Element * v4l2element)
{
- DEBUG("getting capabilities");
- GST_V4L2_CHECK_OPEN(v4l2element);
-
- if (ioctl(v4l2element->video_fd, VIDIOC_QUERYCAP, &(v4l2element->vcap)) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Error getting %s capabilities: %s",
- v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ DEBUG ("getting capabilities");
+ GST_V4L2_CHECK_OPEN (v4l2element);
+
+ if (ioctl (v4l2element->video_fd, VIDIOC_QUERYCAP, &(v4l2element->vcap)) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Error getting %s capabilities: %s",
+ v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
@@ -72,288 +72,269 @@ gst_v4l2_get_capabilities (GstV4l2Element *v4l2element)
******************************************************/
static gboolean
-gst_v4l2_fill_lists (GstV4l2Element *v4l2element)
+gst_v4l2_fill_lists (GstV4l2Element * v4l2element)
{
- gint n;
- const GList *pads =
- gst_element_get_pad_list (GST_ELEMENT (v4l2element));
- GstPadDirection dir = GST_PAD_UNKNOWN;
-
- DEBUG("getting enumerations");
- GST_V4L2_CHECK_OPEN(v4l2element);
-
- /* sinks have outputs, all others have inputs */
- if (pads && g_list_length ((GList *) pads) == 1)
- dir = GST_PAD_DIRECTION (GST_PAD (pads->data));
-
- if (dir != GST_PAD_SINK) {
- /* and now, the inputs */
- for (n=0;;n++) {
- struct v4l2_input input;
- GstV4l2TunerChannel *v4l2channel;
- GstTunerChannel *channel;
-
- input.index = n;
- if (ioctl(v4l2element->video_fd, VIDIOC_ENUMINPUT,
- &input) < 0) {
- if (errno == EINVAL)
- break; /* end of enumeration */
- else {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get %d in input enumeration for %s: %s",
- n, v4l2element->device,
- g_strerror (errno)));
- return FALSE;
- }
- }
-
- v4l2channel =
- g_object_new(GST_TYPE_V4L2_TUNER_CHANNEL, NULL);
- channel = GST_TUNER_CHANNEL(v4l2channel);
- channel->label = g_strdup(input.name);
- channel->flags = GST_TUNER_CHANNEL_INPUT;
- v4l2channel->index = n;
- if (input.type == V4L2_INPUT_TYPE_TUNER) {
- struct v4l2_tuner vtun;
-
- v4l2channel->tuner = input.tuner;
- channel->flags |= GST_TUNER_CHANNEL_FREQUENCY;
-
- vtun.index = input.tuner;
- if (ioctl(v4l2element->video_fd, VIDIOC_G_TUNER,
- &vtun) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get tuner %d settings on %s: %s",
- input.tuner,
- v4l2element->device,
- g_strerror (errno)));
- g_object_unref(G_OBJECT(channel));
- return FALSE;
- }
- channel->min_frequency = vtun.rangelow;
- channel->max_frequency = vtun.rangehigh;
- channel->min_signal = 0;
- channel->max_signal = 0xffff;
- }
- if (input.audioset) {
- /* we take the first. We don't care for
- * the others for now */
- while (!(input.audioset &
- (1<<v4l2channel->audio)))
- v4l2channel->audio++;
- channel->flags |= GST_TUNER_CHANNEL_AUDIO;
- }
-
- v4l2element->channels =
- g_list_append(v4l2element->channels,
- (gpointer) channel);
- }
- } else {
- /* outputs */
- for (n=0;;n++) {
- struct v4l2_output output;
- GstV4l2TunerChannel *v4l2channel;
- GstTunerChannel *channel;
-
- output.index = n;
- if (ioctl(v4l2element->video_fd, VIDIOC_ENUMOUTPUT,
- &output) < 0) {
- if (errno == EINVAL)
- break; /* end of enumeration */
- else {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get %d in output enumeration for %s: %s",
- n, v4l2element->device,
- g_strerror (errno)));
- return FALSE;
- }
- }
-
- v4l2channel = g_object_new(GST_TYPE_V4L2_TUNER_CHANNEL, NULL);
- channel = GST_TUNER_CHANNEL(v4l2channel);
- channel->label = g_strdup(output.name);
- channel->flags = GST_TUNER_CHANNEL_OUTPUT;
- v4l2channel->index = n;
- if (output.audioset) {
- /* we take the first. We don't care for
- * the others for now */
- while (!(output.audioset &
- (1<<v4l2channel->audio)))
- v4l2channel->audio++;
- channel->flags |= GST_TUNER_CHANNEL_AUDIO;
- }
-
- v4l2element->channels =
- g_list_append(v4l2element->channels,
- (gpointer) channel);
- }
+ gint n;
+ const GList *pads = gst_element_get_pad_list (GST_ELEMENT (v4l2element));
+ GstPadDirection dir = GST_PAD_UNKNOWN;
+
+ DEBUG ("getting enumerations");
+ GST_V4L2_CHECK_OPEN (v4l2element);
+
+ /* sinks have outputs, all others have inputs */
+ if (pads && g_list_length ((GList *) pads) == 1)
+ dir = GST_PAD_DIRECTION (GST_PAD (pads->data));
+
+ if (dir != GST_PAD_SINK) {
+ /* and now, the inputs */
+ for (n = 0;; n++) {
+ struct v4l2_input input;
+ GstV4l2TunerChannel *v4l2channel;
+ GstTunerChannel *channel;
+
+ input.index = n;
+ if (ioctl (v4l2element->video_fd, VIDIOC_ENUMINPUT, &input) < 0) {
+ if (errno == EINVAL)
+ break; /* end of enumeration */
+ else {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get %d in input enumeration for %s: %s",
+ n, v4l2element->device, g_strerror (errno)));
+ return FALSE;
}
-
- /* norms... */
- for (n=0;;n++) {
- struct v4l2_standard standard;
- GstV4l2TunerNorm *v4l2norm;
- GstTunerNorm *norm;
-
- standard.index = n;
- if (ioctl(v4l2element->video_fd, VIDIOC_ENUMSTD, &standard) < 0) {
- if (errno == EINVAL)
- break; /* end of enumeration */
- else {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get %d in norm enumeration for %s: %s",
- n, v4l2element->device,
- g_strerror (errno)));
- return FALSE;
- }
- }
-
- v4l2norm = g_object_new(GST_TYPE_V4L2_TUNER_NORM, NULL);
- norm = GST_TUNER_NORM (v4l2norm);
- norm->label = g_strdup(standard.name);
- norm->fps = (gfloat) standard.frameperiod.denominator /
- standard.frameperiod.numerator;
- v4l2norm->index = standard.id;
-
- v4l2element->norms = g_list_append(v4l2element->norms,
- (gpointer) norm);
+ }
+
+ v4l2channel = g_object_new (GST_TYPE_V4L2_TUNER_CHANNEL, NULL);
+ channel = GST_TUNER_CHANNEL (v4l2channel);
+ channel->label = g_strdup (input.name);
+ channel->flags = GST_TUNER_CHANNEL_INPUT;
+ v4l2channel->index = n;
+ if (input.type == V4L2_INPUT_TYPE_TUNER) {
+ struct v4l2_tuner vtun;
+
+ v4l2channel->tuner = input.tuner;
+ channel->flags |= GST_TUNER_CHANNEL_FREQUENCY;
+
+ vtun.index = input.tuner;
+ if (ioctl (v4l2element->video_fd, VIDIOC_G_TUNER, &vtun) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get tuner %d settings on %s: %s",
+ input.tuner, v4l2element->device, g_strerror (errno)));
+ g_object_unref (G_OBJECT (channel));
+ return FALSE;
+ }
+ channel->min_frequency = vtun.rangelow;
+ channel->max_frequency = vtun.rangehigh;
+ channel->min_signal = 0;
+ channel->max_signal = 0xffff;
+ }
+ if (input.audioset) {
+ /* we take the first. We don't care for
+ * the others for now */
+ while (!(input.audioset & (1 << v4l2channel->audio)))
+ v4l2channel->audio++;
+ channel->flags |= GST_TUNER_CHANNEL_AUDIO;
+ }
+
+ v4l2element->channels =
+ g_list_append (v4l2element->channels, (gpointer) channel);
+ }
+ } else {
+ /* outputs */
+ for (n = 0;; n++) {
+ struct v4l2_output output;
+ GstV4l2TunerChannel *v4l2channel;
+ GstTunerChannel *channel;
+
+ output.index = n;
+ if (ioctl (v4l2element->video_fd, VIDIOC_ENUMOUTPUT, &output) < 0) {
+ if (errno == EINVAL)
+ break; /* end of enumeration */
+ else {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get %d in output enumeration for %s: %s",
+ n, v4l2element->device, g_strerror (errno)));
+ return FALSE;
}
+ }
+
+ v4l2channel = g_object_new (GST_TYPE_V4L2_TUNER_CHANNEL, NULL);
+ channel = GST_TUNER_CHANNEL (v4l2channel);
+ channel->label = g_strdup (output.name);
+ channel->flags = GST_TUNER_CHANNEL_OUTPUT;
+ v4l2channel->index = n;
+ if (output.audioset) {
+ /* we take the first. We don't care for
+ * the others for now */
+ while (!(output.audioset & (1 << v4l2channel->audio)))
+ v4l2channel->audio++;
+ channel->flags |= GST_TUNER_CHANNEL_AUDIO;
+ }
+
+ v4l2element->channels =
+ g_list_append (v4l2element->channels, (gpointer) channel);
+ }
+ }
- /* and lastly, controls+menus (if appropriate) */
- for (n=V4L2_CID_BASE;;n++) {
- struct v4l2_queryctrl control;
- GstV4l2ColorBalanceChannel *v4l2channel;
- GstColorBalanceChannel *channel;
-
- /* hacky... */
- if (n == V4L2_CID_LASTP1)
- n = V4L2_CID_PRIVATE_BASE;
-
- control.id = n;
- if (ioctl(v4l2element->video_fd, VIDIOC_QUERYCTRL, &control) < 0) {
- if (errno == EINVAL) {
- if (n < V4L2_CID_PRIVATE_BASE)
- continue;
- else
- break;
- } else {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get %d in control enumeration for %s: %s",
- n, v4l2element->device,
- g_strerror (errno)));
- return FALSE;
- }
- }
- if (control.flags & V4L2_CTRL_FLAG_DISABLED)
- continue;
-
- switch (n) {
- case V4L2_CID_BRIGHTNESS:
- case V4L2_CID_CONTRAST:
- case V4L2_CID_SATURATION:
- case V4L2_CID_HUE:
- case V4L2_CID_BLACK_LEVEL:
- case V4L2_CID_AUTO_WHITE_BALANCE:
- case V4L2_CID_DO_WHITE_BALANCE:
- case V4L2_CID_RED_BALANCE:
- case V4L2_CID_BLUE_BALANCE:
- case V4L2_CID_GAMMA:
- case V4L2_CID_EXPOSURE:
- case V4L2_CID_AUTOGAIN:
- case V4L2_CID_GAIN:
- /* we only handle these for now */
- break;
- default:
- DEBUG("ControlID %s (%d) unhandled, FIXME",
- control.name, n);
- control.id++;
- break;
- }
- if (n != control.id)
- continue;
-
- v4l2channel = g_object_new(GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL,
- NULL);
- channel = GST_COLOR_BALANCE_CHANNEL(v4l2channel);
- channel->label = g_strdup(control.name);
- v4l2channel->index = n;
+ /* norms... */
+ for (n = 0;; n++) {
+ struct v4l2_standard standard;
+ GstV4l2TunerNorm *v4l2norm;
+ GstTunerNorm *norm;
+
+ standard.index = n;
+ if (ioctl (v4l2element->video_fd, VIDIOC_ENUMSTD, &standard) < 0) {
+ if (errno == EINVAL)
+ break; /* end of enumeration */
+ else {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get %d in norm enumeration for %s: %s",
+ n, v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
+ }
+
+ v4l2norm = g_object_new (GST_TYPE_V4L2_TUNER_NORM, NULL);
+ norm = GST_TUNER_NORM (v4l2norm);
+ norm->label = g_strdup (standard.name);
+ norm->fps = (gfloat) standard.frameperiod.denominator /
+ standard.frameperiod.numerator;
+ v4l2norm->index = standard.id;
+
+ v4l2element->norms = g_list_append (v4l2element->norms, (gpointer) norm);
+ }
+
+ /* and lastly, controls+menus (if appropriate) */
+ for (n = V4L2_CID_BASE;; n++) {
+ struct v4l2_queryctrl control;
+ GstV4l2ColorBalanceChannel *v4l2channel;
+ GstColorBalanceChannel *channel;
+
+ /* hacky... */
+ if (n == V4L2_CID_LASTP1)
+ n = V4L2_CID_PRIVATE_BASE;
+
+ control.id = n;
+ if (ioctl (v4l2element->video_fd, VIDIOC_QUERYCTRL, &control) < 0) {
+ if (errno == EINVAL) {
+ if (n < V4L2_CID_PRIVATE_BASE)
+ continue;
+ else
+ break;
+ } else {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get %d in control enumeration for %s: %s",
+ n, v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
+ }
+ if (control.flags & V4L2_CTRL_FLAG_DISABLED)
+ continue;
+
+ switch (n) {
+ case V4L2_CID_BRIGHTNESS:
+ case V4L2_CID_CONTRAST:
+ case V4L2_CID_SATURATION:
+ case V4L2_CID_HUE:
+ case V4L2_CID_BLACK_LEVEL:
+ case V4L2_CID_AUTO_WHITE_BALANCE:
+ case V4L2_CID_DO_WHITE_BALANCE:
+ case V4L2_CID_RED_BALANCE:
+ case V4L2_CID_BLUE_BALANCE:
+ case V4L2_CID_GAMMA:
+ case V4L2_CID_EXPOSURE:
+ case V4L2_CID_AUTOGAIN:
+ case V4L2_CID_GAIN:
+ /* we only handle these for now */
+ break;
+ default:
+ DEBUG ("ControlID %s (%d) unhandled, FIXME", control.name, n);
+ control.id++;
+ break;
+ }
+ if (n != control.id)
+ continue;
+
+ v4l2channel = g_object_new (GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL, NULL);
+ channel = GST_COLOR_BALANCE_CHANNEL (v4l2channel);
+ channel->label = g_strdup (control.name);
+ v4l2channel->index = n;
#if 0
- if (control.type == V4L2_CTRL_TYPE_MENU) {
- struct v4l2_querymenu menu, *mptr;
- int i;
- menu.id = n;
- for (i=0;;i++) {
- menu.index = i;
- if (ioctl(v4l2element->video_fd, VIDIOC_QUERYMENU, &menu) < 0) {
- if (errno == EINVAL)
- break; /* end of enumeration */
- else {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get %d in menu enumeration for %s: %s",
- n, v4l2element->device,
- g_strerror (errno)));
- return FALSE;
- }
- }
- mptr = g_malloc(sizeof(menu));
- memcpy(mptr, &menu, sizeof(menu));
- menus = g_list_append(menus, mptr);
- }
- }
- v4l2element->menus = g_list_append(v4l2element->menus, menus);
+ if (control.type == V4L2_CTRL_TYPE_MENU) {
+ struct v4l2_querymenu menu, *mptr;
+ int i;
+
+ menu.id = n;
+ for (i = 0;; i++) {
+ menu.index = i;
+ if (ioctl (v4l2element->video_fd, VIDIOC_QUERYMENU, &menu) < 0) {
+ if (errno == EINVAL)
+ break; /* end of enumeration */
+ else {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get %d in menu enumeration for %s: %s",
+ n, v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
+ }
+ mptr = g_malloc (sizeof (menu));
+ memcpy (mptr, &menu, sizeof (menu));
+ menus = g_list_append (menus, mptr);
+ }
+ }
+ v4l2element->menus = g_list_append (v4l2element->menus, menus);
#endif
- switch (control.type) {
- case V4L2_CTRL_TYPE_INTEGER:
- channel->min_value = control.minimum;
- channel->max_value = control.maximum;
- break;
- case V4L2_CTRL_TYPE_BOOLEAN:
- channel->min_value = FALSE;
- channel->max_value = TRUE;
- break;
- default:
- channel->min_value =
- channel->max_value = 0;
- break;
- }
-
- v4l2element->colors = g_list_append(v4l2element->colors,
- (gpointer) channel);
- }
+ switch (control.type) {
+ case V4L2_CTRL_TYPE_INTEGER:
+ channel->min_value = control.minimum;
+ channel->max_value = control.maximum;
+ break;
+ case V4L2_CTRL_TYPE_BOOLEAN:
+ channel->min_value = FALSE;
+ channel->max_value = TRUE;
+ break;
+ default:
+ channel->min_value = channel->max_value = 0;
+ break;
+ }
- return TRUE;
+ v4l2element->colors = g_list_append (v4l2element->colors,
+ (gpointer) channel);
+ }
+
+ return TRUE;
}
static void
-gst_v4l2_empty_lists (GstV4l2Element *v4l2element)
+gst_v4l2_empty_lists (GstV4l2Element * v4l2element)
{
- DEBUG("deleting enumerations");
+ DEBUG ("deleting enumerations");
- g_list_foreach (v4l2element->channels, (GFunc) g_object_unref, NULL);
- g_list_free (v4l2element->channels);
- v4l2element->channels = NULL;
+ g_list_foreach (v4l2element->channels, (GFunc) g_object_unref, NULL);
+ g_list_free (v4l2element->channels);
+ v4l2element->channels = NULL;
- g_list_foreach (v4l2element->norms, (GFunc) g_object_unref, NULL);
- g_list_free (v4l2element->norms);
- v4l2element->norms = NULL;
+ g_list_foreach (v4l2element->norms, (GFunc) g_object_unref, NULL);
+ g_list_free (v4l2element->norms);
+ v4l2element->norms = NULL;
- g_list_foreach (v4l2element->colors, (GFunc) g_object_unref, NULL);
- g_list_free (v4l2element->colors);
- v4l2element->colors = NULL;
+ g_list_foreach (v4l2element->colors, (GFunc) g_object_unref, NULL);
+ g_list_free (v4l2element->colors);
+ v4l2element->colors = NULL;
}
/* FIXME: move this stuff to gstv4l2tuner.c? */
static void
-gst_v4l2_set_defaults (GstV4l2Element *v4l2element)
+gst_v4l2_set_defaults (GstV4l2Element * v4l2element)
{
GstTunerNorm *norm = NULL;
GstTunerChannel *channel = NULL;
GstTuner *tuner = GST_TUNER (v4l2element);
-
+
if (v4l2element->norm)
norm = gst_tuner_find_norm_by_name (tuner, v4l2element->norm);
if (norm) {
@@ -362,18 +343,19 @@ gst_v4l2_set_defaults (GstV4l2Element *v4l2element)
norm = GST_TUNER_NORM (gst_tuner_get_norm (GST_TUNER (v4l2element)));
v4l2element->norm = g_strdup (norm->label);
gst_tuner_norm_changed (tuner, norm);
- g_object_notify (G_OBJECT (v4l2element), "norm");
+ g_object_notify (G_OBJECT (v4l2element), "norm");
}
-
- if (v4l2element->channel)
+
+ if (v4l2element->channel)
channel = gst_tuner_find_channel_by_name (tuner, v4l2element->channel);
if (channel) {
gst_tuner_set_channel (tuner, channel);
} else {
- channel = GST_TUNER_CHANNEL (gst_tuner_get_channel (GST_TUNER (v4l2element)));
+ channel =
+ GST_TUNER_CHANNEL (gst_tuner_get_channel (GST_TUNER (v4l2element)));
v4l2element->channel = g_strdup (channel->label);
gst_tuner_channel_changed (tuner, channel);
- g_object_notify (G_OBJECT (v4l2element), "channel");
+ g_object_notify (G_OBJECT (v4l2element), "channel");
}
if (v4l2element->frequency != 0) {
gst_tuner_set_frequency (tuner, channel, v4l2element->frequency);
@@ -396,61 +378,61 @@ gst_v4l2_set_defaults (GstV4l2Element *v4l2element)
******************************************************/
gboolean
-gst_v4l2_open (GstV4l2Element *v4l2element)
+gst_v4l2_open (GstV4l2Element * v4l2element)
{
- DEBUG("Trying to open device %s", v4l2element->device);
- GST_V4L2_CHECK_NOT_OPEN(v4l2element);
- GST_V4L2_CHECK_NOT_ACTIVE(v4l2element);
-
- /* be sure we have a device */
- if (!v4l2element->device)
- v4l2element->device = g_strdup("/dev/video");
-
- /* open the device */
- v4l2element->video_fd = open(v4l2element->device, O_RDWR);
- if (!GST_V4L2_IS_OPEN(v4l2element)) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, OPEN_READ_WRITE,
- (_("Could not open device \"%s\" for reading and writing."), v4l2element->device),
- GST_ERROR_SYSTEM);
- goto error;
- }
+ DEBUG ("Trying to open device %s", v4l2element->device);
+ GST_V4L2_CHECK_NOT_OPEN (v4l2element);
+ GST_V4L2_CHECK_NOT_ACTIVE (v4l2element);
+
+ /* be sure we have a device */
+ if (!v4l2element->device)
+ v4l2element->device = g_strdup ("/dev/video");
+
+ /* open the device */
+ v4l2element->video_fd = open (v4l2element->device, O_RDWR);
+ if (!GST_V4L2_IS_OPEN (v4l2element)) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, OPEN_READ_WRITE,
+ (_("Could not open device \"%s\" for reading and writing."),
+ v4l2element->device), GST_ERROR_SYSTEM);
+ goto error;
+ }
- /* get capabilities */
- if (!gst_v4l2_get_capabilities(v4l2element)) {
- goto error;
- }
+ /* get capabilities */
+ if (!gst_v4l2_get_capabilities (v4l2element)) {
+ goto error;
+ }
- /* do we need to be a capture device? */
- if (GST_IS_V4L2SRC(v4l2element) &&
- !(v4l2element->vcap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, NOT_FOUND,
- (_("Device \"%s\" is not a capture device."), v4l2element->device),
- ("Capabilities: 0x%x", v4l2element->vcap.capabilities));
- goto error;
- }
+ /* do we need to be a capture device? */
+ if (GST_IS_V4L2SRC (v4l2element) &&
+ !(v4l2element->vcap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, NOT_FOUND,
+ (_("Device \"%s\" is not a capture device."), v4l2element->device),
+ ("Capabilities: 0x%x", v4l2element->vcap.capabilities));
+ goto error;
+ }
- /* create enumerations */
- if (!gst_v4l2_fill_lists(v4l2element))
- goto error;
+ /* create enumerations */
+ if (!gst_v4l2_fill_lists (v4l2element))
+ goto error;
- /* set defaults */
- gst_v4l2_set_defaults (v4l2element);
+ /* set defaults */
+ gst_v4l2_set_defaults (v4l2element);
- GST_INFO_OBJECT (v4l2element, "Opened device '%s' (%s) successfully\n",
- v4l2element->vcap.card, v4l2element->device);
+ GST_INFO_OBJECT (v4l2element, "Opened device '%s' (%s) successfully\n",
+ v4l2element->vcap.card, v4l2element->device);
- return TRUE;
+ return TRUE;
error:
- if (GST_V4L2_IS_OPEN(v4l2element)) {
- /* close device */
- close(v4l2element->video_fd);
- v4l2element->video_fd = -1;
- }
- /* empty lists */
- gst_v4l2_empty_lists(v4l2element);
+ if (GST_V4L2_IS_OPEN (v4l2element)) {
+ /* close device */
+ close (v4l2element->video_fd);
+ v4l2element->video_fd = -1;
+ }
+ /* empty lists */
+ gst_v4l2_empty_lists (v4l2element);
- return FALSE;
+ return FALSE;
}
@@ -461,20 +443,20 @@ error:
******************************************************/
gboolean
-gst_v4l2_close (GstV4l2Element *v4l2element)
+gst_v4l2_close (GstV4l2Element * v4l2element)
{
- DEBUG("Trying to close %s", v4l2element->device);
- GST_V4L2_CHECK_OPEN(v4l2element);
- GST_V4L2_CHECK_NOT_ACTIVE(v4l2element);
+ DEBUG ("Trying to close %s", v4l2element->device);
+ GST_V4L2_CHECK_OPEN (v4l2element);
+ GST_V4L2_CHECK_NOT_ACTIVE (v4l2element);
- /* close device */
- close(v4l2element->video_fd);
- v4l2element->video_fd = -1;
+ /* close device */
+ close (v4l2element->video_fd);
+ v4l2element->video_fd = -1;
- /* empty lists */
- gst_v4l2_empty_lists(v4l2element);
+ /* empty lists */
+ gst_v4l2_empty_lists (v4l2element);
- return TRUE;
+ return TRUE;
}
@@ -485,20 +467,19 @@ gst_v4l2_close (GstV4l2Element *v4l2element)
******************************************************/
gboolean
-gst_v4l2_get_norm (GstV4l2Element *v4l2element,
- v4l2_std_id *norm)
+gst_v4l2_get_norm (GstV4l2Element * v4l2element, v4l2_std_id * norm)
{
- DEBUG("getting norm");
- GST_V4L2_CHECK_OPEN(v4l2element);
-
- if (ioctl(v4l2element->video_fd, VIDIOC_G_STD, norm) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get the current norm for device %s: %s",
- v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ DEBUG ("getting norm");
+ GST_V4L2_CHECK_OPEN (v4l2element);
+
+ if (ioctl (v4l2element->video_fd, VIDIOC_G_STD, norm) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get the current norm for device %s: %s",
+ v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
@@ -509,21 +490,20 @@ gst_v4l2_get_norm (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_set_norm (GstV4l2Element *v4l2element,
- v4l2_std_id norm)
+gst_v4l2_set_norm (GstV4l2Element * v4l2element, v4l2_std_id norm)
{
- DEBUG("trying to set norm to %llx", norm);
- GST_V4L2_CHECK_OPEN(v4l2element);
- GST_V4L2_CHECK_NOT_ACTIVE(v4l2element);
-
- if (ioctl(v4l2element->video_fd, VIDIOC_S_STD, &norm) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to set norm 0x%llx for device %s: %s",
- norm, v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ DEBUG ("trying to set norm to %llx", norm);
+ GST_V4L2_CHECK_OPEN (v4l2element);
+ GST_V4L2_CHECK_NOT_ACTIVE (v4l2element);
+
+ if (ioctl (v4l2element->video_fd, VIDIOC_S_STD, &norm) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to set norm 0x%llx for device %s: %s",
+ norm, v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
@@ -534,24 +514,23 @@ gst_v4l2_set_norm (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_get_input (GstV4l2Element *v4l2element,
- gint *input)
+gst_v4l2_get_input (GstV4l2Element * v4l2element, gint * input)
{
- gint n;
+ gint n;
- DEBUG("trying to get input");
- GST_V4L2_CHECK_OPEN(v4l2element);
+ DEBUG ("trying to get input");
+ GST_V4L2_CHECK_OPEN (v4l2element);
- if (ioctl(v4l2element->video_fd, VIDIOC_G_INPUT, &n) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get current input on device %s: %s",
- v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ if (ioctl (v4l2element->video_fd, VIDIOC_G_INPUT, &n) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get current input on device %s: %s",
+ v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- *input = n;
+ *input = n;
- return TRUE;
+ return TRUE;
}
@@ -562,21 +541,20 @@ gst_v4l2_get_input (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_set_input (GstV4l2Element *v4l2element,
- gint input)
+gst_v4l2_set_input (GstV4l2Element * v4l2element, gint input)
{
- DEBUG("trying to set input to %d", input);
- GST_V4L2_CHECK_OPEN(v4l2element);
- GST_V4L2_CHECK_NOT_ACTIVE(v4l2element);
-
- if (ioctl(v4l2element->video_fd, VIDIOC_S_INPUT, &input) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to set input %d on device %s: %s",
- input, v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ DEBUG ("trying to set input to %d", input);
+ GST_V4L2_CHECK_OPEN (v4l2element);
+ GST_V4L2_CHECK_NOT_ACTIVE (v4l2element);
+
+ if (ioctl (v4l2element->video_fd, VIDIOC_S_INPUT, &input) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to set input %d on device %s: %s",
+ input, v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
@@ -587,24 +565,23 @@ gst_v4l2_set_input (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_get_output (GstV4l2Element *v4l2element,
- gint *output)
+gst_v4l2_get_output (GstV4l2Element * v4l2element, gint * output)
{
- gint n;
+ gint n;
- DEBUG("trying to get output");
- GST_V4L2_CHECK_OPEN(v4l2element);
+ DEBUG ("trying to get output");
+ GST_V4L2_CHECK_OPEN (v4l2element);
- if (ioctl(v4l2element->video_fd, VIDIOC_G_OUTPUT, &n) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get current output on device %s: %s",
- v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ if (ioctl (v4l2element->video_fd, VIDIOC_G_OUTPUT, &n) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get current output on device %s: %s",
+ v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- *output = n;
+ *output = n;
- return TRUE;
+ return TRUE;
}
@@ -615,21 +592,20 @@ gst_v4l2_get_output (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_set_output (GstV4l2Element *v4l2element,
- gint output)
+gst_v4l2_set_output (GstV4l2Element * v4l2element, gint output)
{
- DEBUG("trying to set output to %d", output);
- GST_V4L2_CHECK_OPEN(v4l2element);
- GST_V4L2_CHECK_NOT_ACTIVE(v4l2element);
-
- if (ioctl(v4l2element->video_fd, VIDIOC_S_OUTPUT, &output) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to set output %d on device %s: %s",
- output, v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ DEBUG ("trying to set output to %d", output);
+ GST_V4L2_CHECK_OPEN (v4l2element);
+ GST_V4L2_CHECK_NOT_ACTIVE (v4l2element);
+
+ if (ioctl (v4l2element->video_fd, VIDIOC_S_OUTPUT, &output) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to set output %d on device %s: %s",
+ output, v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
@@ -640,26 +616,25 @@ gst_v4l2_set_output (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_get_frequency (GstV4l2Element *v4l2element,
- gint tunernum,
- gulong *frequency)
+gst_v4l2_get_frequency (GstV4l2Element * v4l2element,
+ gint tunernum, gulong * frequency)
{
- struct v4l2_frequency freq;
+ struct v4l2_frequency freq;
- DEBUG("getting current tuner frequency");
- GST_V4L2_CHECK_OPEN(v4l2element);
+ DEBUG ("getting current tuner frequency");
+ GST_V4L2_CHECK_OPEN (v4l2element);
- freq.tuner = tunernum;
- if (ioctl(v4l2element->video_fd, VIDIOC_G_FREQUENCY, &freq) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get current tuner frequency for device %s: %s",
- v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ freq.tuner = tunernum;
+ if (ioctl (v4l2element->video_fd, VIDIOC_G_FREQUENCY, &freq) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get current tuner frequency for device %s: %s",
+ v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- *frequency = freq.frequency;
+ *frequency = freq.frequency;
- return TRUE;
+ return TRUE;
}
@@ -670,29 +645,28 @@ gst_v4l2_get_frequency (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_set_frequency (GstV4l2Element *v4l2element,
- gint tunernum,
- gulong frequency)
+gst_v4l2_set_frequency (GstV4l2Element * v4l2element,
+ gint tunernum, gulong frequency)
{
- struct v4l2_frequency freq;
-
- DEBUG("setting current tuner frequency to %lu", frequency);
- GST_V4L2_CHECK_OPEN(v4l2element);
- GST_V4L2_CHECK_NOT_ACTIVE(v4l2element);
-
- freq.tuner = tunernum;
- /* fill in type - ignore error */
- ioctl(v4l2element->video_fd, VIDIOC_G_FREQUENCY, &freq);
- freq.frequency = frequency;
-
- if (ioctl(v4l2element->video_fd, VIDIOC_S_FREQUENCY, &freq) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to set tuner frequency to %lu for device %s: %s",
- frequency, v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ struct v4l2_frequency freq;
+
+ DEBUG ("setting current tuner frequency to %lu", frequency);
+ GST_V4L2_CHECK_OPEN (v4l2element);
+ GST_V4L2_CHECK_NOT_ACTIVE (v4l2element);
+
+ freq.tuner = tunernum;
+ /* fill in type - ignore error */
+ ioctl (v4l2element->video_fd, VIDIOC_G_FREQUENCY, &freq);
+ freq.frequency = frequency;
+
+ if (ioctl (v4l2element->video_fd, VIDIOC_S_FREQUENCY, &freq) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to set tuner frequency to %lu for device %s: %s",
+ frequency, v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
@@ -703,26 +677,25 @@ gst_v4l2_set_frequency (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_signal_strength (GstV4l2Element *v4l2element,
- gint tunernum,
- gulong *signal_strength)
+gst_v4l2_signal_strength (GstV4l2Element * v4l2element,
+ gint tunernum, gulong * signal_strength)
{
- struct v4l2_tuner tuner;
+ struct v4l2_tuner tuner;
- DEBUG("trying to get signal strength");
- GST_V4L2_CHECK_OPEN(v4l2element);
+ DEBUG ("trying to get signal strength");
+ GST_V4L2_CHECK_OPEN (v4l2element);
- tuner.index = tunernum;
- if (ioctl(v4l2element->video_fd, VIDIOC_G_TUNER, &tuner) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get signal strength for device %s: %s",
- v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ tuner.index = tunernum;
+ if (ioctl (v4l2element->video_fd, VIDIOC_G_TUNER, &tuner) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get signal strength for device %s: %s",
+ v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- *signal_strength = tuner.signal;
+ *signal_strength = tuner.signal;
- return TRUE;
+ return TRUE;
}
@@ -733,28 +706,27 @@ gst_v4l2_signal_strength (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_get_attribute (GstV4l2Element *v4l2element,
- int attribute_num,
- int *value)
+gst_v4l2_get_attribute (GstV4l2Element * v4l2element,
+ int attribute_num, int *value)
{
- struct v4l2_control control;
+ struct v4l2_control control;
- GST_V4L2_CHECK_OPEN(v4l2element);
+ GST_V4L2_CHECK_OPEN (v4l2element);
- DEBUG("getting value of attribute %d", attribute_num);
+ DEBUG ("getting value of attribute %d", attribute_num);
- control.id = attribute_num;
+ control.id = attribute_num;
- if (ioctl(v4l2element->video_fd, VIDIOC_G_CTRL, &control) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to get value for control %d on device %s: %s",
- attribute_num, v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ if (ioctl (v4l2element->video_fd, VIDIOC_G_CTRL, &control) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to get value for control %d on device %s: %s",
+ attribute_num, v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- *value = control.value;
+ *value = control.value;
- return TRUE;
+ return TRUE;
}
@@ -765,26 +737,24 @@ gst_v4l2_get_attribute (GstV4l2Element *v4l2element,
******************************************************/
gboolean
-gst_v4l2_set_attribute (GstV4l2Element *v4l2element,
- int attribute_num,
- const int value)
+gst_v4l2_set_attribute (GstV4l2Element * v4l2element,
+ int attribute_num, const int value)
{
- struct v4l2_control control;
+ struct v4l2_control control;
- GST_V4L2_CHECK_OPEN(v4l2element);
+ GST_V4L2_CHECK_OPEN (v4l2element);
- DEBUG("setting value of attribute %d to %d", attribute_num, value);
+ DEBUG ("setting value of attribute %d to %d", attribute_num, value);
- control.id = attribute_num;
- control.value = value;
+ control.id = attribute_num;
+ control.value = value;
- if (ioctl(v4l2element->video_fd, VIDIOC_S_CTRL, &control) < 0) {
- GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
- ("Failed to set value %d for control %d on device %s: %s",
- value, attribute_num, v4l2element->device, g_strerror(errno)));
- return FALSE;
- }
+ if (ioctl (v4l2element->video_fd, VIDIOC_S_CTRL, &control) < 0) {
+ GST_ELEMENT_ERROR (v4l2element, RESOURCE, SETTINGS, (NULL),
+ ("Failed to set value %d for control %d on device %s: %s",
+ value, attribute_num, v4l2element->device, g_strerror (errno)));
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
-
diff --git a/sys/v4l2/v4l2_calls.h b/sys/v4l2/v4l2_calls.h
index 428c57aa..488e7bca 100644
--- a/sys/v4l2/v4l2_calls.h
+++ b/sys/v4l2/v4l2_calls.h
@@ -82,50 +82,36 @@
/* open/close the device */
-gboolean gst_v4l2_open (GstV4l2Element *v4l2element);
-gboolean gst_v4l2_close (GstV4l2Element *v4l2element);
+gboolean gst_v4l2_open (GstV4l2Element * v4l2element);
+gboolean gst_v4l2_close (GstV4l2Element * v4l2element);
/* norm/input/output */
-gboolean gst_v4l2_get_norm (GstV4l2Element *v4l2element,
- v4l2_std_id *norm);
-gboolean gst_v4l2_set_norm (GstV4l2Element *v4l2element,
- v4l2_std_id norm);
-gboolean gst_v4l2_get_input (GstV4l2Element *v4l2element,
- gint *input);
-gboolean gst_v4l2_set_input (GstV4l2Element *v4l2element,
- gint input);
-gboolean gst_v4l2_get_output (GstV4l2Element *v4l2element,
- gint *output);
-gboolean gst_v4l2_set_output (GstV4l2Element *v4l2element,
- gint output);
+gboolean gst_v4l2_get_norm (GstV4l2Element * v4l2element, v4l2_std_id * norm);
+gboolean gst_v4l2_set_norm (GstV4l2Element * v4l2element, v4l2_std_id norm);
+gboolean gst_v4l2_get_input (GstV4l2Element * v4l2element, gint * input);
+gboolean gst_v4l2_set_input (GstV4l2Element * v4l2element, gint input);
+gboolean gst_v4l2_get_output (GstV4l2Element * v4l2element, gint * output);
+gboolean gst_v4l2_set_output (GstV4l2Element * v4l2element, gint output);
/* frequency control */
-gboolean gst_v4l2_get_frequency (GstV4l2Element *v4l2element,
- gint tunernum,
- gulong *frequency);
-gboolean gst_v4l2_set_frequency (GstV4l2Element *v4l2element,
- gint tunernum,
- gulong frequency);
-gboolean gst_v4l2_signal_strength (GstV4l2Element *v4l2element,
- gint tunernum,
- gulong *signal);
+gboolean gst_v4l2_get_frequency (GstV4l2Element * v4l2element,
+ gint tunernum, gulong * frequency);
+gboolean gst_v4l2_set_frequency (GstV4l2Element * v4l2element,
+ gint tunernum, gulong frequency);
+gboolean gst_v4l2_signal_strength (GstV4l2Element * v4l2element,
+ gint tunernum, gulong * signal);
/* attribute control */
-gboolean gst_v4l2_get_attribute (GstV4l2Element *v4l2element,
- int attribute,
- int *value);
-gboolean gst_v4l2_set_attribute (GstV4l2Element *v4l2element,
- int attribute,
- const int value);
+gboolean gst_v4l2_get_attribute (GstV4l2Element * v4l2element,
+ int attribute, int *value);
+gboolean gst_v4l2_set_attribute (GstV4l2Element * v4l2element,
+ int attribute, const int value);
/* overlay */
-gboolean gst_v4l2_set_display (GstV4l2Element *v4l2element);
-gboolean gst_v4l2_set_window (GstElement *element,
- gint x, gint y,
- gint w, gint h,
- struct v4l2_clip *clips,
- gint num_clips);
-gboolean gst_v4l2_enable_overlay (GstV4l2Element *v4l2element,
- gboolean enable);
+gboolean gst_v4l2_set_display (GstV4l2Element * v4l2element);
+gboolean gst_v4l2_set_window (GstElement * element,
+ gint x, gint y, gint w, gint h, struct v4l2_clip *clips, gint num_clips);
+gboolean gst_v4l2_enable_overlay (GstV4l2Element * v4l2element,
+ gboolean enable);
#endif /* __V4L2_CALLS_H__ */
diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c
index 8b3276a6..00d710eb 100644
--- a/sys/v4l2/v4l2src_calls.c
+++ b/sys/v4l2/v4l2src_calls.c
@@ -56,7 +56,7 @@
******************************************************/
gboolean
-gst_v4l2src_fill_format_list (GstV4l2Src *v4l2src)
+gst_v4l2src_fill_format_list (GstV4l2Src * v4l2src)
{
gint n;
struct v4l2_fmtdesc *format;
@@ -64,22 +64,24 @@ gst_v4l2src_fill_format_list (GstV4l2Src *v4l2src)
GST_DEBUG_OBJECT (v4l2src, "getting src format enumerations");
/* format enumeration */
- for (n=0;;n++) {
+ for (n = 0;; n++) {
format = g_new (struct v4l2_fmtdesc, 1);
+
format->index = n;
format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_ENUM_FMT, format) < 0) {
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_ENUM_FMT,
+ format) < 0) {
if (errno == EINVAL) {
- break; /* end of enumeration */
+ break; /* end of enumeration */
} else {
GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS, (NULL),
("failed to get number %d in pixelformat enumeration for %s: %s",
- n, GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
+ n, GST_V4L2ELEMENT (v4l2src)->device, g_strerror (errno)));
g_free (format);
return FALSE;
}
}
- GST_LOG_OBJECT (v4l2src, "got format"GST_FOURCC_FORMAT,
+ GST_LOG_OBJECT (v4l2src, "got format" GST_FOURCC_FORMAT,
GST_FOURCC_ARGS (format->pixelformat));
v4l2src->formats = g_slist_prepend (v4l2src->formats, format);
}
@@ -95,7 +97,7 @@ gst_v4l2src_fill_format_list (GstV4l2Src *v4l2src)
******************************************************/
gboolean
-gst_v4l2src_clear_format_list (GstV4l2Src *v4l2src)
+gst_v4l2src_clear_format_list (GstV4l2Src * v4l2src)
{
g_slist_foreach (v4l2src->formats, (GFunc) g_free, NULL);
g_slist_free (v4l2src->formats);
@@ -111,15 +113,16 @@ gst_v4l2src_clear_format_list (GstV4l2Src *v4l2src)
******************************************************/
gboolean
-gst_v4l2src_queue_frame (GstV4l2Src *v4l2src,
- guint i)
+gst_v4l2src_queue_frame (GstV4l2Src * v4l2src, guint i)
{
GST_LOG_OBJECT (v4l2src, "queueing frame %u", i);
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_QBUF, &v4l2src->pool->buffers[i].buffer) < 0) {
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_QBUF,
+ &v4l2src->pool->buffers[i].buffer) < 0) {
GST_ELEMENT_ERROR (v4l2src, RESOURCE, WRITE,
- (_("Could not write to device \"%s\"."), GST_V4L2ELEMENT(v4l2src)->device),
- ("Error queueing buffer %u on device %s", i, g_strerror(errno)));
+ (_("Could not write to device \"%s\"."),
+ GST_V4L2ELEMENT (v4l2src)->device),
+ ("Error queueing buffer %u on device %s", i, g_strerror (errno)));
return FALSE;
}
@@ -134,16 +137,17 @@ gst_v4l2src_queue_frame (GstV4l2Src *v4l2src,
******************************************************/
gint
-gst_v4l2src_grab_frame (GstV4l2Src *v4l2src)
+gst_v4l2src_grab_frame (GstV4l2Src * v4l2src)
{
struct v4l2_buffer buffer;
-
+
buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- while (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_DQBUF, &buffer) < 0) {
+ while (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_DQBUF, &buffer) < 0) {
/* if the sync() got interrupted, we can retry */
if (errno != EINTR) {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, SYNC, (NULL), ("could not sync on a buffer on device %s: %s",
- GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
+ GST_ELEMENT_ERROR (v4l2src, RESOURCE, SYNC, (NULL),
+ ("could not sync on a buffer on device %s: %s",
+ GST_V4L2ELEMENT (v4l2src)->device, g_strerror (errno)));
return -1;
}
GST_DEBUG_OBJECT (v4l2src, "grab got interrupted");
@@ -162,21 +166,22 @@ gst_v4l2src_grab_frame (GstV4l2Src *v4l2src)
******************************************************/
gboolean
-gst_v4l2src_get_capture (GstV4l2Src *v4l2src)
+gst_v4l2src_get_capture (GstV4l2Src * v4l2src)
{
- DEBUG("Getting capture format");
+ DEBUG ("Getting capture format");
- GST_V4L2_CHECK_OPEN(GST_V4L2ELEMENT(v4l2src));
+ GST_V4L2_CHECK_OPEN (GST_V4L2ELEMENT (v4l2src));
- v4l2src->format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_G_FMT, &v4l2src->format) < 0) {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS, (NULL),
- ("failed to get pixelformat for device %s: %s",
- GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
- return FALSE;
- }
+ v4l2src->format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_G_FMT,
+ &v4l2src->format) < 0) {
+ GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS, (NULL),
+ ("failed to get pixelformat for device %s: %s",
+ GST_V4L2ELEMENT (v4l2src)->device, g_strerror (errno)));
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
@@ -187,33 +192,33 @@ gst_v4l2src_get_capture (GstV4l2Src *v4l2src)
******************************************************/
gboolean
-gst_v4l2src_set_capture (GstV4l2Src *v4l2src,
- struct v4l2_fmtdesc *fmt,
- gint width,
- gint height)
+gst_v4l2src_set_capture (GstV4l2Src * v4l2src,
+ struct v4l2_fmtdesc * fmt, gint width, gint height)
{
- DEBUG("Setting capture format to %dx%d, format %s",
- width, height, fmt->description);
-
- GST_V4L2_CHECK_OPEN(GST_V4L2ELEMENT(v4l2src));
- GST_V4L2_CHECK_NOT_ACTIVE(GST_V4L2ELEMENT(v4l2src));
-
- memset(&v4l2src->format, 0, sizeof(struct v4l2_format));
- v4l2src->format.fmt.pix.width = width;
- v4l2src->format.fmt.pix.height = height;
- v4l2src->format.fmt.pix.pixelformat = fmt->pixelformat;
- v4l2src->format.fmt.pix.field = V4L2_FIELD_INTERLACED;
- v4l2src->format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_S_FMT, &v4l2src->format) < 0) {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS, (NULL),
- ("failed to set pixelformat to %s @ %dx%d for device %s: %s",
- fmt->description, width, height, GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
- return FALSE;
- }
-
- /* update internal info */
- return gst_v4l2src_get_capture(v4l2src);
+ DEBUG ("Setting capture format to %dx%d, format %s",
+ width, height, fmt->description);
+
+ GST_V4L2_CHECK_OPEN (GST_V4L2ELEMENT (v4l2src));
+ GST_V4L2_CHECK_NOT_ACTIVE (GST_V4L2ELEMENT (v4l2src));
+
+ memset (&v4l2src->format, 0, sizeof (struct v4l2_format));
+ v4l2src->format.fmt.pix.width = width;
+ v4l2src->format.fmt.pix.height = height;
+ v4l2src->format.fmt.pix.pixelformat = fmt->pixelformat;
+ v4l2src->format.fmt.pix.field = V4L2_FIELD_INTERLACED;
+ v4l2src->format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_S_FMT,
+ &v4l2src->format) < 0) {
+ GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS, (NULL),
+ ("failed to set pixelformat to %s @ %dx%d for device %s: %s",
+ fmt->description, width, height, GST_V4L2ELEMENT (v4l2src)->device,
+ g_strerror (errno)));
+ return FALSE;
+ }
+
+ /* update internal info */
+ return gst_v4l2src_get_capture (v4l2src);
}
@@ -224,15 +229,15 @@ gst_v4l2src_set_capture (GstV4l2Src *v4l2src,
******************************************************/
gboolean
-gst_v4l2src_capture_init (GstV4l2Src *v4l2src)
+gst_v4l2src_capture_init (GstV4l2Src * v4l2src)
{
gint n;
guint buffers;
GST_DEBUG_OBJECT (v4l2src, "initting the capture system");
- GST_V4L2_CHECK_OPEN(GST_V4L2ELEMENT(v4l2src));
- GST_V4L2_CHECK_NOT_ACTIVE(GST_V4L2ELEMENT(v4l2src));
+ GST_V4L2_CHECK_OPEN (GST_V4L2ELEMENT (v4l2src));
+ GST_V4L2_CHECK_NOT_ACTIVE (GST_V4L2ELEMENT (v4l2src));
/* request buffer info */
buffers = v4l2src->breq.count;
@@ -244,25 +249,32 @@ gst_v4l2src_capture_init (GstV4l2Src *v4l2src)
}
v4l2src->breq.type = v4l2src->format.type;
v4l2src->breq.memory = V4L2_MEMORY_MMAP;
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_REQBUFS, &v4l2src->breq) < 0) {
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_REQBUFS,
+ &v4l2src->breq) < 0) {
GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ,
- (_("Could not get buffers from device \"%s\"."), GST_V4L2ELEMENT(v4l2src)->device),
- ("error requesting %d buffers: %s", v4l2src->breq.count, g_strerror (errno)));
+ (_("Could not get buffers from device \"%s\"."),
+ GST_V4L2ELEMENT (v4l2src)->device),
+ ("error requesting %d buffers: %s", v4l2src->breq.count,
+ g_strerror (errno)));
return FALSE;
}
if (v4l2src->breq.count < GST_V4L2_MIN_BUFFERS) {
GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ,
- (_("Could not get enough buffers from device \"%s\"."), GST_V4L2ELEMENT(v4l2src)->device),
- ("we received %d, we want at least %d", v4l2src->breq.count, GST_V4L2_MIN_BUFFERS));
+ (_("Could not get enough buffers from device \"%s\"."),
+ GST_V4L2ELEMENT (v4l2src)->device),
+ ("we received %d, we want at least %d", v4l2src->breq.count,
+ GST_V4L2_MIN_BUFFERS));
v4l2src->breq.count = buffers;
return FALSE;
}
if (v4l2src->breq.count != buffers)
g_object_notify (G_OBJECT (v4l2src), "num_buffers");
- GST_INFO_OBJECT (v4l2src, "Got %d buffers ("GST_FOURCC_FORMAT") of size %d KB\n",
- v4l2src->breq.count, GST_FOURCC_ARGS (v4l2src->format.fmt.pix.pixelformat),
+ GST_INFO_OBJECT (v4l2src,
+ "Got %d buffers (" GST_FOURCC_FORMAT ") of size %d KB\n",
+ v4l2src->breq.count,
+ GST_FOURCC_ARGS (v4l2src->format.fmt.pix.pixelformat),
v4l2src->format.fmt.pix.sizeimage / 1024);
/* Map the buffers */
@@ -279,29 +291,32 @@ gst_v4l2src_capture_init (GstV4l2Src *v4l2src)
buffer->pool = v4l2src->pool;
buffer->buffer.index = n;
buffer->buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_QUERYBUF, &buffer->buffer) < 0) {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ, (NULL),
- ("Could not get buffer properties of buffer %d: %s", n, g_strerror (errno)));
- gst_v4l2src_capture_deinit(v4l2src);
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_QUERYBUF,
+ &buffer->buffer) < 0) {
+ GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ, (NULL),
+ ("Could not get buffer properties of buffer %d: %s", n,
+ g_strerror (errno)));
+ gst_v4l2src_capture_deinit (v4l2src);
return FALSE;
}
- buffer->start = mmap (0, buffer->buffer.length, PROT_READ|PROT_WRITE, MAP_SHARED,
- GST_V4L2ELEMENT(v4l2src)->video_fd, buffer->buffer.m.offset);
+ buffer->start =
+ mmap (0, buffer->buffer.length, PROT_READ | PROT_WRITE, MAP_SHARED,
+ GST_V4L2ELEMENT (v4l2src)->video_fd, buffer->buffer.m.offset);
if (buffer->start == MAP_FAILED) {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ, (NULL),
- ("Could not mmap video buffer %d: %s", n, g_strerror (errno)));
+ GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ, (NULL),
+ ("Could not mmap video buffer %d: %s", n, g_strerror (errno)));
buffer->start = 0;
gst_v4l2src_capture_deinit (v4l2src);
return FALSE;
}
buffer->length = buffer->buffer.length;
- if (!gst_v4l2src_queue_frame(v4l2src, n)) {
+ if (!gst_v4l2src_queue_frame (v4l2src, n)) {
gst_v4l2src_capture_deinit (v4l2src);
return FALSE;
}
}
- GST_V4L2_SET_ACTIVE(GST_V4L2ELEMENT (v4l2src));
+ GST_V4L2_SET_ACTIVE (GST_V4L2ELEMENT (v4l2src));
return TRUE;
}
@@ -313,24 +328,24 @@ gst_v4l2src_capture_init (GstV4l2Src *v4l2src)
******************************************************/
gboolean
-gst_v4l2src_capture_start (GstV4l2Src *v4l2src)
+gst_v4l2src_capture_start (GstV4l2Src * v4l2src)
{
gint type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
GST_DEBUG_OBJECT (v4l2src, "starting the capturing");
-
- GST_V4L2_CHECK_OPEN(GST_V4L2ELEMENT(v4l2src));
- if (!GST_V4L2_IS_ACTIVE (GST_V4L2ELEMENT(v4l2src))) {
+
+ GST_V4L2_CHECK_OPEN (GST_V4L2ELEMENT (v4l2src));
+ if (!GST_V4L2_IS_ACTIVE (GST_V4L2ELEMENT (v4l2src))) {
gst_pad_renegotiate (v4l2src->srcpad);
}
- GST_V4L2_CHECK_ACTIVE(GST_V4L2ELEMENT(v4l2src));
+ GST_V4L2_CHECK_ACTIVE (GST_V4L2ELEMENT (v4l2src));
v4l2src->quit = FALSE;
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_STREAMON, &type) < 0) {
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_STREAMON, &type) < 0) {
GST_ELEMENT_ERROR (v4l2src, RESOURCE, OPEN_READ, (NULL),
- ("Error starting streaming capture from device %s: %s",
- GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno)));
+ ("Error starting streaming capture from device %s: %s",
+ GST_V4L2ELEMENT (v4l2src)->device, g_strerror (errno)));
return FALSE;
}
@@ -345,31 +360,31 @@ gst_v4l2src_capture_start (GstV4l2Src *v4l2src)
******************************************************/
gboolean
-gst_v4l2src_capture_stop (GstV4l2Src *v4l2src)
+gst_v4l2src_capture_stop (GstV4l2Src * v4l2src)
{
gint type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
GST_DEBUG_OBJECT (v4l2src, "stopping capturing");
- GST_V4L2_CHECK_OPEN(GST_V4L2ELEMENT(v4l2src));
- GST_V4L2_CHECK_ACTIVE(GST_V4L2ELEMENT(v4l2src));
+ GST_V4L2_CHECK_OPEN (GST_V4L2ELEMENT (v4l2src));
+ GST_V4L2_CHECK_ACTIVE (GST_V4L2ELEMENT (v4l2src));
/* we actually need to sync on all queued buffers but not
* on the non-queued ones */
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_STREAMOFF, &type) < 0) {
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_STREAMOFF, &type) < 0) {
GST_ELEMENT_ERROR (v4l2src, RESOURCE, CLOSE, (NULL),
- ("Error stopping streaming capture from device %s: %s",
- GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
+ ("Error stopping streaming capture from device %s: %s",
+ GST_V4L2ELEMENT (v4l2src)->device, g_strerror (errno)));
return FALSE;
}
/* make an optional pending wait stop */
v4l2src->quit = TRUE;
-
+
return TRUE;
}
static void
-gst_v4l2src_buffer_pool_free (GstV4l2BufferPool *pool, gboolean do_close)
+gst_v4l2src_buffer_pool_free (GstV4l2BufferPool * pool, gboolean do_close)
{
guint i;
@@ -385,16 +400,16 @@ gst_v4l2src_buffer_pool_free (GstV4l2BufferPool *pool, gboolean do_close)
}
void
-gst_v4l2src_free_buffer (GstBuffer *buffer)
+gst_v4l2src_free_buffer (GstBuffer * buffer)
{
GstV4l2Buffer *buf = (GstV4l2Buffer *) GST_BUFFER_PRIVATE (buffer);
-
+
GST_LOG ("freeing buffer %p (nr. %d)", buffer, buf->buffer.index);
-
+
if (!gst_atomic_int_dec_and_test (&buf->refcount)) {
/* we're still in use, add to queue again
note: this might fail because the device is already stopped (race) */
- if (ioctl(buf->pool->video_fd, VIDIOC_QBUF, &buf->buffer) < 0)
+ if (ioctl (buf->pool->video_fd, VIDIOC_QBUF, &buf->buffer) < 0)
GST_INFO ("readding to queue failed, assuming video device is stopped");
}
if (gst_atomic_int_dec_and_test (&buf->pool->refcount)) {
@@ -410,14 +425,14 @@ gst_v4l2src_free_buffer (GstBuffer *buffer)
******************************************************/
gboolean
-gst_v4l2src_capture_deinit (GstV4l2Src *v4l2src)
+gst_v4l2src_capture_deinit (GstV4l2Src * v4l2src)
{
gint i, dequeue = 0;
-
+
GST_DEBUG_OBJECT (v4l2src, "deinitting capture system");
-
- GST_V4L2_CHECK_OPEN(GST_V4L2ELEMENT(v4l2src));
- GST_V4L2_CHECK_ACTIVE(GST_V4L2ELEMENT(v4l2src));
+
+ GST_V4L2_CHECK_OPEN (GST_V4L2ELEMENT (v4l2src));
+ GST_V4L2_CHECK_ACTIVE (GST_V4L2ELEMENT (v4l2src));
/* free the buffers */
for (i = 0; i < v4l2src->breq.count; i++) {
@@ -426,16 +441,18 @@ gst_v4l2src_capture_deinit (GstV4l2Src *v4l2src)
}
for (i = 0; i < dequeue; i++) {
struct v4l2_buffer buffer;
- buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_DQBUF, &buffer) < 0)
- GST_WARNING_OBJECT (v4l2src, "Could not dequeue buffer on uninitialization");
+
+ buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_DQBUF, &buffer) < 0)
+ GST_WARNING_OBJECT (v4l2src,
+ "Could not dequeue buffer on uninitialization");
}
if (gst_atomic_int_dec_and_test (&v4l2src->pool->refcount)) {
/* we're last thing that used all this */
gst_v4l2src_buffer_pool_free (v4l2src->pool, FALSE);
}
v4l2src->pool = NULL;
-
+
GST_V4L2_SET_INACTIVE (GST_V4L2ELEMENT (v4l2src));
return TRUE;
}
@@ -446,46 +463,45 @@ gst_v4l2src_capture_deinit (GstV4l2Src *v4l2src)
*/
gboolean
-gst_v4l2src_get_size_limits (GstV4l2Src *v4l2src,
- struct v4l2_fmtdesc *format,
- gint *min_w, gint *max_w,
- gint *min_h, gint *max_h)
+gst_v4l2src_get_size_limits (GstV4l2Src * v4l2src,
+ struct v4l2_fmtdesc * format,
+ gint * min_w, gint * max_w, gint * min_h, gint * max_h)
{
- struct v4l2_format fmt;
-
- GST_LOG_OBJECT (v4l2src, "getting size limits with format " GST_FOURCC_FORMAT,
- GST_FOURCC_ARGS (format->pixelformat));
-
- /* get size delimiters */
- memset(&fmt, 0, sizeof(fmt));
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- fmt.fmt.pix.width = 0;
- fmt.fmt.pix.height = 0;
- fmt.fmt.pix.pixelformat = format->pixelformat;
- fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd,
- VIDIOC_TRY_FMT, &fmt) < 0) {
- return FALSE;
- }
-
- if (min_w)
- *min_w = fmt.fmt.pix.width;
- if (min_h)
- *min_h = fmt.fmt.pix.height;
- GST_LOG_OBJECT (v4l2src, "got min size %dx%d", fmt.fmt.pix.width, fmt.fmt.pix.height);
-
- fmt.fmt.pix.width = G_MAXINT;
- fmt.fmt.pix.height = 576;
- if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd,
- VIDIOC_TRY_FMT, &fmt) < 0) {
- return FALSE;
- }
-
- if (max_w)
- *max_w = fmt.fmt.pix.width;
- if (max_h)
- *max_h = fmt.fmt.pix.height;
- GST_LOG_OBJECT (v4l2src, "got max size %dx%d", fmt.fmt.pix.width, fmt.fmt.pix.height);
-
- return TRUE;
+ struct v4l2_format fmt;
+
+ GST_LOG_OBJECT (v4l2src, "getting size limits with format " GST_FOURCC_FORMAT,
+ GST_FOURCC_ARGS (format->pixelformat));
+
+ /* get size delimiters */
+ memset (&fmt, 0, sizeof (fmt));
+ fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ fmt.fmt.pix.width = 0;
+ fmt.fmt.pix.height = 0;
+ fmt.fmt.pix.pixelformat = format->pixelformat;
+ fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_TRY_FMT, &fmt) < 0) {
+ return FALSE;
+ }
+
+ if (min_w)
+ *min_w = fmt.fmt.pix.width;
+ if (min_h)
+ *min_h = fmt.fmt.pix.height;
+ GST_LOG_OBJECT (v4l2src, "got min size %dx%d", fmt.fmt.pix.width,
+ fmt.fmt.pix.height);
+
+ fmt.fmt.pix.width = G_MAXINT;
+ fmt.fmt.pix.height = 576;
+ if (ioctl (GST_V4L2ELEMENT (v4l2src)->video_fd, VIDIOC_TRY_FMT, &fmt) < 0) {
+ return FALSE;
+ }
+
+ if (max_w)
+ *max_w = fmt.fmt.pix.width;
+ if (max_h)
+ *max_h = fmt.fmt.pix.height;
+ GST_LOG_OBJECT (v4l2src, "got max size %dx%d", fmt.fmt.pix.width,
+ fmt.fmt.pix.height);
+
+ return TRUE;
}
diff --git a/sys/v4l2/v4l2src_calls.h b/sys/v4l2/v4l2src_calls.h
index dc5fca0c..043dddf0 100644
--- a/sys/v4l2/v4l2src_calls.h
+++ b/sys/v4l2/v4l2src_calls.h
@@ -24,30 +24,25 @@
#include "v4l2_calls.h"
-gboolean gst_v4l2src_get_capture (GstV4l2Src *v4l2src);
-gboolean gst_v4l2src_set_capture (GstV4l2Src *v4l2src,
- struct v4l2_fmtdesc *fmt,
- gint width,
- gint height);
-gboolean gst_v4l2src_capture_init (GstV4l2Src *v4l2src);
-gboolean gst_v4l2src_capture_start (GstV4l2Src *v4l2src);
-gint gst_v4l2src_grab_frame (GstV4l2Src *v4l2src);
-guint8 * gst_v4l2src_get_buffer (GstV4l2Src *v4l2src,
- gint num);
-gboolean gst_v4l2src_queue_frame (GstV4l2Src *v4l2src,
- guint i);
-gboolean gst_v4l2src_capture_stop (GstV4l2Src *v4l2src);
-gboolean gst_v4l2src_capture_deinit (GstV4l2Src *v4l2src);
-
-gboolean gst_v4l2src_fill_format_list (GstV4l2Src *v4l2src);
-gboolean gst_v4l2src_clear_format_list (GstV4l2Src *v4l2src);
+gboolean gst_v4l2src_get_capture (GstV4l2Src * v4l2src);
+gboolean gst_v4l2src_set_capture (GstV4l2Src * v4l2src,
+ struct v4l2_fmtdesc *fmt, gint width, gint height);
+gboolean gst_v4l2src_capture_init (GstV4l2Src * v4l2src);
+gboolean gst_v4l2src_capture_start (GstV4l2Src * v4l2src);
+gint gst_v4l2src_grab_frame (GstV4l2Src * v4l2src);
+guint8 *gst_v4l2src_get_buffer (GstV4l2Src * v4l2src, gint num);
+gboolean gst_v4l2src_queue_frame (GstV4l2Src * v4l2src, guint i);
+gboolean gst_v4l2src_capture_stop (GstV4l2Src * v4l2src);
+gboolean gst_v4l2src_capture_deinit (GstV4l2Src * v4l2src);
+
+gboolean gst_v4l2src_fill_format_list (GstV4l2Src * v4l2src);
+gboolean gst_v4l2src_clear_format_list (GstV4l2Src * v4l2src);
/* hacky */
-gboolean gst_v4l2src_get_size_limits (GstV4l2Src *v4l2src,
- struct v4l2_fmtdesc *fmt,
- gint *min_w, gint *max_w,
- gint *min_h, gint *max_h);
+gboolean gst_v4l2src_get_size_limits (GstV4l2Src * v4l2src,
+ struct v4l2_fmtdesc *fmt,
+ gint * min_w, gint * max_w, gint * min_h, gint * max_h);
+
+void gst_v4l2src_free_buffer (GstBuffer * buffer);
-void gst_v4l2src_free_buffer (GstBuffer *buffer);
-
#endif /* __V4L2SRC_CALLS_H__ */
diff --git a/tests/examples/spectrum/demo-osssrc.c b/tests/examples/spectrum/demo-osssrc.c
index 3431ec91..462fcf90 100644
--- a/tests/examples/spectrum/demo-osssrc.c
+++ b/tests/examples/spectrum/demo-osssrc.c
@@ -3,12 +3,14 @@
extern gboolean _gst_plugin_spew;
-void spectrum_chain(GstPad *pad,GstData *_data);
-gboolean idle_func(gpointer data);
+void spectrum_chain (GstPad * pad, GstData * _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;
@@ -20,63 +22,67 @@ int main(int argc,char *argv[]) {
_gst_plugin_spew = TRUE;
- gst_init(&argc,&argv);
- gnome_init("Spectrum","0.0.1",argc,argv);
+ gst_init (&argc, &argv);
+ gnome_init ("Spectrum", "0.0.1", argc, argv);
- bin = gst_bin_new("bin");
+ bin = gst_bin_new ("bin");
- srcfactory = gst_element_factory_find("osssrc");
- spectrumfactory = gst_element_factory_find("gstspectrum");
+ srcfactory = gst_element_factory_find ("osssrc");
+ spectrumfactory = gst_element_factory_find ("gstspectrum");
- src = gst_element_factory_create(srcfactory,"src");
- gtk_object_set(GTK_OBJECT(src),"bytes_per_read",(gulong)1024,NULL);
- spectrum = gst_element_factory_create(spectrumfactory,"spectrum");
- gtk_object_set(GTK_OBJECT(spectrum),"width",256,NULL);
+ src = gst_element_factory_create (srcfactory, "src");
+ gtk_object_set (GTK_OBJECT (src), "bytes_per_read", (gulong) 1024, NULL);
+ spectrum = gst_element_factory_create (spectrumfactory, "spectrum");
+ gtk_object_set (GTK_OBJECT (spectrum), "width", 256, NULL);
- gst_bin_add(GST_BIN(bin),GST_ELEMENT(src));
- gst_bin_add(GST_BIN(bin),GST_ELEMENT(spectrum));
+ gst_bin_add (GST_BIN (bin), GST_ELEMENT (src));
+ gst_bin_add (GST_BIN (bin), GST_ELEMENT (spectrum));
- gst_pad_link(gst_element_get_pad(src,"src"),
- gst_element_get_pad(spectrum,"sink"));
+ gst_pad_link (gst_element_get_pad (src, "src"),
+ gst_element_get_pad (spectrum, "sink"));
- spectrumpad = gst_pad_new("sink",GST_PAD_SINK);
- gst_pad_set_chain_function(spectrumpad,spectrum_chain);
+ spectrumpad = gst_pad_new ("sink", GST_PAD_SINK);
+ gst_pad_set_chain_function (spectrumpad, spectrum_chain);
- gst_pad_link(gst_element_get_pad(spectrum,"src"),spectrumpad);
+ gst_pad_link (gst_element_get_pad (spectrum, "src"), spectrumpad);
- appwindow = gnome_app_new("spectrum","Spectrum");
- drawingarea = gtk_drawing_area_new();
- gtk_drawing_area_size(GTK_DRAWING_AREA(drawingarea),256,32);
- gnome_app_set_contents(GNOME_APP(appwindow),drawingarea);
- gtk_widget_show_all(appwindow);
+ appwindow = gnome_app_new ("spectrum", "Spectrum");
+ drawingarea = gtk_drawing_area_new ();
+ gtk_drawing_area_size (GTK_DRAWING_AREA (drawingarea), 256, 32);
+ gnome_app_set_contents (GNOME_APP (appwindow), drawingarea);
+ 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,src);
+ g_idle_add (idle_func, src);
- gtk_main();
+ gtk_main ();
return 0;
}
-void spectrum_chain(GstPad *pad,GstData *_data) {
+void
+spectrum_chain (GstPad * pad, GstData * _data)
+{
GstBuffer *buf = GST_BUFFER (_data);
gint i;
guchar *data = buf->data;
- gdk_draw_rectangle(drawingarea->window,drawingarea->style->black_gc,
- TRUE,0,0,GST_BUFFER_SIZE(buf),25);
- for (i=0;i<GST_BUFFER_SIZE(buf);i++) {
- gdk_draw_rectangle(drawingarea->window,drawingarea->style->white_gc,
- TRUE,i,32-data[i],1,data[i]);
+ gdk_draw_rectangle (drawingarea->window, drawingarea->style->black_gc,
+ TRUE, 0, 0, GST_BUFFER_SIZE (buf), 25);
+ for (i = 0; i < GST_BUFFER_SIZE (buf); i++) {
+ gdk_draw_rectangle (drawingarea->window, drawingarea->style->white_gc,
+ TRUE, i, 32 - data[i], 1, data[i]);
}
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
-gboolean idle_func(gpointer data) {
+gboolean
+idle_func (gpointer data)
+{
/*gst_src_push(GST_SRC(data)); */
return TRUE;
}
diff --git a/tests/old/examples/switch/switcher.c b/tests/old/examples/switch/switcher.c
index d0bc4a67..6296f6ad 100644
--- a/tests/old/examples/switch/switcher.c
+++ b/tests/old/examples/switch/switcher.c
@@ -16,7 +16,7 @@
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
-
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -28,38 +28,36 @@ static GMainLoop *loop = NULL;
static void
-got_eos (GstElement *pipeline)
+got_eos (GstElement * pipeline)
{
g_main_loop_quit (loop);
}
static gboolean
-idle_iterate (GstElement *pipeline)
+idle_iterate (GstElement * pipeline)
{
gst_bin_iterate (GST_BIN (pipeline));
return (GST_STATE (GST_ELEMENT (pipeline)) == GST_STATE_PLAYING);
}
static gboolean
-switch_timer (GstElement *video_switch)
+switch_timer (GstElement * video_switch)
{
gint nb_sources, active_source;
-
+
g_object_get (G_OBJECT (video_switch), "nb_sources", &nb_sources, NULL);
- g_object_get (G_OBJECT (video_switch), "active_source",
- &active_source, NULL);
-
- active_source ++;
-
+ g_object_get (G_OBJECT (video_switch), "active_source", &active_source, NULL);
+
+ active_source++;
+
if (active_source > nb_sources - 1)
active_source = 0;
-
- g_object_set (G_OBJECT (video_switch), "active_source",
- active_source, NULL);
-
+
+ g_object_set (G_OBJECT (video_switch), "active_source", active_source, NULL);
+
g_message ("current number of sources : %d, active source %d",
- nb_sources, active_source);
-
+ nb_sources, active_source);
+
return (GST_STATE (GST_ELEMENT (video_switch)) == GST_STATE_PLAYING);
}
@@ -72,7 +70,7 @@ main (int argc, char *argv[])
gst_init (&argc, &argv);
loop = g_main_loop_new (NULL, FALSE);
-
+
pipeline = gst_pipeline_new ("pipeline");
src1 = gst_element_factory_make ("videotestsrc", "src1");
g_object_set (G_OBJECT (src1), "pattern", 0, NULL);
@@ -80,26 +78,25 @@ main (int argc, char *argv[])
g_object_set (G_OBJECT (src2), "pattern", 1, NULL);
video_switch = gst_element_factory_make ("switch", "video_switch");
video_sink = gst_element_factory_make ("ximagesink", "video_sink");
-
+
gst_bin_add_many (GST_BIN (pipeline), src1, src2, video_switch,
- video_sink, NULL);
-
+ video_sink, NULL);
+
gst_element_link (src1, video_switch);
gst_element_link (src2, video_switch);
gst_element_link (video_switch, video_sink);
-
- g_signal_connect (G_OBJECT (pipeline), "eos",
- G_CALLBACK (got_eos), NULL);
+
+ g_signal_connect (G_OBJECT (pipeline), "eos", G_CALLBACK (got_eos), NULL);
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);
-
+
g_idle_add ((GSourceFunc) idle_iterate, pipeline);
g_timeout_add (2000, (GSourceFunc) switch_timer, video_switch);
-
+
g_main_loop_run (loop);
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_READY);
-
+
/* unref */
gst_object_unref (GST_OBJECT (pipeline));