1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-02-09 14:14:39 +02:00

38749 Commits

Author SHA1 Message Date
Rostislav Pehlivanov
70eb77b34e mdct15: add inverse transform postrotation SIMD
2.5ms frames:
Before   (c):  2638 decicycles in postrotate, 2097040 runs,    112 skips
After (sse3):  1467 decicycles in postrotate, 2097083 runs,     69 skips
After (avx2):  1244 decicycles in postrotate, 2097085 runs,     67 skips

5ms frames:
Before   (c):  4987 decicycles in postrotate, 1048371 runs,    205 skips
After (sse3):  2644 decicycles in postrotate, 1048509 runs,     67 skips
After (avx2):  2031 decicycles in postrotate, 1048523 runs,     53 skips

10ms frames:
Before   (c):  9153 decicycles in postrotate,  523575 runs,    713 skips
After (sse3):  5110 decicycles in postrotate,  523726 runs,    562 skips
After (avx2):  3738 decicycles in postrotate,  524223 runs,     65 skips

20ms frames:
Before   (c): 17857 decicycles in postrotate,  261866 runs,    278 skips
After (sse3): 10041 decicycles in postrotate,  261746 runs,    398 skips
After (avx2):  7050 decicycles in postrotate,  262116 runs,     28 skips

Improves total decoding performance for real world content by 9% with avx2.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-07-30 07:38:39 +01:00
Matt Oliver
b0c61209cd lavc/makefile: Add missing file dependencies.
ac3dsp.c uses tables from ac3.c
ac3.c uses tables from ac3tab.c
hevc_ps uses tables from hevc_data.c
intrax8.c uses tables from msmpeg4data.c

Signed-off-by: Matt Oliver <protogonoi@gmail.com>
2017-07-30 14:31:12 +10:00
Michael Niedermayer
bf8ab72ae9 avcodec/dirac_dwt: Fix multiple integer overflows in COMPOSE_DD97iH0()
Fixes: runtime error: signed integer overflow: 9 * 335544320 cannot be represented in type 'int'
Fixes: 2739/clusterfuzz-testcase-minimized-6737297955356672

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-29 16:28:22 +02:00
Michael Niedermayer
c0220c768c avcodec/diracdec: Fix integer overflow in divide3()
Fixes: runtime error: signed integer overflow: -1073746548 * 21845 cannot be represented in type 'int'
Fixes: 2729/clusterfuzz-testcase-minimized-5902915464069120

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-29 04:05:53 +02:00
Michael Niedermayer
2c630d159f avcodec/takdec: Fix integer overflow in decode_subframe()
Fixes: runtime error: signed integer overflow: -536870912 - 1972191120 cannot be represented in type 'int'
Fixes: 2711/clusterfuzz-testcase-minimized-4975142398590976

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-29 04:05:53 +02:00
Kaustubh Raste
36ea41de37 libavcodec/mips: Improve avc dequant-idct luma dc msa function
Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-29 03:47:50 +02:00
Michael Niedermayer
8e275a74b0 avcodec/diracdec: Fix integer overflow in signed multiplication in UNPACK_ARITH()
Fixes: runtime error: signed integer overflow: 1073741823 * 4 cannot be represented in type 'int'
Fixes: 2729/clusterfuzz-testcase-minimized-5902915464069120

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-28 03:35:22 +02:00
Michael Niedermayer
aeddb3607b avcodec/pixlet: Simplify nbits computation
Fixes multiple integer overflows
Fixes: runtime error: signed integer overflow: 1 + 2147483647 cannot be represented in type 'int'

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-28 03:35:22 +02:00
Wan-Teh Chang
58fbcf885d pthread_frame: revert 2e664b9c1e73c80aab91070c1eb7676f04bdd12d.
The patch does not fix the tsan warning it was intended to fix.
Reverting the patch moves the av_log() back to the outside of the lock.

Signed-off-by: Wan-Teh Chang <wtc@google.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2017-07-27 17:14:17 -04:00
Wan-Teh Chang
8c3b329da2 avcodec/h264_slice: don't sync default_ref[] between threads.
default_ref[] is unconditionally initialized in h264_initialise_ref_list()
(called from ff_h264_build_ref_list(), called from h264_slice_init()).

This fixes the following tsan warning when running fate-h264:

WARNING: ThreadSanitizer: data race (pid=31070)
  Write of size 8 at 0x7bbc000082a8 by thread T1 (mutexes: write M1628):
    #0 memcpy /work/release-test/final/llvm.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:655:5
(ffmpeg+0x10de9d)
    #1 h264_initialise_ref_list ffmpeg/libavcodec/h264_refs.c:214:29 (ffmpeg+0x1186b3f)
    #2 ff_h264_build_ref_list ffmpeg/libavcodec/h264_refs.c:306 (ffmpeg+0x1186b3f)
    #3 h264_slice_init ffmpeg/libavcodec/h264_slice.c:1900:11 (ffmpeg+0x1191149)
[..]
  Previous read of size 8 at 0x7bbc000082a8 by main thread (mutexes:
write M1630):
    #0 memcpy /work/release-test/final/llvm.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:655:5
(ffmpeg+0x10de9d)
    #1 ff_h264_update_thread_context ffmpeg/libavcodec/h264_slice.c:411:5 (ffmpeg+0x118b7dc)

Signed-off-by: Wan-Teh Chang <wtc@google.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2017-07-27 17:14:17 -04:00
Paul B Mahol
9835ee60da avcodec/dnxhdenc: enable frame threading
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-07-27 15:23:45 +02:00
Michael Niedermayer
296debd213 avcodec/dnxhddec: Move mb height check out of non hr branch
Fixes: out of array access
Fixes: poc.dnxhd

Found-by: Bingchang, Liu@VARAS of IIE
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-27 03:07:12 +02:00
Rostislav Pehlivanov
133dafe24f pngdec: fix potential memory leak
Fixes CID1412026.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-07-26 23:54:14 +01:00
Michael Niedermayer
5d0b69f3b7 avcodec/jpeg2000dec: Fix h/vden typo
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-27 00:01:27 +02:00
foo86
5e715b583d avcodec/dolby_e: fix potentially undefined pointer arithmetic
Avoid undefined behavior in skip_input() by checking that enough data is
available before incrementing input pointer.

Check return values of parse_key() and skip_input() and exit early with
error if there is not enough data.
2017-07-26 21:23:07 +03:00
foo86
0689cc2475 avcodec/dolby_e: add AV_CODEC_CAP_CHANNEL_CONF capability 2017-07-26 21:23:07 +03:00
foo86
56277f6d19 avcodec/dolby_e: add 'f' suffixes to floating point literals 2017-07-26 21:23:07 +03:00
Clément Bœsch
2ba20d799a lavc/htmlsubtitles: simplify 1-char tags case insensitive test 2017-07-26 19:56:28 +02:00
Michael Niedermayer
1b00600319 avcodec/jpeg2000dec: Fix division by zero in jp2_find_codestream()
Fixes: 2707/clusterfuzz-testcase-minimized-5179636394754048

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-26 17:06:29 +02:00
Michael Niedermayer
74c1c22d7f avcodec/hevc_ps: fix integer overflow in log2_parallel_merge_level_minus2
Fixes: runtime error: signed integer overflow: -2147483647 - 2 cannot be represented in type 'int'
Fixes: 2702/clusterfuzz-testcase-minimized-4511932591636480

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-26 17:06:29 +02:00
James Almer
c220fe008c avcodec/webp: add support for ICCP chunks
Export the raw data as ICC Profile frame side data.

Reviwed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2017-07-26 11:31:17 -03:00
Muhammad Faiz
c8305079da avcodec/rdft: reorder calculation
old:
 165188 decicycles in  rdft,   65536 runs,      0 skips
 165865 decicycles in irdft,   65536 runs,      0 skips
new:
 142487 decicycles in  rdft,   65536 runs,      0 skips
 141498 decicycles in irdft,   65536 runs,      0 skips

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-07-26 06:13:05 +07:00
Kaustubh Raste
a776cb2074 libavcodec/mips: Optimize avc idct 4x4 for msa
Removed memset call and improved performance.

Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-25 22:04:34 +02:00
Rostislav Pehlivanov
0563a5d175 mdct15: simplify prereindexing and forward transform postrotation
Equivalent.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-07-25 20:15:17 +01:00
Rostislav Pehlivanov
2e08bbb282 pngdec: decode and expose iCCP chunks as side data
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-07-25 20:12:44 +01:00
James Almer
4a654be3fb avcodec/mpegvideo_enc: fix mixed declarations and code warning 2017-07-25 00:58:24 -03:00
Michael Niedermayer
03a9e6ff30 avcodec/ylc: Fix shift overflow
Fixes: runtime error: shift exponent 32 is too large for 32-bit type 'unsigned int'
Fixes: 2698/clusterfuzz-testcase-minimized-4713541443518464

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-24 17:52:42 +02:00
Michael Niedermayer
0764fe1d09 avcodec/aacps: Fix multiple integer overflow in map_val_34_to_20()
Fixes: avcodec/aacps.c:511:40: runtime error: signed integer overflow: 1509077651 + 758068176 cannot be represented in type 'int'
Fixes: 2678/clusterfuzz-testcase-minimized-4702787684270080

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-24 17:52:42 +02:00
Michael Niedermayer
aff93e1929 avcodec/mpegvideo_enc: Use intra/inter scantable matching mb type in quantization
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-24 02:42:33 +02:00
Michael Niedermayer
2dfb8c4178 avcodec/aacdec_fixed: fix: left shift of negative value -1
Fixes: 2699/clusterfuzz-testcase-minimized-5631303862976512

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-24 02:42:33 +02:00
Michael Niedermayer
69e7daf6ce avcodec/dirac_vlc: Fix undefined shift
Fixes: runtime error: shift exponent 64 is too large for 64-bit type 'residual' (aka 'unsigned long')
Fixes: 2674/clusterfuzz-testcase-minimized-4999700518273024

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-24 02:42:33 +02:00
Vodyannikov Aleksandr
47c9365724 avcodec/cfhd: Fix decoding regression due to height check
Fixes: Ticket6546

Regression since: 54aaadf648073149f1ac34f56cbde4e6c5aa22ef

Reviewed-by: Muhammad Faiz <mfcc64@gmail.com>
Reviewed-by: Kieran Kunhya <kierank@obe.tv>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-23 14:58:29 +02:00
foo86
dd4b7badb4 avcodec/dcaadpcm: fix use of uninitialized variable
Fixes CID 1409924.
2017-07-23 00:28:18 +03:00
foo86
34fb84a97d avcodec/dcaadpcm: check for av_malloc() failure
Fixes CID 1409915.
2017-07-23 00:28:18 +03:00
Vittorio Giovara
dc9735eb67 hevc: Make sure to update the current frame transfer characteristic
Otherwise the first decoded frame will still be tagged with the
original transfer instead of the alternative one.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2017-07-21 20:07:40 +02:00
Michael Niedermayer
edc88646ee avcodec/diracdec: Check dimensions which are closer to what is allocated in alloc_sequence_buffers()
Fixes OOM
Fixes: 2674/clusterfuzz-testcase-minimized-4999700518273024

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-21 17:37:05 +02:00
James Almer
7c9d2ad45f avcodec/dca: remove GetBitContext usage from avpriv_dca_parse_core_frame_header()
This prevents potential ABI issues with GetBitContext.

Reviewed-by: foo86 <foobaz86@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2017-07-21 12:18:10 -03:00
Wan-Teh Chang
99c5ac2039 avcodec/h264: Declare the local variable decode_chroma as const.
ff_h264_decode_mb_cabac() and ff_h264_decode_mb_cavlc() are very long
functions. Declaring decode_chroma as const makes it clear the variable
doesn't change after initialization.

Signed-off-by: Wan-Teh Chang <wtc@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-21 02:08:33 +02:00
Wan-Teh Chang
b77e26b285 avcodec/hevcdec: hevc_await_progress: declare |y| only if used.
hevc_await_progress() uses the variable |y| only inside the "if" block.
So |y| only needs to be declared and initialized in that block.

Signed-off-by: Wan-Teh Chang <wtc@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-21 02:08:33 +02:00
Wan-Teh Chang
ea1ca17be2 avcodec/x86/cavsdsp: Delete #include "libavcodec/x86/idctdsp.h".
This file already has #include "idctdsp.h", which is resolved to the
idctdsp.h header in the directory where this file resides by compilers.
Two other files in this directory, libavcodec/x86/idctdsp_init.c and
libavcodec/x86/xvididct_init.c, also rely on #include "idctdsp.h"
working this way.

Signed-off-by: Wan-Teh Chang <wtc@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-21 02:08:33 +02:00
Rostislav Pehlivanov
3aca16e857 opus_rc: fix CDF encoding of zeroes
0th CDF value is where probabilities are.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-07-20 08:24:46 +01:00
James Almer
cb13f44831 avcodec/dolby_e: use av_clip_uintp2()
Fixes fate-source.
2017-07-19 15:19:59 -03:00
foo86
930fe4b1f7 avcodec: add Dolby E decoder 2017-07-19 12:27:32 +02:00
Muhammad Faiz
b505f15b15 avcodec/pthread_slice: use slice threading from avutil
Also remove pthread_cond_broadcast(progress_cond) on uninit.
Broadcasting it is not required because workers are always
parked when they are not in thread_execute. So it is imposible
that a worker is waiting on progress_cond when uninitialized.

Benchmark:
./ffmpeg -threads $threads -thread_type slice -i 10slices.mp4 -f null null
threads=2:
  old: 70.212s 70.525s 70.877s
  new: 65.219s 65.377s 65.484s
threads=3:
  old: 65.086s 66.306s 66.409s
  new: 63.229s 65.026s 65.116s
threads=4:
  old: 60.993s 61.482s 62.123s
  new: 59.224s 59.441s 59.667s
threads=5:
  old: 57.576s 57.860s 58.832s
  new: 53.032s 53.948s 54.086s

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-07-19 15:51:32 +07:00
foo86
012620aa1b avcodec/dca: avoid using bitstream reader in a non-standard way
Use proper get_bits.h functions instead of directly accessing index.

Signed-off-by: James Almer <jamrial@gmail.com>
2017-07-18 21:04:58 -03:00
foo86
902cd30e9b avcodec/dca_core: probe extension headers directly
Avoid using bitstream reader in a non-standard way by directly accessing
index. Use bit shifting/masking operations instead.

Signed-off-by: James Almer <jamrial@gmail.com>
2017-07-18 21:04:58 -03:00
foo86
07a7f08b1e avcodec/dca_parser: avoid use of magic values
Duration computation can be simplified because number of PCM blocks is
only allowed to be a multiple of 8.

Signed-off-by: James Almer <jamrial@gmail.com>
2017-07-18 21:04:58 -03:00
foo86
4b6c212e85 avcodec/dca_parser: export profile information
Permits applications to access DTS profile information without having to
decode a frame.

Signed-off-by: James Almer <jamrial@gmail.com>
2017-07-18 21:04:57 -03:00
foo86
e54b9be1ff avcodec/dca_parser: switch to common frame header parsing function
Signed-off-by: James Almer <jamrial@gmail.com>
2017-07-18 21:04:57 -03:00
foo86
33fc6c17a6 avcodec/dca_core: switch to common frame header parsing function
Signed-off-by: James Almer <jamrial@gmail.com>
2017-07-18 21:04:56 -03:00