[FFmpeg-cvslog] swr: add lfe_mix_level

Justin Ruggles git at videolan.org
Wed May 2 01:18:42 CEST 2012


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Wed May  2 00:25:57 2012 +0200| [6d5bf67f0475a54282b755ae21add252efc640b1] | committer: Michael Niedermayer

swr: add lfe_mix_level

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6d5bf67f0475a54282b755ae21add252efc640b1
---

 libswresample/rematrix.c            |   11 +++++++++++
 libswresample/swresample.c          |    1 +
 libswresample/swresample_internal.h |    1 +
 3 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c
index 7728445..1eeb717 100644
--- a/libswresample/rematrix.c
+++ b/libswresample/rematrix.c
@@ -216,6 +216,17 @@ static int auto_matrix(SwrContext *s)
         }else
             av_assert0(0);
     }
+    /* mix LFE into front left/right or center */
+    if (unaccounted & AV_CH_LOW_FREQUENCY) {
+        if (s->out_ch_layout & AV_CH_FRONT_CENTER) {
+            matrix[FRONT_CENTER][LOW_FREQUENCY] += s->lfe_mix_level;
+        } else if (s->out_ch_layout & AV_CH_FRONT_LEFT) {
+            matrix[FRONT_LEFT ][LOW_FREQUENCY] += s->lfe_mix_level * M_SQRT1_2;
+            matrix[FRONT_RIGHT][LOW_FREQUENCY] += s->lfe_mix_level * M_SQRT1_2;
+        } else
+            av_assert0(0);
+    }
+
     for(out_i=i=0; i<64; i++){
         double sum=0;
         int in_i=0;
diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index 0cdf29d..ba3d7e3 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -62,6 +62,7 @@ static const AVOption options[]={
 {"center_mix_level"     ,    "Center Mix Level"         , OFFSET(clev           ), AV_OPT_TYPE_FLOAT, {.dbl=C_30DB                }, -32    , 32        , PARAM},
 {"slev"                 , "Sourround Mix Level"         , OFFSET(slev           ), AV_OPT_TYPE_FLOAT, {.dbl=C_30DB                }, -32    , 32        , PARAM},
 {"surround_mix_level"   , "Sourround Mix Level"         , OFFSET(slev           ), AV_OPT_TYPE_FLOAT, {.dbl=C_30DB                }, -32    , 32        , PARAM},
+{"lfe_mix_level"        , "LFE Mix Level"               , OFFSET(lfe_mix_level  ), AV_OPT_TYPE_FLOAT, {.dbl=0                     }, -32    , 32        , PARAM},
 {"rmvol"                , "Rematrix Volume"             , OFFSET(rematrix_volume), AV_OPT_TYPE_FLOAT, {.dbl=1.0                   }, -1000  , 1000      , PARAM},
 {"rematrix_volume"      , "Rematrix Volume"             , OFFSET(rematrix_volume), AV_OPT_TYPE_FLOAT, {.dbl=1.0                   }, -1000  , 1000      , PARAM},
 {"flags"                , NULL                          , OFFSET(flags          ), AV_OPT_TYPE_FLAGS, {.dbl=0                     }, 0      , UINT_MAX  , PARAM, "flags"},
diff --git a/libswresample/swresample_internal.h b/libswresample/swresample_internal.h
index 550d7f0..15687f7 100644
--- a/libswresample/swresample_internal.h
+++ b/libswresample/swresample_internal.h
@@ -50,6 +50,7 @@ struct SwrContext {
     int flags;                                      ///< miscellaneous flags such as SWR_FLAG_RESAMPLE
     float slev;                                     ///< surround mixing level
     float clev;                                     ///< center mixing level
+    float lfe_mix_level;                            ///< LFE mixing level
     float rematrix_volume;                          ///< rematrixing volume coefficient
     const int *channel_map;                         ///< channel index (or -1 if muted channel) map
     int used_ch_count;                              ///< number of used input channels (mapped channel count if channel_map, otherwise in.ch_count)



More information about the ffmpeg-cvslog mailing list