Require versions of the Libav libraries corresponding to Libav release
0.7. These are:
libavutil 51.7.0
libavcodec 53.5.0
libavformat 53.2.0
libswscale 2.0.0
libpostproc 52.0.0
Also disable the fallback to simple header check if these libraries
could not be found with pkg-config; now compiling without pkg-config
support for these always requires explicitly setting --enable-libav
and any needed compiler/linker flags. The simple check would have let
compilation proceed even if a version mismatch was detected.
The output type of the AV_RL32/AV_RB32 macros was signed int. The
resulting overflow broke at least some ASF streams with large
timestamps (AV_RL32 used in demux_asf.c timestamp parsing code). Fix
by adding a cast to uint32_t. This code comes from FFmpeg, and the
matching code in Libav/FFmpeg is still broken (but not used there in
most common configurations).
MPlayer used to depend on having an FFmpeg tree available at build
time to provide this code, and FFmpeg changes occasionally broke
the MPlayer build as a result. Some of the relevant functionality also
depends on FFmpeg library symbols that are not part of the FFmpeg API,
meaning that library changes could break MPlayer after the build. Add
a copy of the relevant functionality to the MPlayer tree and use that
instead.
The added files are:
- The headers bswap.h, intreadwrite.h and x86_cpu.h from libavutil.
Some MPlayer code uses the functionality defined as macros and
static inline functions in these headers.
- Architecture-specific internal files used by the above headers.
These are in the subdirectories: x86/, arm/, bfin/, sh4/.
- taglists.[ch], which provides the codec tables from
libavformat/riff.c and two functions to access them from
libavformat/utils.c.
Most of the headers are copied from FFmpeg revision 19452 with only
the include guard names changed. A "common.h" include in bswap.h was
changed to "libavutil/common.h" as it should use the installed header.
Taglists.c contains snippets from the relevant files with some
changes like renamed identifiers.