Summary: | media-video/vlc - Unrecognized configure options or hardware acceleration (vdpau vaapi) | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | jospezial <jospezial> |
Component: | Current packages | Assignee: | Gentoo Media-video project <media-video> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | media-video, proxy-maint, rzubaly, SDNick484, ua_gentoo_bugzilla |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
vlc-9999.ebuild
vlc-9999.ebuild vlc-9999.ebuild vlc-9999.ebuild metadata.xml vlc-9999.ebuild metadata.xml vlc-2.2.9999.ebuild vlc-9999.ebuild.patch vlc-2.2.9999.ebuild.patch metadata.xml.patch |
Description
jospezial
2016-01-11 17:27:06 UTC
http://git.videolan.org/?p=vlc.git;a=commit;h=d71c794d5f573b7a0b04983b06942e6805dade2d cachegen: remove force option and always reset the cache when the helper tool is executed (refs #14519) http://git.videolan.org/?p=vlc.git;a=commit;h=b15db2c780c20204c45cd9473f8e25d905dcc842 cachegen: Remove remnants of -f option The -f option of cachegen was removed in d71c794d. refs #16211 * Running /usr/lib64/vlc/vlc-cache-gen on /usr/lib64/vlc/plugins/ /usr/lib64/vlc/vlc-cache-gen: invalid option -- 'f' Usage: /usr/lib64/vlc/vlc-cache-gen <path> Generate the LibVLC plugins cache for the specified plugins directory. >>> media-video/vlc-9999 merged. >>> Regenerating /etc/ld.so.cache... http://git.videolan.org/?p=vlc.git;a=commit;h=e57d32f664ff63ead57dca1fed7aedd59edac9fb configure: FFmpeg hwaccel requires libavcodec < 57.10.100 Since n2.9-dev-1400-g31741ae, the VLC avcodec plug-in will fail to initialize hwaccel. This is by FFmpeg design. ------------------ I had to modify configure.ac to force configure pass with vdpau and vaapi enabled. This is the resulting message from vlc with that forced hwaccel: [h264 @ 0x7fe79582d6c0] Hardware accelerated decoding with frame threading is not supported. ================================================================= Package Settings ================================================================= media-video/vlc-9999::gentoo was built with the following: USE="X a52 aalib alsa avcodec avformat bluray cdda cddb dbus dts dvb dvbpsi dvd encode faad ffmpeg flac fluidsynth fontconfig gcrypt gme gnutls jack jpeg kate libass libnotify libsamplerate libtiger live lua matroska modplug mp3 mpeg mtp musepack ncurses ogg opengl png postproc projectm pulseaudio qt5 rtsp schroedinger sdl sftp shout skins speex svg swscale taglib theora truetype twolame udev v4l vaapi vdpau vlm vnc vorbis vpx x264 x265 xcb xml xv zvbi (-altivec) -atmo (-audioqueue) -bidi -chromaprint -dc1394 -debug -directfb (-directx) (-dxva2) -fdk -gnome -growl -httpd -ieee1394 -kde -libav -libcaca -libtar -linsys -lirc (-macosx-dialog-provider) (-macosx-eyetv) (-macosx-qtkit) (-macosx-quartztext) (-media-library) (-neon) -omxil -opencv -optimisememory -opus -qt4 -rdp -run-as-root -samba -sdl-image -sid -test -tremor -upnp -vcdx -wma-fixed -zeroconf" ABI_X86="64" CPU_FLAGS_X86="mmx sse" LDFLAGS="-Wl,-O1 -Wl,--as-needed -L/usr/lib64/sidplay/builders/" media-video/ffmpeg-9999::gentoo was built with the following: USE="X aac aacplus alsa bluray bzip2 cdio encode faac fontconfig gme gnutls gpl gsm hardcoded-tables iconv jack jpeg2k ladspa libass libressl librtmp libv4l lzma modplug mp3 network openal opengl openh264 postproc pulseaudio rubberband schroedinger sdl speex ssh theora threads truetype twolame v4l vaapi vdpau vorbis vpx wavpack webp x264 x265 xcb xvid zlib zvbi (-altivec) -amr -amrenc (-armv5te) (-armv6) (-armv6t2) (-armvfp) -bs2b -celt -chromaprint -cpudetection -debug -doc -examples -fdk -flite -frei0r -fribidi -gcrypt -gmp -iec61883 -ieee1394 -kvazaar -libcaca -libsoxr (-mipsdspr1) (-mipsdspr2) (-mipsfpu) (-mmal) (-neon) -nvenc -openssl -opus -oss -pic -quvi -samba -snappy -static-libs -test -zimg" ABI_X86="32 64 -x32" CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 ssse3 -3dnow -3dnowext -aes -avx -avx2 -fma3 -fma4 -sse4_1 -sse4_2 -xop" FFTOOLS="aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart sidxindex trasher" ffmpeg version N-77794-g71f73ee Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.3.0 (Gentoo 5.3.0 p1.0, pie-0.6.5) configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++ --ar=x86_64-pc-linux-gnu-ar --optflags='-march=native -O2 -pipe' --disable-static --enable-avfilter --enable-avresample --disable-stripping --enable-version3 --enable-nonfree --disable-indev=oss --disable-outdev=oss --enable-bzlib --disable-runtime-cpudetect --disable-debug --disable-doc --disable-gcrypt --enable-gnutls --disable-gmp --enable-gpl --enable-hardcoded-tables --enable-iconv --enable-lzma --enable-network --disable-openssl --enable-postproc --disable-libsmbclient --enable-ffplay --enable-sdl --enable-vaapi --enable-vdpau --enable-xlib --enable-libxcb --enable-libxcb-shm --enable-libxcb-xfixes --enable-zlib --enable-libcdio --disable-libiec61883 --disable-libdc1394 --disable-libcaca --enable-openal --enable-opengl --enable-libv4l2 --enable-libpulse --disable-libopencore-amrwb --disable-libopencore-amrnb --disable-libfdk-aac --enable-libopenjpeg --enable-libbluray --disable-libcelt --enable-libgme --enable-libgsm --disable-mmal --enable-libmodplug --disable-libopus --disable-libquvi --enable-librtmp --enable-libssh --enable-libschroedinger --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libzvbi --disable-libbs2b --disable-chromaprint --disable-libflite --disable-frei0r --disable-libfribidi --enable-fontconfig --enable-ladspa --enable-libass --enable-libfreetype --enable-librubberband --disable-libzimg --disable-libsoxr --enable-pthreads --enable-libvo-aacenc --disable-libvo-amrwbenc --enable-libmp3lame --enable-libaacplus --enable-libfaac --disable-libkvazaar --disable-nvenc --enable-libopenh264 --disable-libsnappy --enable-libtheora --enable-libtwolame --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --disable-amd3dnow --disable-amd3dnowext --disable-aesni --disable-avx --disable-avx2 --disable-fma3 --disable-fma4 --disable-sse4 --disable-sse42 --disable-xop --cpu=host libavutil 55. 13.100 / 55. 13.100 libavcodec 57. 22.100 / 57. 22.100 libavformat 57. 21.101 / 57. 21.101 libavdevice 57. 0.100 / 57. 0.100 libavfilter 6. 23.100 / 6. 23.100 libavresample 3. 0. 0 / 3. 0. 0 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Created attachment 423198 [details]
vlc-9999.ebuild
New live ebuild attached that addresses the unrecognized config parameters, the intf-vcd.txt, and the vlc-cache-gen -f.
Can you elaborate on the hwaccel issue? I'm not clear whether it's on the VLC side or the ffmpeg.
(In reply to Nick Andrade from comment #3) > Created attachment 423198 [details] > vlc-9999.ebuild > > New live ebuild attached that addresses the unrecognized config parameters, > the intf-vcd.txt, and the vlc-cache-gen -f. > Your attached ebuild works and vlc merges with USE="-vdpau -vaapi" . > Can you elaborate on the hwaccel issue? I'm not clear whether it's on the > VLC side or the ffmpeg. As I understand: Something has changed in ffmpeg (security related? deprecation?) so the hwaccel in vlc is broken and has to be adapted in vlc to a new method. For that is the configure warning/error in vlc. I can't find a commit in ffmpeg git related to n2.9-dev-1400-g31741ae . could be this: http://git.videolan.org/?p=ffmpeg.git;a=commit;h=31741aecbf9938194b25f14de434104be33f5809 avcodec: disallow hwaccel with frame threads This might be of some interest: https://forum.videolan.org/viewtopic.php?f=13&t=130246&p=436193#p436193 https://mailman.videolan.org/pipermail/vlc-devel/2016-January/105737.html I think osx-notifications USE should be masked for default gentoo users. Would be nice to have your ebuild in the tree. About the hwaccel I see no new development news. Btw, vlc-2.2.2 was tagged: author Jean-Baptiste Kempf <jb@videolan.org> Wed, 20 Jan 2016 12:10:22 +0100 (12:10 +0100) VLC media player 2.2.2 'Weatherwax' This is the second minor update of the 2.2.x branch. This release fixes numerous crashes and security issues. Everyone should update now. I'll work on touching up the ebuild and getting it into Portage tonight. I agree with masking osx-notifications, but need to figure out how to deal with hwaccel given the info in the links thunderrd provided. (In reply to jospezial from comment #4) > (In reply to Nick Andrade from comment #3) > > Created attachment 423198 [details] > > vlc-9999.ebuild > > > > New live ebuild attached that addresses the unrecognized config parameters, > > the intf-vcd.txt, and the vlc-cache-gen -f. > > > > > Your attached ebuild works and vlc merges with USE="-vdpau -vaapi" . > > > > Can you elaborate on the hwaccel issue? I'm not clear whether it's on the > > VLC side or the ffmpeg. > > As I understand: > Something has changed in ffmpeg (security related? deprecation?) so the > hwaccel in vlc is broken and has to be adapted in vlc to a new method. > For that is the configure warning/error in vlc. > > I can't find a commit in ffmpeg git related to n2.9-dev-1400-g31741ae . > > could be this: > http://git.videolan.org/?p=ffmpeg.git;a=commit; > h=31741aecbf9938194b25f14de434104be33f5809 > avcodec: disallow hwaccel with frame threads What version of ffmpeg are you running? Are you using their live ebuild as well? Created attachment 423742 [details] vlc-9999.ebuild New live ebuild; changes include all previous changes plus: 1. Renamed "osx-notifications" to "macosx-notifications" for consistency with other OSX specific parameters. Will eventually be masked in package.use.mask. 2. Added a new "hwaccel" USE flag that limits you either to libav or to ffmpeg-2.8.x if enabled (based on limits stated in https://mailman.videolan.org/pipermail/vlc-devel/2016-January/105737.html). Will try to get some folks to run-test, and if good, publish. As for 2.2.2, I'll release it shortly after it hits the main VLC site (videolan.org). Created attachment 423746 [details]
vlc-9999.ebuild
NP-Hardass brought to my attention the fact that both vaapi and vdpau are already existing use flags in VLC so I could limit ffmpeg versions there instead. So this ebuild version drops hwaccel but adds the logic to vaapi and vdpau.
Created attachment 423748 [details]
vlc-9999.ebuild
Added a new chromecast USE flag. No GUI support yet; can be accessed via:
$ vlc --sout="#chromecast{ip=xxx.xxx.xxx.xxx}"
Created attachment 423750 [details]
metadata.xml
Updated metadata.xml for chromecast and macosx-notifications. Keeping old entries removed from the live ebuild as they're still valid for the stable and unstable versions.
Resolved in https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1b4324c1643ddd0385eb674c1356642f74a2110a "Restrict ffmpeg versions to <ffmpeg-2.8 for hwaccel via vaapi and vdpau" Actually, the restriction should be <ffmpeg-2.9, not 2.8. 2.8.5 working fine for me on my machine. From the link I provided above from the developer: "Alternatively, you would have to stick to version 2.8.x (or older) of FFmpeg, or disable hardware acceleration support in VLC completely." Oh, after looking at the commit I see it's just the description at the top that's wrong, not the content. Dunno if you want to go to the trouble to change it. media-video/vlc-9999
config.status: creating po/Makefile
configure: WARNING: unrecognized options: --disable-macosx-dialog-provider, --disable-bonjour
libvlc configuration
--------------------
version : 3.0.0-git
system : linux
architecture : x86_64 mmx sse sse2
optimizations : no
vlc aliases : cvlc rvlc qvlc svlc nvlc
To build vlc and its plugins, type `make', or `./compile' if you like nice colors.
>>> Source configured.
Shall I reopen this bug or create a new?
A new bug would be my preference so it's a little more clearly tracked, but in either case I will take a look at this tonight. On a side note, I am happy to report that 9999 builds cleanly against ffmpeg 3.0, and I will test and most likely update 2.2.9999 tonight. (In reply to Nick Andrade from comment #17) > A new bug would be my preference so it's a little more clearly tracked, but > in either case I will take a look at this tonight. > > On a side note, I am happy to report that 9999 builds cleanly against ffmpeg > 3.0, and I will test and most likely update 2.2.9999 tonight. Could you please add a gstreamer USE flag to vlc? I'm fighting another bug where I had to add --disable-gst_decode to the ebuild. ../doltlibtool --tag=CC --mode=compile x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -DMODULE_STRING=\"$(p="codec/gstreamer/libgstdecode_plugin_la-gstvlcpictureplaneallocator.lo"; p="${p##*/}"; p="${p#lib}"; p="${p%_plugin*}"; p=$(echo "$p"|sed 's/-/_/g'); p="${p%.lo}"; echo "$p")\" -D__PLUGIN__ -I./access -I./codec -I../include -I../include -pthread -I/usr/include/gstreamer-1.0 -I/usr/lib64/gstreamer-1.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -pthread -I/usr/include/gstreamer-1.0 -I/usr/lib64/gstreamer-1.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -march=native -O2 -pipe -fvisibility=hidden -c -o codec/gstreamer/libgstdecode_plugin_la-gstvlcpictureplaneallocator.lo `test -f 'codec/gstreamer/gstvlcpictureplaneallocator.c' || echo './'`codec/gstreamer/gstvlcpictureplaneallocator.c In file included from /usr/lib64/glib-2.0/include/glibconfig.h:9:0, from /usr/include/glib-2.0/glib/gtypes.h:32, from /usr/include/glib-2.0/glib/galloca.h:32, from /usr/include/glib-2.0/glib.h:30, from /usr/include/glib-2.0/gobject/gbinding.h:28, from /usr/include/glib-2.0/glib-object.h:23, from /usr/include/gstreamer-1.0/gst/gstmemory.h:28, from /usr/include/gstreamer-1.0/gst/gstallocator.h:26, from codec/gstreamer/gstvlcpictureplaneallocator.c:27: /usr/include/gstreamer-1.0/gst/gstmemory.h: In function ‘glib_autoptr_cleanup_GstAllocator’: /usr/include/gstreamer-1.0/gst/gstmemory.h:370:45: error: ‘gst_object_unref’ undeclared (first use in this function) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstAllocator, gst_object_unref) ^ /usr/include/glib-2.0/glib/gmacros.h:394:88: note: in definition of macro ‘G_DEFINE_AUTOPTR_CLEANUP_FUNC’ static inline void _GLIB_AUTOPTR_FUNC_NAME(TypeName) (TypeName **_ptr) { if (*_ptr) (func) (*_ptr); } \ ^ /usr/include/gstreamer-1.0/gst/gstmemory.h:370:45: note: each undeclared identifier is reported only once for each function it appears in G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstAllocator, gst_object_unref) ^ /usr/include/glib-2.0/glib/gmacros.h:394:88: note: in definition of macro ‘G_DEFINE_AUTOPTR_CLEANUP_FUNC’ static inline void _GLIB_AUTOPTR_FUNC_NAME(TypeName) (TypeName **_ptr) { if (*_ptr) (func) (*_ptr); } \ ^ Found the two relevant changes in Git: Mac OSX provider completely removed - http://git.videolan.org/?p=vlc.git;a=commitdiff;h=ac8d74452014397faeffa4ab0f3b422763c1f9b4 Bonjour renamed Avahi - http://git.videolan.org/?p=vlc.git;a=commitdiff;h=55280fa62cb68b71767778c56250352b4840b69a I'll post an updated ebuild shortly. As for GStreamer, I'm also testing adding that. Created attachment 425762 [details]
vlc-9999.ebuild
Updated ebuild as described above.
Created attachment 425764 [details]
metadata.xml
Updated metadata.xml to reflect gstreamer use flag addition (previously it was autodetected and not explicitly controlled).
Created attachment 425766 [details]
vlc-2.2.9999.ebuild
Updating vlc-2.2.9999 while we're at it. Does not support ffmpeg-3.0.
Changing state back to Confirmed since we used the same bug. I will try to get a Development to put the three updated files into Portage this evening. Created attachment 426782 [details, diff]
vlc-9999.ebuild.patch
Patch for vlc-9999.ebuild that's currently in Portage. Switching from providing whole ebuilds to just patches after discussion with Idella4.
Created attachment 426784 [details, diff]
vlc-2.2.9999.ebuild.patch
Patch for vlc-2.2.9999 currently in Portage.
Created attachment 426786 [details, diff]
metadata.xml.patch
Patch against the current VLC metadata.xml primarily for live ebuild changes.
committed to the tree in commit ec2d2c01ffd1e5ea7402b0fc9afa47d43a03d0a5 commit 384d9005493f3ef1805724e886d408df98df6470 commit 11a636f584fb807b01741c69d7129ce61fcf76f1 media-video/vlc-9999 compiles again with --enable-vdpau and media-video/ffmpeg-9999. vdpau works at runtime. The same should be possible for vaapi. Could someone please test with media-video/ffmpeg-3.0.1? comment at 160-161 # Temporarily block non-live FFMPEG versions as they break vdpau, 9999 works; # thus we'll have to wait for a new release there. does not reflect >=media-video/ffmpeg-2.2:0= <media-video/ffmpeg-2.9:0= Please update that lines. Related upstream commits: http://git.videolan.org/?p=vlc.git;a=commit;h=b8869f97ea66ac7ec9912a74c2e8b5e15daf7752 "Relax requirements for FFmpeg hwaccel It doesn't error out anymore since 5edd1f62ca1" and http://git.videolan.org/?p=vlc.git;a=commit;h=4757ae1af6de974fed6e1ab53c440a58d195a5fa "avcodec: disable hwaccel when unsupported/broken (fixes #16642)" QA Notice: Unrecognized configure options: --disable-quicktime http://git.videolan.org/?p=vlc.git;a=commit;h=985552558a3ad90b5c6e0e8ebd64ee6f3fdba9e2 "Remove QuickTime module" Thanks, I plan to take a look tonight. Well, it certainly compiles okay with FFmpeg-3.0.1 and 9999 however I am having a challenge verifying it works with VDPAU as I only have Intel hardware at the moment. I don't see anything in the devel mailing lists for either project to imply that the issues that caused VLC to disable VDPAU and VAAPI with FFmpeg were fixed. With VDPAU, I just did a test with VLC-9999 and FFmpeg-3.0.1 & -9999, and with both I'm seeing: [VS] Software VDPAU backend library initialized libva info: VA-API version 0.38.1 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib64/va/drivers/i965_drv_video.so libva info: Found init function __vaDriverInit_0_38 libva info: va_openDriver() returns 0 [00007fbbc000d4d8] vdpau_display vout display error: video mixer surface width capabilities query failure: VDP_STATUS_NO_IMPLEMENTATION [00007fbbc8c174e8] core video output error: video output creation failed [00007fbbb4aaa578] core decoder error: failed to create video output [h264 @ 0x7fbbb4ab0300] get_buffer() failed [h264 @ 0x7fbbb4ab0300] thread_get_buffer() failed [h264 @ 0x7fbbb4ab0300] decode_slice_header error [h264 @ 0x7fbbb4ab0300] no frame! I will do some more testing on the VAAPI side which I should be able to test. VAAPI with FFmpeg-9999 is also failing (tested via "cvlc -vv small.mp4 --avcodec-hw=vaapi > vlc.out 2>&1"). As you probably noticed, I was on libva 1.6.2 so I updated libva to 1.7.0 however it fails there too. The exact failure I get is: [00007fb444c29868] avcodec decoder warning: thread type 1: disabling hardware acceleration The relevant VLC ticket is: https://trac.videolan.org/vlc/ticket/16642 And patch: https://www.mail-archive.com/vlc-commits@videolan.org/msg32015.html So it appears that VLC-9999 now lets you build with FFmpeg-3.x/9999 and vaapi/vdpau enabled however they are not actually usable as it disables hwaccel because its still broken in VLC >= 2.9 Most likely I'll loosen the logic to allow VLC-9999 to build with FFmpeg-3.0.1 however keep the logic which restricts FFmpeg to < 2.9 if vdpau or vaapi USE flags are selected. I need to think about this some more and will post a new ebuild tomorrow. I'll also clean up the --disable-quicktime, etc. If there is other cleanup that you would like to see, please post. One last thing I noticed is that with the commit I referenced in the previous email, hwaccel breaks even for vaapi/vdpau on FFmpeg-2.8.6 (which technically, I guess it should as it was never thread safe). So if you want hwaccel in VLC, you either need VLC-2.2.2 and FFmpeg-2.8.6, VLC-2.2.2 or -9999 and libav, or you need to wait until VLC & FFmpeg figure out how to do hwaccel threadsafe. avcodec warning: thread type 1: disabling hardware acceleration I see that warning too. But I see in the messages that it is using vdpau_display and as filter vdpau_chroma. very confusing Here we go on again: QA Notice: Unrecognized configure options: --disable-macosx-eyetv --disable-gles1 I had to add --disable-wayland \ to the 9999.ebuild because VLC now looks for wayland-protocols http://git.videolan.org/?p=vlc.git;a=commit;h=d51ce71eefc19d72d736a24dfd1e2f0c7fe24f81 A wayland USE flag would be better media-video/vlc-9999 configure: WARNING: unrecognized options: --disable-audioqueue, --disable-directfb, --disable-httpd, --disable-macosx-eyetv, --enable-sdl, --disable-gles1, --disable-vda btw, vlc-9999-libva-1.2.1-compat.patch does not apply vlc-9999: configure: WARNING: unrecognized options: --disable-audioqueue, --disable-directfb, --disable-httpd, --disable-macosx-eyetv, --enable-sdl, --disable-gles1, --disable-vda And please remove the -f in vlc-cache-gen line. vlc-9999 still unable to build because of the vlc-9999-libva-1.2.1-compat.patch patching issue. Is there any workaround for this? |