[FFmpeg-devel] [PATCH] fix crash on AMD K6-3+
Mikulas Patocka
mikulas at artax.karlin.mff.cuni.cz
Sun Nov 3 18:00:17 CET 2013
Hi
There are instructions pavgb and pavgusb. Both instructions do the same
operation but they have different enconding. Pavgb exists in SSE (or
MMXEXT) instruction set and pavgusb exists in 3D-NOW instruction set.
livavcodec uses the macro PAVGB to select the proper instruction. However,
the function avg_pixels8_xy2 doesn't use this macro, it uses pavgb
directly.
As a consequence, the function avg_pixels8_xy2 crashes on AMD K6-2 and
K6-3 processors, because they have pavgusb, but not pavgb.
This bug seems to be introduced by commit
71155d7b4157fee44c0d3d0fc1b660ebfb9ccf46, "dsputil: x86: Convert mpeg4
qpel and dsputil avg to yasm"
Signed-off-by: Mikulas Patocka <mikulas at artax.karlin.mff.cuni.cz
---
ffmpeg/libavcodec/x86/hpeldsp.asm | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
Index: mplayer/ffmpeg/libavcodec/x86/hpeldsp.asm
===================================================================
--- mplayer.orig/ffmpeg/libavcodec/x86/hpeldsp.asm 2013-11-03 02:26:15.000000000 +0100
+++ mplayer/ffmpeg/libavcodec/x86/hpeldsp.asm 2013-11-03 17:14:54.000000000 +0100
@@ -423,30 +423,30 @@ cglobal avg_pixels8_xy2, 4,5
mova m6, [pb_1]
lea r4, [r2*2]
mova m0, [r1]
- pavgb m0, [r1+1]
+ PAVGB m0, [r1+1]
.loop:
mova m2, [r1+r4]
mova m1, [r1+r2]
psubusb m2, m6
- pavgb m1, [r1+r2+1]
- pavgb m2, [r1+r4+1]
+ PAVGB m1, [r1+r2+1]
+ PAVGB m2, [r1+r4+1]
add r1, r4
- pavgb m0, m1
- pavgb m1, m2
- pavgb m0, [r0]
- pavgb m1, [r0+r2]
+ PAVGB m0, m1
+ PAVGB m1, m2
+ PAVGB m0, [r0]
+ PAVGB m1, [r0+r2]
mova [r0], m0
mova [r0+r2], m1
mova m1, [r1+r2]
mova m0, [r1+r4]
- pavgb m1, [r1+r2+1]
- pavgb m0, [r1+r4+1]
+ PAVGB m1, [r1+r2+1]
+ PAVGB m0, [r1+r4+1]
add r0, r4
add r1, r4
- pavgb m2, m1
- pavgb m1, m0
- pavgb m2, [r0]
- pavgb m1, [r0+r2]
+ PAVGB m2, m1
+ PAVGB m1, m0
+ PAVGB m2, [r0]
+ PAVGB m1, [r0+r2]
mova [r0], m2
mova [r0+r2], m1
add r0, r4
More information about the ffmpeg-devel
mailing list