Page 1 of 1

1.8.6 won't compile with ‘AVCodecContext’ has no member...

Posted: Tue Nov 12, 2013 7:38 pm
by patgul
Hi,

i'm running debian testing with packages from deb-multimedia.org:

libavcodec-dev:amd64 10:1.2.4-dmo3
libavcodec54:amd64 10:1.2.4-dmo3

However, make for oss is failing with:

Code: Select all

?  makemkv-oss-1.8.6  make -f makefile.linux                                                                                            
mkdir -p out
gcc -Os -D_GNU_SOURCE -D_linux_ -D_REENTRANT -shared -Wl,-z,defs -oout/libmakemkv.so.1.full -Ilibebml/inc -DEBML_NO_READ -DEBML_STRICT_API -Ilibmatroska/inc \
	-Ilibmakemkv/inc -Isstring/inc -Imakemkvgui/inc -Ilibabi/inc -Ilibffabi/inc \
	libebml/src/EbmlBinary.cpp libebml/src/EbmlContexts.cpp libebml/src/EbmlCrc32.cpp libebml/src/EbmlDate.cpp libebml/src/EbmlDummy.cpp libebml/src/EbmlElement.cpp libebml/src/EbmlFloat.cpp libebml/src/EbmlHead.cpp libebml/src/EbmlMaster.cpp libebml/src/EbmlSInteger.cpp libebml/src/EbmlString.cpp libebml/src/EbmlSubHead.cpp libebml/src/EbmlUInteger.cpp libebml/src/EbmlUnicodeString.cpp libebml/src/EbmlVersion.cpp libebml/src/EbmlVoid.cpp libebml/src/IOCallback.cpp libebml/src/MemIOCallback.cpp  libmatroska/src/FileKax.cpp libmatroska/src/KaxAttached.cpp libmatroska/src/KaxAttachments.cpp libmatroska/src/KaxBlock.cpp libmatroska/src/KaxBlockData.cpp libmatroska/src/KaxChapters.cpp libmatroska/src/KaxCluster.cpp libmatroska/src/KaxClusterData.cpp libmatroska/src/KaxContentEncoding.cpp libmatroska/src/KaxContexts.cpp libmatroska/src/KaxCues.cpp libmatroska/src/KaxCuesData.cpp libmatroska/src/KaxInfo.cpp libmatroska/src/KaxInfoData.cpp libmatroska/src/KaxSeekHead.cpp libmatroska/src/KaxSegment.cpp libmatroska/src/KaxTag.cpp libmatroska/src/KaxTags.cpp libmatroska/src/KaxTrackAudio.cpp libmatroska/src/KaxTrackEntryData.cpp libmatroska/src/KaxTracks.cpp libmatroska/src/KaxTrackVideo.cpp libmatroska/src/KaxVersion.cpp libmakemkv/src/ebmlwrite.cpp libmakemkv/src/libmkv.cpp libmakemkv/src/version.cpp libmakemkv/src/world.cpp  sstring/src/sstring.cpp \
	libabi/src/ossl_aes.c libabi/src/ossl_sha.c libabi/src/ossl_ec.c libabi/src/zlib.c libabi/src/xpat.c libabi/pssl/ec_key.c libabi/pssl/ec_lib.c libabi/pssl/ec_cvt.c libabi/pssl/ec_mult.c libabi/pssl/ecp_mont.c libabi/pssl/ecp_smpl.c libabi/pssl/ecs_ossl.c libabi/pssl/ecs_sign.c libabi/pssl/ecs_vrf.c libabi/src/httplinux.cpp makemkvgui/src/api_linux.cpp libabi/src/sys_linux.c makemkvgui/src/spawn_posix.cpp libffabi/src/ffabi.c libffabi/src/mlp.c libffabi/src/log.c libffabi/src/audio_convert.c \
	-DHAVE_BUILDINFO_H -Itmp \
	-fPIC -Xlinker -dy -Xlinker --version-script=libmakemkv/src/libmakemkv.vers \
	-Xlinker -soname=libmakemkv.so.1 -lc -lstdc++ -lcrypto -lz -lexpat -lavcodec -lavutil -lm
libffabi/src/ffabi.c: In function ‘ffm_audio_decode_init’:
libffabi/src/ffabi.c:166:15: error: ‘AVCodecContext’ has no member named ‘refcounted_frames’
     ctx->avctx->refcounted_frames = 1;
               ^
libffabi/src/ffabi.c: In function ‘ffm_audio_encode_init’:
libffabi/src/ffabi.c:321:15: error: ‘AVCodecContext’ has no member named ‘refcounted_frames’
     ctx->avctx->refcounted_frames = 1;
               ^
make: *** [out/libmakemkv.so.1.full] Error 1
I'm stuck with this, any help is appreciated!

Regards

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Tue Nov 12, 2013 9:16 pm
by belegdol
All I can tell you is that you need fairly recent ffmpeg, 2.1.0 works.

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Tue Nov 12, 2013 9:48 pm
by patgul
Thanks for the tip. So it seems that i have to build ffmpeg 2 by myself, i'll try it tomorrow...

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Wed Nov 13, 2013 9:43 am
by mike admin
patgul wrote:I'm stuck with this, any help is appreciated!Regards
It should work. Can you figure out what kind of libavcodec.h do you have is it from libav or from ffmpeg? What is the version (cat libavcodec/version.h)?

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Wed Nov 13, 2013 1:46 pm
by ylood
Hello,

I have the same problem with CentOS 6 and ffmpeg-devel from the ATrpms.net repo: ffmpeg-devel-1.2.3-59.el6.x86_64

The libavcodec/version.h :

#define LIBAVCODEC_VERSION_MAJOR 54
#define LIBAVCODEC_VERSION_MINOR 92
#define LIBAVCODEC_VERSION_MICRO 100

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Wed Nov 13, 2013 4:42 pm
by Romansh
mike admin wrote:
patgul wrote:I'm stuck with this, any help is appreciated!Regards
It should work. Can you figure out what kind of libavcodec.h do you have is it from libav or from ffmpeg? What is the version (cat libavcodec/version.h)?
FWIW, refcounting is very recent (only FFmpeg 2.0 or later, and not yet in any Libav release).

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Wed Nov 13, 2013 6:41 pm
by patgul
Hi, it's from ffmpeg and version.h gives the same on my side:

Code: Select all

#define LIBAVCODEC_VERSION_MAJOR 54
#define LIBAVCODEC_VERSION_MINOR 92
#define LIBAVCODEC_VERSION_MICRO 100
Regards

-- EDIT --

Just tried it with a fresh debian jessie VM, it gives the same error. Although libavcodec in this case is from libav...

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Wed Nov 13, 2013 10:46 pm
by barney_1
I also cannot get 1.8.6 to compile.

I've tried it with both the git version and version 2.1 of FFMEG:

Code: Select all

ffmpeg -version
ffmpeg version 2.1
built on Nov 12 2013 23:10:15 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
configuration: --prefix=/home/barney/ffmpeg_build --extra-cflags=-I/home/barney/ffmpeg_build/include --extra-ldflags=-L/home/barney/ffmpeg_build/lib --bindir=/home/barney/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
libavutil      52. 48.100 / 52. 48.100
libavcodec     55. 39.100 / 55. 39.100
libavformat    55. 19.104 / 55. 19.104
libavdevice    55.  5.100 / 55.  5.100
libavfilter     3. 90.100 /  3. 90.100
libswscale      2.  5.101 /  2.  5.101
libswresample   0. 17.104 /  0. 17.104
libpostproc    52.  3.100 / 52.  3.100
But it bombs out with the same AVCodecContext error:

Code: Select all

make -f makefile.linux
mkdir -p out
gcc -Os -D_GNU_SOURCE -D_linux_ -D_REENTRANT -shared -Wl,-z,defs -oout/libmakemkv.so.1.full -Ilibebml/inc -DEBML_NO_READ -DEBML_STRICT_API -Ilibmatroska/inc \
	-Ilibmakemkv/inc -Isstring/inc -Imakemkvgui/inc -Ilibabi/inc -Ilibffabi/inc \
	libebml/src/EbmlBinary.cpp libebml/src/EbmlContexts.cpp libebml/src/EbmlCrc32.cpp libebml/src/EbmlDate.cpp libebml/src/EbmlDummy.cpp libebml/src/EbmlElement.cpp libebml/src/EbmlFloat.cpp libebml/src/EbmlHead.cpp libebml/src/EbmlMaster.cpp libebml/src/EbmlSInteger.cpp libebml/src/EbmlString.cpp libebml/src/EbmlSubHead.cpp libebml/src/EbmlUInteger.cpp libebml/src/EbmlUnicodeString.cpp libebml/src/EbmlVersion.cpp libebml/src/EbmlVoid.cpp libebml/src/IOCallback.cpp libebml/src/MemIOCallback.cpp  libmatroska/src/FileKax.cpp libmatroska/src/KaxAttached.cpp libmatroska/src/KaxAttachments.cpp libmatroska/src/KaxBlock.cpp libmatroska/src/KaxBlockData.cpp libmatroska/src/KaxChapters.cpp libmatroska/src/KaxCluster.cpp libmatroska/src/KaxClusterData.cpp libmatroska/src/KaxContentEncoding.cpp libmatroska/src/KaxContexts.cpp libmatroska/src/KaxCues.cpp libmatroska/src/KaxCuesData.cpp libmatroska/src/KaxInfo.cpp libmatroska/src/KaxInfoData.cpp libmatroska/src/KaxSeekHead.cpp libmatroska/src/KaxSegment.cpp libmatroska/src/KaxTag.cpp libmatroska/src/KaxTags.cpp libmatroska/src/KaxTrackAudio.cpp libmatroska/src/KaxTrackEntryData.cpp libmatroska/src/KaxTracks.cpp libmatroska/src/KaxTrackVideo.cpp libmatroska/src/KaxVersion.cpp libmakemkv/src/ebmlwrite.cpp libmakemkv/src/libmkv.cpp libmakemkv/src/version.cpp libmakemkv/src/world.cpp  sstring/src/sstring.cpp \
	libabi/src/ossl_aes.c libabi/src/ossl_sha.c libabi/src/ossl_ec.c libabi/src/zlib.c libabi/src/xpat.c libabi/pssl/ec_key.c libabi/pssl/ec_lib.c libabi/pssl/ec_cvt.c libabi/pssl/ec_mult.c libabi/pssl/ecp_mont.c libabi/pssl/ecp_smpl.c libabi/pssl/ecs_ossl.c libabi/pssl/ecs_sign.c libabi/pssl/ecs_vrf.c libabi/src/httplinux.cpp makemkvgui/src/api_linux.cpp libabi/src/sys_linux.c makemkvgui/src/spawn_posix.cpp libffabi/src/ffabi.c libffabi/src/mlp.c libffabi/src/log.c libffabi/src/audio_convert.c \
	-DHAVE_BUILDINFO_H -Itmp \
	-fPIC -Xlinker -dy -Xlinker --version-script=libmakemkv/src/libmakemkv.vers \
	-Xlinker -soname=libmakemkv.so.1 -lc -lstdc++ -lcrypto -lz -lexpat -lavcodec -lavutil -lm
libffabi/src/ffabi.c: In function ‘ffm_audio_decode_init’:
libffabi/src/ffabi.c:166:15: error: ‘AVCodecContext’ has no member named ‘refcounted_frames’
libffabi/src/ffabi.c: In function ‘ffm_audio_encode_init’:
libffabi/src/ffabi.c:321:15: error: ‘AVCodecContext’ has no member named ‘refcounted_frames’
make: *** [out/libmakemkv.so.1.full] Error 1
I'm guessing there's a "-dev" package missing but I can't figure out what it would be. Anyone else have some guesses?

Thanks!

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Thu Nov 14, 2013 7:35 am
by pusalieth
Hey I to had this problem and was able to install it using a shotgun approach, here is a list of things done.

Added ffmpeg PPA: ppa:jon-severinsson/ffmpeg
sudo apt-get update; sudo apt-get autoclean; sudo apt-get -y autoremove; sudo apt-get -y dist-upgrade;
sudo apt-get install libavutil-extra-51
sudo apt-get install build-essential libc6-dev libssl-dev libexpat1-dev libavcodec-dev libgl1-mesa-dev libqt4-dev

And it worked, let me know if you had any problems and maybe I have packages you don't

Running Mint 64 Cinnamon

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Thu Nov 14, 2013 3:53 pm
by barney_1
thanks pusalieth, that fixed it for me.

I did have to uninstall the bleeding edge libav I compiled as a previous attempt to get this build to happen (sudo make uninstall).

If anyone is wondering, here's the ffmpeg info after installing from that ppa:

Code: Select all

ffmpeg -version
ffmpeg version N-38577-g5231eec

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Thu Nov 14, 2013 8:20 pm
by patgul
Hi,

a ppa won't help me as i'm on debian. And since i'm too lazy to mess around with ffmpeg compilation i just bought a key to use it with 1.8.5 (and spend the rest of the time with the kids)...

Nonetheless i am interested in a fix.

And Jon's ppa says it is sporting version 0.10.9, how can that succeed if a version >2.0 is needed?

Re: 1.8.6 won't compile with ‘AVCodecContext’ has no member.

Posted: Thu Nov 14, 2013 10:41 pm
by pusalieth
A ppa will work with Debian, just add the repository, Ubuntu and Mint are debian based. sudo add-apt-repository "insert deb repository here" "version here". The versian of Debian is relatable to the version of Ubuntu, such as Debian 7 is quantal. If you have an older version of Debian follow the examples below.

Examples;
Debain 7
(add repository)
add-apt-repository 'deb http://ppa.launchpad.net/jon-severinsson/ffmpeg/ubuntu quantal main'
Older versions
(signing key)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CFCA9579
(add repository to sources list)
echo 'deb http://ppa.launchpad.net/jon-severinsson/ffmpeg/ubuntu quantal main' >> /etc/apt/sources.list

And depending on whether you use the 16-bit audio encoding or 24-bit, you may have to compile a newer version, but this should give your system all the base packages.