mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 03:01:03 +00:00
mpegvideoparse: do not set delta unit flag on unknown frame type
When encoding an image to mpeg2 video, with something like: gst-launch-1.0 encodebin name=e profile=mpegpsmux:video/mpeg,mpegversion=2,systemstream=false ! \ filesink location=sample.mpg filesrc num-buffers=1 blocksize=$(stat -c%s sample.png) \ location=sample/dts.png ! pngdec ! e. The only frame's type is set to an invalid value 0 The consequence is that mpegvideoparse sets the delta unit flag on the buffer because it is not an I frame, then decodebin3 drops this only frame because the delta unit flag is set and the decoder receives eos before it was able to receive any encoded data Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7832>
This commit is contained in:
parent
986b91fbe9
commit
a1c92c0cb1
1 changed files with 1 additions and 1 deletions
|
@ -931,7 +931,7 @@ gst_mpegv_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
|
||||||
|
|
||||||
if (G_UNLIKELY (mpvparse->pichdr.pic_type == GST_MPEG_VIDEO_PICTURE_TYPE_I))
|
if (G_UNLIKELY (mpvparse->pichdr.pic_type == GST_MPEG_VIDEO_PICTURE_TYPE_I))
|
||||||
GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
|
GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
|
||||||
else
|
else if (mpvparse->pichdr.pic_type != 0)
|
||||||
GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
|
GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
|
||||||
|
|
||||||
/* maybe only sequence in this buffer, though not recommended,
|
/* maybe only sequence in this buffer, though not recommended,
|
||||||
|
|
Loading…
Reference in a new issue