SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
No luck with OSSv4, I had that same version installed yet and it doesn't prevent reported error.
No luck neither with 2.0.10:
Code:
checking mad.h presence... yes
checking for mad.h... yes
checking for mad_bit_init in -lmad... yes
checking if linker supports -Bsymbolic... yes
checking for AVCODEC... yes
configure: error: libavcodec versions 55 and later are not supported yet.
No luck with OSSv4, I had that same version installed yet and it doesn't prevent reported error.
No luck neither with 2.0.10:
Code:
checking mad.h presence... yes
checking for mad.h... yes
checking for mad_bit_init in -lmad... yes
checking if linker supports -Bsymbolic... yes
checking for AVCODEC... yes
configure: error: libavcodec versions 55 and later are not supported yet.
Code:
/var/log/packages/libavc1394-0.5.4-i486-4sl
That should be related to ffmpeg (or libav... I'm not sure if VLC went with one over the other or which you might have installed), not libavc1394 (I believe that's for firewire). It looks like you have a new enough version of ffmpeg, but I believe it is typically patchable without downgrading ffmpeg (see this stack overflow answer for more details).
Now, vlc 2.0.10 sources have a configure.ac with the following check:
Code:
PKG_CHECK_EXISTS([libavcodec < 56],, [
AC_MSG_ERROR([libavcodec versions 56 and later are not supported yet.])
That's the problem: I think my libavcodec is too recent to compile that old version of vlc, which requests libavcodec < 56, bu I have version 56.60.100
I tried to make a patch to accept also libavcodec version more recent (I put version 59...):
Code:
--- configure.ac.orig 2016-08-31 19:03:13.127247959 +0200
+++ configure.ac 2016-08-31 19:07:14.214264327 +0200
@@ -2413,8 +2413,8 @@
[ --enable-avcodec libavcodec codec (default enabled)])
AS_IF([test "${enable_avcodec}" != "no"], [
PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 52.25.0 libavutil], [
- PKG_CHECK_EXISTS([libavcodec < 55],, [
- AC_MSG_ERROR([libavcodec versions 55 and later are not supported yet.])
+ PKG_CHECK_EXISTS([libavcodec < 59],, [
+ AC_MSG_ERROR([libavcodec versions 59 and later are not supported yet.])
])
VLC_SAVE_FLAGS
CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
The patch works fine, cause the slackbuild starts compiling.
But when it reach building of avcodec plugin it fails with te following errors:
Code:
make[5]: Leaving directory `/tmp/SBo/vlc-2.0.10/modules/codec/dmo'
Making all in avcodec
make[5]: Entering directory `/tmp/SBo/vlc-2.0.10/modules/codec/avcodec'
make all-am
make[6]: Entering directory `/tmp/SBo/vlc-2.0.10/modules/codec/avcodec'
CC libavcodec_plugin_la-avcodec.lo
avcodec.c: In function 'OpenDecoder':
avcodec.c:249:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
avcodec.c:278:14: error: 'AVCodecContext' has no member named 'dsp_mask'
avcodec.c:281:18: error: 'AVCodecContext' has no member named 'dsp_mask'
avcodec.c:285:18: error: 'AVCodecContext' has no member named 'dsp_mask'
avcodec.c:289:18: error: 'AVCodecContext' has no member named 'dsp_mask'
avcodec.c:293:18: error: 'AVCodecContext' has no member named 'dsp_mask'
avcodec.c:297:18: error: 'AVCodecContext' has no member named 'dsp_mask'
avcodec.c:301:18: error: 'AVCodecContext' has no member named 'dsp_mask'
avcodec.c:305:18: error: 'AVCodecContext' has no member named 'dsp_mask'
avcodec.c:309:18: error: 'AVCodecContext' has no member named 'dsp_mask'
avcodec.c:313:18: error: 'AVCodecContext' has no member named 'dsp_mask'
make[6]: *** [libavcodec_plugin_la-avcodec.lo] Errore 1
make[6]: Leaving directory `/tmp/SBo/vlc-2.0.10/modules/codec/avcodec'
make[5]: *** [all] Errore 2
make[5]: Leaving directory `/tmp/SBo/vlc-2.0.10/modules/codec/avcodec'
make[4]: *** [all-recursive] Errore 1
make[4]: Leaving directory `/tmp/SBo/vlc-2.0.10/modules/codec'
make[3]: *** [all] Errore 2
make[3]: Leaving directory `/tmp/SBo/vlc-2.0.10/modules/codec'
make[2]: *** [all-recursive] Errore 1
make[2]: Leaving directory `/tmp/SBo/vlc-2.0.10/modules'
make[1]: *** [all-recursive] Errore 1
make[1]: Leaving directory `/tmp/SBo/vlc-2.0.10'
make: *** [all] Errore 2
So I think the libavcodec version check in configure was useful: build really fails if libavcodec version is too recent in comparison to libavcodec plugin contained in vlc sources...
What do you think about?
If you look at original version of config it says:
Code:
PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 52.25.0 libavutil], [
PKG_CHECK_EXISTS([libavcodec < 55],, [
AC_MSG_ERROR([libavcodec versions 55 and later are not supported yet.])
So for vlc 2.0.10 we need (52.25.0 <= libavcodec < 55). If I well understood we have to link vlc to a ffmpeg containing libavcodec 54.x. And I think the last ffmpeg version was:
Now, I don't want to downgrade my system ffmpeg... There should be a way to statically linking an alternative version of ffmpeg at compile time... I'll looking for that. If you have some suggests.
If you look at original version of config it says:
Code:
PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 52.25.0 libavutil], [
PKG_CHECK_EXISTS([libavcodec < 55],, [
AC_MSG_ERROR([libavcodec versions 55 and later are not supported yet.])
So for vlc 2.0.10 we need (52.25.0 <= libavcodec < 55). If I well understood we have to link vlc to a ffmpeg containing libavcodec 54.x. And I think the last ffmpeg version was:
Now, I don't want to downgrade my system ffmpeg... There should be a way to statically linking an alternative version of ffmpeg at compile time... I'll looking for that. If you have some suggests.
Oops, good catch. Unfortunately, we're beyond my experience (I've never needed to statically link any dependencies before). But, if you can work your way through Eric's masterful VLC slackbuild, he statically links everything, so people can install just the VLC package and have all dependencies included. I'd imagine you'd need to build ffmpeg, and then point VLC's configure to the new updated binaries. Since you're building an older version of vlc, it might support the --with-ffmpeg-tree configure option. I'd definitely look into that.
In version 2.0.10 configure flag you suggested is not supported anymore. I had tried it but without success, so I looked at configure options...
I'll look at Eric slackbuild...
He uses that $VLCDEPSDIR var to say vlc configure where it has to look for right libraries and needed programs like ffmpeg.
Before compile vlc he builds ffmpeg and install it in that directory. Then he recalls it with VLCDEPSDIR var.
I didn't understand if I can use a similar way to compile vlc with static ffmpeg only, while other libraries dynamically linked using the system ones...
He had that flag listed in the deprecated section, but I tried to find how he statically links it now, but I came up short.
After a more in-depth look, it looks like he uses the --prefix=, --libdir=, and --shlibdir= options in ffmpeg to designate where it will install (which he picks a temporary directory under /tmp/tmp-vlc/vlcdeps). Above that, he sets the PKG_CONFIG_PATH variable to that temporary location as well. You can find these lines under the near the ./configure portion for ffmpeg, and you can find ffmpeg's information quickly with a Ctrl+F and searching for "compile ffmpeg".
He then sets a ton of variables when compiling vlc itself, pointing to that vlcdeps directory. The thing I'm not sure on is whether this will work if it doesn't find your other vlc dependencies in there. I'm not sure if it allows you to just statically link ffmpeg without statically linking everything else. Unless Eric pops in with some guidance, it will likely be on you to test that.
However, doing some more digging in the script, it seems like he designed it so if ffmpeg is intended to be linked statically, it will build vpx, theora, amr, amrwbenc, and gsm before it compiles ffmpeg, storing all in that vlcdeps directory. You might be able to use the script if you download that whole directory and replace ffmpeg's source with the 1.1.12 source and the vlc source with your 2.0.10 package, however, many of those dependencies might be new enough that they don't work properly with an older ffmpeg and/or vlc, so using the script might be hit or miss.
I wonder if it is worth devoting all this time towards trying to get a working vlc. Have you tried any other players to see if they use OSSv4 properly? Maybe mplayer (and you could use the smplayer front-end)?
Yes I used to paly media with MPlayer. It works fine with OSSv4.
But now I was interested in live streaming ip tv, I found some links working good with VLC (I mean it opens m3u/m3u8 just fine, but with crashes if I use 2.0.3 or audio/video choppiness issues if I use >2.1.x version, as described above... anyway it can open those links to streaming playlists/channels).
MPlayer can't handle those links. So I've tried MPV and it works very good, no issues with ossv4... But mpv alone doesn't show a popup of the playlist... So if you want to change channel on the same palylist you have to "click" forward or press ">" and scroll all channels one by one to reach what you want: it isn't very usable.
I'm using MPV + SMplayer and it is like VLC, It shows all playlist and it has no audio/video playing issues.
My compile tries are now just for "fun"... But begin to waste too time. And likely I'll give up...
I tried to edit Eric slackbuild script. I want to compile statically only what it is needed for compatibility. And use all other libraries form my system.
He split his script code in functions, in each of them he compiles and installs (in $VLCDEPSDIR directory) various libraries and codes like ffmpeg and all other deps, finally he compiles vlc by using that $VLCDEPSDIR as libraries source (through $PKG_CONFIG_PAT as you explained).
FFMpeg build is needed for compatibility of libavcodec as we explained in previous messages.
DVBPSI build is needed, cause my system version is too recent.
But It returns an other error:
Code:
checking for libfaad.a in /tmp/vlc-build/tmp-vlc/faad2-... no
configure: error: cannot cd to /tmp/vlc-build/tmp-vlc/faad2-
make: *** Nessun obiettivo specificato e nessun makefile trovato. Stop.
**
** building the vlc package (version 2.0.10) ...
**
make: *** Nessuna regola per generare l'obiettivo «install». Stop.
find: "/tmp/vlc-build/package-vlc/usr/lib": File o directory non esistente
sed: nessun file in ingresso
faad2 is an "additional lib for vlc" and it is compiled after "ffmpeg".
Code:
# ffmpeg uses the above static libraries:
make_ffmpeg
fi
# Additional libraries that vlc will use:
make_faad2
make_a52
make_dca
make_ebml
make_matroska
make_libmpeg2
make_mpcdec
make_twolame
#make_daap
make_upnp
make_orc
make_schroedinger
make_live555
make_fribidi
make_taglib
make_asdcplib
make_ass
make_fluid
make_1394
make_kate
make_tiger
make_lua
make_bluray
make_opus
# Visualisations:
# FIXME: getting symbol errors but we need a static libGLEW:
#make_glew
make_goom
make_ggi
make_projectm
# Digital video:
make_dv
make_dvbpsi
# Speex before shout and vlc:
make_speex
make_speexdsp
make_shout
#fi # End ( "xy" == "x" )
fi
if echo "$*" | grep -qw -- --wrapvlcdeps ; then
# Wrap the vlcdeps tree with all pre-compiled dependencies into a tarball:
cd $TMP/tmp-$PRGNAM
find . -name "*.la" -o -name "*.pc" | xargs sed -i -e "s#$TMP/tmp-$PRGNAM#/vlcdepsdir#g"
tar -jcf $OUTPUT/$PRGNAM-vlcdeps-${SLACKVER}-$ARCH.tar.bz2 \
vlcdeps \
a52dec-$A52 \
faad2-$FAAD2
echo "Created vlcdeps binary tarball in '$OUTPUT/$PRGNAM-vlcdeps-${SLACKVER}-$ARCH.tar.bz2'..."
cd -
else
# Compile VLC using all the precompiled static libs in $VLCDEPSDIR :
make_vlc
# Wrap VLC into a Slackware package:
build_vlcpkg "$*"
Now, may be vlc compile doesn't looks on the system, also if it doesn't find a library in $VLCDEPSDIR... Could be it wants the lib in that dir.
This explains why "configure: error: cannot cd to /tmp/vlc-build/tmp-vlc/faad2-".. While I have "faad2-2.7-i486-2_SBo" installed on my system.
Now, may be vlc compile doesn't looks on the system, also if it doesn't find a library in $VLCDEPSDIR... Could be it wants the lib in that dir.
This explains why "configure: error: cannot cd to /tmp/vlc-build/tmp-vlc/faad2-".. While I have "faad2-2.7-i486-2_SBo" installed on my system.
Then read the part where VLC sources are configured and remove this line which makes the VLC build look for a faad2 source directory with compiled libraries in it:
Finally I did it!
There were also some newer enabled flag that I removed from configure...
Anyway, now I've installed this vlc-2.0.10 new package: I tried to run it and open a audio/video file.
Well folks, seems I'm not lucky at all!
VLC automatically selects OSS sound device, but sound is choppy... same as in news version 2.1.x and above.
I started my compiling by edit Eric slackbuild for vlc-2.2, may be that's the matter... perhaps there is some option flag in newer slackbuild that doesn't like to my OSSv4 audio system.
My next try will be to start from Eric slackbuild of vlc-2.0.8 it was under /usr/doc/vlc-2.0.8/*Slackbuild.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.