videoparsers: vp9: Need to process the first frame even not key.
authorHe Junyan <junyan.he@intel.com>
Fri, 23 Jul 2021 08:49:49 +0000 (16:49 +0800)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 23 Jul 2021 13:33:24 +0000 (13:33 +0000)
commite9d0d19f61ee9ec2eb5d3c29fc68a08b23539f72
tree1b9d86ce593665d20c461a5443c426b4fb66009a
parent0bde6bf750c5a3a34526f0da9683e532f813e40f
videoparsers: vp9: Need to process the first frame even not key.

Some cut VP9 streams begin with a non key frame. The current code
just bail out the parse_process_frame() if not a key frame. Because
of this, we do not set the valid caps before we push the data of the
first frame(even this first frame will be discarded by the downstream
decoder because it is not a key frame).

The pipeline such as:
gst-launch-1.0 filesrc location=some.ivf ! ivfparse ! vp9parse !
  vavp9dec ! fakesink
will get a negotiation error and the pipeline can not continue. The
correct behaviour should be: the decoder discard the first frame and
continue to decode later frames successfully.

So, when the parse does not have valid stream info(should be the first
frame case), we should continue and report caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2427>
gst/videoparsers/gstvp9parse.c