fix crashes on VP9 encoding on certain Intel cpus (bz1079468)

This commit is contained in:
Tom Callaway 2014-03-31 11:05:15 -04:00
parent a0a00eef6e
commit ed7cb6f704
3 changed files with 42 additions and 1 deletions

View File

@ -0,0 +1,32 @@
commit 0d43bd77e5f429467fbd280a7b8f7fbc0bfe1809
Author: Yunqing Wang <yunqingwang@google.com>
Date: Fri Feb 7 14:27:07 2014 -0800
Bug fix in ssse3 quantize function
A bug was reported in Issue 702: "SIGILL (Illegal instruction) when
transcoding with vp9 - using FFmpeg". It was reproduced and fixed.
Change-Id: Ie32c149a89af02856084aeaf289e848a905c7700
diff --git a/vp9/encoder/x86/vp9_quantize_ssse3.asm b/vp9/encoder/x86/vp9_quantize_ssse3.asm
index db30660..48ccef8 100644
--- a/vp9/encoder/x86/vp9_quantize_ssse3.asm
+++ b/vp9/encoder/x86/vp9_quantize_ssse3.asm
@@ -188,7 +188,8 @@ cglobal quantize_%1, 0, %2, 15, coeff, ncoeff, skip, zbin, round, quant, \
pmaxsw m8, m7
pshuflw m7, m8, 0x1
pmaxsw m8, m7
- pextrw [r2], m8, 0
+ pextrw r6, m8, 0
+ mov [r2], r6
RET
; skip-block, i.e. just write all zeroes
@@ -214,5 +215,5 @@ cglobal quantize_%1, 0, %2, 15, coeff, ncoeff, skip, zbin, round, quant, \
%endmacro
INIT_XMM ssse3
-QUANTIZE_FN b, 6
+QUANTIZE_FN b, 7
QUANTIZE_FN b_32x32, 7

View File

@ -6,12 +6,13 @@ Name: libvpx
Summary: VP8 Video Codec SDK
Version: %{majorver}.%{minorver}.%{tinyver}
%global soversion %{version}
Release: 3%{?dist}
Release: 4%{?dist}
License: BSD
Group: System Environment/Libraries
Source0: http://webm.googlecode.com/files/%{name}-v%{version}.tar.bz2
# Thanks to debian.
Source2: libvpx.ver
Patch0: Bug-fix-in-ssse3-quantize-function.patch
URL: http://www.webmproject.org/tools/vp8-sdk/
%ifarch %{ix86} x86_64
BuildRequires: yasm
@ -43,6 +44,7 @@ and decoder.
%prep
%setup -q -n %{name}-v%{version}
%patch0 -p1 -b .patch0
%build
%ifarch %{ix86}
@ -169,6 +171,9 @@ popd
%{_bindir}/*
%changelog
* Thu Mar 20 2014 Wim Taymans <wtaymans@redhat.com> - 1.3.0-4
- fix Illegal Instruction abort
* Thu Feb 13 2014 Dan Horák <dan[at]danny.cz> - 1.3.0-3
- update library symbol list for 1.3.0 from Debian

View File

@ -23,6 +23,7 @@ vpx_codec_peek_stream_info;
vpx_codec_register_put_frame_cb;
vpx_codec_register_put_slice_cb;
vpx_codec_set_cx_data_buf;
vpx_codec_set_frame_buffer_functions;
vpx_codec_set_mem_map;
vpx_codec_version;
vpx_codec_version_extra_str;
@ -64,7 +65,10 @@ vpx_svc_encode;
vpx_svc_get_buffer;
vpx_svc_get_encode_frame_count;
vpx_svc_get_frame_size;
vpx_svc_get_layer_resolution;
vpx_svc_get_message;
vpx_svc_get_rc_stats_buffer;
vpx_svc_get_rc_stats_buffer_size;
vpx_svc_init;
vpx_svc_is_keyframe;
vpx_svc_release;