Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#6442 closed defect (invalid)

libavcodec shouldn't advertise hardware specific codecs on systems without such hardware

Reported by: plater Owned by:
Priority: normal Component: avcodec
Version: unspecified Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug: >= ffmpeg-3.3: browser won't play youtube video due to advertised h264_cuvid codec being present but not functional.
How to reproduce:
See https://bugzilla.suse.com/show_bug.cgi?id=1041794
When using the official crippled avcodec in openSUSE the h264 codec is not present but the h264_cuvid decoder is advertised and the browser engine attempts to use this codec on no nvidia hardware. I have fixed this by disabling cuvid and cuda in the build. I can most probably enable cuda and just disable cuvid as a user with the crippled avcodec would most likely have the uncrippled version from Packman installed and I can confirm that when the normal h264 is available it is used and the youtube video works.
There is also an anomaly that I can't explain which was also fixed when I disabled cuvid and cuda relating to gstreamer's libav see:
https://bugzilla.suse.com/show_bug.cgi?id=1039163
Unfortunately I can't reproduce that bug as I have intel graphics but I have two low end nvida cards which I will try at a later stage, when I have time to risk breaking my system.
In that bug (1039163) the user has 4 different computers with nvidia graphics and gstreamer's libav timed out when attempting to read mpeg-1 and 2 video, I'm not sure yet if the user has official nvidia drivers or the kernel's nouveau drivers in use.

Change History (6)

comment:1 Changed 2 years ago by cehoyos

  • Resolution set to invalid
  • Status changed from new to closed

We know that Opensuse is abusing the name of our libraries, there is nothing we can do about it.
Please do not mix different issues in one ticket.

comment:2 Changed 2 years ago by plater

I'm confused, what abuse of libavcodec's name are you referring to? If there is naming abuse I will fix it. Full build log for ffmpeg in question:
https://build.opensuse.org/build/openSUSE:Leap:42.2:Update/standard/x86_64/ffmpeg.6675/_log
I apologize for the second issue, I was merely asking for advice as to whether there was a relation between the two. Possibly another openSUSE maintainer was less than polite in the past?

comment:3 Changed 2 years ago by oromit

This is more a bug in the application using the libraries.
libavcodec can't possibly know in advance which hw codecs are supported on a system, and it's up to the individual application to do a proper fallback.

comment:4 Changed 2 years ago by plater

This is more of a feature request for runtime detection of the gpu that would solve the browsers issues. One has apparently acknowledged the problem but WONTFIX. The other issue seems to be gstreamer's problem that is fixed in later releases. What ffmpeg version introduced cuvid decoders?

comment:5 Changed 2 years ago by heleppkes

The cuvid decoder already has runtime detection, if you try to use it and its not supported, it'll instantly fail and the application knows to use something else.

comment:6 Changed 2 years ago by plater

The gst-libav issue is fixed in their git. Both issues were exposed by ffmpeg >= 3.3 enabling cuvid by default.

Note: See TracTickets for help on using tickets.