mpegvideo: remove write-only variable

Signed-off-by: Mans Rullgard <mans@mansr.com>
smjpeg: fix type of 'ret' variable in smjpeg_read_packet()

The 'ret' variable is used for negative error codes so it should
be a signed type.

Signed-off-by: Mans Rullgard <mans@mansr.com>
rtpdec_xiph: fix function return type

parse_packed_headers() returns either zero or a negative error code
so its return type must be signed.

Signed-off-by: Mans Rullgard <mans@mansr.com>
avstring-test: fix memory leaks

Signed-off-by: Mans Rullgard <mans@mansr.com>
configure: use utilities from /usr/xpg4/bin if it exists

Solaris defaults to non-standard utilities (grep, sed, ...) with
proper ones being in /usr/xpg4/bin.  Prefixing PATH with this
directory when it exists ensures we get correct variants.

Signed-off-by: Mans Rullgard <mans@mansr.com>
dca: allocate a secondary buffer for extra channels when downmixing

The output AVFrame buffer only has data for the downmix channels.
Fixes a segfault when decoding dca with request_channels == 2.
avplay: use audio parameters from the decoded frame instead of AVCodecContext
avplay: support mid-stream sample rate changes

Resample to the rate that was configured in SDL.
vc1: Use codec ID from AVCodecContext while parsing frame header

This fixes a segfault with samples that I have (both of them MPEG-TS). Looks like
avctx->codec is not being set during parsing.

Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
nut: prioritize native tags

Use native tags instead of avi ones, simplifies a lot raw video codecs
handling.
nut: support pcm codecs not mapped in avi

The native tags will be used when available.
lavr: handle clipping in the float to s32 conversion

We cannot clip to INT_MAX because that value cannot be exactly
represented by a float value and ends up overflowing during conversion
anyway. We need to use a slightly smaller float value, which ends up
with slightly inaccurate results for samples which clip or nearly clip,
but it is close enough. Using doubles as intermediates in the conversion
would be more accurate, but it takes about twice as much time.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
eval-test: make table static const

Signed-off-by: Mans Rullgard <mans@mansr.com>
Revert "configure: x86: improve ebp availability check"

This makes cabac-test work on 32-bit mingw, to ease testing/comparison
between MSVC and mingw.

This reverts commit 692dd8ed2617f390ff53b1152a21170e886be726.
configure: Split out msvc as a separate target os

The name mingw32 as target os is both misleading, and very little
of the target os specific settings actually match.

Since the target os default is set based on uname, the default is
overridden by --toolchain=msvc.
Add support for building shared libraries with MSVC

This requires the makedef perl script by Derek, which probably will
go into the c99-to-c89 repo. That scripts produces a .def file,
listing the symbols to be exported, based on the gcc version
scripts and the built object files.

To properly load non-function symbols from DLL files, the data
symbol declarations need to have the attribute __declspec(dllimport)
when building the calling code. (On mingw, the linker can fix this
up automatically, which is why it has not been an issue so far.)

The __declspec(dllimport) attribute is added via a macro. Since
it has to be present when building code that refer to these symbols,
but not be present while building the library that exports the symbols
themselves, the makefile is modified to add a define like
COMPILING_<libname> while building each library. This is used in the
definition of the AV<lib>_SYMBOL macro - on non-MSVC compilers, it is
empty. On MSVC, it is __declspec(dllimport) for declarations in other
libraries than the object file currently compiled.

This also implies that code that is built to link to a certain
library as a DLL can't link to the same library as a static library.
Therefore, we only allow building either static or shared but not
both at the same time. (That is, static libraries as such can be,
and actually are, built - this is used for linking the test tools to
internal symbols in the libraries - but e.g. libavformat object files
built to link to libavcodec as a DLL cannot link statically to
libavcodec.)

Also, linking to DLLs is slightly different from linking to shared
libraries on other platforms. DLLs use a thing called import
libraries, which is basically a stub library allowing the linker
know which symbols exist in the DLL and what name the DLL will
have at runtime.

In mingw/gcc, the import library is usually named libfoo.dll.a,
which goes next to a static library named libfoo.a. This allows gcc
to pick the dynamic one, if available, from the normal -lfoo switches,
just as it does for libfoo.a vs libfoo.so on unix. On MSVC however,
you need to literally specify the name of the import library instead of
the static library.