decodebin3: Handle streams without CAPS or TIME segment
authorEdward Hervey <edward@centricular.com>
Wed, 26 Apr 2023 10:20:25 +0000 (12:20 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 27 Apr 2023 13:48:09 +0000 (14:48 +0100)
commitfcd4085c25cf3a55f5a712ca9f3c72cb3f1bf70c
tree1e949a6e4f258141df7d12396da57644ae9d254c
parenta82e1fd5ad124c7c37bde4d4c39598c188cb9fbb
decodebin3: Handle streams without CAPS or TIME segment

decodebin3 will do its best to figure out whether a parsebin is required to
process the incoming stream.

The problem is that for push-based stream it could happen that the stream would
not provide any caps, resulting in nothing being linked internally.

Furthermore, there is the possibility that a stream *with* caps would not be
using a TIME segment, which is required for multiqueue to properly work.

In order to fix those two issues, we force the usage of parsebin on push-based
streams:
* When the pad is linked, if upstream can't provide any caps
* When we get a non-TIME segment

Fixes #2521

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4499>
subprojects/gst-plugins-base/gst/playback/gstdecodebin3.c