diff options
Diffstat (limited to 'ext/flac/gstflacdec.c')
-rw-r--r-- | ext/flac/gstflacdec.c | 194 |
1 files changed, 98 insertions, 96 deletions
diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c index 67725e20..6354583f 100644 --- a/ext/flac/gstflacdec.c +++ b/ext/flac/gstflacdec.c @@ -66,44 +66,44 @@ GstElementDetails flacdec_details = { "Wim Taymans <wim.taymans@chello.be>", }; -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_finalize (GObject * object); +static void gst_flac_dec_base_init (gpointer g_class); +static void gst_flac_dec_class_init (GstFlacDecClass * klass); +static void gst_flac_dec_init (GstFlacDec * flacdec); +static void gst_flac_dec_finalize (GObject * object); -static void gst_flacdec_loop (GstPad * pad); -static GstStateChangeReturn gst_flacdec_change_state (GstElement * element, +static void gst_flac_dec_loop (GstPad * pad); +static GstStateChangeReturn gst_flac_dec_change_state (GstElement * element, GstStateChange transition); -static const GstQueryType *gst_flacdec_get_src_query_types (GstPad * pad); -static gboolean gst_flacdec_src_query (GstPad * pad, GstQuery * query); -static gboolean gst_flacdec_convert_src (GstPad * pad, GstFormat src_format, +static const GstQueryType *gst_flac_dec_get_src_query_types (GstPad * pad); +static gboolean gst_flac_dec_src_query (GstPad * pad, GstQuery * query); +static gboolean gst_flac_dec_convert_src (GstPad * pad, GstFormat src_format, gint64 src_value, GstFormat * dest_format, gint64 * dest_value); -static gboolean gst_flacdec_src_event (GstPad * pad, GstEvent * event); -static gboolean gst_flacdec_sink_activate (GstPad * sinkpad); -static gboolean gst_flacdec_sink_activate_pull (GstPad * sinkpad, +static gboolean gst_flac_dec_src_event (GstPad * pad, GstEvent * event); +static gboolean gst_flac_dec_sink_activate (GstPad * sinkpad); +static gboolean gst_flac_dec_sink_activate_pull (GstPad * sinkpad, gboolean active); static FLAC__SeekableStreamDecoderReadStatus -gst_flacdec_read (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_read (const FLAC__SeekableStreamDecoder * decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data); static FLAC__SeekableStreamDecoderSeekStatus -gst_flacdec_seek (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_seek (const FLAC__SeekableStreamDecoder * decoder, FLAC__uint64 position, void *client_data); static FLAC__SeekableStreamDecoderTellStatus -gst_flacdec_tell (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_tell (const FLAC__SeekableStreamDecoder * decoder, FLAC__uint64 * position, void *client_data); static FLAC__SeekableStreamDecoderLengthStatus -gst_flacdec_length (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_length (const FLAC__SeekableStreamDecoder * decoder, FLAC__uint64 * length, void *client_data); -static FLAC__bool gst_flacdec_eof (const FLAC__SeekableStreamDecoder * decoder, +static FLAC__bool gst_flac_dec_eof (const FLAC__SeekableStreamDecoder * decoder, void *client_data); static FLAC__StreamDecoderWriteStatus -gst_flacdec_write (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_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 * +static void gst_flac_dec_metadata_callback (const FLAC__SeekableStreamDecoder * decoder, const FLAC__StreamMetadata * metadata, void *client_data); -static void gst_flacdec_error_callback (const FLAC__SeekableStreamDecoder * +static void gst_flac_dec_error_callback (const FLAC__SeekableStreamDecoder * decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); static GstElementClass *parent_class = NULL; @@ -115,19 +115,20 @@ flacdec_get_type (void) if (!flacdec_type) { static const GTypeInfo flacdec_info = { - sizeof (FlacDecClass), - gst_flacdec_base_init, + sizeof (GstFlacDecClass), + gst_flac_dec_base_init, NULL, - (GClassInitFunc) gst_flacdec_class_init, + (GClassInitFunc) gst_flac_dec_class_init, NULL, NULL, - sizeof (FlacDec), + sizeof (GstFlacDec), 0, - (GInstanceInitFunc) gst_flacdec_init, + (GInstanceInitFunc) gst_flac_dec_init, }; flacdec_type = - g_type_register_static (GST_TYPE_ELEMENT, "FlacDec", &flacdec_info, 0); + g_type_register_static (GST_TYPE_ELEMENT, "GstFlacDec", &flacdec_info, + 0); GST_DEBUG_CATEGORY_INIT (flacdec_debug, "flacdec", 0, "flac decoder"); } @@ -154,7 +155,7 @@ raw_caps_factory (void) } static void -gst_flacdec_base_init (gpointer g_class) +gst_flac_dec_base_init (gpointer g_class) { GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); GstCaps *raw_caps, *flac_caps; @@ -172,7 +173,7 @@ gst_flacdec_base_init (gpointer g_class) } static void -gst_flacdec_class_init (FlacDecClass * klass) +gst_flac_dec_class_init (GstFlacDecClass * klass) { GstElementClass *gstelement_class; GObjectClass *gobject_class; @@ -182,25 +183,25 @@ gst_flacdec_class_init (FlacDecClass * klass) parent_class = g_type_class_ref (GST_TYPE_ELEMENT); - gobject_class->finalize = gst_flacdec_finalize; + gobject_class->finalize = gst_flac_dec_finalize; - gstelement_class->change_state = gst_flacdec_change_state; + gstelement_class->change_state = gst_flac_dec_change_state; } static void -gst_flacdec_init (FlacDec * flacdec) +gst_flac_dec_init (GstFlacDec * flacdec) { flacdec->sinkpad = gst_pad_new_from_template (sink_template, "sink"); - gst_pad_set_activate_function (flacdec->sinkpad, gst_flacdec_sink_activate); + gst_pad_set_activate_function (flacdec->sinkpad, gst_flac_dec_sink_activate); gst_pad_set_activatepull_function (flacdec->sinkpad, - gst_flacdec_sink_activate_pull); + gst_flac_dec_sink_activate_pull); gst_element_add_pad (GST_ELEMENT (flacdec), flacdec->sinkpad); flacdec->srcpad = gst_pad_new_from_template (src_template, "src"); 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_function (flacdec->srcpad, gst_flacdec_src_event); + gst_flac_dec_get_src_query_types); + gst_pad_set_query_function (flacdec->srcpad, gst_flac_dec_src_query); + gst_pad_set_event_function (flacdec->srcpad, gst_flac_dec_src_event); gst_pad_use_fixed_caps (flacdec->srcpad); gst_element_add_pad (GST_ELEMENT (flacdec), flacdec->srcpad); @@ -211,41 +212,41 @@ gst_flacdec_init (FlacDec * flacdec) flacdec->seek_pending = FALSE; FLAC__seekable_stream_decoder_set_read_callback (flacdec->decoder, - gst_flacdec_read); + gst_flac_dec_read); FLAC__seekable_stream_decoder_set_seek_callback (flacdec->decoder, - gst_flacdec_seek); + gst_flac_dec_seek); FLAC__seekable_stream_decoder_set_tell_callback (flacdec->decoder, - gst_flacdec_tell); + gst_flac_dec_tell); FLAC__seekable_stream_decoder_set_length_callback (flacdec->decoder, - gst_flacdec_length); + gst_flac_dec_length); FLAC__seekable_stream_decoder_set_eof_callback (flacdec->decoder, - gst_flacdec_eof); + gst_flac_dec_eof); #if FLAC_VERSION >= 0x010003 FLAC__seekable_stream_decoder_set_write_callback (flacdec->decoder, - gst_flacdec_write); + gst_flac_dec_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)); + (gst_flac_dec_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); + gst_flac_dec_metadata_callback); FLAC__seekable_stream_decoder_set_error_callback (flacdec->decoder, - gst_flacdec_error_callback); + gst_flac_dec_error_callback); FLAC__seekable_stream_decoder_set_client_data (flacdec->decoder, flacdec); } static void -gst_flacdec_finalize (GObject * object) +gst_flac_dec_finalize (GObject * object) { - FlacDec *flacdec; + GstFlacDec *flacdec; - flacdec = GST_FLACDEC (object); + flacdec = GST_FLAC_DEC (object); if (flacdec->decoder) FLAC__seekable_stream_decoder_delete (flacdec->decoder); @@ -256,7 +257,7 @@ gst_flacdec_finalize (GObject * object) static gboolean -gst_flacdec_update_metadata (FlacDec * flacdec, +gst_flac_dec_update_metadata (GstFlacDec * flacdec, const FLAC__StreamMetadata * metadata) { GstTagList *list; @@ -295,19 +296,19 @@ gst_flacdec_update_metadata (FlacDec * flacdec, static void -gst_flacdec_metadata_callback (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_metadata_callback (const FLAC__SeekableStreamDecoder * decoder, const FLAC__StreamMetadata * metadata, void *client_data) { - FlacDec *flacdec; + GstFlacDec *flacdec; - flacdec = GST_FLACDEC (client_data); + flacdec = GST_FLAC_DEC (client_data); switch (metadata->type) { case FLAC__METADATA_TYPE_STREAMINFO: flacdec->stream_samples = metadata->data.stream_info.total_samples; break; case FLAC__METADATA_TYPE_VORBIS_COMMENT: - gst_flacdec_update_metadata (flacdec, metadata); + gst_flac_dec_update_metadata (flacdec, metadata); break; default: break; @@ -315,13 +316,13 @@ gst_flacdec_metadata_callback (const FLAC__SeekableStreamDecoder * decoder, } static void -gst_flacdec_error_callback (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_error_callback (const FLAC__SeekableStreamDecoder * decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) { - FlacDec *flacdec; + GstFlacDec *flacdec; gchar *error; - flacdec = GST_FLACDEC (client_data); + flacdec = GST_FLAC_DEC (client_data); switch (status) { case FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC: @@ -342,12 +343,12 @@ gst_flacdec_error_callback (const FLAC__SeekableStreamDecoder * decoder, } static FLAC__SeekableStreamDecoderSeekStatus -gst_flacdec_seek (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_seek (const FLAC__SeekableStreamDecoder * decoder, FLAC__uint64 position, void *client_data) { - FlacDec *flacdec; + GstFlacDec *flacdec; - flacdec = GST_FLACDEC (client_data); + flacdec = GST_FLAC_DEC (client_data); GST_DEBUG ("seek %" G_GINT64_FORMAT, position); flacdec->offset = position; @@ -356,12 +357,12 @@ gst_flacdec_seek (const FLAC__SeekableStreamDecoder * decoder, } static FLAC__SeekableStreamDecoderTellStatus -gst_flacdec_tell (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_tell (const FLAC__SeekableStreamDecoder * decoder, FLAC__uint64 * position, void *client_data) { - FlacDec *flacdec; + GstFlacDec *flacdec; - flacdec = GST_FLACDEC (client_data); + flacdec = GST_FLAC_DEC (client_data); *position = flacdec->offset; @@ -371,15 +372,15 @@ gst_flacdec_tell (const FLAC__SeekableStreamDecoder * decoder, } static FLAC__SeekableStreamDecoderLengthStatus -gst_flacdec_length (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_length (const FLAC__SeekableStreamDecoder * decoder, FLAC__uint64 * length, void *client_data) { - FlacDec *flacdec; + GstFlacDec *flacdec; GstFormat fmt = GST_FORMAT_BYTES; gint64 len; GstPad *peer; - flacdec = GST_FLACDEC (client_data); + flacdec = GST_FLAC_DEC (client_data); if (!(peer = gst_pad_get_peer (flacdec->sinkpad))) return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR; @@ -396,24 +397,25 @@ gst_flacdec_length (const FLAC__SeekableStreamDecoder * decoder, } static FLAC__bool -gst_flacdec_eof (const FLAC__SeekableStreamDecoder * decoder, void *client_data) +gst_flac_dec_eof (const FLAC__SeekableStreamDecoder * decoder, + void *client_data) { - FlacDec *flacdec; + GstFlacDec *flacdec; - flacdec = GST_FLACDEC (client_data); + flacdec = GST_FLAC_DEC (client_data); GST_DEBUG ("eof %d", flacdec->eos); return flacdec->eos; } static FLAC__SeekableStreamDecoderReadStatus -gst_flacdec_read (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_read (const FLAC__SeekableStreamDecoder * decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data) { - FlacDec *flacdec; + GstFlacDec *flacdec; GstBuffer *buf; - flacdec = GST_FLACDEC (client_data); + flacdec = GST_FLAC_DEC (client_data); if (gst_pad_pull_range (flacdec->sinkpad, flacdec->offset, *bytes, &buf) != GST_FLOW_OK) @@ -430,11 +432,11 @@ gst_flacdec_read (const FLAC__SeekableStreamDecoder * decoder, } static FLAC__StreamDecoderWriteStatus -gst_flacdec_write (const FLAC__SeekableStreamDecoder * decoder, +gst_flac_dec_write (const FLAC__SeekableStreamDecoder * decoder, const FLAC__Frame * frame, const FLAC__int32 * const buffer[], void *client_data) { - FlacDec *flacdec; + GstFlacDec *flacdec; GstBuffer *outbuf; guint depth = frame->header.bits_per_sample; guint width; @@ -460,7 +462,7 @@ gst_flacdec_write (const FLAC__SeekableStreamDecoder * decoder, return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; } - flacdec = GST_FLACDEC (client_data); + flacdec = GST_FLAC_DEC (client_data); if (flacdec->need_discont) { gint64 time = 0; @@ -476,7 +478,7 @@ gst_flacdec_write (const FLAC__SeekableStreamDecoder * decoder, GST_DEBUG ("newsegment from %" G_GUINT64_FORMAT, flacdec->seek_value); format = GST_FORMAT_TIME; - gst_flacdec_convert_src (flacdec->srcpad, GST_FORMAT_DEFAULT, + gst_flac_dec_convert_src (flacdec->srcpad, GST_FORMAT_DEFAULT, flacdec->total_samples, &format, &time); newsegment = gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME, time, GST_CLOCK_TIME_NONE, 0); @@ -562,12 +564,12 @@ gst_flacdec_write (const FLAC__SeekableStreamDecoder * decoder, } static void -gst_flacdec_loop (GstPad * sinkpad) +gst_flac_dec_loop (GstPad * sinkpad) { - FlacDec *flacdec; + GstFlacDec *flacdec; FLAC__SeekableStreamDecoderState s; - flacdec = GST_FLACDEC (GST_OBJECT_PARENT (sinkpad)); + flacdec = GST_FLAC_DEC (GST_OBJECT_PARENT (sinkpad)); GST_DEBUG ("flacdec: entering loop"); if (flacdec->init) { @@ -646,7 +648,7 @@ analyze_state: #if 0 static const GstFormat * -gst_flacdec_get_src_formats (GstPad * pad) +gst_flac_dec_get_src_formats (GstPad * pad) { static const GstFormat formats[] = { GST_FORMAT_DEFAULT, @@ -660,11 +662,11 @@ gst_flacdec_get_src_formats (GstPad * pad) #endif static gboolean -gst_flacdec_convert_src (GstPad * pad, GstFormat src_format, gint64 src_value, +gst_flac_dec_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)); + GstFlacDec *flacdec = GST_FLAC_DEC (gst_pad_get_parent (pad)); guint scale = 1; gint bytes_per_sample; @@ -723,7 +725,7 @@ gst_flacdec_convert_src (GstPad * pad, GstFormat src_format, gint64 src_value, } static const GstQueryType * -gst_flacdec_get_src_query_types (GstPad * pad) +gst_flac_dec_get_src_query_types (GstPad * pad) { static const GstQueryType types[] = { GST_QUERY_POSITION, @@ -734,10 +736,10 @@ gst_flacdec_get_src_query_types (GstPad * pad) } static gboolean -gst_flacdec_src_query (GstPad * pad, GstQuery * query) +gst_flac_dec_src_query (GstPad * pad, GstQuery * query) { gboolean res = TRUE; - FlacDec *flacdec = GST_FLACDEC (gst_pad_get_parent (pad)); + GstFlacDec *flacdec = GST_FLAC_DEC (gst_pad_get_parent (pad)); switch (GST_QUERY_TYPE (query)) { case GST_QUERY_POSITION:{ @@ -746,7 +748,7 @@ gst_flacdec_src_query (GstPad * pad, GstQuery * query) pos = flacdec->total_samples; - if (gst_flacdec_convert_src (flacdec->srcpad, + if (gst_flac_dec_convert_src (flacdec->srcpad, GST_FORMAT_DEFAULT, pos, &fmt, &pos)) gst_query_set_position (query, GST_FORMAT_TIME, pos); else @@ -762,7 +764,7 @@ gst_flacdec_src_query (GstPad * pad, GstQuery * query) else len = flacdec->stream_samples; - if (gst_flacdec_convert_src (flacdec->srcpad, + if (gst_flac_dec_convert_src (flacdec->srcpad, GST_FORMAT_DEFAULT, len, &fmt, &len)) gst_query_set_duration (query, GST_FORMAT_TIME, len); else @@ -778,10 +780,10 @@ gst_flacdec_src_query (GstPad * pad, GstQuery * query) } static gboolean -gst_flacdec_src_event (GstPad * pad, GstEvent * event) +gst_flac_dec_src_event (GstPad * pad, GstEvent * event) { gboolean res = TRUE; - FlacDec *flacdec = GST_FLACDEC (gst_pad_get_parent (pad)); + GstFlacDec *flacdec = GST_FLAC_DEC (gst_pad_get_parent (pad)); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_SEEK:{ @@ -795,7 +797,7 @@ gst_flacdec_src_event (GstPad * pad, GstEvent * event) format = GST_FORMAT_DEFAULT; if (type == GST_SEEK_TYPE_SET && - gst_flacdec_convert_src (flacdec->srcpad, seek_fmt, pos, + gst_flac_dec_convert_src (flacdec->srcpad, seek_fmt, pos, &format, &pos)) { GST_DEBUG ("Initializing seek"); g_print ("Grab seek lock\n"); @@ -807,7 +809,7 @@ gst_flacdec_src_event (GstPad * pad, GstEvent * event) flacdec->seek_pending = TRUE; flacdec->seek_value = pos; gst_pad_start_task (flacdec->sinkpad, - (GstTaskFunction) gst_flacdec_loop, flacdec->sinkpad); + (GstTaskFunction) gst_flac_dec_loop, flacdec->sinkpad); GST_PAD_STREAM_UNLOCK (flacdec->sinkpad); } else res = FALSE; @@ -822,7 +824,7 @@ gst_flacdec_src_event (GstPad * pad, GstEvent * event) } static gboolean -gst_flacdec_sink_activate (GstPad * sinkpad) +gst_flac_dec_sink_activate (GstPad * sinkpad) { if (gst_pad_check_pull_range (sinkpad)) return gst_pad_activate_pull (sinkpad, TRUE); @@ -831,12 +833,12 @@ gst_flacdec_sink_activate (GstPad * sinkpad) } static gboolean -gst_flacdec_sink_activate_pull (GstPad * sinkpad, gboolean active) +gst_flac_dec_sink_activate_pull (GstPad * sinkpad, gboolean active) { if (active) { /* if we have a scheduler we can start the task */ - GST_FLACDEC (GST_OBJECT_PARENT (sinkpad))->offset = 0; - return gst_pad_start_task (sinkpad, (GstTaskFunction) gst_flacdec_loop, + GST_FLAC_DEC (GST_OBJECT_PARENT (sinkpad))->offset = 0; + return gst_pad_start_task (sinkpad, (GstTaskFunction) gst_flac_dec_loop, sinkpad); } else { return gst_pad_stop_task (sinkpad); @@ -844,9 +846,9 @@ gst_flacdec_sink_activate_pull (GstPad * sinkpad, gboolean active) } static GstStateChangeReturn -gst_flacdec_change_state (GstElement * element, GstStateChange transition) +gst_flac_dec_change_state (GstElement * element, GstStateChange transition) { - FlacDec *flacdec = GST_FLACDEC (element); + GstFlacDec *flacdec = GST_FLAC_DEC (element); switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: |