FFmpeg git repo
Go to file
yang 6a2bad2c4f dsputil_mmx: fix incorrect assembly code
In file libavcodec/x86/dsputil_mmx.c, function ff_put_pixels_clamped_mmx(), there are two assembly code blocks. In the first block (in the unrolled loop), the instructions "movq 8%3, %%mm1 \n\t" etc have problem.
For above instruction, it is clear what the programmer wants: a load from p + 8. But this assembly code doesn’t guarantee that. It only works if the compiler puts p in a register to produce an instruction like this: “movq 8(%edi), %mm1”. During compiler optimization, it is possible that the compiler will be able to constant propagate into p. Suppose p = &x[10000]. Then operand 3 can become 10000(%edi), where %edi holds &x. And the instruction becomes “movq 810000(%edx)”. That is, it will stride by 810000 instead of 8.
This will cause the segmentation fault.
This error was fixed in the second block of the assembly code, but not in the unrolled loop.

How to reproduce:
This error is exposed when we build the ffmpeg using Intel C++ Compiler, IPO+PGO optimization. The ffmpeg was crashed when decoding a mjpeg video.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-07-24 00:55:05 +02:00
compat Merge remote-tracking branch 'qatar/master' 2012-07-12 23:57:00 +02:00
doc Merge remote-tracking branch 'qatar/master' 2012-07-23 21:25:09 +02:00
libavcodec dsputil_mmx: fix incorrect assembly code 2012-07-24 00:55:05 +02:00
libavdevice lavd/caca: create display *after* checking dither options 2012-07-22 10:32:21 +02:00
libavfilter vf_deshake: set cur_buf to NULL. 2012-07-23 22:44:25 +02:00
libavformat rtmpproto: fix compilation without optimizations 2012-07-24 00:11:14 +02:00
libavresample Merge remote-tracking branch 'qatar/master' 2012-07-09 22:40:12 +02:00
libavutil Merge remote-tracking branch 'qatar/master' 2012-07-23 21:25:09 +02:00
libpostproc pp: check that the argument is not NULL as this is not supported 2012-07-07 19:14:21 +02:00
libswresample swr: resampling: add filter type and Kaiser window beta to AVOptions 2012-07-23 19:23:39 +02:00
libswscale Merge remote-tracking branch 'qatar/master' 2012-07-23 21:25:09 +02:00
mt-work
presets presets: specify the codecs. 2012-05-04 18:40:36 +02:00
tests fate: enable fate-vc1_sa10143 2012-07-23 22:12:12 +02:00
tools tools/bisect: rename to tools/bisect-create 2012-07-07 14:51:51 +02:00
.gitignore tools/bisect: rename temporary file and add it to git ignore 2012-07-07 13:15:01 +02:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog Merge remote-tracking branch 'qatar/master' 2012-07-23 21:25:09 +02:00
Doxyfile
INSTALL
LICENSE
MAINTAINERS FireWire DV/HDV input device using libiec61883 2012-07-05 13:02:49 +02:00
Makefile build: Drop gcc-specific warning flag from header compilation rule 2012-07-22 12:36:30 +02:00
README README: be a tiny bit more verbose 2012-04-06 10:23:26 +02:00
RELEASE RELEASE: update, seem this has been forgotten 2012-07-01 21:21:07 +02:00
arch.mak Optimization of AMR NB and WB decoders for MIPS 2012-06-11 21:12:39 +02:00
cmdutils.c cmdutils/alloc_buffer: fix typo 2012-07-20 16:42:29 +02:00
cmdutils.h Merge remote-tracking branch 'qatar/master' 2012-07-04 00:32:31 +02:00
cmdutils_common_opts.h
common.mak Merge remote-tracking branch 'qatar/master' 2012-07-22 23:56:21 +02:00
configure configure: Add a dependency on https for rtmpts 2012-07-24 00:06:07 +02:00
ffmpeg.c ffmpeg: select input file based on output time. 2012-07-23 10:59:41 +02:00
ffplay.c ffplay: fix warning that i just mistakenly introduced 2012-07-20 03:47:11 +02:00
ffprobe.c Merge remote-tracking branch 'qatar/master' 2012-07-19 22:01:31 +02:00
ffserver.c Merge remote-tracking branch 'qatar/master' 2012-06-20 20:47:46 +02:00
library.mak
version.sh

README

FFmpeg README
-------------

1) Documentation
----------------

* Read the documentation in the doc/ directory in git.
  You can also view it online at http://ffmpeg.org/documentation.html

2) Licensing
------------

* See the LICENSE file.

3) Build and Install
--------------------

* See the INSTALL file.