[vlc-commits] chromecast: rework sout/demux_filter behavior

Thomas Guillem git at videolan.org
Fri Feb 23 08:29:35 CET 2018


vlc/vlc-3.0 | branch: master | Thomas Guillem <thomas at gllm.fr> | Tue Feb 20 17:59:00 2018 +0100| [0d51605125a763ef2353cfb26fbd8a4048ca4b9e] | committer: Thomas Guillem

chromecast: rework sout/demux_filter behavior

This commit drastically improves the buffering speed when casting to a CC
receiver. Indeed, some CC receivers need a 1minute buffer. Since the input
thread was previously paced, you could wait 59.7 sec (1min - file-caching
value) to get the playback started.

To fix this issue, the CC sout can now control the pacing
(ACCESS_OUT_CONTROLS_PACE = true). The input thread, via the cc demux-filter,
is now paced by the CC sout. The input-thread is paced in order to avoid
unresponsive controls. Indeed, we want to prevent the case when the input
thread is waiting for the sout that is waiting for the http buffer to be
emptied (via the fifo wait from input_DecoderDecode()).

Now that the CC can buffer 1 minute of data before failing, the transcode
fallback also needed to be reworked. It's now handled by the demux-filter that
will seek back (if possible) to the last position before doing the fallback.
The same goes when disabling the CC filter or when changing es tracks.

This commit also improves the CC time report by comparing the system clock with
the CC one.

This commit also reworks seeking. We need to flush the sout (and the muxer) and
request a new input. The previous method, using the seek command could not work
well with live streaming.

(cherry picked from commit aad025eb8b7addbc0af7b9bb756d01e0fab40d4b)
Signed-off-by: Thomas Guillem <thomas at gllm.fr>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=0d51605125a763ef2353cfb26fbd8a4048ca4b9e
---

 modules/stream_out/chromecast/cast.cpp             | 365 +++++++++------------
 modules/stream_out/chromecast/chromecast.h         |  42 +--
 modules/stream_out/chromecast/chromecast_common.h  |  26 +-
 modules/stream_out/chromecast/chromecast_ctrl.cpp  | 296 +++++++++--------
 modules/stream_out/chromecast/chromecast_demux.cpp | 213 +++++++++---
 5 files changed, 523 insertions(+), 419 deletions(-)

Diff:   http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commitdiff;h=0d51605125a763ef2353cfb26fbd8a4048ca4b9e


More information about the vlc-commits mailing list