[vlc-devel] [RFC PATCH 01/12] modules: add module_need_next and vlc_module_load_next

Rémi Denis-Courmont remi at remlab.net
Thu Jul 21 11:22:26 CEST 2016


Le 2016-07-21 10:17, Thomas Guillem a écrit :
>> Asynchronous failure means format loss. Synchronous failure means
>> unsupported format.
>>
>> You can't have asynchronous failure for unsupported format, since 
>> you'd
>> either end up in an infinite loop, or breaking format loss handling.
>
> An infinite loop, where ?

Format loss works this way:
- Probe
   - success
- Decode
   - success
...
- Decode
   - failure
- Close
- Probe
   - failure
- Probe next/fallback plugin

We have discussed this several times with Denis. If you do asynchronous 
failure for unsupported formats, you get an infinite loop:

- Probe
   - success
- Decode
   - failure
- Close
- Probe
   - success
...


> You mean the DecoderThread that continue to pull blocks and release 
> them
> when the module is in an error state ? If so, this is already 
> happening
> currently. I would also like to solve this issue by notifying the 
> core
> that an ES track should be disabled.
>
> By the way, it's currently possible in avcodec: having an 
> asynchronous
> failure for unsupported format.

Not really. libavcodec handles fallback and output format changes 
internally, so there are no fallback. Unsupported formats are treated as 
unrecoverable failures, which they are (mostly unknown or unsupported 
pixel formats).

-- 
Rémi Denis-Courmont
http://www.remlab.net/


More information about the vlc-devel mailing list