discoverer: Get caps from the element's srcpad if possible
authorSebastian Dröge <sebastian@centricular.com>
Sat, 17 Dec 2016 19:58:29 +0000 (21:58 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Sat, 17 Dec 2016 20:01:10 +0000 (22:01 +0200)
commit15123c0455a3d7d785bb9765e6f8259da1db0bf7
tree8a99802e89afcb8ff98a7898b1fdf5e3758c8055
parentce693174f4f2faddd79309fd9d99c4760eb29131
discoverer: Get caps from the element's srcpad if possible

The caps put into the stream topology by decodebin are the caps at the
moment the pads are exposed on it. This is usually before decoders
received any buffers.
In discoverer we however wait for pre-roll, which ensures that each
decoder handled buffers already. At this point, there might be more
information known about the caps already that we could make use of.

One example here is extra information stored in the SEI of H264, like
the multiview-mode. This will be known if there is a SEI before the
first keyframe, but decodebin won't put this into the topology as it
only waits for the initial caps of h264parse (which come directly after
SPS/PPS).

With this change, the multiview-mode is in the caps reported by
discoverer in many cases.
gst-libs/gst/pbutils/gstdiscoverer.c