summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>2013-04-03 11:10:41 +0200
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2013-04-10 14:58:17 +0200
commit1ed3df201ec115f83065f0730ba84261d3061d08 (patch)
tree14bfe625e72dd781f0444af28ed41569814ef1b7
parentead7ec2f43795a1ead0a9bb9e784bfa81baba7b9 (diff)
vaapidecode: submit all decoded frames before decoding a new one.
Make sure to purge all pending frames that were already decoded prior to decoding a new one. This helps release VA surfaces as early as possible.
-rw-r--r--gst/vaapi/gstvaapidecode.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gst/vaapi/gstvaapidecode.c b/gst/vaapi/gstvaapidecode.c
index 9476cb30..c51ca639 100644
--- a/gst/vaapi/gstvaapidecode.c
+++ b/gst/vaapi/gstvaapidecode.c
@@ -351,9 +351,17 @@ gst_vaapidecode_handle_frame(GstVideoDecoder *vdec, GstVideoCodecFrame *frame)
{
GstFlowReturn ret;
+ /* Purge all pending frames we might have already. This helps
+ release VA surfaces as early as possible for _decode_frame() */
+ ret = gst_vaapidecode_push_decoded_frames(vdec);
+ if (ret != GST_FLOW_OK)
+ return ret;
+
ret = gst_vaapidecode_decode_frame(vdec, frame);
if (ret != GST_FLOW_OK)
return ret;
+
+ /* Purge any pending frame thay may have been decoded already */
return gst_vaapidecode_push_decoded_frames(vdec);
}