summaryrefslogtreecommitdiffstats
path: root/ext/audiofile
diff options
context:
space:
mode:
Diffstat (limited to 'ext/audiofile')
-rw-r--r--ext/audiofile/gstaf.c18
-rw-r--r--ext/audiofile/gstafparse.c414
-rw-r--r--ext/audiofile/gstafparse.h104
-rw-r--r--ext/audiofile/gstafsink.c252
-rw-r--r--ext/audiofile/gstafsink.h82
-rw-r--r--ext/audiofile/gstafsrc.c214
-rw-r--r--ext/audiofile/gstafsrc.h86
7 files changed, 575 insertions, 595 deletions
diff --git a/ext/audiofile/gstaf.c b/ext/audiofile/gstaf.c
index 188caf42..79979a22 100644
--- a/ext/audiofile/gstaf.c
+++ b/ext/audiofile/gstaf.c
@@ -25,10 +25,10 @@
#include "gstafsink.h"
#include "gstafparse.h"
-gboolean gst_aftypes_plugin_init (GstPlugin *plugin);
+gboolean gst_aftypes_plugin_init (GstPlugin * plugin);
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_library_load ("gstbytestream"))
return FALSE;
@@ -40,13 +40,7 @@ plugin_init (GstPlugin *plugin)
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "gstaf",
- "Audiofile plugin",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "gstaf",
+ "Audiofile plugin", plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/ext/audiofile/gstafparse.c b/ext/audiofile/gstafparse.c
index 179dd849..00c9fd81 100644
--- a/ext/audiofile/gstafparse.c
+++ b/ext/audiofile/gstafparse.c
@@ -39,65 +39,64 @@ static GstElementDetails afparse_details = {
/* AFParse signals and args */
-enum {
+enum
+{
/* FILL ME */
SIGNAL_HANDOFF,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
};
/* added a src factory function to force audio/raw MIME type */
static GstStaticPadTemplate afparse_src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- "audio/x-raw-int, "
- "rate = (int) [ 1, MAX ], "
- "channels = (int) [ 1, MAX ], "
- "endianness = (int) BYTE_ORDER, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "signed = (boolean) { true, false }, "
- "buffer-frames = (int) [ 1, MAX ]"
- )
-);
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "rate = (int) [ 1, MAX ], "
+ "channels = (int) [ 1, MAX ], "
+ "endianness = (int) BYTE_ORDER, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, "
+ "signed = (boolean) { true, false }, "
+ "buffer-frames = (int) [ 1, MAX ]")
+ );
static GstStaticPadTemplate afparse_sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (
- "audio/x-aiff; "
- "audio/x-wav; "
- "audio/x-au"
- )
-);
+ GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-aiff; " "audio/x-wav; " "audio/x-au")
+ );
static void gst_afparse_base_init (gpointer g_class);
-static void gst_afparse_class_init(GstAFParseClass *klass);
-static void gst_afparse_init (GstAFParse *afparse);
-
-static gboolean gst_afparse_open_file(GstAFParse *afparse);
-static void gst_afparse_close_file(GstAFParse *afparse);
-
-static void gst_afparse_loop(GstElement *element);
-static void gst_afparse_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gst_afparse_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-static ssize_t gst_afparse_vf_read (AFvirtualfile *vfile, void *data, size_t nbytes);
-static long gst_afparse_vf_length (AFvirtualfile *vfile);
-static ssize_t gst_afparse_vf_write (AFvirtualfile *vfile, const void *data, size_t nbytes);
-static void gst_afparse_vf_destroy(AFvirtualfile *vfile);
-static long gst_afparse_vf_seek (AFvirtualfile *vfile, long offset, int is_relative);
-static long gst_afparse_vf_tell (AFvirtualfile *vfile);
+static void gst_afparse_class_init (GstAFParseClass * klass);
+static void gst_afparse_init (GstAFParse * afparse);
+
+static gboolean gst_afparse_open_file (GstAFParse * afparse);
+static void gst_afparse_close_file (GstAFParse * afparse);
+
+static void gst_afparse_loop (GstElement * element);
+static void gst_afparse_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_afparse_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static ssize_t gst_afparse_vf_read (AFvirtualfile * vfile, void *data,
+ size_t nbytes);
+static long gst_afparse_vf_length (AFvirtualfile * vfile);
+static ssize_t gst_afparse_vf_write (AFvirtualfile * vfile, const void *data,
+ size_t nbytes);
+static void gst_afparse_vf_destroy (AFvirtualfile * vfile);
+static long gst_afparse_vf_seek (AFvirtualfile * vfile, long offset,
+ int is_relative);
+static long gst_afparse_vf_tell (AFvirtualfile * vfile);
GType
-gst_afparse_get_type (void)
+gst_afparse_get_type (void)
{
static GType afparse_type = 0;
@@ -113,7 +112,9 @@ gst_afparse_get_type (void)
0,
(GInstanceInitFunc) gst_afparse_init,
};
- afparse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstAFParse", &afparse_info, 0);
+ afparse_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstAFParse", &afparse_info,
+ 0);
}
return afparse_type;
}
@@ -132,34 +133,36 @@ gst_afparse_base_init (gpointer g_class)
}
static void
-gst_afparse_class_init (GstAFParseClass *klass)
+gst_afparse_class_init (GstAFParseClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gobject_class->set_property = gst_afparse_set_property;
gobject_class->get_property = gst_afparse_get_property;
}
-static void
-gst_afparse_init (GstAFParse *afparse)
+static void
+gst_afparse_init (GstAFParse * afparse)
{
- afparse->srcpad = gst_pad_new_from_template (
- gst_element_get_pad_template (GST_ELEMENT (afparse), "src"), "src");
+ afparse->srcpad =
+ gst_pad_new_from_template (gst_element_get_pad_template (GST_ELEMENT
+ (afparse), "src"), "src");
gst_pad_use_explicit_caps (afparse->srcpad);
gst_element_add_pad (GST_ELEMENT (afparse), afparse->srcpad);
- afparse->sinkpad = gst_pad_new_from_template (
- gst_element_get_pad_template (GST_ELEMENT (afparse), "sink"), "sink");
+ afparse->sinkpad =
+ gst_pad_new_from_template (gst_element_get_pad_template (GST_ELEMENT
+ (afparse), "sink"), "sink");
gst_element_add_pad (GST_ELEMENT (afparse), afparse->sinkpad);
gst_element_set_loop_function (GST_ELEMENT (afparse), gst_afparse_loop);
- afparse->vfile = af_virtual_file_new();
+ afparse->vfile = af_virtual_file_new ();
afparse->vfile->closure = NULL;
afparse->vfile->read = gst_afparse_vf_read;
afparse->vfile->length = gst_afparse_vf_length;
@@ -184,7 +187,7 @@ gst_afparse_init (GstAFParse *afparse)
}
static void
-gst_afparse_loop(GstElement *element)
+gst_afparse_loop (GstElement * element)
{
GstAFParse *afparse;
GstBuffer *buf;
@@ -194,14 +197,14 @@ gst_afparse_loop(GstElement *element)
GstByteStream *bs;
int s_format, v_format, s_width, v_width;
- afparse = GST_AFPARSE(element);
+ afparse = GST_AFPARSE (element);
afparse->vfile->closure = bs = gst_bytestream_new (afparse->sinkpad);
/* just stop if we cannot open the file */
- if (!gst_afparse_open_file (afparse)){
+ if (!gst_afparse_open_file (afparse)) {
gst_bytestream_destroy ((GstByteStream *) afparse->vfile->closure);
- gst_pad_push (afparse->srcpad, GST_DATA(gst_event_new (GST_EVENT_EOS)));
+ gst_pad_push (afparse->srcpad, GST_DATA (gst_event_new (GST_EVENT_EOS)));
gst_element_set_eos (GST_ELEMENT (afparse));
return;
}
@@ -209,91 +212,91 @@ gst_afparse_loop(GstElement *element)
/* if audiofile changes the data in any way, we have to access
* the audio data via afReadFrames. Otherwise we can just access
* the data directly. */
- afGetSampleFormat(afparse->file, AF_DEFAULT_TRACK, &s_format, &s_width);
- afGetVirtualSampleFormat(afparse->file, AF_DEFAULT_TRACK, &v_format, &v_width);
- if (afGetCompression != AF_COMPRESSION_NONE ||
- afGetByteOrder(afparse->file, AF_DEFAULT_TRACK) != afGetVirtualByteOrder(afparse->file, AF_DEFAULT_TRACK) ||
- s_format != v_format ||
- s_width != v_width) {
+ afGetSampleFormat (afparse->file, AF_DEFAULT_TRACK, &s_format, &s_width);
+ afGetVirtualSampleFormat (afparse->file, AF_DEFAULT_TRACK, &v_format,
+ &v_width);
+ if (afGetCompression != AF_COMPRESSION_NONE
+ || afGetByteOrder (afparse->file,
+ AF_DEFAULT_TRACK) != afGetVirtualByteOrder (afparse->file,
+ AF_DEFAULT_TRACK) || s_format != v_format || s_width != v_width) {
bypass_afread = FALSE;
}
- if (bypass_afread){
- GST_DEBUG("will bypass afReadFrames\n");
+ if (bypass_afread) {
+ GST_DEBUG ("will bypass afReadFrames\n");
}
-
+
frames_to_bytes = afparse->channels * afparse->width / 8;
frames_per_read = afparse->frames_per_read;
bytes_per_read = frames_per_read * frames_to_bytes;
-
- afSeekFrame(afparse->file, AF_DEFAULT_TRACK, 0);
- if (bypass_afread){
- GstEvent *event = NULL;
- guint32 waiting;
- guint32 got_bytes;
+ afSeekFrame (afparse->file, AF_DEFAULT_TRACK, 0);
+
+ if (bypass_afread) {
+ GstEvent *event = NULL;
+ guint32 waiting;
+ guint32 got_bytes;
do {
got_bytes = gst_bytestream_read (bs, &buf, bytes_per_read);
if (got_bytes == 0) {
- /* we need to check for an event. */
- gst_bytestream_get_status (bs, &waiting, &event);
- if (event && GST_EVENT_TYPE(event) == GST_EVENT_EOS) {
- gst_pad_push (afparse->srcpad,
- GST_DATA (gst_event_new (GST_EVENT_EOS)));
- gst_element_set_eos (GST_ELEMENT (afparse));
- break;
- }
- }
- else {
- GST_BUFFER_TIMESTAMP(buf) = afparse->timestamp;
- gst_pad_push (afparse->srcpad, GST_DATA (buf));
- if (got_bytes != bytes_per_read){
+ /* we need to check for an event. */
+ gst_bytestream_get_status (bs, &waiting, &event);
+ if (event && GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
+ gst_pad_push (afparse->srcpad,
+ GST_DATA (gst_event_new (GST_EVENT_EOS)));
+ gst_element_set_eos (GST_ELEMENT (afparse));
+ break;
+ }
+ } else {
+ GST_BUFFER_TIMESTAMP (buf) = afparse->timestamp;
+ gst_pad_push (afparse->srcpad, GST_DATA (buf));
+ if (got_bytes != bytes_per_read) {
/* this shouldn't happen very often */
/* FIXME calculate the timestamps based on the fewer bytes received */
- }
- else {
- afparse->timestamp += frames_per_read * 1E9 / afparse->rate;
+ } else {
+ afparse->timestamp += frames_per_read * 1E9 / afparse->rate;
}
}
}
while (TRUE);
- }
- else {
+ } else {
do {
buf = gst_buffer_new_and_alloc (bytes_per_read);
- GST_BUFFER_TIMESTAMP(buf) = afparse->timestamp;
- data = GST_BUFFER_DATA(buf);
- numframes = afReadFrames (afparse->file, AF_DEFAULT_TRACK, data, frames_per_read);
+ GST_BUFFER_TIMESTAMP (buf) = afparse->timestamp;
+ data = GST_BUFFER_DATA (buf);
+ numframes =
+ afReadFrames (afparse->file, AF_DEFAULT_TRACK, data, frames_per_read);
/* events are handled in gst_afparse_vf_read so if there are no
* frames it must be EOS */
- if (numframes < 1){
- gst_buffer_unref(buf);
+ if (numframes < 1) {
+ gst_buffer_unref (buf);
- gst_pad_push (afparse->srcpad, GST_DATA(gst_event_new (GST_EVENT_EOS)));
- gst_element_set_eos (GST_ELEMENT (afparse));
- break;
+ gst_pad_push (afparse->srcpad,
+ GST_DATA (gst_event_new (GST_EVENT_EOS)));
+ gst_element_set_eos (GST_ELEMENT (afparse));
+ break;
}
- GST_BUFFER_SIZE(buf) = numframes * frames_to_bytes;
+ GST_BUFFER_SIZE (buf) = numframes * frames_to_bytes;
gst_pad_push (afparse->srcpad, GST_DATA (buf));
afparse->timestamp += numframes * 1E9 / afparse->rate;
}
while (TRUE);
}
gst_afparse_close_file (afparse);
-
- gst_bytestream_destroy ((GstByteStream*) afparse->vfile->closure);
+
+ gst_bytestream_destroy ((GstByteStream *) afparse->vfile->closure);
}
static void
-gst_afparse_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
+gst_afparse_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstAFParse *afparse;
@@ -306,16 +309,16 @@ gst_afparse_set_property (GObject *object, guint prop_id,
}
}
-static void
-gst_afparse_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
+static void
+gst_afparse_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
{
GstAFParse *afparse;
-
+
g_return_if_fail (GST_IS_AFPARSE (object));
-
+
afparse = GST_AFPARSE (object);
-
+
switch (prop_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -324,13 +327,14 @@ gst_afparse_get_property (GObject *object, guint prop_id,
}
gboolean
-gst_afparse_plugin_init (GstPlugin *plugin)
+gst_afparse_plugin_init (GstPlugin * plugin)
{
- /* load audio support library */
+ /* load audio support library */
if (!gst_library_load ("gstaudio"))
return FALSE;
- if (!gst_element_register (plugin, "afparse", GST_RANK_NONE, GST_TYPE_AFPARSE))
+ if (!gst_element_register (plugin, "afparse", GST_RANK_NONE,
+ GST_TYPE_AFPARSE))
return FALSE;
return TRUE;
@@ -338,60 +342,56 @@ gst_afparse_plugin_init (GstPlugin *plugin)
/* this is where we open the audiofile */
static gboolean
-gst_afparse_open_file (GstAFParse *afparse)
+gst_afparse_open_file (GstAFParse * afparse)
{
g_return_val_if_fail (!GST_FLAG_IS_SET (afparse, GST_AFPARSE_OPEN), FALSE);
/* open the file */
- GST_DEBUG("opening vfile %p\n", afparse->vfile);
+ GST_DEBUG ("opening vfile %p\n", afparse->vfile);
afparse->file = afOpenVirtualFile (afparse->vfile, "r", AF_NULL_FILESETUP);
- if (afparse->file == AF_NULL_FILEHANDLE)
- {
+ if (afparse->file == AF_NULL_FILEHANDLE) {
/* this should never happen */
g_warning ("ERROR: gstafparse: Could not open virtual file for reading\n");
return FALSE;
}
- GST_DEBUG("vfile opened\n");
+ GST_DEBUG ("vfile opened\n");
/* get the audiofile audio parameters */
{
int sampleFormat, sampleWidth;
+
afparse->channels = afGetChannels (afparse->file, AF_DEFAULT_TRACK);
- afGetSampleFormat (afparse->file, AF_DEFAULT_TRACK,
- &sampleFormat, &sampleWidth);
- switch (sampleFormat)
- {
+ afGetSampleFormat (afparse->file, AF_DEFAULT_TRACK,
+ &sampleFormat, &sampleWidth);
+ switch (sampleFormat) {
case AF_SAMPFMT_TWOSCOMP:
- afparse->is_signed = TRUE;
- break;
+ afparse->is_signed = TRUE;
+ break;
case AF_SAMPFMT_UNSIGNED:
- afparse->is_signed = FALSE;
- break;
+ afparse->is_signed = FALSE;
+ break;
case AF_SAMPFMT_FLOAT:
case AF_SAMPFMT_DOUBLE:
- GST_DEBUG ("ERROR: float data not supported yet !\n");
+ GST_DEBUG ("ERROR: float data not supported yet !\n");
}
afparse->rate = (guint) afGetRate (afparse->file, AF_DEFAULT_TRACK);
afparse->width = sampleWidth;
- GST_DEBUG (
- "input file: %d channels, %d width, %d rate, signed %s\n",
- afparse->channels, afparse->width, afparse->rate,
- afparse->is_signed ? "yes" : "no");
+ GST_DEBUG ("input file: %d channels, %d width, %d rate, signed %s\n",
+ afparse->channels, afparse->width, afparse->rate,
+ afparse->is_signed ? "yes" : "no");
}
-
+
/* set caps on src */
- /*FIXME: add all the possible formats, especially float ! */
- gst_pad_set_explicit_caps (afparse->srcpad,
- gst_caps_new_simple (
- "audio/x-raw-int",
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, afparse->is_signed,
- "width", G_TYPE_INT, afparse->width,
- "depth", G_TYPE_INT, afparse->width,
- "rate", G_TYPE_INT, afparse->rate,
- "channels", G_TYPE_INT, afparse->channels,
- NULL));
+ /*FIXME: add all the possible formats, especially float ! */
+ gst_pad_set_explicit_caps (afparse->srcpad,
+ gst_caps_new_simple ("audio/x-raw-int",
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "signed", G_TYPE_BOOLEAN, afparse->is_signed,
+ "width", G_TYPE_INT, afparse->width,
+ "depth", G_TYPE_INT, afparse->width,
+ "rate", G_TYPE_INT, afparse->rate,
+ "channels", G_TYPE_INT, afparse->channels, NULL));
GST_FLAG_SET (afparse, GST_AFPARSE_OPEN);
@@ -399,126 +399,124 @@ gst_afparse_open_file (GstAFParse *afparse)
}
static void
-gst_afparse_close_file (GstAFParse *afparse)
+gst_afparse_close_file (GstAFParse * afparse)
{
g_return_if_fail (GST_FLAG_IS_SET (afparse, GST_AFPARSE_OPEN));
- if (afCloseFile (afparse->file) != 0)
- {
+ if (afCloseFile (afparse->file) != 0) {
g_warning ("afparse: oops, error closing !\n");
- }
- else {
+ } else {
GST_FLAG_UNSET (afparse, GST_AFPARSE_OPEN);
}
}
-static ssize_t
-gst_afparse_vf_read (AFvirtualfile *vfile, void *data, size_t nbytes)
+static ssize_t
+gst_afparse_vf_read (AFvirtualfile * vfile, void *data, size_t nbytes)
{
- GstByteStream *bs = (GstByteStream*)vfile->closure;
- guint8 *bytes = NULL;
- GstEvent *event = NULL;
- guint32 waiting;
- guint32 got_bytes;
- /*gchar *debug_str;*/
-
- got_bytes = gst_bytestream_peek_bytes(bs, &bytes, nbytes);
-
- while (got_bytes != nbytes){
+ GstByteStream *bs = (GstByteStream *) vfile->closure;
+ guint8 *bytes = NULL;
+ GstEvent *event = NULL;
+ guint32 waiting;
+ guint32 got_bytes;
+
+ /*gchar *debug_str; */
+
+ got_bytes = gst_bytestream_peek_bytes (bs, &bytes, nbytes);
+
+ while (got_bytes != nbytes) {
/* handle events */
gst_bytestream_get_status (bs, &waiting, &event);
/* FIXME this event handling isn't right yet */
- if (!event){
- /*g_print("no event found with %u bytes\n", got_bytes);*/
+ if (!event) {
+ /*g_print("no event found with %u bytes\n", got_bytes); */
return 0;
}
- switch (GST_EVENT_TYPE(event)) {
+ switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
- return 0;
+ return 0;
case GST_EVENT_FLUSH:
- GST_DEBUG("flush");
- break;
+ GST_DEBUG ("flush");
+ break;
case GST_EVENT_DISCONTINUOUS:
- GST_DEBUG("seek done");
- got_bytes = gst_bytestream_peek_bytes(bs, &bytes, nbytes);
- break;
+ GST_DEBUG ("seek done");
+ got_bytes = gst_bytestream_peek_bytes (bs, &bytes, nbytes);
+ break;
default:
- g_warning("unknown event %d", GST_EVENT_TYPE(event));
- got_bytes = gst_bytestream_peek_bytes(bs, &bytes, nbytes);
+ g_warning ("unknown event %d", GST_EVENT_TYPE (event));
+ got_bytes = gst_bytestream_peek_bytes (bs, &bytes, nbytes);
}
}
-
- memcpy(data, bytes, got_bytes);
- gst_bytestream_flush_fast(bs, got_bytes);
+
+ memcpy (data, bytes, got_bytes);
+ gst_bytestream_flush_fast (bs, got_bytes);
/* debug_str = g_strndup((gchar*)bytes, got_bytes);
- g_print("read %u bytes: %s\n", got_bytes, debug_str);
- */
+ g_print("read %u bytes: %s\n", got_bytes, debug_str);
+ */
return got_bytes;
}
-static long
-gst_afparse_vf_seek (AFvirtualfile *vfile, long offset, int is_relative)
+static long
+gst_afparse_vf_seek (AFvirtualfile * vfile, long offset, int is_relative)
{
- GstByteStream *bs = (GstByteStream*)vfile->closure;
+ GstByteStream *bs = (GstByteStream *) vfile->closure;
GstSeekType method;
- guint64 current_offset = gst_bytestream_tell(bs);
+ guint64 current_offset = gst_bytestream_tell (bs);
- if (!is_relative){
- if ((guint64)offset == current_offset) {
+ if (!is_relative) {
+ if ((guint64) offset == current_offset) {
/* this seems to happen before every read - bad audiofile */
return offset;
}
method = GST_SEEK_METHOD_SET;
+ } else {
+ if (offset == 0)
+ return current_offset;
+ method = GST_SEEK_METHOD_CUR;
}
- else {
- if (offset == 0) return current_offset;
- method = GST_SEEK_METHOD_CUR;
- }
-
- if (gst_bytestream_seek(bs, (gint64)offset, method)){
- GST_DEBUG("doing seek to %d", (gint)offset);
+
+ if (gst_bytestream_seek (bs, (gint64) offset, method)) {
+ GST_DEBUG ("doing seek to %d", (gint) offset);
return offset;
}
return 0;
}
-static long
-gst_afparse_vf_length (AFvirtualfile *vfile)
+static long
+gst_afparse_vf_length (AFvirtualfile * vfile)
{
- GstByteStream *bs = (GstByteStream*)vfile->closure;
+ GstByteStream *bs = (GstByteStream *) vfile->closure;
guint64 length;
- length = gst_bytestream_length(bs);
- GST_DEBUG("doing length: %" G_GUINT64_FORMAT, length);
+ length = gst_bytestream_length (bs);
+ GST_DEBUG ("doing length: %" G_GUINT64_FORMAT, length);
return length;
}
-static ssize_t
-gst_afparse_vf_write (AFvirtualfile *vfile, const void *data, size_t nbytes)
+static ssize_t
+gst_afparse_vf_write (AFvirtualfile * vfile, const void *data, size_t nbytes)
{
- /* GstByteStream *bs = (GstByteStream*)vfile->closure;*/
- g_warning("shouldn't write to a readonly pad");
+ /* GstByteStream *bs = (GstByteStream*)vfile->closure; */
+ g_warning ("shouldn't write to a readonly pad");
return 0;
}
-static void
-gst_afparse_vf_destroy(AFvirtualfile *vfile)
+static void
+gst_afparse_vf_destroy (AFvirtualfile * vfile)
{
- /* GstByteStream *bs = (GstByteStream*)vfile->closure;*/
+ /* GstByteStream *bs = (GstByteStream*)vfile->closure; */
- GST_DEBUG("doing destroy");
+ GST_DEBUG ("doing destroy");
}
-static long
-gst_afparse_vf_tell (AFvirtualfile *vfile)
+static long
+gst_afparse_vf_tell (AFvirtualfile * vfile)
{
- GstByteStream *bs = (GstByteStream*)vfile->closure;
+ GstByteStream *bs = (GstByteStream *) vfile->closure;
guint64 offset;
- offset = gst_bytestream_tell(bs);
- GST_DEBUG("doing tell: %" G_GUINT64_FORMAT, offset);
+ offset = gst_bytestream_tell (bs);
+ GST_DEBUG ("doing tell: %" G_GUINT64_FORMAT, offset);
return offset;
}
-
diff --git a/ext/audiofile/gstafparse.h b/ext/audiofile/gstafparse.h
index 0f636dcd..941b427b 100644
--- a/ext/audiofile/gstafparse.h
+++ b/ext/audiofile/gstafparse.h
@@ -27,13 +27,14 @@
#include <gst/gst.h>
#include <gst/bytestream/bytestream.h>
-#include <audiofile.h> /* what else are we to do */
+#include <audiofile.h> /* what else are we to do */
#include <af_vfs.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
/*GstElementDetails gst_afparse_details;*/
@@ -50,55 +51,58 @@ extern "C" {
#define GST_IS_AFPARSE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AFPARSE))
-typedef struct _GstAFParse GstAFParse;
-typedef struct _GstAFParseClass GstAFParseClass;
-
-typedef enum {
- GST_AFPARSE_OPEN = GST_ELEMENT_FLAG_LAST,
-
- GST_AFPARSE_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
-} GstAFParseFlags;
-
-struct _GstAFParse {
- GstElement element;
- GstPad *srcpad;
- GstPad *sinkpad;
-
- AFvirtualfile *vfile;
- AFfilehandle file;
- int format;
- int channels;
- int width;
- unsigned int rate;
- gboolean is_signed;
- int type; /* type of output, compare to audiofile.h
- * RAW, AIFF, AIFFC, NEXTSND, WAVE
- */
- /* blocking */
- gulong curoffset;
- gulong bytes_per_read;
- gint frames_per_read;
-
- gulong seq;
- gint64 timestamp;
- /* FIXME : endianness is a little cryptic at this point */
- int endianness_data; /* 4321 or 1234 */
- int endianness_wanted; /* same thing, but what the output format wants */
- int endianness_output; /* what the output endianness will be */
-};
-
-struct _GstAFParseClass {
- GstElementClass parent_class;
-
- /* signals */
- void (*handoff) (GstElement *element,GstPad *pad);
-};
-
-gboolean gst_afparse_plugin_init (GstPlugin *plugin);
+ typedef struct _GstAFParse GstAFParse;
+ typedef struct _GstAFParseClass GstAFParseClass;
+
+ typedef enum
+ {
+ GST_AFPARSE_OPEN = GST_ELEMENT_FLAG_LAST,
+
+ GST_AFPARSE_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
+ } GstAFParseFlags;
+
+ struct _GstAFParse
+ {
+ GstElement element;
+ GstPad *srcpad;
+ GstPad *sinkpad;
+
+ AFvirtualfile *vfile;
+ AFfilehandle file;
+ int format;
+ int channels;
+ int width;
+ unsigned int rate;
+ gboolean is_signed;
+ int type; /* type of output, compare to audiofile.h
+ * RAW, AIFF, AIFFC, NEXTSND, WAVE
+ */
+ /* blocking */
+ gulong curoffset;
+ gulong bytes_per_read;
+ gint frames_per_read;
+
+ gulong seq;
+ gint64 timestamp;
+ /* FIXME : endianness is a little cryptic at this point */
+ int endianness_data; /* 4321 or 1234 */
+ int endianness_wanted; /* same thing, but what the output format wants */
+ int endianness_output; /* what the output endianness will be */
+ };
+
+ struct _GstAFParseClass
+ {
+ GstElementClass parent_class;
+
+ /* signals */
+ void (*handoff) (GstElement * element, GstPad * pad);
+ };
+
+ gboolean gst_afparse_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_AFPARSE_H__ */
+#endif /* __GST_AFPARSE_H__ */
diff --git a/ext/audiofile/gstafsink.c b/ext/audiofile/gstafsink.c
index 515ae4e2..eeac509f 100644
--- a/ext/audiofile/gstafsink.c
+++ b/ext/audiofile/gstafsink.c
@@ -43,13 +43,15 @@ static GstElementDetails afsink_details = {
/* AFSink signals and args */
-enum {
+enum
+{
/* FILL ME */
SIGNAL_HANDOFF,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_TYPE,
ARG_OUTPUT_ENDIANNESS,
@@ -59,68 +61,66 @@ enum {
/* added a sink factory function to force audio/raw MIME type */
/* I think the caps can be broader, we need to change that somehow */
static GstStaticPadTemplate afsink_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, 2 ], "
- "endianness = (int) BYTE_ORDER, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "signed = (boolean) { true, false }, "
- "buffer-frames = (int) [ 1, MAX ]"
- )
-);
+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, 2 ], "
+ "endianness = (int) BYTE_ORDER, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, "
+ "signed = (boolean) { true, false }, "
+ "buffer-frames = (int) [ 1, MAX ]")
+ );
/* we use an enum for the output type arg */
#define GST_TYPE_AFSINK_TYPES (gst_afsink_types_get_type())
/* FIXME: fix the string ints to be string-converted from the audiofile.h types */
static GType
-gst_afsink_types_get_type (void)
+gst_afsink_types_get_type (void)
{
static GType afsink_types_type = 0;
static GEnumValue afsink_types[] = {
{AF_FILE_RAWDATA, "0", "raw PCM"},
- {AF_FILE_AIFFC, "1", "AIFFC"},
- {AF_FILE_AIFF, "2", "AIFF"},
+ {AF_FILE_AIFFC, "1", "AIFFC"},
+ {AF_FILE_AIFF, "2", "AIFF"},
{AF_FILE_NEXTSND, "3", "Next/SND"},
- {AF_FILE_WAVE, "4", "Wave"},
+ {AF_FILE_WAVE, "4", "Wave"},
{0, NULL, NULL},
};
-
- if (!afsink_types_type)
- {
- afsink_types_type = g_enum_register_static ("GstAudiosinkTypes", afsink_types);
+
+ if (!afsink_types_type) {
+ afsink_types_type =
+ g_enum_register_static ("GstAudiosinkTypes", afsink_types);
}
return afsink_types_type;
}
-static void gst_afsink_base_init (gpointer g_class);
-static void gst_afsink_class_init (GstAFSinkClass *klass);
-static void gst_afsink_init (GstAFSink *afsink);
+static void gst_afsink_base_init (gpointer g_class);
+static void gst_afsink_class_init (GstAFSinkClass * klass);
+static void gst_afsink_init (GstAFSink * afsink);
-static gboolean gst_afsink_open_file (GstAFSink *sink);
-static void gst_afsink_close_file (GstAFSink *sink);
+static gboolean gst_afsink_open_file (GstAFSink * sink);
+static void gst_afsink_close_file (GstAFSink * sink);
-static void gst_afsink_chain (GstPad *pad,GstData *_data);
+static void gst_afsink_chain (GstPad * pad, GstData * _data);
-static void gst_afsink_set_property (GObject *object, guint prop_id, const GValue *value,
- GParamSpec *pspec);
-static void gst_afsink_get_property (GObject *object, guint prop_id, GValue *value,
- GParamSpec *pspec);
+static void gst_afsink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_afsink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static gboolean gst_afsink_handle_event (GstPad *pad, GstEvent *event);
+static gboolean gst_afsink_handle_event (GstPad * pad, GstEvent * event);
-static GstElementStateReturn gst_afsink_change_state (GstElement *element);
+static GstElementStateReturn gst_afsink_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
static guint gst_afsink_signals[LAST_SIGNAL] = { 0 };
GType
-gst_afsink_get_type (void)
+gst_afsink_get_type (void)
{
static GType afsink_type = 0;
@@ -136,7 +136,8 @@ gst_afsink_get_type (void)
0,
(GInstanceInitFunc) gst_afsink_init,
};
- afsink_type = g_type_register_static (GST_TYPE_ELEMENT, "GstAFSink", &afsink_info, 0);
+ afsink_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstAFSink", &afsink_info, 0);
}
return afsink_type;
}
@@ -152,32 +153,26 @@ gst_afsink_base_init (gpointer g_class)
}
static void
-gst_afsink_class_init (GstAFSinkClass *klass)
+gst_afsink_class_init (GstAFSinkClass * 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_element_class_install_std_props (
- GST_ELEMENT_CLASS (klass),
- "location", ARG_LOCATION, G_PARAM_READWRITE,
- NULL);
-
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_TYPE,
- g_param_spec_enum("type","type","type",
- GST_TYPE_AFSINK_TYPES,0,G_PARAM_READWRITE)); /* CHECKME! */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_OUTPUT_ENDIANNESS,
- g_param_spec_int("endianness","endianness","endianness",
- G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
-
+ gst_element_class_install_std_props (GST_ELEMENT_CLASS (klass),
+ "location", ARG_LOCATION, G_PARAM_READWRITE, NULL);
+
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TYPE, g_param_spec_enum ("type", "type", "type", GST_TYPE_AFSINK_TYPES, 0, G_PARAM_READWRITE)); /* CHECKME! */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_OUTPUT_ENDIANNESS, g_param_spec_int ("endianness", "endianness", "endianness", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
+
gst_afsink_signals[SIGNAL_HANDOFF] =
- g_signal_new ("handoff", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstAFSinkClass, 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 (GstAFSinkClass, handoff), NULL, NULL,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
gobject_class->set_property = gst_afsink_set_property;
@@ -186,13 +181,14 @@ gst_afsink_class_init (GstAFSinkClass *klass)
gstelement_class->change_state = gst_afsink_change_state;
}
-static void
-gst_afsink_init (GstAFSink *afsink)
+static void
+gst_afsink_init (GstAFSink * afsink)
{
/* GstPad *pad; this is now done in the struct */
- afsink->sinkpad = gst_pad_new_from_template (
- gst_element_get_pad_template (GST_ELEMENT (afsink), "sink"), "sink");
+ afsink->sinkpad =
+ gst_pad_new_from_template (gst_element_get_pad_template (GST_ELEMENT
+ (afsink), "sink"), "sink");
gst_element_add_pad (GST_ELEMENT (afsink), afsink->sinkpad);
gst_pad_set_chain_function (afsink->sinkpad, gst_afsink_chain);
@@ -209,7 +205,8 @@ gst_afsink_init (GstAFSink *afsink)
}
static void
-gst_afsink_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_afsink_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstAFSink *sink;
@@ -220,15 +217,14 @@ gst_afsink_set_property (GObject *object, guint prop_id, const GValue *value, GP
case ARG_LOCATION:
/* the element must be stopped or paused in order to do this */
g_return_if_fail ((GST_STATE (sink) < GST_STATE_PLAYING)
- || (GST_STATE (sink) == GST_STATE_PAUSED));
+ || (GST_STATE (sink) == GST_STATE_PAUSED));
if (sink->filename)
g_free (sink->filename);
sink->filename = g_strdup (g_value_get_string (value));
- if ( (GST_STATE (sink) == GST_STATE_PAUSED)
- && (sink->filename != NULL))
- {
- gst_afsink_close_file (sink);
- gst_afsink_open_file (sink);
+ if ((GST_STATE (sink) == GST_STATE_PAUSED)
+ && (sink->filename != NULL)) {
+ gst_afsink_close_file (sink);
+ gst_afsink_open_file (sink);
}
break;
@@ -236,27 +232,29 @@ gst_afsink_set_property (GObject *object, guint prop_id, const GValue *value, GP
sink->type = g_value_get_enum (value);
break;
case ARG_OUTPUT_ENDIANNESS:
- {
- int end = g_value_get_int (value);
- if (end == 1234 || end == 4321)
- sink->endianness_output = end;
- }
+ {
+ int end = g_value_get_int (value);
+
+ if (end == 1234 || end == 4321)
+ sink->endianness_output = end;
+ }
break;
default:
break;
}
}
-static void
-gst_afsink_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+static void
+gst_afsink_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstAFSink *sink;
-
+
/* it's not null if we got it, but it might not be ours */
g_return_if_fail (GST_IS_AFSINK (object));
-
+
sink = GST_AFSINK (object);
-
+
switch (prop_id) {
case ARG_LOCATION:
g_value_set_string (value, sink->filename);
@@ -274,7 +272,7 @@ gst_afsink_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
}
gboolean
-gst_afsink_plugin_init (GstPlugin *plugin)
+gst_afsink_plugin_init (GstPlugin * plugin)
{
if (!gst_element_register (plugin, "afsink", GST_RANK_NONE, GST_TYPE_AFSINK))
return FALSE;
@@ -288,35 +286,34 @@ gst_afsink_plugin_init (GstPlugin *plugin)
/* this is where we open the audiofile */
static gboolean
-gst_afsink_open_file (GstAFSink *sink)
+gst_afsink_open_file (GstAFSink * sink)
{
AFfilesetup outfilesetup;
const GstCaps *caps;
GstStructure *structure;
- int sample_format; /* audiofile's sample format, look in audiofile.h */
- int byte_order = 0; /* audiofile's byte order defines */
-
+ int sample_format; /* audiofile's sample format, look in audiofile.h */
+ int byte_order = 0; /* audiofile's byte order defines */
+
g_return_val_if_fail (!GST_FLAG_IS_SET (sink, GST_AFSINK_OPEN), FALSE);
/* get the audio parameters */
g_return_val_if_fail (GST_IS_PAD (sink->sinkpad), FALSE);
caps = GST_PAD_CAPS (sink->sinkpad);
-
+
if (caps == NULL) {
g_critical ("gstafsink chain : Could not get caps of pad !\n");
} else {
structure = gst_caps_get_structure (caps, 0);
- gst_structure_get_int (structure, "channels", &sink->channels);
- gst_structure_get_int (structure, "width", &sink->width);
- gst_structure_get_int (structure, "rate", &sink->rate);
+ gst_structure_get_int (structure, "channels", &sink->channels);
+ gst_structure_get_int (structure, "width", &sink->width);
+ gst_structure_get_int (structure, "rate", &sink->rate);
gst_structure_get_boolean (structure, "signed", &sink->is_signed);
gst_structure_get_int (structure, "endianness", &sink->endianness_data);
}
GST_DEBUG ("channels %d, width %d, rate %d, signed %s",
- sink->channels, sink->width, sink->rate,
- sink->is_signed ? "yes" : "no");
- GST_DEBUG ("endianness: data %d, output %d",
- sink->endianness_data, sink->endianness_output);
+ sink->channels, sink->width, sink->rate, sink->is_signed ? "yes" : "no");
+ GST_DEBUG ("endianness: data %d, output %d",
+ sink->endianness_data, sink->endianness_output);
/* setup the output file */
if (sink->is_signed)
sample_format = AF_SAMPFMT_TWOSCOMP;
@@ -324,11 +321,11 @@ gst_afsink_open_file (GstAFSink *sink)
sample_format = AF_SAMPFMT_UNSIGNED;
/* FIXME : this check didn't seem to work, so let the output endianness be set */
/*
- if (sink->endianness_data == sink->endianness_wanted)
- byte_order = AF_BYTEORDER_LITTLEENDIAN;
- else
- byte_order = AF_BYTEORDER_BIGENDIAN;
- */
+ if (sink->endianness_data == sink->endianness_wanted)
+ byte_order = AF_BYTEORDER_LITTLEENDIAN;
+ else
+ byte_order = AF_BYTEORDER_BIGENDIAN;
+ */
if (sink->endianness_output == 1234)
byte_order = AF_BYTEORDER_LITTLEENDIAN;
else
@@ -338,41 +335,37 @@ gst_afsink_open_file (GstAFSink *sink)
afInitFileFormat (outfilesetup, sink->type);
afInitChannels (outfilesetup, AF_DEFAULT_TRACK, sink->channels);
afInitRate (outfilesetup, AF_DEFAULT_TRACK, sink->rate);
- afInitSampleFormat (outfilesetup, AF_DEFAULT_TRACK,
- sample_format, sink->width);
+ afInitSampleFormat (outfilesetup, AF_DEFAULT_TRACK,
+ sample_format, sink->width);
/* open it */
sink->file = afOpenFile (sink->filename, "w", outfilesetup);
- if (sink->file == AF_NULL_FILEHANDLE)
- {
- GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE,
- (_("Could not open file \"%s\" for writing."), sink->filename),
- ("system error: %s", strerror (errno)));
+ if (sink->file == AF_NULL_FILEHANDLE) {
+ GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE,
+ (_("Could not open file \"%s\" for writing."), sink->filename),
+ ("system error: %s", strerror (errno)));
return FALSE;
- }
+ }
afFreeFileSetup (outfilesetup);
/* afSetVirtualByteOrder (sink->file, AF_DEFAULT_TRACK, byte_order); */
-
+
GST_FLAG_SET (sink, GST_AFSINK_OPEN);
return TRUE;
}
static void
-gst_afsink_close_file (GstAFSink *sink)
+gst_afsink_close_file (GstAFSink * sink)
{
/* g_print ("DEBUG: closing sinkfile...\n"); */
g_return_if_fail (GST_FLAG_IS_SET (sink, GST_AFSINK_OPEN));
/* g_print ("DEBUG: past flag test\n"); */
/* if (fclose (sink->file) != 0) */
- if (afCloseFile (sink->file) != 0)
- {
+ if (afCloseFile (sink->file) != 0) {
GST_ELEMENT_ERROR (sink, RESOURCE, CLOSE,
- (_("Error closing file \"%s\"."), sink->filename),
- GST_ERROR_SYSTEM);
- }
- else {
+ (_("Error closing file \"%s\"."), sink->filename), GST_ERROR_SYSTEM);
+ } else {
GST_FLAG_UNSET (sink, GST_AFSINK_OPEN);
}
}
@@ -384,8 +377,8 @@ gst_afsink_close_file (GstAFSink *sink)
*
* take the buffer from the pad and write to file if it's open
*/
-static void
-gst_afsink_chain (GstPad *pad, GstData *_data)
+static void
+gst_afsink_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf;
GstAFSink *afsink;
@@ -413,24 +406,22 @@ gst_afsink_chain (GstPad *pad, GstData *_data)
}
*/
- if (!GST_FLAG_IS_SET (afsink, GST_AFSINK_OPEN))
- {
+ if (!GST_FLAG_IS_SET (afsink, GST_AFSINK_OPEN)) {
/* it's not open yet, open it */
if (!gst_afsink_open_file (afsink))
- g_print ("WARNING: gstafsink: can't open file !\n");
+ g_print ("WARNING: gstafsink: can't open file !\n");
/* return FALSE; Can't return value */
}
- if (GST_FLAG_IS_SET (afsink, GST_AFSINK_OPEN))
- {
+ if (GST_FLAG_IS_SET (afsink, GST_AFSINK_OPEN)) {
int frameCount = 0;
- frameCount = GST_BUFFER_SIZE (buf) / ((afsink->width / 8) * afsink->channels);
- /* g_print ("DEBUG: writing %d frames ", frameCount); */
- ret = afWriteFrames (afsink->file, AF_DEFAULT_TRACK,
- GST_BUFFER_DATA (buf), frameCount);
- if (ret == AF_BAD_WRITE || ret == AF_BAD_LSEEK)
- {
+ frameCount =
+ GST_BUFFER_SIZE (buf) / ((afsink->width / 8) * afsink->channels);
+ /* g_print ("DEBUG: writing %d frames ", frameCount); */
+ ret = afWriteFrames (afsink->file, AF_DEFAULT_TRACK,
+ GST_BUFFER_DATA (buf), frameCount);
+ if (ret == AF_BAD_WRITE || ret == AF_BAD_LSEEK) {
printf ("afsink : Warning : afWriteFrames returned an error (%d)\n", ret);
}
}
@@ -441,20 +432,18 @@ gst_afsink_chain (GstPad *pad, GstData *_data)
}
static GstElementStateReturn
-gst_afsink_change_state (GstElement *element)
+gst_afsink_change_state (GstElement * element)
{
g_return_val_if_fail (GST_IS_AFSINK (element), GST_STATE_FAILURE);
/* if going to NULL? then close the file */
- if (GST_STATE_PENDING (element) == GST_STATE_NULL)
- {
+ if (GST_STATE_PENDING (element) == GST_STATE_NULL) {
/* printf ("DEBUG: afsink state change: null pending\n"); */
- if (GST_FLAG_IS_SET (element, GST_AFSINK_OPEN))
- {
+ if (GST_FLAG_IS_SET (element, GST_AFSINK_OPEN)) {
/* g_print ("DEBUG: trying to close the sink file\n"); */
gst_afsink_close_file (GST_AFSINK (element));
}
- }
+ }
/*
else
@@ -483,7 +472,7 @@ gst_afsink_change_state (GstElement *element)
/* this function was copied from sinesrc */
static gboolean
-gst_afsink_handle_event (GstPad *pad, GstEvent *event)
+gst_afsink_handle_event (GstPad * pad, GstEvent * event)
{
GstAFSink *afsink;
@@ -515,4 +504,3 @@ gst_afsink_factory_init (GstElementFactory *factory)
}
*/
-
diff --git a/ext/audiofile/gstafsink.h b/ext/audiofile/gstafsink.h
index 76ce30af..4e894ee7 100644
--- a/ext/audiofile/gstafsink.h
+++ b/ext/audiofile/gstafsink.h
@@ -26,12 +26,13 @@
#include <gst/gst.h>
-#include <audiofile.h> /* what else are we to do */
+#include <audiofile.h> /* what else are we to do */
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
/*GstElementDetails gst_afsink_details;*/
@@ -48,53 +49,56 @@ extern "C" {
#define GST_IS_AFSINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AFSINK))
-typedef struct _GstAFSink GstAFSink;
-typedef struct _GstAFSinkClass GstAFSinkClass;
+ typedef struct _GstAFSink GstAFSink;
+ typedef struct _GstAFSinkClass GstAFSinkClass;
-typedef enum {
- GST_AFSINK_OPEN = GST_ELEMENT_FLAG_LAST,
+ typedef enum
+ {
+ GST_AFSINK_OPEN = GST_ELEMENT_FLAG_LAST,
- GST_AFSINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
-} GstAFSinkFlags;
+ GST_AFSINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
+ } GstAFSinkFlags;
-struct _GstAFSink {
- GstElement element;
- GstPad *sinkpad;
+ struct _GstAFSink
+ {
+ GstElement element;
+ GstPad *sinkpad;
- gchar *filename;
+ gchar *filename;
/* FILE *file; */
/* AFfilesetup outfilesetup; */
- AFfilehandle file;
- int format;
- int channels;
- int width;
- unsigned int rate;
- gboolean is_signed;
- int type; /* type of output, compare to audiofile.h
- * RAW, AIFF, AIFFC, NEXTSND, WAVE
- */
- /* FIXME : endianness is a little cryptic at this point */
- int endianness_data; /* 4321 or 1234 */
- int endianness_wanted; /* same thing, but what the output format wants */
- int endianness_output; /* what the output endianness will be */
-};
-
-struct _GstAFSinkClass {
- GstElementClass parent_class;
-
- /* signals */
- void (*handoff) (GstElement *element,GstPad *pad);
-};
-
-GType gst_afsink_get_type (void);
-gboolean gst_afsink_plugin_init (GstPlugin *plugin);
+ AFfilehandle file;
+ int format;
+ int channels;
+ int width;
+ unsigned int rate;
+ gboolean is_signed;
+ int type; /* type of output, compare to audiofile.h
+ * RAW, AIFF, AIFFC, NEXTSND, WAVE
+ */
+ /* FIXME : endianness is a little cryptic at this point */
+ int endianness_data; /* 4321 or 1234 */
+ int endianness_wanted; /* same thing, but what the output format wants */
+ int endianness_output; /* what the output endianness will be */
+ };
+
+ struct _GstAFSinkClass
+ {
+ GstElementClass parent_class;
+
+ /* signals */
+ void (*handoff) (GstElement * element, GstPad * pad);
+ };
+
+ GType gst_afsink_get_type (void);
+ gboolean gst_afsink_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_AFSINK_H__ */
+#endif /* __GST_AFSINK_H__ */
diff --git a/ext/audiofile/gstafsrc.c b/ext/audiofile/gstafsrc.c
index 5d6bc1cd..98a2d38b 100644
--- a/ext/audiofile/gstafsrc.c
+++ b/ext/audiofile/gstafsrc.c
@@ -43,34 +43,33 @@ static GstElementDetails afsrc_details = {
/* AFSrc signals and args */
-enum {
+enum
+{
/* FILL ME */
SIGNAL_HANDOFF,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_LOCATION
};
/* added a src factory function to force audio/raw MIME type */
/* I think the caps can be broader, we need to change that somehow */
-static GstStaticPadTemplate afsrc_src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "rate = (int) [ 1, MAX ], "
- "channels = (int) [ 1, MAX ], "
- "endianness = (int) BYTE_ORDER, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "signed = (boolean) { true, false }, "
- "buffer-frames = (int) [ 1, MAX ]"
- )
-);
+static GstStaticPadTemplate afsrc_src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "rate = (int) [ 1, MAX ], "
+ "channels = (int) [ 1, MAX ], "
+ "endianness = (int) BYTE_ORDER, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, "
+ "signed = (boolean) { true, false }, "
+ "buffer-frames = (int) [ 1, MAX ]")
+ );
/* we use an enum for the output type arg */
@@ -98,27 +97,27 @@ gst_afsrc_types_get_type (void)
return afsrc_types_type;
}
*/
-static void gst_afsrc_base_init (gpointer g_class);
-static void gst_afsrc_class_init (GstAFSrcClass *klass);
-static void gst_afsrc_init (GstAFSrc *afsrc);
+static void gst_afsrc_base_init (gpointer g_class);
+static void gst_afsrc_class_init (GstAFSrcClass * klass);
+static void gst_afsrc_init (GstAFSrc * afsrc);
-static gboolean gst_afsrc_open_file (GstAFSrc *src);
-static void gst_afsrc_close_file (GstAFSrc *src);
+static gboolean gst_afsrc_open_file (GstAFSrc * src);
+static void gst_afsrc_close_file (GstAFSrc * src);
-static GstData* gst_afsrc_get (GstPad *pad);
+static GstData *gst_afsrc_get (GstPad * pad);
-static void gst_afsrc_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_afsrc_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static void gst_afsrc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_afsrc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static GstElementStateReturn gst_afsrc_change_state (GstElement *element);
+static GstElementStateReturn gst_afsrc_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
static guint gst_afsrc_signals[LAST_SIGNAL] = { 0 };
GType
-gst_afsrc_get_type (void)
+gst_afsrc_get_type (void)
{
static GType afsrc_type = 0;
@@ -134,7 +133,8 @@ gst_afsrc_get_type (void)
0,
(GInstanceInitFunc) gst_afsrc_init,
};
- afsrc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstAFSrc", &afsrc_info, 0);
+ afsrc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstAFSrc", &afsrc_info, 0);
}
return afsrc_type;
}
@@ -150,25 +150,23 @@ gst_afsrc_base_init (gpointer g_class)
}
static void
-gst_afsrc_class_init (GstAFSrcClass *klass)
+gst_afsrc_class_init (GstAFSrcClass * 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_element_class_install_std_props (
- GST_ELEMENT_CLASS (klass),
- "location", ARG_LOCATION, G_PARAM_READWRITE,
- NULL);
-
+ gst_element_class_install_std_props (GST_ELEMENT_CLASS (klass),
+ "location", ARG_LOCATION, G_PARAM_READWRITE, NULL);
+
gst_afsrc_signals[SIGNAL_HANDOFF] =
- g_signal_new ("handoff", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstAFSrcClass, 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 (GstAFSrcClass, handoff), NULL, NULL,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
gobject_class->set_property = gst_afsrc_set_property;
@@ -177,12 +175,13 @@ gst_afsrc_class_init (GstAFSrcClass *klass)
gstelement_class->change_state = gst_afsrc_change_state;
}
-static void
-gst_afsrc_init (GstAFSrc *afsrc)
+static void
+gst_afsrc_init (GstAFSrc * afsrc)
{
/* no need for a template, caps are set based on file, right ? */
- afsrc->srcpad = gst_pad_new_from_template (
- gst_element_get_pad_template (GST_ELEMENT (afsrc), "src"), "src");
+ afsrc->srcpad =
+ gst_pad_new_from_template (gst_element_get_pad_template (GST_ELEMENT
+ (afsrc), "src"), "src");
gst_element_add_pad (GST_ELEMENT (afsrc), afsrc->srcpad);
gst_pad_use_explicit_caps (afsrc->srcpad);
gst_pad_set_get_function (afsrc->srcpad, gst_afsrc_get);
@@ -204,7 +203,7 @@ gst_afsrc_init (GstAFSrc *afsrc)
}
static GstData *
-gst_afsrc_get (GstPad *pad)
+gst_afsrc_get (GstPad * pad)
{
GstAFSrc *src;
GstBuffer *buf;
@@ -217,21 +216,21 @@ gst_afsrc_get (GstPad *pad)
buf = gst_buffer_new ();
g_return_val_if_fail (buf, NULL);
-
+
GST_BUFFER_DATA (buf) = (gpointer) g_malloc (src->bytes_per_read);
-
+
/* calculate frameCount to read based on file info */
frameCount = src->bytes_per_read / (src->channels * src->width / 8);
/* g_print ("DEBUG: gstafsrc: going to read %ld frames\n", frameCount); */
readframes = afReadFrames (src->file, AF_DEFAULT_TRACK, GST_BUFFER_DATA (buf),
- frameCount);
+ frameCount);
readbytes = readframes * (src->channels * src->width / 8);
if (readbytes == 0) {
gst_element_set_eos (GST_ELEMENT (src));
- return GST_DATA (gst_event_new (GST_EVENT_EOS));
+ return GST_DATA (gst_event_new (GST_EVENT_EOS));
}
-
+
GST_BUFFER_SIZE (buf) = readbytes;
GST_BUFFER_OFFSET (buf) = src->curoffset;
@@ -239,16 +238,17 @@ gst_afsrc_get (GstPad *pad)
src->framestamp += gst_audio_frame_length (src->srcpad, buf);
GST_BUFFER_TIMESTAMP (buf) = src->framestamp * 1E9
- / gst_audio_frame_rate (src->srcpad);
+ / gst_audio_frame_rate (src->srcpad);
printf ("DEBUG: afsrc: timestamp set on output buffer: %f sec\n",
- GST_BUFFER_TIMESTAMP (buf) / 1E9);
+ GST_BUFFER_TIMESTAMP (buf) / 1E9);
/* g_print("DEBUG: gstafsrc: pushed buffer of %ld bytes\n", readbytes); */
return GST_DATA (buf);
}
static void
-gst_afsrc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_afsrc_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstAFSrc *src;
@@ -266,16 +266,17 @@ gst_afsrc_set_property (GObject *object, guint prop_id, const GValue *value, GPa
}
}
-static void
-gst_afsrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+static void
+gst_afsrc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstAFSrc *src;
-
+
/* it's not null if we got it, but it might not be ours */
g_return_if_fail (GST_IS_AFSRC (object));
-
+
src = GST_AFSRC (object);
-
+
switch (prop_id) {
case ARG_LOCATION:
g_value_set_string (value, src->filename);
@@ -287,7 +288,7 @@ gst_afsrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe
}
gboolean
-gst_afsrc_plugin_init (GstPlugin *plugin)
+gst_afsrc_plugin_init (GstPlugin * plugin)
{
/* load audio support library */
if (!gst_library_load ("gstaudio"))
@@ -307,57 +308,52 @@ gst_afsrc_plugin_init (GstPlugin *plugin)
/* this is where we open the audiofile */
static gboolean
-gst_afsrc_open_file (GstAFSrc *src)
+gst_afsrc_open_file (GstAFSrc * src)
{
g_return_val_if_fail (!GST_FLAG_IS_SET (src, GST_AFSRC_OPEN), FALSE);
/* open the file */
src->file = afOpenFile (src->filename, "r", AF_NULL_FILESETUP);
- if (src->file == AF_NULL_FILEHANDLE)
- {
- GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
- (_("Could not open file \"%s\" for reading."), src->filename),
- ("system error: %s", strerror (errno)));
+ if (src->file == AF_NULL_FILEHANDLE) {
+ GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+ (_("Could not open file \"%s\" for reading."), src->filename),
+ ("system error: %s", strerror (errno)));
return FALSE;
}
/* get the audiofile audio parameters */
{
int sampleFormat, sampleWidth;
+
src->channels = afGetChannels (src->file, AF_DEFAULT_TRACK);
- afGetSampleFormat (src->file, AF_DEFAULT_TRACK,
- &sampleFormat, &sampleWidth);
- switch (sampleFormat)
- {
- case AF_SAMPFMT_TWOSCOMP:
- src->is_signed = TRUE;
- break;
- case AF_SAMPFMT_UNSIGNED:
- src->is_signed = FALSE;
- break;
- case AF_SAMPFMT_FLOAT:
- case AF_SAMPFMT_DOUBLE:
- GST_DEBUG (
- "ERROR: float data not supported yet !\n");
- }
- src->rate = (guint) afGetRate (src->file, AF_DEFAULT_TRACK);
+ afGetSampleFormat (src->file, AF_DEFAULT_TRACK,
+ &sampleFormat, &sampleWidth);
+ switch (sampleFormat) {
+ case AF_SAMPFMT_TWOSCOMP:
+ src->is_signed = TRUE;
+ break;
+ case AF_SAMPFMT_UNSIGNED:
+ src->is_signed = FALSE;
+ break;
+ case AF_SAMPFMT_FLOAT:
+ case AF_SAMPFMT_DOUBLE:
+ GST_DEBUG ("ERROR: float data not supported yet !\n");
+ }
+ src->rate = (guint) afGetRate (src->file, AF_DEFAULT_TRACK);
src->width = sampleWidth;
- GST_DEBUG (
- "input file: %d channels, %d width, %d rate, signed %s\n",
- src->channels, src->width, src->rate,
- src->is_signed ? "yes" : "no");
+ GST_DEBUG ("input file: %d channels, %d width, %d rate, signed %s\n",
+ src->channels, src->width, src->rate, src->is_signed ? "yes" : "no");
}
-
+
/* set caps on src */
- gst_pad_set_explicit_caps (src->srcpad,
+ gst_pad_set_explicit_caps (src->srcpad,
gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, src->is_signed,
- "width", G_TYPE_INT, src->width,
- "depth", G_TYPE_INT, src->width,
- "rate", G_TYPE_INT, src->rate,
- "channels", G_TYPE_INT, src->channels,
- NULL));
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "signed", G_TYPE_BOOLEAN, src->is_signed,
+ "width", G_TYPE_INT, src->width,
+ "depth", G_TYPE_INT, src->width,
+ "rate", G_TYPE_INT, src->rate,
+ "channels", G_TYPE_INT, src->channels, NULL));
GST_FLAG_SET (src, GST_AFSRC_OPEN);
@@ -365,47 +361,39 @@ gst_afsrc_open_file (GstAFSrc *src)
}
static void
-gst_afsrc_close_file (GstAFSrc *src)
+gst_afsrc_close_file (GstAFSrc * src)
{
/* g_print ("DEBUG: closing srcfile...\n"); */
g_return_if_fail (GST_FLAG_IS_SET (src, GST_AFSRC_OPEN));
/* g_print ("DEBUG: past flag test\n"); */
/* if (fclose (src->file) != 0) */
- if (afCloseFile (src->file) != 0)
- {
+ if (afCloseFile (src->file) != 0) {
GST_ELEMENT_ERROR (src, RESOURCE, CLOSE,
- (_("Error closing file \"%s\"."), src->filename),
- GST_ERROR_SYSTEM);
+ (_("Error closing file \"%s\"."), src->filename), GST_ERROR_SYSTEM);
} else {
GST_FLAG_UNSET (src, GST_AFSRC_OPEN);
}
}
static GstElementStateReturn
-gst_afsrc_change_state (GstElement *element)
+gst_afsrc_change_state (GstElement * element)
{
g_return_val_if_fail (GST_IS_AFSRC (element), GST_STATE_FAILURE);
/* if going to NULL then close the file */
- if (GST_STATE_PENDING (element) == GST_STATE_NULL)
- {
+ if (GST_STATE_PENDING (element) == GST_STATE_NULL) {
/* printf ("DEBUG: afsrc state change: null pending\n"); */
- if (GST_FLAG_IS_SET (element, GST_AFSRC_OPEN))
- {
+ if (GST_FLAG_IS_SET (element, GST_AFSRC_OPEN)) {
/* g_print ("DEBUG: trying to close the src file\n"); */
gst_afsrc_close_file (GST_AFSRC (element));
}
- }
- else if (GST_STATE_PENDING (element) == GST_STATE_READY)
- {
+ } else if (GST_STATE_PENDING (element) == GST_STATE_READY) {
/* g_print ("DEBUG: afsrc: ready state pending. This shouldn't happen at the *end* of a stream\n"); */
- if (!GST_FLAG_IS_SET (element, GST_AFSRC_OPEN))
- {
+ if (!GST_FLAG_IS_SET (element, GST_AFSRC_OPEN)) {
/* g_print ("DEBUG: GST_AFSRC_OPEN not set\n"); */
- if (!gst_afsrc_open_file (GST_AFSRC (element)))
- {
+ if (!gst_afsrc_open_file (GST_AFSRC (element))) {
/* g_print ("DEBUG: element tries to open file\n"); */
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
}
}
diff --git a/ext/audiofile/gstafsrc.h b/ext/audiofile/gstafsrc.h
index c96c20c3..ff607564 100644
--- a/ext/audiofile/gstafsrc.h
+++ b/ext/audiofile/gstafsrc.h
@@ -26,12 +26,13 @@
#include <gst/gst.h>
-#include <audiofile.h> /* what else are we to do */
+#include <audiofile.h> /* what else are we to do */
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
/*GstElementDetails gst_afsrc_details;*/
@@ -48,60 +49,63 @@ extern "C" {
#define GST_IS_AFSRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AFSRC))
-typedef struct _GstAFSrc GstAFSrc;
-typedef struct _GstAFSrcClass GstAFSrcClass;
+ typedef struct _GstAFSrc GstAFSrc;
+ typedef struct _GstAFSrcClass GstAFSrcClass;
-typedef enum {
- GST_AFSRC_OPEN = GST_ELEMENT_FLAG_LAST,
+ typedef enum
+ {
+ GST_AFSRC_OPEN = GST_ELEMENT_FLAG_LAST,
- GST_AFSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
-} GstAFSrcFlags;
+ GST_AFSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
+ } GstAFSrcFlags;
-struct _GstAFSrc {
- GstElement element;
- GstPad *srcpad;
+ struct _GstAFSrc
+ {
+ GstElement element;
+ GstPad *srcpad;
- gchar *filename;
+ gchar *filename;
/* FILE *file; */
/* AFfilesetup outfilesetup; */
- AFfilehandle file;
- int format;
- int channels;
- int width;
- unsigned int rate;
- gboolean is_signed;
- int type; /* type of output, compare to audiofile.h
- * RAW, AIFF, AIFFC, NEXTSND, WAVE
- */
- /* blocking */
- gulong curoffset;
- gulong bytes_per_read;
+ AFfilehandle file;
+ int format;
+ int channels;
+ int width;
+ unsigned int rate;
+ gboolean is_signed;
+ int type; /* type of output, compare to audiofile.h
+ * RAW, AIFF, AIFFC, NEXTSND, WAVE
+ */
+ /* blocking */
+ gulong curoffset;
+ gulong bytes_per_read;
- gulong seq;
- guint64 framestamp;
- /* FIXME : endianness is a little cryptic at this point */
- int endianness_data; /* 4321 or 1234 */
- int endianness_wanted; /* same thing, but what the output format wants */
- int endianness_output; /* what the output endianness will be */
-};
+ gulong seq;
+ guint64 framestamp;
+ /* FIXME : endianness is a little cryptic at this point */
+ int endianness_data; /* 4321 or 1234 */
+ int endianness_wanted; /* same thing, but what the output format wants */
+ int endianness_output; /* what the output endianness will be */
+ };
-struct _GstAFSrcClass {
- GstElementClass parent_class;
+ struct _GstAFSrcClass
+ {
+ GstElementClass parent_class;
- /* signals */
- void (*handoff) (GstElement *element,GstPad *pad);
-};
+ /* signals */
+ void (*handoff) (GstElement * element, GstPad * pad);
+ };
-GType gst_afsrc_get_type (void);
-gboolean gst_afsrc_plugin_init (GstPlugin *plugin);
+ GType gst_afsrc_get_type (void);
+ gboolean gst_afsrc_plugin_init (GstPlugin * plugin);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_AFSRC_H__ */
+#endif /* __GST_AFSRC_H__ */