dca: improve default stereo downmix coefficients.
authorTim Walker <tdskywalker@gmail.com>
Fri, 22 Nov 2013 21:11:47 +0000 (22:11 +0100)
committerAnton Khirnov <anton@khirnov.net>
Thu, 28 Nov 2013 21:02:53 +0000 (22:02 +0100)
Previous coefficients were producing a non-normalized, incorrect Lt/Rt downmix.

The new coefficients produce a standard Lo/Ro downmix with 3dB attenuation.

This should match the typical default coefficients used by DTS encoders.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
libavcodec/dcadata.h

index 156a2c3..e6997bc 100644 (file)
@@ -7552,16 +7552,16 @@ static const float dca_dmixtable[241] = {
 };
 
 static const float dca_default_coeffs[10][5][2] = {
-    { { 0.707946, 0.707946 },                                                                                                 }, // A
+    { { 0.707107, 0.707107 },                                                                                                 }, // A
     { { 1.000000, 0.000000 }, { 0.000000, 1.000000 },                                                                         }, // A + B (dual mono)
     { { 1.000000, 0.000000 }, { 0.000000, 1.000000 },                                                                         }, // L + R (stereo)
     { { 1.000000, 0.000000 }, { 0.000000, 1.000000 },                                                                         }, // (L+R) + (L-R) (sum-difference)
     { { 1.000000, 0.000000 }, { 0.000000, 1.000000 },                                                                         }, // LT + RT (left and right total)
-    { { 0.865964, 0.865964 }, { 1.000000, 0.501187 }, { 0.501187, 1.000000 },                                                 }, // C + L + R
-    { { 1.000000, 0.501187 }, { 0.501187, 1.000000 }, { 0.707946, 0.707946 },                                                 }, // L + R + S
-    { { 0.865964, 0.865964 }, { 1.000000, 0.501187 }, { 0.501187, 1.000000 }, { 0.707946, 0.707946 },                         }, // C + L + R + S
-    { { 1.000000, 0.501187 }, { 0.501187, 1.000000 }, { 1.000000, 0.707946 }, { 0.707946, 1.000000 },                         }, // L + R + SL + SR
-    { { 0.865964, 0.865964 }, { 1.000000, 0.501187 }, { 0.501187, 1.000000 }, { 1.000000, 0.707946 }, { 0.707946, 1.000000 }, }, // C + L + R + SL + SR
+    { { 0.501187, 0.501187 }, { 0.707107, 0.000000 }, { 0.000000, 0.707107 },                                                 }, // C + L + R
+    { { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.501187, 0.501187 },                                                 }, // L + R + S
+    { { 0.501187, 0.501187 }, { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.501187, 0.501187 },                         }, // C + L + R + S
+    { { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.501187, 0.000000 }, { 0.000000, 0.501187 },                         }, // L + R + SL + SR
+    { { 0.501187, 0.501187 }, { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.501187, 0.000000 }, { 0.000000, 0.501187 }, }, // C + L + R + SL + SR
 };
 
 /* downmix coeffs