Previously if frame decoding failed it would be
silently reported as valid frame.
The fate ref is updated because sample have
truncated last video packet.
While here return meaningful error codes.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
reusing the last would use uninitialized data, this should be
impossible currently, but better to check by assert.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
aac_tablegen.h includes aac.h for the POW_SF2_ZERO definition, but
this also pulls in a raft of other headers, some of which are not
safe to use in code built with the host compiler.
Moving POW_SF2_ZERO to aac_tablegen_decl.h, where the declaration
of the array it relates to already resides, fixes the problems.
Signed-off-by: Mans Rullgard <mans@mansr.com>
This requires the makedef perl script by Derek, from the
c89-to-c99 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. If this attribute is omitted, linking
actually succeeds, but reads from the table will not produce the
desired results at runtime.)
MSVC seems to manage to link DLLs (and run properly) even if
this attribute is present while building the library itself
(which normally isn't recommended) - other object files in the
same library manage to link to the symbol (with a small warning
at link time, like "warning LNK4049: locally defined symbol
_avpriv_mpa_bitrate_tab imported" - it doesn't seem to be possible
to squelch this warning), and the definition of the tables
themselves produce a warning that can be squelched ("warning C4273:
'avpriv_mpa_bitrate_tab' : inconsistent dll linkage, see previous
definition of 'avpriv_mpa_bitrate_tab').
In this setup, mingw isn't able to link object files that refer to
data symbols with __declspec(dllimport) without those symbols
actually being linked via a DLL (linking avcodec.dll ends up with
errors like "undefined reference to `__imp__avpriv_mpa_freq_tab'").
The dllimport declspec isn't needed at all in mingw, so we simply
choose not to declare it for other compilers than MSVC that requires
it. (If ICL support later requires it, the condition can be extended
later to include both of them.)
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 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
to 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.
Signed-off-by: Martin Storsjö <martin@martin.st>
This table doesn't need to be shared with libavformat any longer.
Add mpeg12 to the name to make it less ambiguous, while renaming it.
Signed-off-by: Martin Storsjö <martin@martin.st>
* qatar/master:
mips64: mark hi/lo registers clobbered in MAC64/MLS64 macros
fate: list lavfi tests in a makefile
Conflicts:
configure
tests/Makefile
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '292d1e78743855404c7d07e3e7cb3f9c9ae6275b':
fate: dependencies for acodec tests
fate: dependencies for vsynth tests
fate: add macros useful for conditionally enabling things
libmp3lame: resize the output buffer if needed
Conflicts:
tests/fate/acodec.mak
tests/fate/vcodec.mak
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The LAME API documentation for the required buffer size refers to the size for
a single encode call. However, we store multiple frames in the same output
buffer but only read 1 frame at a time out of it. As a result, the buffer size
given in lame_encode_buffer() is actually smaller than what it should be.
Since we do not know how many frames it will end up buffering, it is best to
just reallocate if needed.
Bitrate calculation is off since the bluray spec always specifies
an even number of coded channels. This was honored in the decoder,
but not for bitrate calculation.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* commit '3dc06b6972cf389269e9c36ff0a4373f80f7149b':
tiny_psnr: check for specified sample size less than 1
fate: improve md5sum utility selection
rangecoder-test: Drop timer output that clutters stderr
Conflicts:
tests/tiny_psnr.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c1fcfdec75468009dc7de29a5d1c6adf3b2ef77d':
rangecoder-test: Return in case of an error
build: simplify enabling of compat objects
Conflicts:
configure
libavutil/Makefile
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* qatar/master:
swscale: try to use mmap only if available
configure: check for mprotect
wmapro: use planar sample format
wmalossless: output in planar sample format
wmadec: use float planar sample format output
shorten: use planar sample format
lavc: update documentation for AVFrame.extended_data
Conflicts:
libavcodec/shorten.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* qatar/master:
vc1: Use codec ID from AVCodecContext while parsing frame header
avplay: support mid-stream sample rate changes
Conflicts:
ffplay.c
libavcodec/vc1.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'f5962229bfcb14c2879e69ccdf7f1a4934168609':
avplay: use audio parameters from the decoded frame instead of AVCodecContext
dca: allocate a secondary buffer for extra channels when downmixing
configure: use utilities from /usr/xpg4/bin if it exists
avstring-test: fix memory leaks
Conflicts:
ffplay.c
libavcodec/dcadec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '0a7005bebd23ade7bb852bce0401af1a8fdbb723':
rtpdec_xiph: fix function return type
smjpeg: fix type of 'ret' variable in smjpeg_read_packet()
mpegvideo: remove write-only variable
Use proper return values in case of missing features
fate: add avstring test
rangecoder-test: Set error message log level to error, instead of debug
Conflicts:
libavcodec/aacdec.c
libavcodec/amrnbdec.c
libavcodec/mpegvideo.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '930c9d4373e0f3cb7c64fcfc129127a309f6d066':
avutil: Duplicate ff_log2_tab instead of sharing it across libs
Merged-by: Michael Niedermayer <michaelni@gmx.at>
while testing a VP8 encoder I found a mismatch between FFMPEG and libvpx
VP8 decoders. The reason for this mismatch is that FFMPEG doesn't reset
loopfilter delta values at keyframes. Patch that fixes the issue is below.
I've verified that the output of ffmpeg after this patch matches libvpx.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
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>
This makes no differnce as the affected values cannot occur
But it will likely help static analyzers
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This makes no difference for supported input but avoids a
out of array read with input that is never passed in currently
Fixes CID717919
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
if 0.0 != 0.0 a out of array read would occur, equal checks
with floating point may behave in such odd ways, though
this is very unlikely in a real implementation of a compiler
Fixes: CID718936
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The DPX encoder now writes 12 DPX that open correctly (tested with
ImageMagick), and also correspond to the 12 bit sample files at
http://samples.ffmpeg.org/image-samples/dpx_samples.zip
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Rewrite the DPX decoder to work with provided sample DPXs at
http://samples.ffmpeg.org/image-samples/dpx_samples.zip
The decoder could only decode 8 and 10 bit without alpha correctly,
failing or even crashing at other flavors. This patch aims to fix
these issues, properly decoding all variants of DPX provided in the
referenced DPX sample zip. For 10 and 12 bit, the alpha channel
is ignored, but decoding is still possible.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'e002e3291e6dc7953f843abf56fc14f08f238b21':
Use the new aes/md5/sha/tree allocation functions
avutil: Add functions for allocating opaque contexts for algorithms
svq3: fix pointer type warning
svq3: replace unsafe pointer casting with intreadwrite macros
parseutils-test: various cleanups
Conflicts:
doc/APIchanges
libavcodec/svq3.c
libavutil/parseutils.c
libavutil/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '9734b8ba56d05e970c353dfd5baafa43fdb08024':
Move avutil tables only used in libavcodec to libavcodec.
Conflicts:
libavcodec/mathtables.c
libavutil/intmath.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
bits_per_coded_sample should be set from demuxer and
not from decoder.
Prior to this change value set from demuxer would get
overwritten in decoder.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Fixes:
libavcodec/svq3.c:661:9: warning: passing argument 2 of 'svq3_decode_block' from incompatible pointer type
libavcodec/svq3.c:208:19: note: expected 'DCTELEM *' but argument is of type 'DCTELEM (*)[32]'
Signed-off-by: Mans Rullgard <mans@mansr.com>
* commit 'eb657ecefdeb8b2ed9bfb55d3c2c9e0f568486bf':
vc1dec: Set opposite to the correct value for 1REF field pictures
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '88058d9a994f42e4e9ed4e67baf696bbfe53128c':
vc1dec: Set chroma reference field from REFFIELD for 1REF field pictures
segment: support applehttp style list
Conflicts:
libavformat/segment.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b522000e9b2ca36fe5b2751096b9a5f5ed8f87e6':
avio: introduce avio_closep
mpegtsenc: set muxing type notification to verbose
vc1dec: Use correct spelling of "opposite"
a64multienc: change mc_frame_counter to unsigned
arm: call arm-specific rv34dsp init functions under if (ARCH_ARM)
svq1: Drop a bunch of useless parentheses
parseutils-test: do not print numerical error codes
svq1: K&R formatting cosmetics
Conflicts:
doc/APIchanges
libavcodec/svq1dec.c
libavcodec/svq1enc.c
libavformat/version.h
libavutil/parseutils.c
tests/ref/fate/parseutils
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The existing code is not in the right place and it should cover both
interlaced frame and field pictures.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This is required due to the way VC-1 handles chroma pull-back which may end
up causing negative chroma MV for zero luma MV. Edge emulation needs to be
invoked in such cases.
This only affects vertical component of chroma motion vector.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Interlaced field pictures can have one or two reference pictures, signaled
by NUMREF syntax element. For single reference pictures, reference picture
is determined by REFFIELD syntax element.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
GCC cannot proof that c->mc_frame_counter is always >- 0, changing the
type from int to unsigned fixes following warning:
libavcodec/a64multienc.c: In function ‘a64multi_encode_frame’:
libavcodec/a64multienc.c:342:17: warning: ‘buf’ may be used uninitialized in this function[-Wuninitialized]
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
* commit '6d0beefbf6ee6dbf8efb522a9307e54c6ed5f702':
swscale: Do not make ff_ symbols globally visible.
rtspdec: use av_strlcpy for writing into fixed size buffer
g722enc: fix size argument in memset
http: use av_strlcpy instead of strcpy() without size checks
avfilter: correct memcpy size avfilter_copy_buf_props()
lavc: split asv12 encoder/decoder
Conflicts:
libavcodec/asvdec.c
libavfilter/buffer.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b94e4acb4874843e914fd3cb8e089aff0756bb4a':
cmdutils_read_file: increment *size after writing the trailing \0
af_resample: unref out_buf when avresample_convert returns 0
af_amix: prevent memory leak on error path
vc1dec: prevent memory leak in error path
vc1dec: prevent memory leak on av_realloc error
af_channelmap: free old extended_data on reallocation
avconv: simplify memory allocation in copy_chapters
matroskaenc: check cue point validity before reallocation
swfenc: error out for more than 1 audio or video stream
build: link test programs only against static libs
Conflicts:
ffmpeg_opt.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'cbcd497f384f0f8ef3f76f85b29b644b900d6b9f':
adxdec: use planar sample format
adpcmdec: use planar sample format for adpcm_thp
adpcmdec: use planar sample format for adpcm_ea_xas
adpcmdec: use planar sample format for adpcm_ea_r1/r2/r3
adpcmdec: use planar sample format for adpcm_xa
adpcmdec: use planar sample format for adpcm_ima_ws for vqa version 3
adpcmdec: use planar sample format for adpcm_4xm
adpcmdec: use planar sample format for adpcm_ima_wav
adpcmdec: use planar sample format for adpcm_ima_qt
pcmdec: use planar sample format for pcm_lxf
mace: use planar sample format
atrac1: use planar sample format
build: non-x86: Only compile mpegvideo optimizations when necessary
rtpdec_mpeg4: au_headers is a single array, simple av_free is enough
avcodec: free extended_data instead address of it
fate: Add tests of the ff_make_absolute_url function
url: Handle relative urls starting with two slashes
url: Handle relative urls being just a new query string
url: Don't treat slashes in query parameters as directory separators
Conflicts:
libavcodec/adxdec.c
libavcodec/mips/Makefile
libavcodec/pcm.c
libavcodec/utils.c
libavformat/Makefile
libavformat/utils.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>