[vlc-devel] [RFC PATCH 0/2] Decoder fallback (new question inside)
Thomas Guillem
thomas at gllm.fr
Fri Apr 8 16:44:41 CEST 2016
I just rebased/fixed a very old set of patches:
https://mailman.videolan.org/pipermail/vlc-devel/2015-June/103216.html
I didn't fix issues addressed in this thread
https://mailman.videolan.org/pipermail/vlc-devel/2015-June/103220.html (Audio
output device live change is still not handled).
But I have one more problematic issue in mind:
When a decoder module fails, it releases the input block_t. Therefore the next
module won't decode this block, this can be very problematic if a failure
happens on a key frame.
Since the decoder module owns the input_block once pf_decode is called, we
can't reuse it after. To solve this issue, I see only 3 solutions (that I don't
like).
- Constify the block in pf_decode. Modules won't be able to modify or release
it, the release will be done by input/decoder.c. Some modules will need to
be heavily modified for that new behavior. Furthermore, it'll introduce a
new memcpy for asynchronous modules.
- Dup the input block before pf_decode. An extra malloc + mempcy for each
input blocks is really bad. Maybe we can do that until the decoder outputted
a first frame ?
- Handle the fallback elsewhere. In case of decoder module failure, Seek at
last good position, and try a new decoder module.
What do you think ?
Thomas Guillem (2):
modules: add module_need_ignored
decoder: fallback to a next module on error
include/vlc_modules.h | 8 +++++---
modules/audio_output/mmdevice.c | 2 +-
modules/audio_output/winstore.c | 2 +-
modules/codec/avcodec/va.c | 2 +-
src/config/core.c | 2 +-
src/input/decoder.c | 39 ++++++++++++++++++++++++++++++++++-----
src/misc/messages.c | 2 +-
src/modules/bank.c | 27 ++++++++++++++++++++++-----
src/modules/modules.c | 13 +++++++++++--
src/modules/modules.h | 2 +-
src/network/tls.c | 4 ++--
src/video_output/window.c | 2 +-
12 files changed, 81 insertions(+), 24 deletions(-)
--
2.8.0.rc3
More information about the vlc-devel
mailing list