Skip to content

Latest commit

 

History

History
95 lines (69 loc) · 2.86 KB

File metadata and controls

95 lines (69 loc) · 2.86 KB

Hacking libam7xxx

Coding style

libam7xxx uses the linux kernel coding style: http://kernel.org/doc/Documentation/CodingStyle

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'.

On a Debian based system, the dependencies can be installed with this command:

$ sudo aptitude install cmake \
                        libusb-1.0-0-dev \
                        libavformat-dev \
                        libavcodec-dev \
                        libavdevice-dev \
                        libswscale-dev

The library and the example programs can be compiled following these steps:

$ git clone git://git.ao2.it/libam7xxx.git
$ cd libam7xxx
$ mkdir build
$ cd build
$ cmake ../
$ make

After that the example programs can be found in the bin/ subdirectory.

Debug builds

The suggested way to hack on the project is:

$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=debug -D STRICT_COMPILATION_CHECKS=ON ../
$ make

If you want to check the code with the ''sparse'' static analysis tool you can run:

$ mkdir build
$ cd build
$ 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
$ 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 \
        ../
$ make

After that you will find libam7xxx.dll in lib/ and picoproj.exe in the bin/ directory.

Valgrind

You can run the test program under the valgrind dynamic analyzer by using a command like:

$ 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