mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
mvedemux: Add proper flow return aggregation
NOT_LINKED should only be returned if all streams returned NOT_LINKED.
This commit is contained in:
parent
f407d51ae8
commit
f6713f9c3b
2 changed files with 13 additions and 2 deletions
|
@ -317,6 +317,7 @@ gst_mve_video_init (GstMveDemux * mve, const guint8 * data)
|
||||||
stream->palette = NULL;
|
stream->palette = NULL;
|
||||||
stream->caps = NULL;
|
stream->caps = NULL;
|
||||||
stream->last_ts = GST_CLOCK_TIME_NONE;
|
stream->last_ts = GST_CLOCK_TIME_NONE;
|
||||||
|
stream->last_flow = GST_FLOW_OK;
|
||||||
mve->video_stream = stream;
|
mve->video_stream = stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -661,6 +662,7 @@ gst_mve_audio_init (GstMveDemux * mve, guint8 version, const guint8 * data,
|
||||||
stream = g_new0 (GstMveDemuxStream, 1);
|
stream = g_new0 (GstMveDemuxStream, 1);
|
||||||
stream->offset = 0;
|
stream->offset = 0;
|
||||||
stream->last_ts = 0;
|
stream->last_ts = 0;
|
||||||
|
stream->last_flow = GST_FLOW_OK;
|
||||||
mve->audio_stream = stream;
|
mve->audio_stream = stream;
|
||||||
} else {
|
} else {
|
||||||
stream = mve->audio_stream;
|
stream = mve->audio_stream;
|
||||||
|
@ -1037,10 +1039,17 @@ gst_mve_demux_chain (GstPad * sinkpad, GstBuffer * inbuf)
|
||||||
GST_BUFFER_SIZE (outbuf), GST_PAD_NAME (stream->pad));
|
GST_BUFFER_SIZE (outbuf), GST_PAD_NAME (stream->pad));
|
||||||
|
|
||||||
ret = gst_pad_push (stream->pad, outbuf);
|
ret = gst_pad_push (stream->pad, outbuf);
|
||||||
|
stream->last_flow = ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GST_FLOW_IS_FATAL (ret))
|
if (ret == GST_FLOW_NOT_LINKED) {
|
||||||
ret = GST_FLOW_OK;
|
if (mve->audio_stream
|
||||||
|
&& mve->audio_stream->last_flow != GST_FLOW_NOT_LINKED)
|
||||||
|
ret = GST_FLOW_OK;
|
||||||
|
if (mve->video_stream
|
||||||
|
&& mve->video_stream->last_flow != GST_FLOW_NOT_LINKED)
|
||||||
|
ret = GST_FLOW_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/* update current offset */
|
/* update current offset */
|
||||||
mve->chunk_offset += mve->needed_bytes;
|
mve->chunk_offset += mve->needed_bytes;
|
||||||
|
|
|
@ -78,6 +78,8 @@ struct _GstMveDemuxStream {
|
||||||
GstClockTime last_ts;
|
GstClockTime last_ts;
|
||||||
gint64 offset;
|
gint64 offset;
|
||||||
|
|
||||||
|
GstFlowReturn last_flow;
|
||||||
|
|
||||||
/* video properties */
|
/* video properties */
|
||||||
guint16 width;
|
guint16 width;
|
||||||
guint16 height;
|
guint16 height;
|
||||||
|
|
Loading…
Reference in a new issue