diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-02-15 12:56:55 +0100 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-02-15 12:56:55 +0100 |
commit | f9c99b47136feb4740a82a244651001a7719e2bc (patch) | |
tree | b30430c285719e92cb7059ead8a0346afb959357 /gst/videoparsers/gstmpeg4videoparse.c | |
parent | eff70374470cdc4459756d15bea61a83bac57ceb (diff) |
videoparsers: chain up to parent event handler
Chain up to the parent event handler to get the default behaviour instead of
returning FALSE.
Diffstat (limited to 'gst/videoparsers/gstmpeg4videoparse.c')
-rw-r--r-- | gst/videoparsers/gstmpeg4videoparse.c | 73 |
1 files changed, 36 insertions, 37 deletions
diff --git a/gst/videoparsers/gstmpeg4videoparse.c b/gst/videoparsers/gstmpeg4videoparse.c index 72bf9e65e1..5f9bb027ba 100644 --- a/gst/videoparsers/gstmpeg4videoparse.c +++ b/gst/videoparsers/gstmpeg4videoparse.c @@ -811,7 +811,7 @@ gst_mpeg4vparse_get_caps (GstBaseParse * parse, GstCaps * filter) static gboolean gst_mpeg4vparse_event (GstBaseParse * parse, GstEvent * event) { - gboolean handled = FALSE; + gboolean res; GstMpeg4VParse *mp4vparse = GST_MPEG4VIDEO_PARSE (parse); switch (GST_EVENT_TYPE (event)) { @@ -821,39 +821,39 @@ gst_mpeg4vparse_event (GstBaseParse * parse, GstEvent * event) gboolean all_headers; guint count; - if (!gst_video_event_is_force_key_unit (event)) - break; - - gst_video_event_parse_downstream_force_key_unit (event, - ×tamp, &stream_time, &running_time, &all_headers, &count); + if (gst_video_event_is_force_key_unit (event)) { + gst_video_event_parse_downstream_force_key_unit (event, + ×tamp, &stream_time, &running_time, &all_headers, &count); - GST_INFO_OBJECT (mp4vparse, "received downstream force key unit event, " - "seqnum %d running_time %" GST_TIME_FORMAT " all_headers %d count %d", - gst_event_get_seqnum (event), GST_TIME_ARGS (running_time), - all_headers, count); - handled = TRUE; + GST_INFO_OBJECT (mp4vparse, "received downstream force key unit event, " + "seqnum %d running_time %" GST_TIME_FORMAT + " all_headers %d count %d", gst_event_get_seqnum (event), + GST_TIME_ARGS (running_time), all_headers, count); - if (mp4vparse->force_key_unit_event) { - GST_INFO_OBJECT (mp4vparse, "ignoring force key unit event " - "as one is already queued"); - break; + if (mp4vparse->force_key_unit_event) { + GST_INFO_OBJECT (mp4vparse, "ignoring force key unit event " + "as one is already queued"); + } else { + mp4vparse->pending_key_unit_ts = running_time; + gst_event_replace (&mp4vparse->force_key_unit_event, event); + } + res = TRUE; + } else { + res = GST_BASE_PARSE_CLASS (parent_class)->event (parse, event); } - - mp4vparse->pending_key_unit_ts = running_time; - gst_event_replace (&mp4vparse->force_key_unit_event, event); break; } default: + res = GST_BASE_PARSE_CLASS (parent_class)->event (parse, event); break; } - - return handled; + return res; } static gboolean gst_mpeg4vparse_src_event (GstBaseParse * parse, GstEvent * event) { - gboolean handled = FALSE; + gboolean res; GstMpeg4VParse *mp4vparse = GST_MPEG4VIDEO_PARSE (parse); switch (GST_EVENT_TYPE (event)) { @@ -863,28 +863,27 @@ gst_mpeg4vparse_src_event (GstBaseParse * parse, GstEvent * event) gboolean all_headers; guint count; - if (!gst_video_event_is_force_key_unit (event)) - break; - - gst_video_event_parse_upstream_force_key_unit (event, - &running_time, &all_headers, &count); - - GST_INFO_OBJECT (mp4vparse, "received upstream force-key-unit event, " - "seqnum %d running_time %" GST_TIME_FORMAT " all_headers %d count %d", - gst_event_get_seqnum (event), GST_TIME_ARGS (running_time), - all_headers, count); + if (gst_video_event_is_force_key_unit (event)) { + gst_video_event_parse_upstream_force_key_unit (event, + &running_time, &all_headers, &count); - if (!all_headers) - break; + GST_INFO_OBJECT (mp4vparse, "received upstream force-key-unit event, " + "seqnum %d running_time %" GST_TIME_FORMAT + " all_headers %d count %d", gst_event_get_seqnum (event), + GST_TIME_ARGS (running_time), all_headers, count); - mp4vparse->pending_key_unit_ts = running_time; - gst_event_replace (&mp4vparse->force_key_unit_event, event); - /* leave handled = FALSE so that the event gets propagated upstream */ + if (all_headers) { + mp4vparse->pending_key_unit_ts = running_time; + gst_event_replace (&mp4vparse->force_key_unit_event, event); + } + } + res = GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, event); break; } default: + res = GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, event); break; } - return handled; + return res; } |