gstreamer/gst
Thibault Saunier 494ee67446 playbin: Handle error message with redirection indication
There are in the wild (mp4) streams that basically contain no tracks
but do have a redirect info[0], in which case, qtdemux won't be able
to expose any pad (there are no tracks) so can't post anything but
an error on the bus, as:
  - it can't send EOS downstream, it has no pad,
  - posting an EOS message will be useless as PAUSED state can't be
    reached and there is no sink in the pipeline meaning GstBin will
    simply ignore it

In that case, currently the application could try to handle that but it
is pretty complex as it will get the REDIRECT message on the bus at
which point it could set the URL but playbin will ignore it, as
it will only be for the next EOS, it thus need to set the pipeline to
NULL (READY won't do as it is already in READY at that point). And it
needs to figure out the following ERROR message on the bus needs to be
ignored, which is not really simple.

The approach here is to allow element to add details to the ERROR
message with a `redirect-location` field which elements like playbin handle
and use right away.

We could also use the element 'redirect' message in playbin, but the
issue with that approach is that the element will still emit the ERROR
message on the bus, leading to wrong behaviour. That can't be avoided
since in the case the app/parent pipeline is not handling the redirect
instruction, the ERROR message is necessary (and there is no way to
detect that the message has been "handled" from the element emitting the
redirect).

[0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
2019-11-07 12:22:02 +00:00
..
adder Remove autotools build system 2019-10-13 14:15:43 +01:00
app Remove autotools build system 2019-10-13 14:15:43 +01:00
audioconvert audioconvert: Fixed changing mix-matrix at runtime 2019-11-05 08:49:07 +01:00
audiomixer Remove autotools build system 2019-10-13 14:15:43 +01:00
audiorate Remove autotools build system 2019-10-13 14:15:43 +01:00
audioresample Remove autotools build system 2019-10-13 14:15:43 +01:00
audiotestsrc Remove autotools build system 2019-10-13 14:15:43 +01:00
compositor compositor: Add support for VUYA format 2019-11-04 14:50:28 +00:00
encoding encodebin: Ensure that a single segment is pushed into encoders 2019-11-05 18:03:09 +00:00
gio Remove autotools build system 2019-10-13 14:15:43 +01:00
overlaycomposition overlaycomposition: set sink pad to proxy allocation queries 2019-11-06 12:09:50 +00:00
pbtypes Remove autotools build system 2019-10-13 14:15:43 +01:00
playback playbin: Handle error message with redirection indication 2019-11-07 12:22:02 +00:00
rawparse Remove autotools build system 2019-10-13 14:15:43 +01:00
subparse Remove autotools build system 2019-10-13 14:15:43 +01:00
tcp Remove autotools build system 2019-10-13 14:15:43 +01:00
typefind Remove autotools build system 2019-10-13 14:15:43 +01:00
videoconvert Remove autotools build system 2019-10-13 14:15:43 +01:00
videorate videorate: Fix max-duplication-time handling 2019-11-04 19:01:10 +00:00
videoscale Remove autotools build system 2019-10-13 14:15:43 +01:00
videotestsrc Remove autotools build system 2019-10-13 14:15:43 +01:00
volume Remove autotools build system 2019-10-13 14:15:43 +01:00
meson.build compositor: add to build after move from -bad 2018-12-28 12:16:18 +01:00