AOMediaCodec / libavif

libavif - Library for encoding and decoding .avif files
Other
1.58k stars 208 forks source link

Doesn't compile on raspberry pi #7

Closed Zanderama closed 5 years ago

Zanderama commented 5 years ago

Hi,

Not sure how much of an issue this is, but thought to tell you. I tried to compile this on latest raspbian buster, which has libaom etc.

Really looking forward to a basic way to convert avifs to jpeg/png and back etc. Hope this is the project!

Cheers,

Alex

pi@raspberrypi-zero:~/src/libavif-master/libavif_build $ make Scanning dependencies of target avif [ 9%] Building C object CMakeFiles/avif.dir/src/avif.c.o [ 18%] Building C object CMakeFiles/avif.dir/src/colr.c.o [ 27%] Building C object CMakeFiles/avif.dir/src/mem.c.o [ 36%] Building C object CMakeFiles/avif.dir/src/rawdata.c.o [ 45%] Building C object CMakeFiles/avif.dir/src/read.c.o [ 54%] Building C object CMakeFiles/avif.dir/src/reformat.c.o [ 63%] Building C object CMakeFiles/avif.dir/src/stream.c.o [ 72%] Building C object CMakeFiles/avif.dir/src/utils.c.o [ 81%] Building C object CMakeFiles/avif.dir/src/write.c.o [ 90%] Building C object CMakeFiles/avif.dir/src/codec_aom.c.o /home/pi/src/libavif-master/libavif_src/src/codec_aom.c: In function ‘aomCodecGetNextImage’: /home/pi/src/libavif-master/libavif_src/src/codec_aom.c:133:18: error: ‘AOM_IMG_FMT_YV1216’ undeclared (first use in this function); did you mean ‘AOM_IMG_FMT_YV12’? case AOM_IMG_FMT_YV1216: ^~~~~~ AOM_IMG_FMT_YV12 /home/pi/src/libavif-master/libavif_src/src/codec_aom.c:133:18: note: each undeclared identifier is reported only once for each function it appears in In file included from /usr/include/aom/aom_decoder.h:33, from /home/pi/src/libavif-master/libavif_src/src/codec_aom.c:14: /home/pi/src/libavif-master/libavif_src/src/codec_aom.c: In function ‘encodeOBU’: /home/pi/src/libavif-master/libavif_src/src/codec_aom.c:342:40: error: ‘AV1E_SET_ROW_MT’ undeclared (first use in this function); did you mean ‘AV1E_SET_MTU’? aom_codec_control(&aomEncoder, AV1E_SET_ROW_MT, 1); ^~~~~~~ make[2]: [CMakeFiles/avif.dir/build.make:180: CMakeFiles/avif.dir/src/codec_aom.c.o] Error 1 make[1]: [CMakeFiles/Makefile2:73: CMakeFiles/avif.dir/all] Error 2 make: *** [Makefile:84: all] Error 2

joedrago commented 5 years ago

Unless I'm mistaken, AOM_IMG_FMT_YV1216 was added way back in October. How old is that libaom?

If you want to go easily between AVIF and jpg/png, etc, you can try another project of mine (colorist). Currently avifdec only supports y4m, so you would need to use ffmpeg as an intermediate otherwise.

https://joedrago.github.io/colorist/

Zanderama commented 5 years ago

Hi,

Thanks for your reply. Yes, that explains it. I believe Raspbian buster is based on Debian buster which was only released July 19th, and I don't believe Raspbian had libaom before then in its 'stretch' release so I thought it was recent.

However, looking at the file ages implies they may be old libraries etc, from June and October 2018.

-rw-r--r-- 1 root root 10092 Jun 26 2018 /usr/include/aom/aomdx.h -rw-r--r-- 1 root root 14421 Jun 26 2018 /usr/include/aom/aom_image.h -rw-r--r-- 1 root root 14935 Jun 26 2018 /usr/include/aom/aom_decoder.h -rw-r--r-- 1 root root 39301 Jun 26 2018 /usr/include/aom/aomcx.h -rw-r--r-- 1 root root 5388 Jun 26 2018 /usr/include/aom/aom.h -rw-r--r-- 1 root root 2995 Jun 26 2018 /usr/include/aom/aom_integer.h -rw-r--r-- 1 root root 3309 Jun 26 2018 /usr/include/aom/aom_frame_buffer.h -rw-r--r-- 1 root root 17631 Jun 26 2018 /usr/include/aom/aom_codec.h -rw-r--r-- 1 root root 36928 Jun 26 2018 /usr/include/aom/aom_encoder.h -rw-r--r-- 1 root root 2258484 Oct 5 2018 /usr/lib/arm-linux-gnueabihf/libaom.so.0 -rw-r--r-- 1 root root 293 Oct 5 2018 /usr/lib/arm-linux-gnueabihf/pkgconfig/aom.pc lrwxrwxrwx 1 root root 11 Oct 5 2018 /usr/lib/arm-linux-gnueabihf/libaom.so -> libaom.so.0

I will take a look at your Colorist thank you!

I did try compling the most recent aom on the raspberry pi but get lots of 'always_inline' errors, "target specific option mismatch".

Zanderama commented 5 years ago

Hi,

I managed to recompile libaom and libavif for the Raspberry Pi, just needed to the following C Flag.

cmake AOM_SRC -DCMAKE_C_FLAGS="-mfpu=vfp -mfloat-abi=hard"

Then edit CMakeCache.txt and change

ENABLE_NEON:BOOL=OFF

Cheers,

Alex