On Mon, Feb 28, 2022 at 7:11 AM Vitaly Zaitsev via devel
<devel@lists.fedoraproject.org> wrote:
>
> On 28/02/2022 03:45, Ian McInerney via devel wrote:
> > How are these removed codecs handled in the library?
>
> ffmpeg is a monolithic library.
>

ffmpeg is a set of libraries. The libavcodec library is a monolithic
library of compiled-in codec code.

> > Can we link an upstream application against FFMPEG in Fedora now and have 
> > it gracefully fail when it tries to access a non-free codec that was 
> > removed, or does the removal of these codecs create a different API that 
> > upstream applications would have to code around?
>
> Applications need to use a special API to check if the codec is
> available before attempting to use it. Otherwise, the application will
> instantly crash.
>

It's not a special API, it's how you're supposed to use libavcodec.

If you know you need a specific codec, you're supposed to use
avcodec_find_decoder()/avcodec_find_encoder() and check if it's even
available and before trying to initialize it, since you need the
AVCodec struct for the codec to pass into the initializer function. If
those functions return NULL, then you're supposed to gracefully fail.

And if you want to know what codecs are provided by FFmpeg, you are
supposed to use av_codec_iterate() to identify all the registered
codecs in libavcodec that are functional and use that to populate what
your application can work with. This lets you collect AVCodec structs
for all the codecs built in FFmpeg for you to do something with it.

Most applications will probably want to do the latter and do their own
prioritization/handling of codec alternatives, because that lets
applications expose hardware acceleration options.

Applications not doing this properly are broken, because this is
literally how you're supposed to use libavcodec.

> > 2) Is there an easily accessible list of the enabled codecs we can point 
> > upstreams to when talking about this?
> Most upstream developers don't want to deal with such situations: "Use
> our binary/snap/flatpak. It works fine".

Fortunately, that's where we can bring value to the ecosystem, as
we're supposed to be capable enough to work with upstreams to fix
broken code. And we're not the first to offer reduced functionality
FFmpeg (both Debian and openSUSE do too, so we're in good company
here).



-- 
真実はいつも一つ!/ Always, there's only one truth!
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to