summaryrefslogtreecommitdiff
path: root/libavcodec
Commit message (Collapse)AuthorAge
* mips: rename mipsdspr1 to mipsdspVicente Olivert Riera2015-12-04
| | | | | Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/h264_direct: Check CO-POCs before useMichael Niedermayer2015-12-04
| | | | | | | | Fixes harmless integer overflow Fixes mozilla bug 1230286 Found-by: Tyson Smith Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* aacenc_ltp: fix out of bounds memory accessRostislav Pehlivanov2015-12-03
| | | | Discovered by Coverity.
* avcodec/jpeg2000: fix type of arguments of tag_tree_sizeMichael Niedermayer2015-12-03
| | | | | | | Fixes: out of array read Fixes: 36b8096fefab16c4c9326a508053e95c/signal_sigsegv_1d9ce18_3233_1a55196b018106dfabeace071a432d9e.r3d Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/vp3: ensure header is parsed successfully before tablesMichael Niedermayer2015-12-03
| | | | | | | | Fixes assertion failure Fixes: 266ee543812e934f7b4a72923a2701d4/signal_sigabrt_7ffff6ae7cc9_7322_85218d61759d461bdf7387180e8000c9.ogg Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/apedec: Check length in long_filter_high_3800()Michael Niedermayer2015-12-02
| | | | | | | | Fixes out of array read Fixes: 0a7ff0c1d93da9cef28a315ec91b692a/asan_heap-oob_4a52e5_3604_9c56dbb20e308f4faeef7b35f688521a.ape Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* vp9: always keep s->bytesperpixel and ctx->pix_fmt in sync.Ronald S. Bultje2015-12-02
| | | | Fixes mozilla bug 1229128.
* AAC encoder: improve SF range utilizationClaudio Freire2015-12-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch does 4 things, all of which interact and thus it woudln't be possible to commit them separately without causing either quality regressions or assertion failures. Fate comparison targets don't all reflect improvements in quality, yet listening tests show substantially improved quality and stability. 1. Increase SF range utilization. The spec requires SF delta values to be constrained within the range -60..60. The previous code was applying that range to the whole SF array and not only the deltas of consecutive values, because doing so requires smarter code: zeroing or otherwise skipping a band may invalidate lots of SF choices. This patch implements that logic to allow the coders to utilize the full dynamic range of scalefactors, increasing quality quite considerably, and fixing delta-SF-related assertion failures, since now the limitation is enforced rather than asserted. 2. PNS tweaks The previous modification makes big improvements in twoloop's efficiency, and every time that happens PNS logic needs to be tweaked accordingly to avoid it from stepping all over twoloop's decisions. This patch includes modifications of the sort. 3. Account for lowpass cutoff during PSY analysis The closer PSY's allocation is to final allocation the better the quality is, and given these modifications, twoloop is now very efficient at avoiding holes. Thus, to compute accurate thresholds, PSY needs to account for the lowpass applied implicitly during twoloop (by zeroing high bands). This patch makes twoloop set the cutoff in psymodel's context the first time it runs, and makes PSY account for it during threshold computation, making PE and threshold computations closer to the final allocation and thus achieving better subjective quality. 4. Tweaks to RC lambda tracking loop in relation to PNS Without this tweak some corner cases cause quality regressions. Basically, lambda needs to react faster to overall bitrate efficiency changes since now PNS can be quite successful in enforcing maximum bitrates, when PSY allocates too many bits to the lower bands, suppressing the signals RC logic uses to lower lambda in those cases and causing aggressive PNS. This tweak makes PNS much less aggressive, though it can still use some further tweaks. Also update MIPS specializations and adjust fuzz Also in lavc/mips/aacpsy_mips.h: remove trailing whitespace
* avcodec/mpegaudio_tablegen: Add (), fix fateMichael Niedermayer2015-12-02
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/cbrt_tablegen: speed up dynamic table creationGanesh Ajjanagadde2015-12-01
| | | | | | | | | | | | | | On systems having cbrt, there is no reason to use the slow pow function. Sample benchmark (x86-64, Haswell, GNU/Linux): new: 5124920 decicycles in cbrt_tableinit, 1 runs, 0 skips old: 12321680 decicycles in cbrt_tableinit, 1 runs, 0 skips Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* avcodec/mpegaudio_tablegen: more dynamic table creation speedupsGanesh Ajjanagadde2015-12-01
| | | | | | | | | | | | | | | | | | | | This further speeds up runtime initialization, with identical generated tables. Sample benchmark (x86-64, Haswell, GNU/Linux): old: 34441423 decicycles in mpegaudio_tableinit, 8192 runs, 0 skips new: 10776291 decicycles in mpegaudio_tableinit, 8192 runs, 0 skips Most low hanging fruit is taken care of here. For some idea, note that 83,064 array elements totalling 233,722 bytes need to be initialized. Thus, with this patch, we average ~ 12.9 cycles per element or ~ 4.6 cycles per byte. Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* avcodec/mpegaudio_tablegen: speed up dynamic table creationGanesh Ajjanagadde2015-12-01
| | | | | | | | | | | | | | | | | | | This does some miscellaneous stuff mainly avoiding the usage of pow to achieve significant speedups. This is not speed critical, but is unnecessary latency and cycles wasted for a user. All tables tested and are identical to the old ones (bit-exact even in floating point case). Sample benchmark (x86-64, Haswell, GNU/Linux): old: 102329530 decicycles in mpegaudio_tableinit, 1 runs, 0 skips new: 34111900 decicycles in mpegaudio_tableinit, 1 runs, 0 skips Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* avcodec/ppc/fdctdsp: use more accurate constantsGanesh Ajjanagadde2015-12-01
| | | | | | | | Whoever wrote this stuff had a pretty bad libm - digits differ pretty quickly. Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* avcodec/ac3: always use hardcoded tablesGanesh Ajjanagadde2015-11-30
| | | | | | | | | | | | | | | | | The table in question is a 253 byte one. In fact, it turns out that dynamic generation of the table results in an increased binary size. Code compiled with GCC 5.2.0, x86-64 (size in bytes), before and after patch: old: 62321064 libavcodec/libavcodec.so.57 new: 62320536 libavcodec/libavcodec.so.57 Thus, it always make sense to statically allocate this. Tested with FATE with/without --enable-hardcoded-tables. Reviewed-by: wm4 <nfxjfg@googlemail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* qsvenc: write a53 caption data to SEIWill Kelleher2015-11-30
| | | | | | Signed-off-by: Will Kelleher <wkelleher@gogoair.com> Previous version reviewed-by: Ivan Uskov <ivan.uskov@nablet.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/vp3: always set pix_fmt in theora_decode_header()Michael Niedermayer2015-11-30
| | | | | | | | Fixes assertion failure Fixes: d0bb0662da342ec65f8f2a081222e6b9/signal_sigabrt_7ffff6ae7cc9_5471_82964f0a9ac2f4d3d59390c15473f6f7.ogg Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/mpeg4videodec: Check available data before reading custom matrixMichael Niedermayer2015-11-29
| | | | | | | | Fixes: out of array read Fixes: 76c515fc3779d1b838667c61ea13ce92/asan_heap-oob_1fc0d07_8913_794a4629a264ebdb25b58d3a94ed1785.bit Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/dnxhddec: Disable 12bit by defaultMichael Niedermayer2015-11-29
| | | | | | | | | | | | | The DC VLC table used is too small, fixing this requires a sample, thus request a sample. Some samples are said to work even though the table has the wrong size, thus this is left enabled if the user enables experimental features. Fixes: 2abd25478c62a675f335fac00b467023/asan_static-oob_10aff98_1227_8811480c6ef1e970a7977ceb7e5a9958.mxf Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Approved-by: kurosu Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* AAC encoder: make pe.min a local minimumClaudio Freire2015-11-29
| | | | | | | | | | | | | | As noted in a comment, pe.min in the reference encoder is centered around current pe. The bit reservoir algo needs pe.min to be a local minimum, because it can only account for local PE variations. If it's set to a global minimum as was being done, bit reservoir logic doesn't work as efficiently. This patch tries to forget old minimums and converge to a local minimum without losing the stability of the previous solution. Listening tests until now suggest this solves numerous RC issues.
* avcodec/libdcadec: require first public releaseJames Almer2015-11-29
| | | | | Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* Merge commit 'fdd5c48ebdec489ec9e84eee547fefa50c3ad53c'Hendrik Leppkes2015-11-29
|\ | | | | | | | | | | | | * commit 'fdd5c48ebdec489ec9e84eee547fefa50c3ad53c': texturedsp: Explicitly cast RGBA parameters to unsigned Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * texturedsp: Explicitly cast RGBA parameters to unsignedVittorio Giovara2015-11-24
| | | | | | | | | | Silences warnings when using -Wshift-overflow (GCC 6+). Found-by: James Almer <jamrial@gmail.com>
* | Merge commit 'eef38316cab68aff080cf2b83c2427a734194e8d'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit 'eef38316cab68aff080cf2b83c2427a734194e8d': texturedspenc: Avoid using separate variables Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * texturedspenc: Avoid using separate variablesVittorio Giovara2015-11-24
| | | | | | | | Use the result directly, removing an unneeded cast.
* | Merge commit '7831fb90503142e32cc3c9be43bc3f9d342ded6b'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit '7831fb90503142e32cc3c9be43bc3f9d342ded6b': textureencdsp: cosmetics: Use normal static const for tables Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * textureencdsp: cosmetics: Use normal static const for tablesVittorio Giovara2015-11-24
| |
* | Merge commit '99cb833fc2d9874c62fffbcd3347fae660de0fe5'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit '99cb833fc2d9874c62fffbcd3347fae660de0fe5': sgi: Correctly propagate meaningful error values Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * sgi: Correctly propagate meaningful error valuesVittorio Giovara2015-11-24
| |
* | Merge commit '4a0918cae6394e503b17c71f8f171b4a795eb849'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit '4a0918cae6394e503b17c71f8f171b4a795eb849': sgienc: Support encoding high bit depth images with RLE Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * sgienc: Support encoding high bit depth images with RLEVittorio Giovara2015-11-24
| | | | | | | | Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | Merge commit '59e3f4e598ae381600ef54e1f6e6a8a5270ac245'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit '59e3f4e598ae381600ef54e1f6e6a8a5270ac245': sgienc: Use a local RLE encoding function Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * sgienc: Use a local RLE encoding functionVittorio Giovara2015-11-24
| | | | | | | | | | | | SGI RLE encoding is slighlty different than the one provided by rle module (especially at high bit depth). The pixel count function however does not change, so it is simply made library-public.
* | Merge commit '62cc8f4d79dad119e8efeaae080a58a8dcb1e89d'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit '62cc8f4d79dad119e8efeaae080a58a8dcb1e89d': sgienc: Port to bytestream2 Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * sgienc: Port to bytestream2Vittorio Giovara2015-11-24
| |
* | Merge commit '99f40fd02f1870c2dee70977b672da9cb198f0be'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit '99f40fd02f1870c2dee70977b672da9cb198f0be': sgienc: Do not end RLE lines with 0s Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * sgienc: Do not end RLE lines with 0sVittorio Giovara2015-11-24
| | | | | | | | | | | | | | | | This is never mentioned in the specifications, and decoders work just as fine without it. Update the fate references since the compressed file is smaller. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
| * libvpxenc: remove some unused ctrl id mappingsJames Zern2015-11-23
| | | | | | | | | | | | | | | | | | VP8E_UPD_ENTROPY, VP8E_UPD_REFERENCE, VP8E_USE_REFERENCE were removed from libvpx and the remaining values were never used here Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Zern <jzern@google.com> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | Merge commit 'c12c085be7e86880924249e5cb3f898e45dee134'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit 'c12c085be7e86880924249e5cb3f898e45dee134': dcadec: Do not check for overreads in auxiliary data Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * dcadec: Do not check for overreads in auxiliary dataTim Walker2015-11-23
| | | | | | | | | | | | | | | | The auxiliary data length field is not reliable, and incorrect overread errors could be returned for valid, real-world bitstreams. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | Merge commit '462a54e2291e1fa18e1f1254d09739dfbb795617'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit '462a54e2291e1fa18e1f1254d09739dfbb795617': lavc: Deprecate avctx.rtp_callback field Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * lavc: Deprecate avctx.rtp_callback fieldVittorio Giovara2015-11-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This function returns the encoded data of a frame, one slice at a time directly when that slice is encoded, instead of waiting for the full frame to be done. However this field has a debatable usefulness, since it looks like it is just a convoluted way to get data at lowest possible latency, or a somewhat hacky way to store h263 in RFC-2190 rtp encapsulation. Moreover when multi-threading is enabled (which is by default) the order of returned slices is not deterministic at all, making the use of this function not reliable at all (or at the very least, more complicated than it should be). So, for the reasons stated above, and being used by only a single encoder family (mpegvideo), this field is deemed unnecessary, overcomplicated, and not really belonging to libavcodec. Libavformat features a complete implementation of RFC-2190, for any other case. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | Merge commit 'fc4c27c4edfc6a5f9bc7c696e823652474a65ce8'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit 'fc4c27c4edfc6a5f9bc7c696e823652474a65ce8': qsvenc: expose additional encoding options Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * qsvenc: expose additional encoding optionsAnton Khirnov2015-11-20
| |
* | Merge commit 'e7d7cf86dcaba8eaaed62c80172ff0aff2588c2a'Hendrik Leppkes2015-11-29
|\| | | | | | | | | | | | | * commit 'e7d7cf86dcaba8eaaed62c80172ff0aff2588c2a': qsvenc: support more RC methods Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * qsvenc: support more RC methodsAnton Khirnov2015-11-20
| |
* | avcodec/h264_refs: Check that long references match before useMichael Niedermayer2015-11-29
| | | | | | | | | | | | | | | | Fixes out of array read Fixes: 59bb925e90201fa0f87f0a31945d43b5/asan_heap-oob_4a52e5_3388_66027f11e3d072f1e02401ecc6193361.jvt Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | avcodec/utils: Clear dimensions in ff_get_buffer() on failureMichael Niedermayer2015-11-28
| | | | | | | | | | | | | | | | Fixes out of array access Fixes: 482d8f2fd17c9f532b586458a33f267c/asan_heap-oob_4a52b6_7417_1d08d477736d66cdadd833d146bb8bae.mov Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | avcodec/utils: Use 64bit for aspect ratio calculation in avcodec_string()Michael Niedermayer2015-11-28
| | | | | | | | | | | | | | | | Fixes integer overflow Fixes: 3a45b2ae02f2cf12b7bd99543cdcdae5/asan_heap-oob_1dff502_8022_899f75e1e81046ebd7b6c2394a1419f4.mov Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | avcodec/hevc: Check max ctb addresses for WPPMichael Niedermayer2015-11-28
| | | | | | | | | | | | | | | | Fixes out of array read Fixes: 2f95ddd996db8a6281d2e18c184595a7/asan_heap-oob_192fe91_3330_58e4441181e30a66c19f743dcb392347.bit Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | avcodec/aac_tablegen: get rid of hardcoded tables entirelyGanesh Ajjanagadde2015-11-28
| | | | | | | | | | | | | | | | | | | | Commit 96786a12f6df26990bbe7c0ca4592b3731724469 makes runtime initialization cheap. Tested with FATE, with/without --enable-hardcoded-tables. Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>