summaryrefslogtreecommitdiff
path: root/libavcodec
Commit message (Collapse)AuthorAge
* Merge commit 'a7153444df9040bf6ae103e0bbf6104b66f974cb'Michael Niedermayer2014-08-06
|\ | | | | | | | | | | | | | | | | | | | | * commit 'a7153444df9040bf6ae103e0bbf6104b66f974cb': huffyuvdec: check width size for yuv422p Conflicts: libavcodec/huffyuvdec.c See: 6abb9a901fca27da14d4fffbb01948288b5da3ba Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * huffyuvdec: check width size for yuv422pMichael Niedermayer2014-08-05
| | | | | | | | | | | | | | | | | | Avoid out of array accesses. CC: libav-stable@libav.org Bug-Id: CVE-2013-0848 Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com> Signed-off-by: Anton Khirnov <anton@khirnov.net>
| * mmvideo: check horizontal coordinate tooMichael Niedermayer2014-08-05
| | | | | | | | | | | | | | | | | | Fixes out of array accesses. Bug-Id: CVE-2013-3672 Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com> Signed-off-by: Anton Khirnov <anton@khirnov.net>
| * wmalosslessdec: fix mclms_coeffs* array sizeMichael Niedermayer2014-08-05
| | | | | | | | | | | | | | | | | | Fixes corruption of context Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC:libav-stable@libav.org Bug-Id: CVE-2014-2098 Signed-off-by: Anton Khirnov <anton@khirnov.net>
* | Merge commit '701e8b42e12ad625c64ceae2252acb1de390278c'Michael Niedermayer2014-08-05
|\| | | | | | | | | | | | | | | | | | | | | * commit '701e8b42e12ad625c64ceae2252acb1de390278c': vc-1: Optimise parser (with special attention to ARM) Conflicts: libavcodec/vc1_parser.c See: a0d7f9ec9a10d935b83a47dbcb2cd85dcc007738 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * vc-1: Optimise parser (with special attention to ARM)Ben Avison2014-08-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous implementation of the parser made four passes over each input buffer (reduced to two if the container format already guaranteed the input buffer corresponded to frames, such as with MKV). But these buffers are often 200K in size, certainly enough to flush the data out of L1 cache, and for many CPUs, all the way out to main memory. The passes were: 1) locate frame boundaries (not needed for MKV etc) 2) copy the data into a contiguous block (not needed for MKV etc) 3) locate the start codes within each frame 4) unescape the data between start codes After this, the unescaped data was parsed to extract certain header fields, but because the unescape operation was so large, this was usually also effectively operating on uncached memory. Most of the unescaped data was simply thrown away and never processed further. Only step 2 - because it used memcpy - was using prefetch, making things even worse. This patch reorganises these steps so that, aside from the copying, the operations are performed in parallel, maximising cache utilisation. No more than the worst-case number of bytes needed for header parsing is unescaped. Most of the data is, in practice, only read in order to search for a start code, for which optimised implementations already existed in the H264 codec (notably the ARM version uses prefetch, so we end up doing both remaining passes at maximum speed). For MKV files, we know when we've found the last start code of interest in a given frame, so we are able to avoid doing even that one remaining pass for most of the buffer. In some use-cases (such as the Raspberry Pi) video decode is handled by the GPU, but the entire elementary stream is still fed through the parser to pick out certain elements of the header which are necessary to manage the decode process. As you might expect, in these cases, the performance of the parser is significant. To measure parser performance, I used the same VC-1 elementary stream in either an MPEG-2 transport stream or a MKV file, and fed it through avconv with -c:v copy -c:a copy -f null. These are the gperftools counts for those streams, both filtered to only include vc1_parse() and its callees, and unfiltered (to include the whole binary). Lower numbers are better: Before After File Filtered Mean StdDev Mean StdDev Confidence Change M2TS No 861.7 8.2 650.5 8.1 100.0% +32.5% MKV No 868.9 7.4 731.7 9.0 100.0% +18.8% M2TS Yes 250.0 11.2 27.2 3.4 100.0% +817.9% MKV Yes 149.0 12.8 1.7 0.8 100.0% +8526.3% Yes, that last case shows vc1_parse() running 86 times faster! The M2TS case does show a larger absolute improvement though, since it was worse to begin with. This patch has been tested with the FATE suite (albeit on x86 for speed). Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | Merge commit 'adf8227cf4e7b4fccb2ad88e1e09b6dc00dd00ed'Michael Niedermayer2014-08-05
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'adf8227cf4e7b4fccb2ad88e1e09b6dc00dd00ed': vc-1: Add platform-specific start code search routine to VC1DSPContext. Conflicts: configure libavcodec/arm/vc1dsp_init_arm.c libavcodec/vc1dsp.c libavcodec/vc1dsp.h See: 9d8ecdd8ca6d248e7439e8fdf255e39eda14e0f2 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * vc-1: Add platform-specific start code search routine to VC1DSPContext.Ben Avison2014-08-04
| | | | | | | | | | | | | | Initialise VC1DSPContext for parser as well as for decoder. Note, the VC-1 code doesn't actually use the function pointer yet. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | Merge commit 'db7f1c7c5a1d37e7f4da64a79a97bea1c4b6e9f8'Michael Niedermayer2014-08-05
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'db7f1c7c5a1d37e7f4da64a79a97bea1c4b6e9f8': h264: Move start code search functions into separate source files. Conflicts: libavcodec/arm/Makefile libavcodec/arm/h264dsp_init_arm.c libavcodec/h264_parser.c libavcodec/h264dsp.c libavcodec/startcode.c libavcodec/startcode.h See: 270cede3f3772117454a14b620803d731036942d Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * h264: Move start code search functions into separate source files.Ben Avison2014-08-04
| | | | | | | | | | | | This permits re-use with parsers for codecs which use similar start codes. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | x86/vp9lpf: use fewer instructions in SPLATB_MIXJames Almer2014-08-05
| | | | | | | | | | Signed-off-by: James Almer <jamrial@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Fix compile error on bfin.Bernd Kuhls2014-08-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After the removal of all Blackfin architecture optimizations in http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b55d3bbeed375f7b74442c4dd274d116a3e3d2e1 some includes were left behind leading to a compile error: CC libavformat/adtsenc.o In file included from ./libavcodec/get_bits.h:35, from ./libavcodec/ac3_parser.h:27, from libavformat/ac3dec.c:23: ./libavcodec/mathops.h:43:29: error: bfin/mathops.h: No such file or directory This compile error was found by buildroot autobuild system: http://autobuild.buildroot.net/results/ae0/ae056f267e907091d09d2a1546d6f1ae02fa23b9/ Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '990e2f3555bb0adae122d3599938ddcfee46e2d1'Michael Niedermayer2014-08-05
|\| | | | | | | | | | | | | * commit '990e2f3555bb0adae122d3599938ddcfee46e2d1': avcodec: Suppress deprecation warnings from DTG code scheduled for removal Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avcodec: Suppress deprecation warnings from DTG code scheduled for removalDiego Biurrun2014-08-04
| |
* | Merge commit '60cbd6ad84de0931314030b81df87b69d6196587'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | | | | | | | | | * commit '60cbd6ad84de0931314030b81df87b69d6196587': tiff: support reading gray+alpha at 8 bits Conflicts: libavcodec/tiff.c See: f746f3790168bf898b629942868bda703e7f1045 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * tiff: support reading gray+alpha at 8 bitsCarl Eugen Hoyos2014-08-04
| | | | | | | | Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | Merge commit 'bcc5f69b33e27b5e11aaea8304ee02f8d895cdab'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | | | | | | | * commit 'bcc5f69b33e27b5e11aaea8304ee02f8d895cdab': tiff: support reading gray+alpha at 16 bits Conflicts: libavcodec/tiff.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * tiff: support reading gray+alpha at 16 bitsVittorio Giovara2014-08-04
| |
* | Merge commit 'e64f0bf2d2b1347ec9461f0e82852a62e8c6ffbe'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | * commit 'e64f0bf2d2b1347ec9461f0e82852a62e8c6ffbe': png: support reading gray+alpha at 16 bits Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * png: support reading gray+alpha at 16 bitsVittorio Giovara2014-08-04
| |
| * png: disable broken MMX/SIMD code for bpp <= 2Vittorio Giovara2014-08-04
| | | | | | | | | | The decoder was producing different results when ASM was disabled. Based on a long debug session with Kostya.
* | Merge commit 'e96c3b81cadd0ba84d43b1f3a54980df3785d9a5'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'e96c3b81cadd0ba84d43b1f3a54980df3785d9a5': avutil: rename AV_PIX_FMT_Y400A to AV_PIX_FMT_YA8 Conflicts: libavcodec/libopenjpegdec.c libavcodec/libopenjpegenc.c libavcodec/raw.c libavutil/pixdesc.c libavutil/pixfmt.h libavutil/version.h libswscale/swscale_internal.h libswscale/swscale_unscaled.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avutil: rename AV_PIX_FMT_Y400A to AV_PIX_FMT_YA8Vittorio Giovara2014-08-04
| | | | | | | | | | | | | | The rationale is that you have a packed format in form <greyscale sample> <alpha sample> <greyscale sample> <alpha sample> and shortening greyscale to 'G' might make one thing about Greenscale instead. An alias pixel format and color space name are provided for compatibility.
* | x86: hevc_deblock: remove unnecessary maskingChristophe Gisquet2014-08-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The unpacks/shuffles later on makes it unnecessary. Before: 1508 decicycles in h, 2096759 runs, 393 skips 2512 decicycles in v, 2095422 runs, 1730 skips After: 1477 decicycles in h, 2096745 runs, 407 skips 2484 decicycles in v, 2095297 runs, 1855 skips Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | x86/hevc_mc: use fewer instructions in hevc_put_hevc_{uni, bi}_w[24]_{8, 10, 12}James Almer2014-08-04
| | | | | | | | | | | | Signed-off-by: James Almer <jamrial@gmail.com> Reviewed-by: Christophe Gisquet <christophe.gisquet@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | x86/hevc_mc: remove an unnecessary pxorJames Almer2014-08-04
| | | | | | | | | | | | Signed-off-by: James Almer <jamrial@gmail.com> Reviewed-by: Mickaƫl Raulet <mraulet@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '1ef9e8376466bb1e2c147e47554b94cab9c8b04a'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '1ef9e8376466bb1e2c147e47554b94cab9c8b04a': avcodec: Deprecate dtg_active_format field in favor of avframe side-data Conflicts: doc/APIchanges libavcodec/avcodec.h libavcodec/mpeg12dec.c libavcodec/version.h libavfilter/vf_showinfo.c libavutil/frame.h libavutil/version.h See: 2a3c36e920d958e99fb4edf065a6713c30f2c2a9 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avcodec: Deprecate dtg_active_format field in favor of avframe side-dataKieran Kunhya2014-08-03
| | | | | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | Deprecate AFD field and add AFD as side-dataKieran Kunhya2014-08-04
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'd0393d79bc3d61c9f2ff832c0e273b7774ff0269'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | | | | | | | | | * commit 'd0393d79bc3d61c9f2ff832c0e273b7774ff0269': huffyuv: Check and propagate function return values Conflicts: libavcodec/huffyuvdec.c See: f67a0d115254461649470452058fa3c28c0df294 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * huffyuv: Check and propagate function return valuesDiego Biurrun2014-08-03
| | | | | | | | | | | | | | | | | | | | Bug-Id: CVE-2013-0868 inspired by a patch from Michael Niedermayer <michaelni@gmx.at> Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Diego Biurrun <diego@biurrun.de> CC: libav-stable@libav.org
* | Merge commit '6234058148d6e1ee765913b678a22385a87bffac'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | * commit '6234058148d6e1ee765913b678a22385a87bffac': huffyuv: Return proper error codes Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * huffyuv: Return proper error codesDiego Biurrun2014-08-03
| |
| * huffyuv: Use avpriv_report_missing_feature() where appropriateDiego Biurrun2014-08-03
| |
* | Merge commit 'b7616f5716dce68c749d5dfeab19cf595a11807c'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | | | | | | | * commit 'b7616f5716dce68c749d5dfeab19cf595a11807c': huffyuv: Eliminate some pointless casts Conflicts: libavcodec/huffyuvdec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * huffyuv: Eliminate some pointless castsDiego Biurrun2014-08-03
| |
* | Merge commit 'c065f4a0c652cc569c927c95148111b3aa2962dc'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | | | | | | | * commit 'c065f4a0c652cc569c927c95148111b3aa2962dc': huffyuv: K&R formatting cosmetics Conflicts: libavcodec/huffyuvdec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * huffyuv: K&R formatting cosmeticsDiego Biurrun2014-08-03
| |
* | Merge commit 'f89d76c10355242c39b08f253c1d1524f45ef778'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | | | | | | | * commit 'f89d76c10355242c39b08f253c1d1524f45ef778': mpeg4video: Initialize xvididct for all threads Conflicts: libavcodec/mpeg4videodec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * mpeg4video: Initialize xvididct for all threadsAnton Khirnov2014-08-03
| | | | | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | Merge commit 'ac6b95dbc0b53b3ea461bd5e5e7f7f31d2983733'Michael Niedermayer2014-08-04
|\| | | | | | | | | | | | | * commit 'ac6b95dbc0b53b3ea461bd5e5e7f7f31d2983733': aarch64: add ',' between assembler macro arguments where missing Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * aarch64: add ',' between assembler macro arguments where missingJanne Grunau2014-08-04
| | | | | | | | | | | | | | llvm's integrated assembler does not accept spaces as macro argument delimiter when targeting darwin. Using a explicit delimiter is a good idea in principle since it makes case like 'macro 4 -2' vs 'macro 4 - 2' clear.
* | avcodec/avdct: Add get_pixels()Michael Niedermayer2014-08-03
| | | | | | | | | | Suggested-by: ubitux Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '9f17685dfb70a73823aca16ad246ee3b831d1de8'Michael Niedermayer2014-08-03
|\| | | | | | | | | | | | | | | | | | | | | * commit '9f17685dfb70a73823aca16ad246ee3b831d1de8': avcodec: Deprecate unused defines and options Conflicts: doc/APIchanges libavcodec/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avcodec: Deprecate unused defines and optionsDiego Biurrun2014-08-03
| |
* | Merge commit 'bad81800bb51f43d28d656abf5d45b477e3b3198'Michael Niedermayer2014-08-03
|\| | | | | | | | | | | | | * commit 'bad81800bb51f43d28d656abf5d45b477e3b3198': avcodec: options: Add missing deprecation ifdefs around emu_edge Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avcodec: options: Add missing deprecation ifdefs around emu_edgeDiego Biurrun2014-08-03
| |
* | Merge commit 'c697c590fbf296b1679b80c8f4071e4c8a6c884b'Michael Niedermayer2014-08-03
|\| | | | | | | | | | | | | | | | | | | * commit 'c697c590fbf296b1679b80c8f4071e4c8a6c884b': lcl: Disentangle pointers to input data and decompression buffer Conflicts: libavcodec/lcldec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lcl: Disentangle pointers to input data and decompression bufferDiego Biurrun2014-08-03
| | | | | | | | This is cleaner and avoids a cast plus a related const qualifier warning.
| * tiff: Replace deprecated PIX_FMT names by modern onesDiego Biurrun2014-08-02
| |