mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
nvdec: Fix possible frame drop on EOS
On eos, baseclass videoencoder call finish() vfunc instead of drain()
This commit is contained in:
parent
b00f6c4f81
commit
8862abd7c6
1 changed files with 10 additions and 0 deletions
|
@ -215,6 +215,7 @@ static gboolean gst_nvdec_src_query (GstVideoDecoder * decoder,
|
|||
GstQuery * query);
|
||||
static gboolean gst_nvdec_flush (GstVideoDecoder * decoder);
|
||||
static GstFlowReturn gst_nvdec_drain (GstVideoDecoder * decoder);
|
||||
static GstFlowReturn gst_nvdec_finish (GstVideoDecoder * decoder);
|
||||
|
||||
static GstStaticPadTemplate gst_nvdec_sink_template =
|
||||
GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SINK_NAME,
|
||||
|
@ -261,6 +262,7 @@ gst_nvdec_class_init (GstNvDecClass * klass)
|
|||
video_decoder_class->src_query = GST_DEBUG_FUNCPTR (gst_nvdec_src_query);
|
||||
video_decoder_class->drain = GST_DEBUG_FUNCPTR (gst_nvdec_drain);
|
||||
video_decoder_class->flush = GST_DEBUG_FUNCPTR (gst_nvdec_flush);
|
||||
video_decoder_class->finish = GST_DEBUG_FUNCPTR (gst_nvdec_finish);
|
||||
|
||||
element_class->set_context = GST_DEBUG_FUNCPTR (gst_nvdec_set_context);
|
||||
}
|
||||
|
@ -1010,6 +1012,14 @@ gst_nvdec_drain (GstVideoDecoder * decoder)
|
|||
return handle_pending_frames (nvdec);
|
||||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_nvdec_finish (GstVideoDecoder * decoder)
|
||||
{
|
||||
GST_DEBUG_OBJECT (decoder, "finish");
|
||||
|
||||
return gst_nvdec_drain (decoder);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_nvdec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue