mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 04:56:24 +00:00
vdpaumpegdec: drop frames if we haven't got an I_FRAME yet
This commit is contained in:
parent
66231a619a
commit
3a7a2af1fa
1 changed files with 11 additions and 5 deletions
|
@ -325,10 +325,14 @@ gst_vdp_mpeg_decoder_parse_picture (GstVdpMpegDecoder * mpeg_dec,
|
||||||
|
|
||||||
mpeg_dec->vdp_info.picture_coding_type = pic_hdr.pic_type;
|
mpeg_dec->vdp_info.picture_coding_type = pic_hdr.pic_type;
|
||||||
|
|
||||||
if (pic_hdr.pic_type == I_FRAME &&
|
if (pic_hdr.pic_type == I_FRAME) {
|
||||||
mpeg_dec->vdp_info.forward_reference != VDP_INVALID_HANDLE) {
|
if (mpeg_dec->vdp_info.forward_reference != VDP_INVALID_HANDLE) {
|
||||||
gst_buffer_unref (mpeg_dec->f_buffer);
|
gst_buffer_unref (mpeg_dec->f_buffer);
|
||||||
mpeg_dec->vdp_info.forward_reference = VDP_INVALID_HANDLE;
|
mpeg_dec->vdp_info.forward_reference = VDP_INVALID_HANDLE;
|
||||||
|
}
|
||||||
|
} else if (mpeg_dec->vdp_info.forward_reference == VDP_INVALID_HANDLE) {
|
||||||
|
GST_DEBUG_OBJECT (mpeg_dec, "Drop frame since we've got no I_FRAME yet");
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mpeg_dec->version == 1) {
|
if (mpeg_dec->version == 1) {
|
||||||
|
@ -439,7 +443,9 @@ gst_vdp_mpeg_decoder_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
case MPEG_PACKET_PICTURE:
|
case MPEG_PACKET_PICTURE:
|
||||||
GST_DEBUG_OBJECT (mpeg_dec, "MPEG_PACKET_PICTURE");
|
GST_DEBUG_OBJECT (mpeg_dec, "MPEG_PACKET_PICTURE");
|
||||||
|
|
||||||
gst_vdp_mpeg_decoder_parse_picture (mpeg_dec, packet_start, packet_end);
|
if (!gst_vdp_mpeg_decoder_parse_picture (mpeg_dec, packet_start,
|
||||||
|
packet_end))
|
||||||
|
return GST_FLOW_OK;
|
||||||
break;
|
break;
|
||||||
case MPEG_PACKET_SEQUENCE:
|
case MPEG_PACKET_SEQUENCE:
|
||||||
GST_DEBUG_OBJECT (mpeg_dec, "MPEG_PACKET_SEQUENCE");
|
GST_DEBUG_OBJECT (mpeg_dec, "MPEG_PACKET_SEQUENCE");
|
||||||
|
|
Loading…
Reference in a new issue