diff options
author | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2013-04-03 11:10:41 +0200 |
---|---|---|
committer | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2013-04-10 14:58:17 +0200 |
commit | 1ed3df201ec115f83065f0730ba84261d3061d08 (patch) | |
tree | 14bfe625e72dd781f0444af28ed41569814ef1b7 | |
parent | ead7ec2f43795a1ead0a9bb9e784bfa81baba7b9 (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.c | 8 |
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); } |