Commit Graph
100 Commits
Author SHA1 Message Date
Janne Grunau 12d42cd7a8 avfilter: include required header file avfilter.h in video.h 2012-05-29 15:36:06 +02:00
Janne Grunau 31f2c0231f avprobe: free options at the end of main() 2012-05-14 18:37:20 +02:00
Janne Grunau 093c50a4f6 avprobe: close opened codecs after use
Fixes "memleak" on closing avprobe to make valgrind happy.
2012-05-14 18:37:20 +02:00
Janne Grunau 29d27b5425 mpegmux: add stuffing to avoid incomplete PCM frames
Fixes https://bugzilla.libav.org/show_bug.cgi?id=244
2012-05-06 13:18:38 +02:00
Janne Grunau cb7190cd2c rv34: error out on size changes with frame threading 2012-03-23 23:11:55 +01:00
Janne Grunau 73ad4471a4 rv34: Handle only complete frames in frame-mt.
Correct handling of errors to prevent hags or crashes is very complex
otherwise.

The frame initializing is also moved from decode_slice() to
decode_frame() for clarity.
2012-03-23 17:50:46 +01:00
Janne Grunau 5ab506a5c8 MPV: set reference frame pointers to NULL when allocation of dummy pictures fails 2012-03-23 17:50:46 +01:00
Janne Grunau 7b60799aa8 MPV: always mark dummy frames as reference
If the dummy frame are not created from a reference frame they could
be deleted untimely resulting in multithreaded decoder waiting on
the current frame to finish.
Noticed by Ronald S. Bultje in the RV34 decoder with a broken file.
2012-03-16 23:35:32 +01:00
Janne Grunau 8a6037c390 Revert "h264: clear trailing bits in partially parsed NAL units"
This reverts commit 729ebb2f18.

There was an off-by-one error in the bit mask calculation clearing
actually the last valid bit and causing
http://bugzilla.libav.org/show_bug.cgi?id=227

The broken sample (Mr_MrsSmith-h264_aac.mp4) the commit was fixing
does not work after correcting the off-by-one error.

CC: libav-stable@libav.org
2012-03-12 22:46:56 +01:00
Janne Grunau 363bd1c62c remove iwmmxt optimizations
The were broken since August of 2010 without anyone noticing until
three weeks ago. Nobody cares about it anymore and hopefully Marvell
will support NEON like in the PXA978 from now on.
2012-03-12 22:46:56 +01:00
Janne Grunau e48a70e6da avplay: fix -threads option
The AVOptions based default to threads auto in 2473a45c8
works only if avplay does not use custom option handling
for -threads.

CC: <libav-stable@libav.org>
2012-02-21 16:45:34 +01:00
Janne Grunau 6a4cf065c7 dvbsubdec: avoid undefined signed left shift in RGBA macro 2012-02-21 16:01:31 +01:00
Janne Grunau 18d1d5886b rv30: check block type validity
Prevents crashes with the fuzzed samples from bugs 88, 89 and 125 after
"golomb: avoid infinite loop on all-zero input".
2012-02-14 19:03:10 +01:00
Janne Grunau 2bd730010d rv34: handle size changes during frame multithreading
Factors all context dynamic memory handling to its own functions.
Fixes bug 220.
2012-02-14 14:46:11 +01:00
Janne Grunau b54b40b33c rv40: prevent undefined signed overflow in rv40_loop_filter() 2012-02-14 14:42:55 +01:00
Janne Grunau 29330721b0 rv34: use AVERROR return values in ff_rv34_decode_frame()
Also adds an error message.
2012-02-14 14:42:55 +01:00
Janne Grunau bf61ef2316 rv34: use uint16_t for RV34DecContext.deblock_coefs
It is used as bitfield with 16 entries.
2012-02-14 14:42:55 +01:00
Janne Grunau c57fe49da8 eac3dec: replace undefined 1<<31 with INT32_MIN in noise generation 2012-02-09 21:28:37 +01:00
Janne Grunau 456d3e4fb5 yadif: specify array size outside DECLARE_ALIGNED 2012-02-09 21:28:37 +01:00
Janne Grunau 7f19bdc2a2 movdec: fix dts generation in fragmented files
Do not use AVStream's duration for dts generation since it contains in
some cases the duration of the whole file instead of duration of the
samples in the moov. This happens if the mdhd holds the duration of the
whole file but has no entries or a zero duration in its stts.
2012-02-02 17:39:13 +01:00
Janne Grunau fcc518a024 APIchanges: add missing commit hashes 2012-02-02 14:29:47 +01:00
Janne Grunau 316fc7443b avcodec: Add av_fast_padded_malloc().
Wrapper around av_fast_malloc() that keeps FF_INPUT_BUFFER_PADDING_SIZE
zero-padded bytes at the end of the used buffer.

Based on a patch by Reimar Döffinger <Reimar.Doeffinger@gmx.de>.
2012-02-01 19:19:35 +01:00
Janne Grunau 510ef04a46 vc1: prevent null pointer dereference on broken files
CC: libav-stable@libav.org
2012-02-01 12:54:39 +01:00
Janne Grunau cb0b284381 zmbv: check av_realloc() return values and avoid memleaks on ENOMEM 2012-02-01 12:54:39 +01:00
Janne Grunau e67e3a3f4a fate-golomb: extend golomb-test to get_ue_golomb_long()
get_ue_golomb_long() is only tested for values up to 2^15 - 2 since
we can not write larger values.
Silence the test on success and return a non-zero value on error.
Use an heap scratch buffer instead of large stack buffer.
Remove unneeded includes.
2012-02-01 01:18:55 +01:00
Janne Grunau b3461c29c1 lavf: prevent infinite loops while flushing in avformat_find_stream_info
If no data was seen for a stream decoder are returning 0 when fed with
empty packets for flushing. We can stop flushing when the decoder does
not return delayed delayed frames anymore. Changes try_decode_frame()
return value to got_picture or negative error.

CC: libav-stable@libav.org
2012-01-26 00:45:05 +01:00
Janne Grunau c3e10ae412 rv20: prevent calling ff_h263_decode_mba() with unset height/width
Prevents a crash of VLC during playback of a invalid matroska file,
found by John Villamil <johnv@matasano.com>.

CC: libav-stable@libav.org
2012-01-25 16:18:54 +01:00
Janne Grunau 366ac22ea5 indeo5: prevent null pointer dereference on broken files
Found by John Villamil <johnv@matasano.com>
2012-01-25 14:31:57 +01:00
Janne Grunau 1d3a9e63e0 rv10: verify slice offsets against buffer size
Found by John Villamil <johnv@matasano.com> in fuzzed rv20 in mkv files.
2012-01-24 02:16:02 +01:00
Janne Grunau 50a3f9a4bd mxfdec: fix memleak on mxf_read_close() 2012-01-23 17:29:58 +01:00
Janne Grunau 15cea3695d riff: fix invalid av_freep() calls on EOF in ff_read_riff_info 2012-01-22 19:32:44 +01:00
Janne Grunau 20ea14d0f8 mxfdec: fix memleak on av_realloc failures 2012-01-22 14:47:11 +01:00
Janne Grunau f028d4d1c3 mxfdec: hybrid demuxing/seeking solution
This uses the old demuxing code for OP1a and separate demuxing code for OPAtom.
Timestamp output is added to the old demuxing code.

The seeking code is made to seek to the start of the desired EditUnit only,
from which the normal demuxing code takes over (if OP1a). This means we
do not use delta entries or slices, only StreamOffsets. OPAtom seeking
basically works like before.

This also makes D-10 seeking behave the same way as OP1a and OPAtom. In other
words, we allow seeking before the start or past the end for D-10 too.

Based on several patches by Tomas Härdin <tomas.hardin@codemill.se> and
Reimar Döffinger <Reimar.Doeffinger@gmx.de>.

Changed av_calloc to av_mallocz, added overflow checks.
2012-01-22 14:40:53 +01:00
Janne Grunau 682b6db706 mxfdec: Parse IndexTableSegments and convert them into AVIndexEntry arrays.
Based on patch from Tomas Härdin <tomas.hardin@codemill.se>
and work by Georg Lippitsch <georg.lippitsch@gmx.at>

Changed av_calloc to av_mallocz and added overflow checks.
2012-01-22 14:40:52 +01:00
Janne Grunau 2473a45c85 threads: change the default for threads back to 1
Using threaded decoding by default breaks backward compatibility if
AVHWAccel is used or if an appliction sets threadunsafe callbacks.
Avconv and avplay still use -threads auto if not specified.
2012-01-21 13:26:44 +01:00
Janne Grunau afb8b207d6 threads: update slice_count and slice_offset from user context
They are used to signal the number of slices and offsets of each slice
out of band to the decoder.
2012-01-21 13:26:44 +01:00
Janne Grunau 59297ad63d lavf: force single-threaded decoding in avformat_find_stream_info
The H.264 decoder needs SPS and PPS for initialization during
multi-threaded decoding. When probed single-threaded SPS and PPS are
copied to extradata and are available for proper initialization of
the decoder before the first frame is decoded.
2012-01-20 09:41:46 +01:00
Janne Grunau 9e12002f11 rv34: add NEON rv34_idct_add
Overall almost 4% faster, idct_add down from 350 to 85 cycles, idct_dc_add
down from 83 to 30 cycles.

squash: rv34 idct rearrange partial register loads
2012-01-16 19:26:41 +01:00
Janne Grunau 502bf3b462 fate: add missing reference files for targa tests in 9c2f9b0e2
Fixes fate-targa-conformance-CCM8 and fate-targa-conformance-UCM8.
2012-01-13 23:52:59 +01:00
Janne Grunau 3547f8e8f8 rv34: fix and optimise frame dependency checking
The sporadic threading errors during fate-rv30 were caused by calling
ff_thread_await_progress with mb row -1 as argument. That returns
immediately since progress is initialized to -1. Not yet computed
motion vectors from the reference could be used for the first
macroblocks.
2012-01-12 18:38:08 +01:00
Janne Grunau e1e369049e rv34: NEON optimised dc only inverse transform
30-50% faster than the C implementation, 0.5% overall speedup on
bourne.rmvb.
2012-01-12 18:33:55 +01:00
Janne Grunau 68e252f548 wtv: fix memleaks during normal operation 2012-01-11 01:34:30 +01:00
Janne Grunau f6a152db11 threads: add CODEC_CAP_AUTO_THREADS for libvpx and xavs 2012-01-11 00:23:07 +01:00
Janne Grunau 9472d37d8e rv34: frame-level multi-threading
Statistics for bourne.rmvb -an -f null

1 thread:  37.12s user 0.03s system  99% cpu 37.174 total
2 threads: 47.63s user 0.24s system 185% cpu 25.807 total
4 threads: 41.21s user 0.30s system 327% cpu 12.674 total
2012-01-10 22:51:56 +01:00
Janne Grunau 3ab7700018 mpegvideo: claim ownership of referenced pictures
Under certain conditions pictures could be released before they were
returned with frame-threading. Broken mv computation in the upcoming
rv34 frame-threading patch was caused by this.

To prevent contexts from running out of available pictures the loop
releasing "unused" pictures has to be run for B frames too.
2012-01-10 22:51:56 +01:00
Janne Grunau e652cc9606 rv34: use get_bits_left()
It is not necessary to store the bit stream length in a RV34DecContext
field.
2012-01-10 16:58:53 +01:00
Janne Grunau be540e0cb3 indeo3: check motion vectors for validity
Fixes null pointer dereferences in fuzzed files found by Oana Stratulat.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-07 09:41:11 +01:00
Janne Grunau 73b16198b6 electronicarts: check bytes per sample for validity
Prevents division by zero.
2012-01-07 00:18:42 +01:00
Janne Grunau f907615f08 parsers: initialize MpegEncContext.slice_context_count to 1
The mpeg4 video, H264 and VC-1 parser hold (directly or indirectly)
a MpegEncContext in their private context. Since they do not call the
common mpegvideo init function slice_context_count has explicitly set
to 1.
Prevents a null pointer dereference in the h264 parser and fixes
bug 193.
2012-01-06 01:47:45 +01:00
Janne Grunau f5be84cfbc ipmovie: do not read audio packets before the codec is known
Prevents a division by zero.
2012-01-05 23:19:14 +01:00
Janne Grunau 696ace50ea truemotion2: check size before GetBitContext initialisation
Prevents null ptr derefence for negative sizes.
2012-01-05 23:19:13 +01:00
Janne Grunau bb5b3940b0 adpcm: ADPCM Electronic Arts has always two channels 2012-01-05 22:29:18 +01:00
Janne Grunau e268a352af mjpegdec: parse RSTn to prevent skipping other data in mjpeg_decode_scan
Check explicitly if enough bits are left to prevent an infinite loop
when the bitstream buffer is not followed by zero-padding.

Based on patches by Michael Niedermayer <michaelni@gmx.at>.
2012-01-05 18:20:35 +01:00
Janne Grunau 5e5cde2745 vp3: add fate test for non-zero last coefficient 2012-01-05 18:18:08 +01:00
Janne Grunau 9b4767e478 vp3: fix streams with non-zero last coefficient
Fixes a regression introduced in 8b94df0f20.
2012-01-05 18:18:08 +01:00
Janne Grunau f13a9ca906 v4l2: use V4L2_FMT_FLAG_EMULATED only if it is defined
V4L2_FMT_FLAG_EMULATED was added in 2.6.32.
2012-01-04 21:34:29 +01:00
Janne Grunau a2d1d21629 avio: exit early in fill_buffer without read_packet
Fixes an invalid free() with ass in avi. The sample in bug 98 passes
parts of AVPacket.data as buffer for the AVIOContext. Since the packet
is quite large fill_buffer tries to reallocate the buffer before doing
nothing. Fixes bug 98.
2012-01-04 11:18:24 +01:00
Janne Grunau c04a954da6 lavu: bump lavu minor for av_popcount64
Add it to doc/APIchanges and update and correct other entries.
2012-01-03 15:42:26 +01:00
Janne Grunau 881a5e047d mpegenc: use avctx->slices as number of slices
Adds a new member to MpegEncContext to hold the number of used slice
contexts. Fixes segfaults with '-threads 17 -thread_type slice' and
fate-vsynth{1,2}-mpeg{2,4}thread{,_ilace} with --disable-pthreads.
2012-01-02 19:20:23 +01:00
Janne Grunau 264808219d v410enc: fix undefined signed left shift caused by integer promotion 2012-01-02 19:20:23 +01:00
Janne Grunau af9240cd3c mpegenc: simplify muxrate calculation
The fate-h264-bsf-mp4toannexb failures were caused by an integer
overflow of the unneeded multiplication.

Inspired by patch by: Michael Niedermayer <michaelni@gmx.at>
2012-01-02 00:23:40 +01:00
Janne Grunau 1135a07146 avconv: free bitstream filters 2012-01-01 21:48:50 +01:00
Janne Grunau b12d217339 threads: limit the number of automatic threads to MAX_AUTO_THREADS
The extra thread added in {frame_}*thread_init was not taken into
account. Explicitly sets thread_count to 1 if only one CPU core was
detected. Also fixes two typos in comments.
2012-01-01 21:11:43 +01:00
Janne Grunau 60d626650a fate: use rgb24 as output format for dfa tests
Palette is as supposed in native endianness. Converting the pal8 output
to rgb24 is thus necessary for identical CRCs on big and little endian
systems.
2012-01-01 17:11:27 +01:00
Janne Grunau b6064d9a59 threads: set thread_count to 1 when thread support is disabled 2012-01-01 14:37:38 +01:00
Janne Grunau b4d44a45f9 threads: introduce CODEC_CAP_AUTO_THREADS and add it to libx264
Some external codecs have their own code to determine the best number
of threads. This number is not necessary the number of cpu cores.
Thread_count will be only 0 if the codec has CODEC_CAP_AUTO_THREADS.
2012-01-01 14:37:37 +01:00
Janne Grunau bcc7396065 threads: add sysconf based number of CPUs detection
Can act as fallback and should work on a couple of Unix systems.
2011-12-31 17:40:12 +01:00
Janne Grunau 937ff3a18a threads: always include necessary headers for number of CPUs detection
Since the conditions for the actual usage are more specific a less
preferred method can be used. This would cause compilation errors
because necessary headers are not included.
2011-12-31 17:40:12 +01:00
Janne Grunau e4e30256f8 threads: default to automatic thread count detection 2011-12-31 17:40:12 +01:00
Janne Grunau c11b92b304 Changelog: restore version <next> header
Indeo 4 decoder and SMJPEG demuxer are not included in 0.8_beta1. Move
them to version <next>.
2011-12-31 17:31:02 +01:00
Janne Grunau 2702ec2ef4 doxygen: remove unreplaced variables from custom header and footer 2011-12-27 17:54:06 +01:00
Janne Grunau 06bb590558 threads: test for sys/param.h and include it for sysctl on OpenBSD 2011-12-27 16:09:41 +01:00
Janne Grunau 1adba23cec v4l2: remove unneded linux specific asm/types.h include 2011-12-27 16:07:58 +01:00
Janne Grunau 6e9bb5aa3e swscale: prevent invalid writes in packed_16bpc_bswap
Writes past the end of the destination buffer were occuring when its
stride was smaller than the stride of the source. Fixes Bug #183.
2011-12-26 15:50:17 +01:00
Janne Grunau 7052618c7e threads: check defines before using them in automatic thread detection 2011-12-23 14:41:03 +01:00
Janne Grunau 846dca1aa3 pthread: include sys/types.h before sys/sysctl.h
Fixes compilation on FreeBSD with clang 3.
2011-12-23 14:40:39 +01:00
Janne Grunau c32e4029d9 options: set minimum for "threads" to zero
A negative number of threads does not make sense and 0 is used for
autodetection. Adds a symbolic name for autodetection.
2011-12-22 21:50:07 +01:00
Janne Grunau b9e2226972 bsd: use number of logical CPUs as automatic thread count 2011-12-22 21:50:07 +01:00
Janne Grunau ad29ecbff0 windows: use number of CPUs as automatic thread count 2011-12-22 21:50:07 +01:00
Janne Grunau ea4d5f4837 linux: use number of CPUs as automatic thread count
Use sched_getaffinity to determine the number of logical CPUs.
Limits the number of threads to 16 since slice threading of H.264
seems to be buggy with more than 16 threads.
2011-12-22 21:50:07 +01:00
Janne Grunau f77f640b30 pthreads: reset active_thread_type when slice thread_init returrns early 2011-12-22 21:50:07 +01:00
Janne Grunau 729ebb2f18 h264: clear trailing bits in partially parsed NAL units
Trailing bits are likely to be non-zero if the NAL unit is truncated.
Clearing the bits make overreads of the bitstream less likely in this
case. Fixes playback of
http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4 which
has a forbidden byte sequence of 0x00 0x00 0x00 in it SPS.
2011-12-19 23:14:21 +01:00
Janne Grunau 358ea75e9e Revert "h264: skip start code search if the size of the nal unit is known"
This reverts commit 87eebb3454.
2011-12-19 03:24:32 +01:00
Janne Grunau 87eebb3454 h264: skip start code search if the size of the nal unit is known
Start code emulation prevention is only required in Annex B bytestream
packed NAL units. For other coding formats the size is already known.
Looking for a start code prefix can result in false positives like in
http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4
which has a false positive in the SPS.
2011-12-18 23:52:53 +01:00
Janne Grunau b4dc68803b swscale: add endian conversion for RGB555 and RGB444 pixel formats
Add a macro to shorten the if condition.
2011-12-17 19:52:19 +01:00
Janne Grunau ed46a3d842 swscale: add rgb565 endianess conversion 2011-12-17 19:35:16 +01:00
Janne Grunau 72cb904453 swscale: add unscaled packed 16 bit per component endianess conversion 2011-12-16 01:41:33 +01:00
Janne Grunau ef5756aee0 fate: add -pix_fmt rgb48le to r210 test
Fixes checksum on big endian systems.
2011-12-15 15:56:15 +01:00
Janne Grunau f6cf4be821 avconv: update -map option help text 2011-12-12 14:36:04 +01:00
Janne Grunau 8d61eef917 ptx: fix inverted check for sufficient data
Fix regression introduced in 2b53e69.
2011-12-10 17:01:27 +01:00
Janne Grunau 2b53e696c8 ptx: emit a warning on insufficient picture data
Return the whole packet as consumed in this case and not the size the
packet should have had. Move the insufficient data check into the for
condition to fix a ISO C90 error on bigendian.
2011-12-10 15:29:54 +01:00
Janne GrunauandMans Rullgard 6c88988866 rv40: NEON optimised weighted prediction
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-06 13:48:25 +00:00
Janne GrunauandMans Rullgard f5c05b9aa5 rv40: NEON optimised chroma MC
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-06 13:48:25 +00:00
Janne GrunauandMans Rullgard 42d32cf53c rv34: NEON optimised inverse transform functions
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-06 13:48:24 +00:00
Janne Grunau 8dd92eca74 latmdec: add fate test for audio config change 2011-12-04 15:38:14 +01:00
Janne Grunau 84994421bc doc: remove space between variable and post increment in example code 2011-12-03 01:11:12 +01:00
Janne Grunau d268b79e34 aac_latm: reconfigure decoder on audio specific config changes 2011-12-03 00:42:48 +01:00
Janne Grunau fd095539d1 latmdec: fix audio specific config parsing
Pass the correct size in bits to mpeg4audio_get_config and add a flag
to disable parsing of the sync extension when the size is not known.

Latm with AudioMuxVersion 0 does not specify the size of the audio
specific config. Data after the audio specific config can be
misinterpreted as sync extension resulting in random and wrong configs.
2011-12-03 00:42:48 +01:00
Janne GrunauandMans Rullgard a760f530bb ARM: make some NEON macros reusable
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-02 19:59:18 +00:00
Janne GrunauandMans Rullgard bb8a6e03cc rv40: move loop filter to rv34dsp context
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-11-30 20:54:59 +00:00