@ -41,62 +41,69 @@
# define PARAM AV_OPT_FLAG_AUDIO_PARAM
static const AVOption options [ ] = {
{ " ich " , " Input Channel Count " , OFFSET ( in . ch_count ) , AV_OPT_TYPE_INT , { . i64 = 2 } , 0 , SWR_CH_MAX , PARAM } ,
{ " in_channel_count " , " Input Channel Count " , OFFSET ( in . ch_count ) , AV_OPT_TYPE_INT , { . i64 = 2 } , 0 , SWR_CH_MAX , PARAM } ,
{ " och " , " Output Channel Count " , OFFSET ( out . ch_count ) , AV_OPT_TYPE_INT , { . i64 = 2 } , 0 , SWR_CH_MAX , PARAM } ,
{ " out_channel_count " , " Output Channel Count " , OFFSET ( out . ch_count ) , AV_OPT_TYPE_INT , { . i64 = 2 } , 0 , SWR_CH_MAX , PARAM } ,
{ " uch " , " Used Channel Count " , OFFSET ( used_ch_count ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , SWR_CH_MAX , PARAM } ,
{ " used_channel_count " , " Used Channel Count " , OFFSET ( used_ch_count ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , SWR_CH_MAX , PARAM } ,
{ " isr " , " Input Sample Rate " , OFFSET ( in_sample_rate ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , PARAM } ,
{ " in_sample_rate " , " Input Sample Rate " , OFFSET ( in_sample_rate ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , PARAM } ,
{ " osr " , " Output Sample Rate " , OFFSET ( out_sample_rate ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , PARAM } ,
{ " out_sample_rate " , " Output Sample Rate " , OFFSET ( out_sample_rate ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , PARAM } ,
{ " isf " , " Input Sample Format " , OFFSET ( in_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_NB - 1 + 256 , PARAM } ,
{ " in_sample_fmt " , " Input Sample Format " , OFFSET ( in_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_NB - 1 + 256 , PARAM } ,
{ " osf " , " Output Sample Format " , OFFSET ( out_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_NB - 1 + 256 , PARAM } ,
{ " out_sample_fmt " , " Output Sample Format " , OFFSET ( out_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_NB - 1 + 256 , PARAM } ,
{ " tsf " , " Internal Sample Format " , OFFSET ( int_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_FLTP , PARAM } ,
{ " internal_sample_fmt " , " Internal Sample Format " , OFFSET ( int_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_FLTP , PARAM } ,
{ " icl " , " Input Channel Layout " , OFFSET ( in_ch_layout ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , PARAM , " channel_layout " } ,
{ " in_channel_layout " , " Input Channel Layout " , OFFSET ( in_ch_layout ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , PARAM , " channel_layout " } ,
{ " ocl " , " Output Channel Layout " , OFFSET ( out_ch_layout ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , PARAM , " channel_layout " } ,
{ " out_channel_layout " , " Output Channel Layout " , OFFSET ( out_ch_layout ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , PARAM , " channel_layout " } ,
{ " clev " , " 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 } ,
{ " 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 , { . i64 = 0 } , 0 , UINT_MAX , PARAM , " flags " } ,
{ " swr_flags " , NULL , OFFSET ( flags ) , AV_OPT_TYPE_FLAGS , { . i64 = 0 } , 0 , UINT_MAX , PARAM , " flags " } ,
{ " res " , " Force Resampling " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_FLAG_RESAMPLE } , INT_MIN , INT_MAX , PARAM , " flags " } ,
{ " dither_scale " , " Dither Scale " , OFFSET ( dither_scale ) , AV_OPT_TYPE_FLOAT , { . dbl = 1 } , 0 , INT_MAX , PARAM } ,
{ " dither_method " , " Dither Method " , OFFSET ( dither_method ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , SWR_DITHER_NB - 1 , PARAM , " dither_method " } ,
{ " rectangular " , " Rectangular Dither " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_DITHER_RECTANGULAR } , INT_MIN , INT_MAX , PARAM , " dither_method " } ,
{ " triangular " , " Triangular Dither " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_DITHER_TRIANGULAR } , INT_MIN , INT_MAX , PARAM , " dither_method " } ,
{ " triangular_hp " , " Triangular Dither With High Pass " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_DITHER_TRIANGULAR_HIGHPASS } , INT_MIN , INT_MAX , PARAM , " dither_method " } ,
{ " filter_size " , " Resampling Filter Size " , OFFSET ( filter_size ) , AV_OPT_TYPE_INT , { . i64 = 16 } , 0 , INT_MAX , PARAM } ,
{ " phase_shift " , " Resampling Phase Shift " , OFFSET ( phase_shift ) , AV_OPT_TYPE_INT , { . i64 = 10 } , 0 , 30 , PARAM } ,
{ " linear_interp " , " Use Linear Interpolation " , OFFSET ( linear_interp ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , 1 , PARAM } ,
{ " cutoff " , " Cutoff Frequency Ratio " , OFFSET ( cutoff ) , AV_OPT_TYPE_DOUBLE , { . dbl = 0.8 } , 0 , 1 , PARAM } ,
{ " min_comp " , " Minimum difference between timestamps and audio data (in seconds) below which no timestamp compensation of either kind is applied "
{ " ich " , " set input channel count " , OFFSET ( in . ch_count ) , AV_OPT_TYPE_INT , { . i64 = 2 } , 0 , SWR_CH_MAX , PARAM } ,
{ " in_channel_count " , " set input channel count " , OFFSET ( in . ch_count ) , AV_OPT_TYPE_INT , { . i64 = 2 } , 0 , SWR_CH_MAX , PARAM } ,
{ " och " , " set output channel count " , OFFSET ( out . ch_count ) , AV_OPT_TYPE_INT , { . i64 = 2 } , 0 , SWR_CH_MAX , PARAM } ,
{ " out_channel_count " , " set output channel count " , OFFSET ( out . ch_count ) , AV_OPT_TYPE_INT , { . i64 = 2 } , 0 , SWR_CH_MAX , PARAM } ,
{ " uch " , " set used channel count " , OFFSET ( used_ch_count ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , SWR_CH_MAX , PARAM } ,
{ " used_channel_count " , " set used channel count " , OFFSET ( used_ch_count ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , SWR_CH_MAX , PARAM } ,
{ " isr " , " set input sample rate " , OFFSET ( in_sample_rate ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , PARAM } ,
{ " in_sample_rate " , " set input sample rate " , OFFSET ( in_sample_rate ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , PARAM } ,
{ " osr " , " set output sample rate " , OFFSET ( out_sample_rate ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , PARAM } ,
{ " out_sample_rate " , " set output sample rate " , OFFSET ( out_sample_rate ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , PARAM } ,
{ " isf " , " set input sample format " , OFFSET ( in_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_NB - 1 + 256 , PARAM } ,
{ " in_sample_fmt " , " set input sample format " , OFFSET ( in_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_NB - 1 + 256 , PARAM } ,
{ " osf " , " set output sample format " , OFFSET ( out_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_NB - 1 + 256 , PARAM } ,
{ " out_sample_fmt " , " set output sample format " , OFFSET ( out_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_NB - 1 + 256 , PARAM } ,
{ " tsf " , " set internal sample format " , OFFSET ( int_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_FLTP , PARAM } ,
{ " internal_sample_fmt " , " set internal sample format " , OFFSET ( int_sample_fmt ) , AV_OPT_TYPE_INT , { . i64 = AV_SAMPLE_FMT_NONE } , - 1 , AV_SAMPLE_FMT_FLTP , PARAM } ,
{ " icl " , " set input channel layout " , OFFSET ( in_ch_layout ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , PARAM , " channel_layout " } ,
{ " in_channel_layout " , " set input channel layout " , OFFSET ( in_ch_layout ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , PARAM , " channel_layout " } ,
{ " ocl " , " set output channel layout " , OFFSET ( out_ch_layout ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , PARAM , " channel_layout " } ,
{ " out_channel_layout " , " set output channel layout " , OFFSET ( out_ch_layout ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , PARAM , " channel_layout " } ,
{ " clev " , " set center mix level " , OFFSET ( clev ) , AV_OPT_TYPE_FLOAT , { . dbl = C_30DB } , - 32 , 32 , PARAM } ,
{ " center_mix_level " , " set center mix level " , OFFSET ( clev ) , AV_OPT_TYPE_FLOAT , { . dbl = C_30DB } , - 32 , 32 , PARAM } ,
{ " slev " , " set surround mix level " , OFFSET ( slev ) , AV_OPT_TYPE_FLOAT , { . dbl = C_30DB } , - 32 , 32 , PARAM } ,
{ " surround_mix_level " , " set surround mix Level " , OFFSET ( slev ) , AV_OPT_TYPE_FLOAT , { . dbl = C_30DB } , - 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 } ,
{ " rematrix_volume " , " set rematrix volume " , OFFSET ( rematrix_volume ) , AV_OPT_TYPE_FLOAT , { . dbl = 1.0 } , - 1000 , 1000 , PARAM } ,
{ " 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 " } ,
{ " res " , " force resampling " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_FLAG_RESAMPLE } , INT_MIN , INT_MAX , PARAM , " flags " } ,
{ " dither_scale " , " set dither scale " , OFFSET ( dither_scale ) , AV_OPT_TYPE_FLOAT , { . dbl = 1 } , 0 , INT_MAX , PARAM } ,
{ " dither_method " , " set dither method " , OFFSET ( dither_method ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , SWR_DITHER_NB - 1 , PARAM , " dither_method " } ,
{ " rectangular " , " select rectangular dither " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_DITHER_RECTANGULAR } , INT_MIN , INT_MAX , PARAM , " dither_method " } ,
{ " triangular " , " select triangular dither " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_DITHER_TRIANGULAR } , INT_MIN , INT_MAX , PARAM , " dither_method " } ,
{ " triangular_hp " , " select triangular dither with high pass " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_DITHER_TRIANGULAR_HIGHPASS } , INT_MIN , INT_MAX , PARAM , " dither_method " } ,
{ " filter_size " , " set resampling filter size " , OFFSET ( filter_size ) , AV_OPT_TYPE_INT , { . i64 = 16 } , 0 , INT_MAX , PARAM } ,
{ " phase_shift " , " set resampling phase shift " , OFFSET ( phase_shift ) , AV_OPT_TYPE_INT , { . i64 = 10 } , 0 , 30 , PARAM } ,
{ " linear_interp " , " enable linear interpolation " , OFFSET ( linear_interp ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , 1 , PARAM } ,
{ " cutoff " , " set cutoff frequency ratio " , OFFSET ( cutoff ) , AV_OPT_TYPE_DOUBLE , { . dbl = 0.8 } , 0 , 1 , PARAM } ,
{ " min_comp " , " set minimum difference between timestamps and audio data (in seconds) below which no timestamp compensation of either kind is applied "
, OFFSET ( min_compensation ) , AV_OPT_TYPE_FLOAT , { . dbl = FLT_MAX } , 0 , FLT_MAX , PARAM } ,
{ " min_hard_comp " , " Minimum difference between timestamps and audio data (in seconds) to trigger padding/trimming the data. "
, OFFSET ( min_hard_compensation ) , AV_OPT_TYPE_FLOAT , { . dbl = 0.1 } , 0 , INT_MAX , PARAM } ,
{ " comp_duration " , " Duration (in seconds) over which data is stretched/squeezed to make it match the timestamps. "
, OFFSET ( soft_compensation_duration ) , AV_OPT_TYPE_FLOAT , { . dbl = 1 } , 0 , INT_MAX , PARAM } ,
{ " max_soft_comp " , " Maximum factor by which data is stretched/squeezed to make it match the timestamps. "
, OFFSET ( max_soft_compensation ) , AV_OPT_TYPE_FLOAT , { . dbl = 0 } , INT_MIN , INT_MAX , PARAM } ,
{ " matrix_encoding " , " Matrixed Stereo Encoding " , OFFSET ( matrix_encoding ) , AV_OPT_TYPE_INT , { . i64 = AV_MATRIX_ENCODING_NONE } , AV_MATRIX_ENCODING_NONE , AV_MATRIX_ENCODING_NB - 1 , PARAM , " matrix_encoding " } ,
{ " none " , " None " , 0 , AV_OPT_TYPE_CONST , { . i64 = AV_MATRIX_ENCODING_NONE } , INT_MIN , INT_MAX , PARAM , " matrix_encoding " } ,
{ " dolby " , " Dolby " , 0 , AV_OPT_TYPE_CONST , { . i64 = AV_MATRIX_ENCODING_DOLBY } , INT_MIN , INT_MAX , PARAM , " matrix_encoding " } ,
{ " dplii " , " Dolby Pro Logic II " , 0 , AV_OPT_TYPE_CONST , { . i64 = AV_MATRIX_ENCODING_DPLII } , INT_MIN , INT_MAX , PARAM , " matrix_encoding " } ,
{ " filter_type " , " Filter Type " , OFFSET ( filter_type ) , AV_OPT_TYPE_INT , { . i64 = SWR_FILTER_TYPE_KAISER } , SWR_FILTER_TYPE_CUBIC , SWR_FILTER_TYPE_KAISER , PARAM , " filter_type " } ,
{ " cubic " , " Cubic " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_FILTER_TYPE_CUBIC } , INT_MIN , INT_MAX , PARAM , " filter_type " } ,
{ " blackman_nuttall " , " Blackman Nuttall Windowed Sinc " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_FILTER_TYPE_BLACKMAN_NUTTALL } , INT_MIN , INT_MAX , PARAM , " filter_type " } ,
{ " kaiser " , " Kaiser Windowed Sinc " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_FILTER_TYPE_KAISER } , INT_MIN , INT_MAX , PARAM , " filter_type " } ,
{ " kaiser_beta " , " Kaiser Window Beta " , OFFSET ( kaiser_beta ) , AV_OPT_TYPE_INT , { . i64 = 9 } , 2 , 16 , PARAM } ,
{ " min_hard_comp " , " set minimum difference between timestamps and audio data (in seconds) to trigger padding/trimming the data. "
, OFFSET ( min_hard_compensation ) , AV_OPT_TYPE_FLOAT , { . dbl = 0.1 } , 0 , INT_MAX , PARAM } ,
{ " comp_duration " , " set duration (in seconds) over which data is stretched/squeezed to make it match the timestamps. "
, OFFSET ( soft_compensation_duration ) , AV_OPT_TYPE_FLOAT , { . dbl = 1 } , 0 , INT_MAX , PARAM } ,
{ " max_soft_comp " , " set maximum factor by which data is stretched/squeezed to make it match the timestamps. "
, OFFSET ( max_soft_compensation ) , AV_OPT_TYPE_FLOAT , { . dbl = 0 } , INT_MIN , INT_MAX , PARAM } ,
{ " matrix_encoding " , " set matrixed stereo encoding " , OFFSET ( matrix_encoding ) , AV_OPT_TYPE_INT , { . i64 = AV_MATRIX_ENCODING_NONE } , AV_MATRIX_ENCODING_NONE , AV_MATRIX_ENCODING_NB - 1 , PARAM , " matrix_encoding " } ,
{ " none " , " select none " , 0 , AV_OPT_TYPE_CONST , { . i64 = AV_MATRIX_ENCODING_NONE } , INT_MIN , INT_MAX , PARAM , " matrix_encoding " } ,
{ " dolby " , " select Dolby " , 0 , AV_OPT_TYPE_CONST , { . i64 = AV_MATRIX_ENCODING_DOLBY } , INT_MIN , INT_MAX , PARAM , " matrix_encoding " } ,
{ " dplii " , " select Dolby Pro Logic II " , 0 , AV_OPT_TYPE_CONST , { . i64 = AV_MATRIX_ENCODING_DPLII } , INT_MIN , INT_MAX , PARAM , " matrix_encoding " } ,
{ " filter_type " , " select filter type " , OFFSET ( filter_type ) , AV_OPT_TYPE_INT , { . i64 = SWR_FILTER_TYPE_KAISER } , SWR_FILTER_TYPE_CUBIC , SWR_FILTER_TYPE_KAISER , PARAM , " filter_type " } ,
{ " cubic " , " select cubic " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_FILTER_TYPE_CUBIC } , INT_MIN , INT_MAX , PARAM , " filter_type " } ,
{ " blackman_nuttall " , " select Blackman Nuttall Windowed Sinc " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_FILTER_TYPE_BLACKMAN_NUTTALL } , INT_MIN , INT_MAX , PARAM , " filter_type " } ,
{ " kaiser " , " select Kaiser Windowed Sinc " , 0 , AV_OPT_TYPE_CONST , { . i64 = SWR_FILTER_TYPE_KAISER } , INT_MIN , INT_MAX , PARAM , " filter_type " } ,
{ " kaiser_beta " , " set Kaiser Window Beta " , OFFSET ( kaiser_beta ) , AV_OPT_TYPE_INT , { . i64 = 9 } , 2 , 16 , PARAM } ,
{ 0 }
} ;