mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
swresample: Make rematrix maxvalue user settable
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
5169111145
commit
e2b718464e
@ -120,6 +120,7 @@ av_cold static int auto_matrix(SwrContext *s)
|
|||||||
double maxcoef=0;
|
double maxcoef=0;
|
||||||
char buf[128];
|
char buf[128];
|
||||||
const int matrix_encoding = s->matrix_encoding;
|
const int matrix_encoding = s->matrix_encoding;
|
||||||
|
float maxval;
|
||||||
|
|
||||||
in_ch_layout = clean_layout(s, s->in_ch_layout);
|
in_ch_layout = clean_layout(s, s->in_ch_layout);
|
||||||
if(!sane_layout(in_ch_layout)){
|
if(!sane_layout(in_ch_layout)){
|
||||||
@ -304,8 +305,16 @@ av_cold static int auto_matrix(SwrContext *s)
|
|||||||
if(s->rematrix_volume < 0)
|
if(s->rematrix_volume < 0)
|
||||||
maxcoef = -s->rematrix_volume;
|
maxcoef = -s->rematrix_volume;
|
||||||
|
|
||||||
if(( av_get_packed_sample_fmt(s->out_sample_fmt) < AV_SAMPLE_FMT_FLT
|
if (s->rematrix_maxval > 0) {
|
||||||
|| av_get_packed_sample_fmt(s->int_sample_fmt) < AV_SAMPLE_FMT_FLT) && maxcoef > 1.0){
|
maxval = s->rematrix_maxval;
|
||||||
|
} else if ( av_get_packed_sample_fmt(s->out_sample_fmt) < AV_SAMPLE_FMT_FLT
|
||||||
|
|| av_get_packed_sample_fmt(s->int_sample_fmt) < AV_SAMPLE_FMT_FLT) {
|
||||||
|
maxval = 1.0;
|
||||||
|
} else
|
||||||
|
maxval = INT_MAX;
|
||||||
|
|
||||||
|
if(maxcoef > maxval){
|
||||||
|
maxcoef /= maxval;
|
||||||
for(i=0; i<SWR_CH_MAX; i++)
|
for(i=0; i<SWR_CH_MAX; i++)
|
||||||
for(j=0; j<SWR_CH_MAX; j++){
|
for(j=0; j<SWR_CH_MAX; j++){
|
||||||
s->matrix[i][j] /= maxcoef;
|
s->matrix[i][j] /= maxcoef;
|
||||||
|
@ -68,6 +68,7 @@ static const AVOption options[]={
|
|||||||
{"lfe_mix_level" , "set LFE mix level" , OFFSET(lfe_mix_level ), AV_OPT_TYPE_FLOAT, {.dbl=0 }, -32 , 32 , PARAM},
|
{"lfe_mix_level" , "set LFE mix level" , OFFSET(lfe_mix_level ), AV_OPT_TYPE_FLOAT, {.dbl=0 }, -32 , 32 , PARAM},
|
||||||
{"rmvol" , "set rematrix volume" , OFFSET(rematrix_volume), AV_OPT_TYPE_FLOAT, {.dbl=1.0 }, -1000 , 1000 , PARAM},
|
{"rmvol" , "set rematrix volume" , OFFSET(rematrix_volume), AV_OPT_TYPE_FLOAT, {.dbl=1.0 }, -1000 , 1000 , PARAM},
|
||||||
{"rematrix_volume" , "set rematrix volume" , OFFSET(rematrix_volume), AV_OPT_TYPE_FLOAT, {.dbl=1.0 }, -1000 , 1000 , PARAM},
|
{"rematrix_volume" , "set rematrix volume" , OFFSET(rematrix_volume), AV_OPT_TYPE_FLOAT, {.dbl=1.0 }, -1000 , 1000 , PARAM},
|
||||||
|
{"rematrix_maxval" , "set rematrix maxval" , OFFSET(rematrix_maxval), AV_OPT_TYPE_FLOAT, {.dbl=0.0 }, 0 , 1000 , PARAM},
|
||||||
|
|
||||||
{"flags" , "set flags" , OFFSET(flags ), AV_OPT_TYPE_FLAGS, {.i64=0 }, 0 , UINT_MAX , PARAM, "flags"},
|
{"flags" , "set flags" , OFFSET(flags ), AV_OPT_TYPE_FLAGS, {.i64=0 }, 0 , UINT_MAX , PARAM, "flags"},
|
||||||
{"swr_flags" , "set flags" , OFFSET(flags ), AV_OPT_TYPE_FLAGS, {.i64=0 }, 0 , UINT_MAX , PARAM, "flags"},
|
{"swr_flags" , "set flags" , OFFSET(flags ), AV_OPT_TYPE_FLAGS, {.i64=0 }, 0 , UINT_MAX , PARAM, "flags"},
|
||||||
|
@ -82,6 +82,7 @@ struct SwrContext {
|
|||||||
float clev; ///< center mixing level
|
float clev; ///< center mixing level
|
||||||
float lfe_mix_level; ///< LFE mixing level
|
float lfe_mix_level; ///< LFE mixing level
|
||||||
float rematrix_volume; ///< rematrixing volume coefficient
|
float rematrix_volume; ///< rematrixing volume coefficient
|
||||||
|
float rematrix_maxval; ///< maximum value for rematrixing output
|
||||||
enum AVMatrixEncoding matrix_encoding; /**< matrixed stereo encoding */
|
enum AVMatrixEncoding matrix_encoding; /**< matrixed stereo encoding */
|
||||||
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)
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
#define LIBSWRESAMPLE_VERSION_MAJOR 0
|
#define LIBSWRESAMPLE_VERSION_MAJOR 0
|
||||||
#define LIBSWRESAMPLE_VERSION_MINOR 17
|
#define LIBSWRESAMPLE_VERSION_MINOR 17
|
||||||
#define LIBSWRESAMPLE_VERSION_MICRO 102
|
#define LIBSWRESAMPLE_VERSION_MICRO 103
|
||||||
|
|
||||||
#define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \
|
#define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \
|
||||||
LIBSWRESAMPLE_VERSION_MINOR, \
|
LIBSWRESAMPLE_VERSION_MINOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user