[vlc-devel] [RFC PATCH 00/12] decoder fallback v4

Thomas Guillem thomas at gllm.fr
Tue Jul 19 19:36:22 CEST 2016

After trying every possible way to have decoder fallback working. I went back
to my first ideas.

Decoder module fallback will be used to try the next decoder module when we
detect an error from the pf_decode_* callback (for now, we can only do that
when we fail from the Open() callback).

The main use case will be for S/PDIF decoders. These decoders may fail from
pf_decode after processing the first input block when it try to configure the
audio output. Instead of failing, we want to try the next module (avcodec in
most case) that will output PCM.

An other use case is to fallback to a software decoder when a hardware decoder
fails (mediacodec or videotoolbox for example). Indeed, in some scenario, we
can know the full output format (and know if the module will fail) only after
processing the first input buffers.

Most important patches are: 01/12, 05/12 and 09/12.

Thomas Guillem.

Thomas Guillem (12):
  modules: add module_need_next and vlc_module_load_next
  decoder: don't set dec->b_error if aout_update_format fails
  decoder: abort packetizer loop in case of error
  decoder: factor decoder reload when fmt_in changes
  decoder: handle module fallback
  decoder: reload module from start if aout device changes
  decoder: set drained status in draining scope
  decoder: extend lock scope
  decoder: save first input blocks if the module can fallback
  a52: fallback if audio output fails
  a52tofloat32: disable
  mediacodec: fallback if there is no output

 include/vlc_codec.h                           |   8 +
 include/vlc_modules.h                         |   5 +
 modules/audio_filter/converter/a52tofloat32.c |   1 +
 modules/codec/a52.c                           |   7 +
 modules/codec/omxil/mediacodec.c              |  19 +-
 src/input/decoder.c                           | 287 +++++++++++++++++++++++---
 src/libvlccore.sym                            |   2 +
 src/modules/modules.c                         | 162 +++++++++++----
 8 files changed, 402 insertions(+), 89 deletions(-)


More information about the vlc-devel mailing list