From ed7cb6f704b9e55973f8be5536ecf89458e252ff Mon Sep 17 00:00:00 2001 From: Tom Callaway Date: Mon, 31 Mar 2014 11:05:15 -0400 Subject: [PATCH] fix crashes on VP9 encoding on certain Intel cpus (bz1079468) --- Bug-fix-in-ssse3-quantize-function.patch | 32 ++++++++++++++++++++++++ libvpx.spec | 7 +++++- libvpx.ver | 4 +++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 Bug-fix-in-ssse3-quantize-function.patch diff --git a/Bug-fix-in-ssse3-quantize-function.patch b/Bug-fix-in-ssse3-quantize-function.patch new file mode 100644 index 0000000..74138e8 --- /dev/null +++ b/Bug-fix-in-ssse3-quantize-function.patch @@ -0,0 +1,32 @@ +commit 0d43bd77e5f429467fbd280a7b8f7fbc0bfe1809 +Author: Yunqing Wang +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 diff --git a/libvpx.spec b/libvpx.spec index ddb4cac..7090658 100644 --- a/libvpx.spec +++ b/libvpx.spec @@ -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 - 1.3.0-4 +- fix Illegal Instruction abort + * Thu Feb 13 2014 Dan HorĂ¡k - 1.3.0-3 - update library symbol list for 1.3.0 from Debian diff --git a/libvpx.ver b/libvpx.ver index 6f267f3..aa147ab 100644 --- a/libvpx.ver +++ b/libvpx.ver @@ -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;