mirror of https://git.ffmpeg.org/ffmpeg.git
swr: add lfe_mix_level
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
9b42653b22
commit
6d5bf67f04
|
@ -216,6 +216,17 @@ static int auto_matrix(SwrContext *s)
|
||||||
}else
|
}else
|
||||||
av_assert0(0);
|
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++){
|
for(out_i=i=0; i<64; i++){
|
||||||
double sum=0;
|
double sum=0;
|
||||||
int in_i=0;
|
int in_i=0;
|
||||||
|
|
|
@ -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},
|
{"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},
|
{"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},
|
{"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},
|
{"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},
|
{"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"},
|
{"flags" , NULL , OFFSET(flags ), AV_OPT_TYPE_FLAGS, {.dbl=0 }, 0 , UINT_MAX , PARAM, "flags"},
|
||||||
|
|
|
@ -50,6 +50,7 @@ struct SwrContext {
|
||||||
int flags; ///< miscellaneous flags such as SWR_FLAG_RESAMPLE
|
int flags; ///< miscellaneous flags such as SWR_FLAG_RESAMPLE
|
||||||
float slev; ///< surround mixing level
|
float slev; ///< surround mixing level
|
||||||
float clev; ///< center mixing level
|
float clev; ///< center mixing level
|
||||||
|
float lfe_mix_level; ///< LFE mixing level
|
||||||
float rematrix_volume; ///< rematrixing volume coefficient
|
float rematrix_volume; ///< rematrixing volume coefficient
|
||||||
const int *channel_map; ///< channel index (or -1 if muted channel) map
|
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)
|
int used_ch_count; ///< number of used input channels (mapped channel count if channel_map, otherwise in.ch_count)
|
||||||
|
|
Loading…
Reference in New Issue