summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodeo <[email protected]>2012-08-26 14:35:54 +0000
committerRodeo <[email protected]>2012-08-26 14:35:54 +0000
commit80987fa9a86baaddf5627bc4138070fb39b162ac (patch)
treee681f2a7b3a20976aad32555cae9796b703c8aca
parent2a6ae070b419d320f1c4e1b404299c938f90c501 (diff)
Use a more direct workaround for the DTS-ES XCh decoding issue.
The workaround committed in revision 4896 works for now, but if/when we add 6.1 encoding, we'll want to decode that discrete center surround channel. We could special-case it, but the issue would still be present under 64-bit Windows. Instead, disable the buggy assembly optimizations until they are fixed. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4918 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r--contrib/ffmpeg/A07-fmac-scalar-asm.patch20
-rw-r--r--libhb/decavcodec.c12
2 files changed, 20 insertions, 12 deletions
diff --git a/contrib/ffmpeg/A07-fmac-scalar-asm.patch b/contrib/ffmpeg/A07-fmac-scalar-asm.patch
new file mode 100644
index 000000000..2ccaee8a2
--- /dev/null
+++ b/contrib/ffmpeg/A07-fmac-scalar-asm.patch
@@ -0,0 +1,20 @@
+diff --git a/libavutil/x86/float_dsp_init.c b/libavutil/x86/float_dsp_init.c
+index d259a36..3729d91 100644
+--- a/libavutil/x86/float_dsp_init.c
++++ b/libavutil/x86/float_dsp_init.c
+@@ -38,11 +38,13 @@ void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp)
+
+ if (mm_flags & AV_CPU_FLAG_SSE && HAVE_SSE) {
+ fdsp->vector_fmul = ff_vector_fmul_sse;
+- fdsp->vector_fmac_scalar = ff_vector_fmac_scalar_sse;
++ // buggy under 64-bit Windows: http://bugzilla.libav.org/show_bug.cgi?id=336
++ // fdsp->vector_fmac_scalar = ff_vector_fmac_scalar_sse;
+ }
+ if (mm_flags & AV_CPU_FLAG_AVX && HAVE_AVX) {
+ fdsp->vector_fmul = ff_vector_fmul_avx;
+- fdsp->vector_fmac_scalar = ff_vector_fmac_scalar_avx;
++ // buggy under 64-bit Windows: http://bugzilla.libav.org/show_bug.cgi?id=336
++ // fdsp->vector_fmac_scalar = ff_vector_fmac_scalar_avx;
+ }
+ #endif
+ }
diff --git a/libhb/decavcodec.c b/libhb/decavcodec.c
index 11a04a8b4..d0a64a2b0 100644
--- a/libhb/decavcodec.c
+++ b/libhb/decavcodec.c
@@ -221,18 +221,6 @@ static int decavcodecaInit( hb_work_object_t * w, hb_job_t * job )
hb_log( "decavcodecaInit: avcodec_open failed" );
return 1;
}
- /* Libav's ff_vector_fmac_scalar_*() asm functions are buggy under Win64
- * we can't let it decode the DTS-ES XCh extension until this is fixed
- *
- * Note: the DTS decoder doesn't support request_channels changing
- * mid-stream, so we must do this here */
- if ((w->codec_param == CODEC_ID_DTS) &&
- (w->audio->config.in.channel_layout & ~AV_CH_LOW_FREQUENCY) == AV_CH_LAYOUT_6POINT0)
- {
- hb_deep_log(2, "decavcodecaInit: disabling DTS-ES XCh extension processing");
- pv->context->request_channels =
- 5 + !!(w->audio->config.in.channel_layout & AV_CH_LOW_FREQUENCY);
- }
return 0;
}