vaapidecode: fix decoder flush.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Thu, 21 Nov 2013 10:01:41 +0000 (11:01 +0100)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Thu, 21 Nov 2013 10:08:23 +0000 (11:08 +0100)
commita6436f27d5103cf01e180f1100a9ccc8a6bbaa87
tree62efa38c2d685c72b370e74d8bcc8b6b32fa9593
parentaf4785b722a0e844f7aee91407e08feba15abb70
vaapidecode: fix decoder flush.

There are situations where gst_video_decoder_flush() is called, and
this subsequently produces a gst_video_decoder_reset() that kills the
currently active GstVideoCodecFrame. This means that it no longer
exists by the time we reach GstVideoDecoder::finish() callback, thus
possibly resulting in a crash if we assumed spare data was still
available for decode (current_frame_size > 0).

Try to honour GstVideoDecoder::reset() behaviour from GStreamer 1.0
that means a flush, thus performing the actual operations there like
calling gst_video_decoder_have_frame() if pending data is available.
gst/vaapi/gstvaapidecode.c