Commit Graph
100 Commits
Author SHA1 Message Date
Janne Grunau 98fdfa9970 ppc: reduce overreads when loading 8 pixels in altivec dsp functions
Altivec can only load naturally aligned vectors. To handle possibly
unaligned data a second vector is loaded from an offset of the original
location and the data is recovered through a vector permutation.
Overreads are minimal if the offset for second load points to the last
element of data. This is 7 for loading eight 8-bit pixels and overreads
are reduced from 16 bytes to 8 bytes if the pixels are 64-bit aligned.
For unaligned pixels the overread is reduced from 23 bytes to 15 bytes
in the worst case.
2014-02-14 18:34:04 +01:00
Janne Grunau 73eca738ac mpeg12dec: do not add stereo3D side data to a non-existing frame
User data is usually coded before slice data. That means the frame
the user data belongs to is not available while parsing the user data.
The stereo3D side data has to use the same indirection over the private
context as pan scan information and A53 captions.

Bug-Id:632
2014-02-13 13:03:01 +01:00
Janne Grunau d261719319 configure: do not link libraries against program-specific dependencies
Bug-Id: 635
2014-02-13 13:01:49 +01:00
Janne Grunau 60e6cecf9b configure: avserver does not need $ldl
Loadable plugins were removed in d010e95f86.
2014-02-13 00:29:14 +01:00
Janne Grunau 8a2250344b jv: detect partial packets in the demuxer
Fixes fate-jv under valgrind which reports a different CRC for the last
frame from a partial read.
2014-02-12 20:12:18 +01:00
Janne Grunau f795a8a8bf h264: make context_count unsigned
Removes the bogus but scary looking warning 'libavcodec/h264.c:4529:49:
warning: array subscript is below array bounds [-Warray-bounds]'.
2014-02-12 15:48:03 +01:00
Janne Grunau f5d92d9cab asfdec: fix seeking with fragmented packets
After seeking fragments with an offset > 0 must be skipped to correctly
assemble packets.

Bug-Id: 43
2014-02-12 12:52:28 +01:00
Janne Grunau 0ebb523f07 asfdec: check ff_get_guid() return values during seeking
Hitting EOF during seeking is quite likely. Fixes use of uninitialized
data during fate-seek-lavf-asf.
2014-02-12 12:52:28 +01:00
Janne Grunau b37effdc52 mxfdec: free descriptor extradata in .read_close()
Fixes memleak in fate-mxf-demux.
2014-02-09 18:50:53 +01:00
Janne Grunau 6a8475dc4f asvenc: free avctx->coded_frame on codec close 2014-02-09 18:50:53 +01:00
Janne Grunau 5c1c6e8226 dca: include dcadsp.h in {arm,x86}/dca.h for checkheaders 2014-02-08 13:38:36 +01:00
Janne Grunau 6398d8fd81 configure: clang: add -Qunused-arguments to as|ld_flags as well 2014-02-08 13:38:36 +01:00
Janne Grunau 0cffd6fff5 x86: use the inline int8x8_fmul_int32 only if inline SSE2 is availbale
Fixes compilation with MSVC. Also does not rely on on earlier config.h
include but include it directly.
2014-02-08 12:10:56 +01:00
Janne Grunau 5a0bccd281 fate: force the simple idct for xvid custom matrix test
The original test without a forced idct is still useful since it tests
the switching of the idct algorithm/permutation on x86 with MMX. MMXext
or SSE2. Make sure the test runs only if MMX inline asm is available and
force -cpuflags to all.
Add the required bitexact flag for both tests.
2014-02-05 21:02:39 +01:00
Janne Grunau a1e1f35203 lavu: add missing log.h include in timer.h 2014-02-05 21:00:51 +01:00
Janne Grunau 04ffd22030 fate: add xvid test for custom matrices
Test sample is made from the sample in Bug-Id: videolan/7411
2014-01-31 11:12:31 +01:00
Janne Grunau 7716dd9fbb xvid: switch to xvid mmx idct as soon as possible
The idct implementation cannot be changed after the quantization matrices
are read since it use a different permutaion.

Bug-Id: videolan/7411
2014-01-31 11:09:11 +01:00
Janne Grunau 78987a88a8 lavf: include 60 fps in guessed standard frame rates
Due to what looks like an off-by-one error 60 * 12 * 1001 / 12 * 1001
is not tested as standard frame rate in avformat_find_stream_info().
2014-01-31 11:09:10 +01:00
Janne Grunau 9e057f53aa configure: clang: explicitly state dep file and rule name in DEPFLAGS
Fixes dependency file generation with gas-preprocessor.pl and clang.
Flags copied from GCC and tested with Apple's clang from Xcode 5 and
5.1 and clang 3.2, 3.3, 3.4 on Linux.
2014-01-25 21:50:21 +01:00
Janne Grunau fb87e69ff7 configure: add missing x86 dependency for i686 2014-01-25 21:50:20 +01:00
Janne Grunau 6d93307f8d mpeg12: check scantable indices in all decode_block functions
Add checks to the fast functions used with CODEC_FLAGS2_FAST and move
the check for all other functions to before the invalid memory is
accessed. Fixes https://trac.videolan.org/vlc/ticket/9713 with
CODEC_FLAGS2_FAST.

CC: libav-stable@libav.org
2014-01-25 21:50:20 +01:00
Janne Grunau fb0c9d41d6 avutil: remove timer.h include from internal.h
Added libavutil/timer.h include to all files with {START,STOP}_TIMER.
2014-01-25 21:50:20 +01:00
Janne Grunau ea49f60523 h264: skip chroma edges at the picture boundary while deblocking 4:4:4
This handles macroblock edges for the chroma components in the same way
as for the luma compoment for 4:4:4 streams. The Spec explicitly states
that the deblocking filter is not applied to edges at the boundary of
the picture.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2014-01-22 13:44:28 +01:00
Janne Grunau fe96769bed aarch64: port neon clobber test from arm 2014-01-15 12:31:07 +01:00
Janne Grunau f896bca03f aarch64: h264 (bi)weight NEON optimizations
Ported from ARMv7 NEON.
2014-01-15 12:31:07 +01:00
Janne Grunau 36e3b1f2fd aarch64: h264 loop filter NEON optimizations
Ported from ARMv7 NEON.
2014-01-15 12:31:04 +01:00
Janne Grunau c65d67ef50 aarch64: hpeldsp NEON optimizations
Ported from ARMv7 NEON.
2014-01-15 12:30:24 +01:00
Janne Grunau d5dd8c7bf0 aarch64: h264 qpel NEON optimizations
Ported from ARMv7 NEON.
2014-01-15 12:17:49 +01:00
Janne Grunau 8438b3f09f aarch64: h264 idct NEON assembler optimizations
Ported from ARMv7 NEON.
2014-01-15 12:13:41 +01:00
Janne Grunau 71617884a2 aarch64: h264 chroma motion compensation NEON optimizations
Since RV40 and VC-1 use almost the same algorithm so optimizations for
those two decoders are easy to do and included.
2014-01-15 12:07:18 +01:00
Janne Grunau b7b17ed66e aarch64: add cpuflags support for NEON and VFP
NEON and VFP are currently mandatory for all ARMv8 profiles. Both are
handled as extensions as far as cpuflags are concerned. This is
consistent with handling x86_64 which always has SSE2, but still
handles it as an extension.
2014-01-15 12:05:09 +01:00
Janne Grunau 1e9265cd8f dct-test: test ff_simple_idct_neon only on ARM for now
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2014-01-15 11:58:39 +01:00
Janne Grunau d0cd2a8c46 aarch64: bswap inline assembly
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2014-01-14 22:19:38 +01:00
Janne Grunau 032d4da8af aarch64: configure: set arch dependent features
Stack is always 16 byte aligned and clz, 64bit operations and unaligned
memory access are fast in aarch64 mode on ARMv8.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2014-01-14 22:19:27 +01:00
Janne Grunau 8b4119187b cabac: remove leftovers from the cabac encoder
The cabac encoder was only used by the removed cabac test.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2014-01-14 22:19:03 +01:00
Janne Grunau c34a96a5dd dxa: fix decoding of first I-frame by separating I/P-frame decoding
5ef7c84 broke decoding for the first keyframe due to an unnecessary
check for a reference frame.

CC: libav-stable@libav.org
2013-08-17 12:55:26 +02:00
Janne Grunau e8c0defe13 8bps: decode 24bit files correctly as rgb32 on bigendian 2013-08-15 11:50:43 +02:00
Janne GrunauandCarl Eugen Hoyos 2ee380aefb vaapi: return early from ff_vaapi_render_picture() without picture
Fixes an assertion when called on uninitialized frame. Spotted after
seeking in vlc.
Fixes ticket #2461.

Tested-by: Timo
Reviewed-by: Joakim Plate
Signed-off-by: Carl Eugen Hoyos <cehoyos@ag.or.at>
2013-06-18 01:56:06 +02:00
Janne GrunauandLuca Barbato 985f34b756 utils: fix avcodec_flush_buffers pre-reference counting compatibility
The to_free AVframe must be freed just like the other ones.
Indeed, the calling application may expect all frames to be
released.

(This regression caused use-after-free in VLC with hwaccel.)

Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2013-06-16 15:10:58 +02:00
Janne Grunau bf20cdbd86 mpeg12: skip frames consistently
The decoder did not start predicted frames with missing references but
called the end of frame handling on them anyway. This caused an
assertion in the VA API HW accelorator since it tried to render a
picture with uninitialized buffers.
2013-05-28 19:18:10 +02:00
Janne Grunau 3eae9b030c mpegvideo: unref buffers in ff_mpeg_unref_picture on frame size changes
ff_mpeg_unref_picture clears the flag indicating that the frame needs to
be reallocated after a frame size change. Since we have now reference
counted buffers we can unref the buffers immediately.
2013-05-22 15:40:12 +02:00
Janne Grunau 4b79668154 mpegvideo: unref old current_picture before allocating a new one
Allows decoding with only three frame buffers with frame reference
counting. Fixes VAAPI based decoding in vlc which uses only three
frame buffers for the mpegvideo-based codecs.
2013-05-19 23:02:35 +02:00
Janne Grunau 94235f2ba2 indeo3: avoid writes without necessary alignment in copy_cell()
Cells starting at a position aligned to 8 pixels but wider than
4 blocks are copied with 3 blocks per loop. This creates problems on the
next loop iterations since the routine copying 2 blocks requires the
same alignment on some architectures like ARM NEON.
2013-05-10 12:02:09 +02:00
Janne Grunau 70f9661542 jpeg2000dec: initialize static data just once 2013-05-06 22:45:47 +02:00
Janne Grunau 45a1694fde jpeg2000dec: cleanup properly after decoding errors
Fixes memory leak in fate-redcode-demux.
2013-05-06 22:27:33 +02:00
Janne Grunau 851465f9d9 fate-jpeg2000-dcinema: force output to xyz12le
Fixes Fate tests on big-endian configs.
2013-05-06 21:48:15 +02:00
Janne Grunau 5f87c277bd vf_scale: add endianness conversion pixel format in query_formats 2013-05-06 21:48:15 +02:00
Janne Grunau 9cfa21c8c2 swscale: support endianness conversion for AV_PIX_FMT_XYZ12 2013-05-06 21:48:14 +02:00
Janne Grunau c1eb3e7fec swscale: add support for endianness only conversion
Use bitfields in FormatEntry array to avoid wasting an int for each flag.
2013-05-06 18:55:58 +02:00
Janne Grunau 74652af821 pixdesc: add function to return pixel format with swapped endiannes 2013-05-06 18:51:47 +02:00
Janne Grunau 10f1a4d9bd jpeg2kdec: output is native endian AV_PIX_FMT_XYZ12 2013-04-22 17:11:21 +02:00
Janne Grunau 94660c3524 threads: always call thread_finish_setup for intra codecs
Intra codecs do not need an update_thread_context() function and never
call ff_thread_finish_setup(). They rely on ff_thread_get_buffer()
calling it. So call it even if the get_buffer2 function pointer is
avcodec_default_get_buffer2 and it has not been called before.
2013-04-22 17:11:20 +02:00
Janne Grunau b247253929 vdpau: wrap codec specific functions in appropiate #ifs
Fixes linking when only a subset of the deprecated vdpau decoders is
enabled.
2013-03-27 13:20:13 +01:00
Janne Grunau 757d85868b vdpau: fix obsolete mpeg1 vdpau decoder when mpeg2 is disabled 2013-03-26 22:53:29 +01:00
Janne Grunau d767e2f969 configure: fix dependencies of XvMC and old vdpau mpeg2 decoders 2013-03-26 22:53:18 +01:00
Janne Grunau 05fa79b844 hwaccel: fix use with frame based multithreading
Allows use of AVHWAccel based decoders with frame based multithreading.
The decoders will be forced into an non-concurrent mode by delaying
ff_thread_finish_setup() calls after decoding of the current frame
is finished.

This wastes memory by unnecessarily using multiple threads and thus
copies of the decoder context but allows seamless switching between
hardware accelerated and frame threaded software decoding when the
hardware decoder does not support the stream.
2013-03-26 19:44:50 +01:00
Janne Grunau c24469e812 utils: add workaround for AVHWAccel in ff_get_buffer compat code
Since c977039e58 plane count for
PIX_FMT_HWACCEL pixel formats is 0 instead of 1. The created dummy
AVBuffers are still bogus since AVFrame does not hold frame data when
AVHWAccels are used.
2013-03-26 19:44:50 +01:00
Janne Grunau e5c2794a71 x86: consistently use unaligned movs in the unaligned bswap
Fixes fate errors in asv1, ffvhuff and huffyuv on x86_32.
2013-03-25 12:11:11 +01:00
Janne GrunauandMichael Niedermayer 70db0c9156 fate: use little endian yuv444p10 in h264-reinit tests
Fixes fate big endian configs.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-23 22:33:11 +01:00
Janne Grunau 535c247b57 fate: use little endian yuv444p10 in h264-reinit tests
Fixes fate big endian configs.
2013-03-23 13:12:36 +01:00
Janne Grunau 3f15b301fa fate: add test for cropping h264 to container dimensions
Tests the workaround added for 1080 videos created with Canon cameras
in 30f515091c.
2013-03-22 21:58:01 +01:00
Janne Grunau 1c4073efd2 fate: add tests for h264 decoder reinit 2013-03-20 16:04:27 +01:00
Janne Grunau a157c7f2b8 h264: fix bit depth changes with frame threading
AVCodecContext.bits_per_raw_sample is updated from the previous thread
in the generic update function before the codec specific update_thread
function is called. The check for reinitialization of dsp functions uses
bits_per_raw_sample. When called from update_thread_context it will be
already at the current value and the dsp functions aren't updated if
only the bit depth changes.
2013-03-20 13:12:10 +01:00
Janne Grunau b066d90211 vaapi: fix argument for ff_vaapi_common_end_frame call 2013-03-14 15:16:08 +01:00
Janne Grunau 91d4823f70 avpacket: copy side data type and size in av_dup_packet 2013-03-13 11:34:47 +01:00
Janne Grunau a2816230c5 avframe: call release_buffer only if it is set
AVCodecContext release_buffer() shall be NULL for audio codecs using
get_buffer. The backward compatibility code hence have to check before
calling it.
2013-03-11 18:58:47 +01:00
Janne Grunau fc8406d01e avframe: copy reordered_opaque in copy_props
Fixes video playback in applications still using reordered_opaque.
2013-03-11 13:29:39 +01:00
Janne Grunau 684e3d2e1c ra144: check buffer size before requesting a buffer
Return an error on incomplete frames.
2013-03-10 22:34:43 +01:00
Janne Grunau 08149b2b39 wmapro: unref skipped frames 2013-03-10 22:34:43 +01:00
Janne Grunau e3232f3431 svq1: use av_frame_free to free refcounted frame
Fixes a memleak due to avcodec_free_frame not freeing the frame data.
2013-03-10 22:28:18 +01:00
Janne Grunau 15ea1ac695 fate: remove last incomplete frame from mpeg2-field-enc test 2013-03-04 11:22:21 +01:00
Janne Grunau c5c2060cf5 x86: h264qpel: add cpu flag checks for init function
The code was copied from per cpu extension init function so the checks
for supported extensions was overlooked.
2013-01-24 19:03:59 +01:00
Janne Grunau 6bdb841b46 h264: copy h264qpel dsp context to slice thread copies 2013-01-24 17:06:52 +01:00
Janne Grunau 8e148b8742 arm: h264qpel: use neon h264 qpel functions only if supported 2013-01-24 17:06:52 +01:00
Janne Grunau 68f18f0351 videodsp_armv5te: remove #if HAVE_ARMV5TE_EXTERNAL
libavutil/arm/asm.S sets '.arch' depending on HAVE_ARMV5TE so that
assembling armv5te code will always succeed even if the default -march
flag does not support it. HAVE_ARMV5TE_EXTERNAL tests assembling code
with the default arch.
Fixes the missing symbol ff_prefetch_arm with --cpu= not including
armv5te.

CC: libav-stable@libav.org
2013-01-20 15:20:00 +01:00
Janne Grunau 9ac44ad9d0 h264: check SPS entries directly to detect pixel format changes
Comparing AVCodecContext.pix_fmt against the get_pixel_format() return
value has the side effect of calling the get_format() callback on each
slice. Users of the callback will probably handle hardware accelerator
initialization in the callback.
2013-01-03 11:09:00 +01:00
Janne GrunauandMichael Niedermayer e9fd51b0d6 h264: check SPS entries directly to detect pixel format changes
Comparing AVCodecContext.pix_fmt against the get_pixel_format() return
value has the side effect of calling the get_format() callback on each
slice. Users of the callback will probably handle hardware accelerator
initialization in the callback.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-02 02:28:57 +01:00
Janne Grunau 1f4ea4e068 mpegvideo: initialize videodsp with correct pixel depth
Fixes decoding of 9/10 bit per pixel h264 videos as reported in
https://bugzilla.libav.org/show_bug.cgi?id=404 .
2012-12-26 00:24:21 +01:00
Janne Grunau bb2bab92e7 mov: handle h263 and flv1 for codec_tag 'H','2','6','3'
The sample in https://bugzilla.libav.org/show_bug.cgi?id=393 and
samples/F4V/H263_NM_f.mp4 both have codec_tag H263 for different
codecs. H263 is apparently used by Flash Media Server for Sorensen
Spark videos.

Patch based on commit 5442083b1c by
Carl Eugen Hoyos. Fixes bug 393.
2012-12-19 14:50:14 +01:00
Janne Grunau 45635885e4 mpegvideo: increase edge_emu_buffer size for VC1
The VC1 decoder uses edge_emu_buffer simultaneously for luma and chroma
and needs more space. That was not a problem before f1d8763a02
since the size for edge_emu_buffer was always calculated with 2 byte per
pixel since the linesize was not known.

Fixes occasionally fate errors in vc1_sa10143.
2012-12-19 07:57:22 +01:00
Janne Grunau acb571c89a avcodec: bump minor for adaptive h264 frame-mt
Also adds forgotten Changelog entry.
2012-12-18 20:26:53 +01:00
Janne Grunau 9e696d2e5f h264: support frame parameter changes during frame-mt
Fixes CVE-2012-2782.
2012-12-18 19:55:10 +01:00
Janne Grunau f1d8763a02 mpegvideo: allocate scratch buffers after linesize is known
Since we can't know which stride a custom get_buffer() implementation is
going to use we have to allocate this scratch buffers after the linesize
is known. It was pretty safe for 8 bit per pixel pixel formats since we
always allocated memory for up to 16 bits per pixel. It broke hoever
with cmdutis.c's alloc_buffer() and high pixel bit depth since it
allocated larger edges than mpegvideo expected.

Fixes fuzzed sample nasa-8s2.ts_s244342.
2012-12-18 19:48:30 +01:00
Janne Grunau 73ad2c2fa7 h264: increase dist_scale_factor for up to 32 references
Compute dist_scale_factor_field only for MBAFF since that is the only
case in which it is used.
2012-12-18 19:36:58 +01:00
Janne Grunau 61c6eef545 h264: prevent decoding of slice NALs in extradata
It is not posible to call get_buffer during frame-mt codec
initialization. Libavformat might pass huge amounts of data as
extradata after parsing broken files. The 'extradata' for the fuzzed
sample sample_varPAR_s5374_r001-02.avi is 2.8M large and contains
multiple slices.
2012-12-18 11:01:14 +01:00
Janne Grunau a421bbfe83 h264: fix memleak on error during SPS parsing
Introduced in d7d6efe42b.
2012-12-15 19:16:39 +01:00
Janne Grunau 27c8337e59 h264-mt: handle NAL_DPAs before calling ff_thread_finish_setup
Since a NAL_DPA can start a new frame it has to be handled before
ff_thread_finish_setup is called.
2012-12-15 19:06:37 +01:00
Janne Grunau 0995ad8db4 x86inc: fully concatenate tokens to fix macro expansion for nasm
Fixes build errors with nasm introduced in 6f40e9f070 for stack
memory alignment. Noticed by BugMaster.
2012-12-13 23:57:09 +01:00
Janne Grunau 6a27ae28f9 mpegvideo: treat delayed pictures as used
This requires to move the avcodec_default_free_buffers() call to
ff_MPV_common_end() since otherwise delayed pictures would get freed
during a size change.
2012-12-13 21:02:42 +01:00
Janne Grunau bd255f9feb lavc: set frame parameters after decoding only if necessary
Direct rendering capable decoders call get_buffer() which will set the
frame parameters.

Prevents frames with wrong parameters when a decoder outputs delayed
frames after a resolution or pixel format change.
2012-12-13 21:02:42 +01:00
Janne Grunau 072be3e896 h264: set parameters from SPS whenever it changes
Fixes a crash in the fuzzed sample sample_varPAR.avi_s26638 with
alternating bit depths.
2012-12-13 21:02:42 +01:00
Janne Grunau 0eae920c3c h264: initialize frame-mt context copies properly 2012-12-13 21:02:42 +01:00
Janne Grunau 288bb3da16 svq3: make slice type value unsigned to match svq3_get_ue_golomb return type 2012-12-09 15:51:45 +01:00
Janne Grunau 6a1aa5cb26 mjpeg: initialize input padding after unescaped buffer to zero
Fixes valgrind --undef-value-errors=yes warnings caused by valid
overreads in the fate vsynth jpegls, cover-art-ape and cover-art-wv
tests.
2012-12-08 17:05:45 +01:00
Janne Grunau 9a2e79116d golomb: use unsigned arithmetics in svq3_get_ue_golomb()
This prevents undefined behaviour of signed left shift if the coded
value is larger than 2^31. Large values are most likely invalid and
caused errors or by feeding random.

Validate every use of svq3_get_ue_golomb() and changed the place there
the return value was compared with negative numbers. dirac.c was clean,
fixed rv30 and svq3.
2012-12-08 12:55:10 +01:00
Janne Grunau a394959bbe h264: add a pointer for weighted prediction temporary buffer
Reusing MpegEncContext's obmc_scratchpad for this becomes a mess with
adaptive frame-mt.
2012-12-07 11:43:28 +01:00
Janne Grunau d7d6efe42b h264: check sps.log2_max_frame_num for validity
Fixes infinite or long taking loop in frame num gap code in
the fuzzed sample bipbop234.ts_s223302.

CC: libav-stable@libav.org
2012-12-07 11:43:28 +01:00
Janne Grunau 8cc2fa1e5d mov: validate number of DataReferenceBox entries against box size
Avoids a 2G memory allocation and parsing of random data in
mov_read_dref(). The fuzzed sample sample.mp4_s224424 triggers this.
2012-12-07 11:43:28 +01:00
Janne Grunau 80b6b31417 mov: compute avg_frame_rate only if duration is known
Fixes an assert in fuzzed sample sample.mp4_s265930.
2012-12-07 11:43:28 +01:00
Janne Grunau 480be07a96 flac: change minimum and default of lpc_passes option to 1
Avoid use of uninitialized and uncomputed linear least square models
during ff_lpc_calc_coefs() for FF_LPC_TYPE_CHOLESKY. Fixes running
make fate-flac-16-lpc-cholesk with valgrind --undef-value-errors=yes.
2012-12-07 11:43:28 +01:00