[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