gstreamer/gst/playback
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
..
gstdecodebin2.c Pass the code through codespell 2019-08-30 13:05:36 +00:00
gstdecodebin3-parse.c decodebin3: Do not modify structure of EOS event 2018-05-10 09:09:08 +02:00
gstdecodebin3.c Pass the code through codespell 2019-08-30 13:05:36 +00:00
gstparsebin.c Pass the code through codespell 2019-08-30 13:05:36 +00:00
gstplay-enum.c playbin: add nick for soft colorbalance play flag to fix gst-inspect 2014-04-27 00:26:14 +01:00
gstplay-enum.h playback: Document GST_PLAY_FLAG_SOFT_COLORBALANCE 2015-05-30 01:11:47 +10:00
gstplayback.c doc: Fix some gtk-doc comments 2019-05-13 11:34:08 -04:00
gstplayback.h playback: New uridecodebin3 element 2018-02-10 12:24:09 +01:00
gstplaybackutils.c playback-utils: Fix caps leak on failure 2018-01-17 12:18:41 +00:00
gstplaybackutils.h playback: Mark internal functions as G_GNUC_INTERNAL 2016-09-01 13:07:07 +03:00
gstplaybin2.c playbin: Handle error message with redirection indication 2019-11-07 12:22:02 +00:00
gstplaybin3.c Pass the code through codespell 2019-08-30 13:05:36 +00:00
gstplaysink.c Pass the code through codespell 2019-08-30 13:05:36 +00:00
gstplaysink.h playsink: Add text-offset property 2018-11-01 09:52:34 +00:00
gstplaysinkaudioconvert.c Fix FSF address 2012-11-03 23:05:09 +00:00
gstplaysinkaudioconvert.h Fix FSF address 2012-11-03 23:05:09 +00:00
gstplaysinkconvertbin.c base: use new gst_element_class_add_static_pad_template() 2016-03-24 14:25:41 +02:00
gstplaysinkconvertbin.h playsinkconvertbin: Remove obsolete segment tracking 2013-07-23 13:36:09 +02:00
gstplaysinkvideoconvert.c Fix FSF address 2012-11-03 23:05:09 +00:00
gstplaysinkvideoconvert.h Fix FSF address 2012-11-03 23:05:09 +00:00
gstrawcaps.h playback: Add support for CEA 608/708 CC overlay elements 2018-04-09 15:15:24 +02:00
gststreamsynchronizer.c streamsynchronizer: avoid pad destruction races. 2019-09-24 20:09:09 +00:00
gststreamsynchronizer.h streamsynchronizer: every stream need keep their own send_gap_event flag 2017-03-23 12:55:57 +02:00
gstsubtitleoverlay.c Pass the code through codespell 2019-08-30 13:05:36 +00:00
gstsubtitleoverlay.h subtitleoverlay: Add a subtitle-ts-offset property 2018-11-01 09:52:34 +00:00
gsturidecodebin.c Pass the code through codespell 2019-08-30 13:05:36 +00:00
gsturidecodebin3.c Pass the code through codespell 2019-08-30 13:05:36 +00:00
gsturisourcebin.c Pass the code through codespell 2019-08-30 13:05:36 +00:00
meson.build doc: Port to hotdoc 2019-05-13 11:34:08 -04:00