mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
nvdec: Tell the parser we have complete pictures
This sets the CUVID_PKT_ENDOFPICTURE flag in order to inform the decoder that we have a complete picture. This should remove one frame latency otherwise introduce by NVidia parser.
This commit is contained in:
parent
0478e2dc1a
commit
a28ce16b3f
2 changed files with 16 additions and 0 deletions
|
@ -881,6 +881,18 @@ gst_nvdec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state)
|
||||||
GstBuffer *codec_data = gst_value_get_buffer (codec_data_value);
|
GstBuffer *codec_data = gst_value_get_buffer (codec_data_value);
|
||||||
gst_buffer_replace (&nvdec->codec_data, codec_data);
|
gst_buffer_replace (&nvdec->codec_data, codec_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* For all CODEC we get completre picture ... */
|
||||||
|
nvdec->recv_complete_picture = TRUE;
|
||||||
|
|
||||||
|
/* Except for JPEG, for which it depends on the caps */
|
||||||
|
if (klass->codec_type == cudaVideoCodec_JPEG) {
|
||||||
|
gboolean parsed;
|
||||||
|
if (gst_structure_get_boolean (str, "parsed", &parsed))
|
||||||
|
nvdec->recv_complete_picture = parsed;
|
||||||
|
else
|
||||||
|
nvdec->recv_complete_picture = FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1123,6 +1135,9 @@ gst_nvdec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame)
|
||||||
packet.timestamp = frame->pts;
|
packet.timestamp = frame->pts;
|
||||||
packet.flags |= CUVID_PKT_TIMESTAMP;
|
packet.flags |= CUVID_PKT_TIMESTAMP;
|
||||||
|
|
||||||
|
if (nvdec->recv_complete_picture)
|
||||||
|
packet.flags |= CUVID_PKT_ENDOFPICTURE;
|
||||||
|
|
||||||
nvdec->state = GST_NVDEC_STATE_PARSE;
|
nvdec->state = GST_NVDEC_STATE_PARSE;
|
||||||
nvdec->last_ret = GST_FLOW_OK;
|
nvdec->last_ret = GST_FLOW_OK;
|
||||||
|
|
||||||
|
|
|
@ -89,6 +89,7 @@ struct _GstNvDec
|
||||||
GstNvDecMemType mem_type;
|
GstNvDecMemType mem_type;
|
||||||
|
|
||||||
GstBuffer *codec_data;
|
GstBuffer *codec_data;
|
||||||
|
gboolean recv_complete_picture;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GstNvDecClass
|
struct _GstNvDecClass
|
||||||
|
|
Loading…
Reference in a new issue