35137 Commits

Author SHA1 Message Date
Michael Niedermayer
ae76b84221 avcodec: Extend fft to size 2^17
Asked-for-by: durandal_1707

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-03-04 13:51:42 +01:00
Agatha Hu
362e05f1ea avcodec/nvenc: Fix H264 and HEVC vui info update
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-03-04 10:49:33 +01:00
Michael Niedermayer
fbfd2601f6 avcodec/utils: Fix 'ISO C90 forbids mixed declarations and code'
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-03-03 21:19:54 +01:00
foo86
00e3717b4a avcodec/dca: simplify condition
Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-03-03 12:35:21 +01:00
foo86
8981348749 avcodec/dca: fix av_cold placement in declarations
Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-03-03 12:35:21 +01:00
Rodger Combs
ecba35bbe3 lavc/videotoolboxenc: remove *_NULLABLE annotations; fixes pre-10.11 build
These macros were added in OS X 10.11, and the file compiles without warnings
on both 10.10 and 10.11 with them removed.

Thanks to mark4o on IRC for pointing out the failure and testing the patch.
2016-03-02 21:44:28 -06:00
Rick Kern
3af71ac3f9 lavc: add VideoToolbox H.264 Encoder
Autodetected by default. Encode using -codec:v h264_videotoolbox.

Signed-off-by: Rick Kern <kernrj@gmail.com>
Signed-off-by: wm4 <nfxjfg@googlemail.com>
2016-03-02 21:19:35 +01:00
Ganesh Ajjanagadde
bd9c58756a lavc/aacenc_utils: replace sqrtf(Q*sqrtf(Q)) by precomputed value
It makes no sense whatsoever to do this at each function call; we
already have a table for this.

Yields a 2x improvement in find_min_book (x86-64, Haswell+GCC):
ffmpeg -i sin.flac -acodec aac -y sin.aac
find_min_book
old
    605 decicycles in find_min_book, 8388453 runs,    155 skips.9x
    606 decicycles in find_min_book,16776912 runs,    304 skips.9x
    607 decicycles in find_min_book,33553819 runs,    613 skips.2x
    607 decicycles in find_min_book,67107668 runs,   1196 skips.3x
    607 decicycles in find_min_book,134215360 runs,   2368 skips3x

new
    359 decicycles in find_min_book, 8388552 runs,     56 skips.3x
    360 decicycles in find_min_book,16777112 runs,    104 skips.1x
    361 decicycles in find_min_book,33554218 runs,    214 skips.4x
    361 decicycles in find_min_book,67108381 runs,    483 skips.5x
    361 decicycles in find_min_book,134216725 runs,   1003 skips5x

and more importantly a non-negligible speedup (~ 8%) to overall AAC encoding:
old:
ffmpeg -i sin.flac -acodec aac -strict -2 -y sin_new.aac  6.82s user 0.03s system 104% cpu 6.565 total
new:
ffmpeg -i sin.flac -acodec aac -strict -2 -y sin_old.aac  6.24s user 0.03s system 104% cpu 5.993 total

This also improves accuracy of the expression by ~ 2 ulp in some cases.

Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanag@gmail.com>
2016-03-01 22:57:44 -05:00
Wan-Teh Chang
4845f0720e Move the |die| member of FrameThreadContext to PerThreadContext.
This fixes a data race warning by ThreadSanitizer.
FrameThreadContext.die is read by all the worker threads but is not
protected by any mutex. Move it to PerThreadContext so that each worker
thread reads its own copy of |die|, which can then be protected with
PerThreadContext.mutex.

Signed-off-by: Wan-Teh Chang <wtc@google.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2016-03-01 13:53:47 -05:00
Rostislav Pehlivanov
7bcc57ad99 vc2enc: fix packet underallocation and minimum bitrate with interlacing
This was a regression introduced by commit e7345abe052 which
enabled full use of the allocated packet but due to the overhead of
using field coding the buffer was too small and triggered warnings and
crashes.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-03-01 13:44:18 +00:00
Rostislav Pehlivanov
41985d40c6 vc2enc: simplify slice cost caching
The fact that now all quantization indices costs are cached justifies
storing 20 more integers in a structure already allocated on heap.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-03-01 13:04:40 +00:00
Rostislav Pehlivanov
6061b78e83 vc2enc: remove redundant put_padding() and use skip_put_bytes() instead
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-03-01 11:39:30 +00:00
Michael Niedermayer
0be09f54fb avcodec: Add utils test
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-29 21:44:06 +01:00
Timothy Gu
e3461197b1 x86/vc1dsp: Split the file into MC and loopfilter 2016-02-29 08:46:53 -08:00
Carl Eugen Hoyos
4e05a12a41 lavc/pcxenc: Update format description link. 2016-02-29 12:42:29 +01:00
Michael Niedermayer
3e42c1128f avcodec/libzvbi-teletextdec: Remove unused variable
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-28 23:39:32 +01:00
Rostislav Pehlivanov
e7345abe05 vc2enc: redistribute leftover bytes
This commit redistributes the leftover bytes amongst the top 150 slices
in terms of size (in the hopes that they'll be the ones pretty bitrate
starved).

A more perceptual method would probably need to cut bits off from slices
which don't need much, but that'll be implemented later.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-28 19:06:29 +00:00
Rostislav Pehlivanov
bbcd5e99c3 vc2enc: allocate the DWT context with the current plane size
Previously used the luma size only.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-28 19:06:29 +00:00
Rostislav Pehlivanov
2f19583911 2enc: clip and warn when user bitrate set too low
The encoder crashed on verly low bitrates since there wasn't enough
space allocated.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-28 19:06:29 +00:00
Rostislav Pehlivanov
6e5c6d61bd vc2enc: clip and warn when user bitrate set too low
The encoder crashed on verly low bitrates since there wasn't enough
space allocated.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-28 19:06:29 +00:00
Rostislav Pehlivanov
0a2adf0f47 vc2enc: carry over quantization index across frames as a starting point
Previously a global average was used. Using the previous quantizer
resulted in a fairly significant speedup as slice size selection settled
down quicker.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-28 19:06:29 +00:00
Rostislav Pehlivanov
fc1d3cbfdc vc2enc: use 32 bits for quantized coefficients LUT
16 bits were definitely not enough and caused artifacts to appear on
images at barely compressed images.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-28 19:06:29 +00:00
Rostislav Pehlivanov
5cc53c2e53 vc2enc: cache bits per quantizer, calculate wasted bits
Needed for following commits, also a speed increase.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-28 19:06:29 +00:00
Michael Niedermayer
c6f4720b86 avcodec/mjpegdec: Fix decoding slightly odd progressive jpeg
Fixes: ebd58db6-dc86-11e5-91c2-59daeddf50c7.jpg

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-28 18:46:35 +01:00
Reimar Döffinger
4dd4d53531 Document and validate AVFrame plane pointers.
Check that the required plane pointers and only
those are set up.
Currently does not enforce anything for the palette
pointer of pseudopal formats as I am unsure about the
requirements.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2016-02-28 13:33:14 +01:00
Reimar Döffinger
45fa03b1f9 mjpegdec: Do not assume unused plane pointer are NULL.
We do neither document nor check such a requirement
and for application-provided get_buffer2 they could
contain the result of a malloc(0) or whatever value
they had previously.
This fixes a use-after-free in e.g. MPlayer:
https://trac.mplayerhq.hu/ticket/2262
We might want to consider changing the (documented)
API in addition though.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2016-02-28 13:32:01 +01:00
Reimar Döffinger
0f199f0ad0 mss2: Fix buffer overflow.
Reported as https://trac.mplayerhq.hu/ticket/2264 but have
not been able to reproduce with FFmpeg-only.
I have no idea what coded_height is used for here exactly,
so this might not be the best fix.
Fixes the following chain of events:
ff_mss12_decode_init sets coded_height while not setting height.
ff_mpv_decode_init then copies coded_height into MpegEncContext height.
This is then used by init_context_frame to allocate the data structures.
However the wmv9rects are validated/initialized based on avctx->height, not
avctx->coded_height.
Thus the decode_wmv9 function will try to decode a larger video that we
allocated data structures for, causing out-of-bounds writes.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2016-02-28 13:32:01 +01:00
Rodger Combs
f0ea536c47 lavc/aac_ac3_parser: reindent 2016-02-27 16:31:46 -06:00
Rodger Combs
9f5baf9085 lavc/aac_ac3_parser: avoid zeroing codec parameters if we haven't read a frame
This caused issues when seeking in some unusual MPEGTS files
2016-02-27 16:31:46 -06:00
Rodger Combs
b426d66370 lavc/Makefile: dnxhd demuxer depends on dnxhddata.o 2016-02-27 16:26:18 -06:00
Kieran Kunhya
8adbe26b90 avcodec/cfhd: Add support for 12-bit RGBA.
Plays all known samples
2016-02-27 13:17:20 +00:00
Kieran Kunhya
0096453f70 cfhd: reallocate internal buffers on format change.
Fixes some, but not all, of the threading fuzz crashes
2016-02-27 12:18:06 +00:00
Michael Niedermayer
d39b770aa2 avcodec/utils: Check that the video data[] arrays are NULL on the input to get_buffer_internal()
This should return an error to the decoder if the struct it tried to getbuffer is dirty

Reviewed-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-27 13:11:52 +01:00
Michael Niedermayer
bdf7093bd0 avcodec/utils: Check all data[] pointers in video_get_buffer() not just the first
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-27 13:11:52 +01:00
Clément Bœsch
b5451d88cf lavc: reindent a few decoders after previous commits 2016-02-26 22:15:20 +01:00
Clément Bœsch
22ebbda637 lavc: deprecate decoded ass subtitles with timings 2016-02-26 21:53:34 +01:00
Clément Bœsch
30e7685360 lavc/options: add ass_ro_flush_noop to flags2 2016-02-26 21:53:32 +01:00
Clément Bœsch
2941282124 lavc: allow subtitle text format to be ASS without timing 2016-02-26 21:49:34 +01:00
Clément Bœsch
805685fffd Kill timed SSA 2016-02-26 21:34:33 +01:00
Michael Niedermayer
410f717ff6 avcodec/utils: Merge identical if conditions
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-26 20:12:30 +01:00
Rostislav Pehlivanov
bc7beb6574 vc2enc: calculate the minimum slice size only once
This commit moves the minimum bits per slice calculations outside of the
rate control function as it is identical for every slice.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-26 15:38:26 +00:00
Rostislav Pehlivanov
2b811e4605 vc2enc: halve allocated table size, refactor and optimize quantization
Since coefficients differ only in the last bit when writing to the
bitstream it was possible to remove the sign from the tables, thus
halving them. Also now all quantization is done in the unsigned domain
as the sign is completely separate, which gets rid of the need to do
quantization on 32 bit signed integers.

Overall, this slightly speeds up the encoder depending on the machine.
The commit still generates bit-identical files as before the commit.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-26 14:47:06 +00:00
Rostislav Pehlivanov
7db2e757c5 vc2enc: use FFABS() instead of abs()
Provides a minor speedup.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-26 12:55:34 +00:00
Rostislav Pehlivanov
3ef10406e1 vc2enc: correctly zero out coefficient array padding
Credit for figuring this out goes to James Darnley.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-26 12:21:36 +00:00
Rostislav Pehlivanov
35346c7b0f vc2enc: mark as FF_CODEC_CAP_INIT_THREADSAFE and align AVCodec entries
The encoder does not modify any global variables.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-02-26 12:17:42 +00:00
Carl Eugen Hoyos
0f31d401c3 lavc/mjpegdec: Fix decoding images with Adobe_CM tag.
Fixes ticket #5267.
2016-02-25 13:26:13 +01:00
Neil Birkbeck
ad17b9d2d4 libavcodec:add packet level support for mastering metadata
Some containers, like webm/mkv, will contain this mastering metadata.
This is analogous to the way 3D fpa data is handled (in frame and
packet side data).

Signed-off-by: Neil Birkbeck <neil.birkbeck@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-25 00:18:12 +01:00
Derek Buitenhuis
ef7ce480c8 Merge commit 'd24bd96bdd5b4bae9a9e0055fa8d1104db1283a9'
* commit 'd24bd96bdd5b4bae9a9e0055fa8d1104db1283a9':
  build: Disentangle VC-1 decoder and parser

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-24 18:23:36 +00:00
Derek Buitenhuis
b056482ef3 Merge commit '15a24614aef5836af3cd2c7cc3b2b737eee6bf3c'
* commit '15a24614aef5836af3cd2c7cc3b2b737eee6bf3c':
  build: Add vc1dsp component for more fine-grained dependencies

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-24 18:21:38 +00:00
Derek Buitenhuis
2814f06abf Merge commit 'f9fbd474676e903e12efe83203697d60a9d28cf9'
* commit 'f9fbd474676e903e12efe83203697d60a9d28cf9':
  msmpeg4data: Move WMV2 data tables to their own file

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-24 18:15:14 +00:00