diff options
Diffstat (limited to 'gst/avi/gstavidemux.c')
-rw-r--r-- | gst/avi/gstavidemux.c | 774 |
1 files changed, 370 insertions, 404 deletions
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); |