=== Getting and compiling libam7xxx
-libam7xxx depends on 'libusb-1.0' and optionally on 'libav' or 'ffmpeg' for
-its example programs, the build system used is 'cmake'.
+libam7xxx depends on 'libusb-1.0' and optionally on 'libav' or 'ffmpeg' (3.1+)
+for its example programs, the build system used is 'cmake'.
On a Debian based system, the dependencies can be installed with this command:
libavformat-dev \
libavcodec-dev \
libavdevice-dev \
- libswscale-dev
+ libswscale-dev \
+ libxcb1-dev
+
+With libav/ffmpeg version previous than 0.9 this patch is needed:
+https://git.ao2.it/libam7xxx.git/blob/6d2d8613958e1f0ef011e9d848426086caafe9db:/debian/patches/0002-Revert-am7xxx-play-switch-to-avcodec_encode_video2.patch
The library and the example programs can be compiled following these steps:
$ cmake -D CMAKE_C_COMPILER=cgcc ../
$ make
+And for a pre-release check with a different compiler, which never hurts:
+
+ $ mkdir build
+ $ cd build
+ $ cmake -D CMAKE_C_COMPILER=clang -D CMAKE_BUILD_TYPE=debug -D STRICT_COMPILATION_CHECKS=ON ../
+ $ make
+
=== Cross Builds
If you want to build for MS Windows:
$ sudo aptitude install mingw-w64
$ mkdir build
$ cd build
- $ wget -nv http://sourceforge.net/projects/libusbx/files/releases/1.0.11/Windows/libusbx-1.0.11-win.7z
- $ 7z -olibusbx-1.0.11-win x libusbx-1.0.11-win.7z
- $ wget -nv http://win32.libav.org/win32/libav-win32-20120521.7z
- $ 7z x libav-win32-20120521.7z
+ $ wget -nv https://github.com/libusb/libusb/releases/download/v1.0.21/libusb-1.0.21.7z
+ $ 7z -olibusb-1.0.21 x libusb-1.0.21.7z
+ $ wget -nv https://ffmpeg.zeranoe.com/builds/win32/dev/ffmpeg-3.4.2-win32-dev.zip
+ $ unzip ffmpeg-3.4.2-win32-dev.zip
$ cmake \
-D GNU_HOST=i686-w64-mingw32 \
-D CMAKE_TOOLCHAIN_FILE=../cmake_modules/mingw_cross_toolchain.cmake \
-D CMAKE_INSTALL_PREFIX=libam7xxx-win/ \
- -D LIBUSB_1_INCLUDE_DIR=libusbx-1.0.11-win/include/libusbx-1.0 \
- -D LIBUSB_1_LIBRARY=libusbx-1.0.11-win/MinGW32/dll/libusb-1.0.dll \
- -D FFMPEG_ROOT=$(pwd)/libav-win32-20120521/usr \
+ -D LIBUSB_1_INCLUDE_DIR=libusb-1.0.21/include/libusb-1.0 \
+ -D LIBUSB_1_LIBRARY=libusb-1.0.21/MinGW32/dll/libusb-1.0.dll \
+ -D FFMPEG_ROOT=$(pwd)/ffmpeg-3.4.2-win32-dev \
../
$ make
$ valgrind --leak-check=full --show-reachable=yes --track-origins=yes \
./bin/picoproj -W 800 -H 480 -f my_image.jpg
+
+or, for am7xxx-play:
+
+ $ valgrind --leak-check=full --show-reachable=yes --track-origins=yes \
+ ./bin/am7xxx-play -f x11grab -i :0