]> git.sesse.net Git - vlc/commitdiff
Simple: use ITU-R BS.775-2 matrices for 5.x downmixing
authorJean-Baptiste Kempf <jb@videolan.org>
Fri, 12 Apr 2013 15:27:11 +0000 (17:27 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Fri, 12 Apr 2013 15:30:30 +0000 (17:30 +0200)
To 4.0, 2.0 and 1.0

modules/audio_filter/channel_mixer/simple.c

index e78505b8337504d0161f0a9a0704404d15509f24..bc1157f2e1ea56b2fabf7c0e0f68c3dbf52b83b6 100644 (file)
@@ -79,8 +79,8 @@ static void DoWork_5_x_to_2_0( filter_t * p_filter,  block_t * p_in_buf, block_t
     const float *p_src = (const float *)p_in_buf->p_buffer;
     for( int i = p_in_buf->i_nb_samples; i--; )
     {
-        *p_dest++ = p_src[4] + 0.5 * p_src[0] + 0.33 * p_src[2];
-        *p_dest++ = p_src[4] + 0.5 * p_src[1] + 0.33 * p_src[3];
+        *p_dest++ = p_src[0] + 0.7071 * (p_src[4] + p_src[2]);
+        *p_dest++ = p_src[1] + 0.7071 * (p_src[4] + p_src[3]);
 
         p_src += 5;
 
@@ -132,7 +132,7 @@ static void DoWork_5_x_to_1_0( filter_t * p_filter,  block_t * p_in_buf, block_t
     const float *p_src = (const float *)p_in_buf->p_buffer;
     for( int i = p_in_buf->i_nb_samples; i--; )
     {
-        *p_dest++ = p_src[4] + p_src[0] / 4 + p_src[1] / 4 + p_src[2] / 6 + p_src[3] / 6;
+        *p_dest++ = 0.7071 * (p_src[0] + p_src[1]) + p_src[4] + 0.5f * (p_src[2] + p_src[3]);
 
         p_src += 5;
 
@@ -197,8 +197,8 @@ static void DoWork_5_x_to_4_0( filter_t * p_filter,  block_t * p_in_buf, block_t
     const float *p_src = (const float *)p_in_buf->p_buffer;
     for( int i = p_in_buf->i_nb_samples; i--; )
     {
-        *p_dest++ = p_src[4] + 0.5 * p_src[0];
-        *p_dest++ = p_src[4] + 0.5 * p_src[1];
+        *p_dest++ = p_src[0] + p_src[4] * 0.7071;
+        *p_dest++ = p_src[1] + p_src[4] * 0.7071;
         *p_dest++ = p_src[2];
         *p_dest++ = p_src[3];