msdkdec: fix decoding issue for interlaced streams

Currently h264parser produces a field or a frame for
alignment=au for interlaced streams, but the flag
MFX_BITSTREAM_COMPLETE_FRAME needs a complete frame
or complementary field pair of data, this results in
broken images being output.

Some patches have been sent out to fix h264parser,
but they are pending on some unfinished work. In
order to make gstreamer-msdk decoding work properly
for interlaced streams before h264parser is fixed,
this flag will be removed temporarily and will be
added back once h264parser if fixed.

Related to:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/399
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/228
This commit is contained in:
Fuwei Tang 2019-08-08 04:54:38 +08:00
parent f3e12a0b56
commit df59db988b

View file

@ -914,7 +914,6 @@ gst_msdkdec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame)
bitstream.Data = map_info.data; bitstream.Data = map_info.data;
bitstream.DataLength = map_info.size; bitstream.DataLength = map_info.size;
bitstream.MaxLength = map_info.size; bitstream.MaxLength = map_info.size;
bitstream.DataFlag = MFX_BITSTREAM_COMPLETE_FRAME;
} else { } else {
/* Non packetized streams: eg: vc1 advanced profile with per buffer bdu */ /* Non packetized streams: eg: vc1 advanced profile with per buffer bdu */
gst_adapter_push (thiz->adapter, gst_buffer_ref (input_buffer)); gst_adapter_push (thiz->adapter, gst_buffer_ref (input_buffer));