| 
																	
																	
																		
																	
																	
																 | 
																@@ -86,20 +86,6 @@ static const AVOption options[] = { | 
															
														
														
													
														
															
																 | 
																 | 
																#define sidechaincompress_options options | 
																 | 
																 | 
																#define sidechaincompress_options options | 
															
														
														
													
														
															
																 | 
																 | 
																AVFILTER_DEFINE_CLASS(sidechaincompress); | 
																 | 
																 | 
																AVFILTER_DEFINE_CLASS(sidechaincompress); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static av_cold int init(AVFilterContext *ctx) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    SidechainCompressContext *s = ctx->priv; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    s->thres = log(s->threshold); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    s->lin_knee_start = s->threshold / sqrt(s->knee); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    s->adj_knee_start = s->lin_knee_start * s->lin_knee_start; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    s->knee_start = log(s->lin_knee_start); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    s->knee_stop = log(s->threshold * sqrt(s->knee)); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    s->compressed_knee_stop = (s->knee_stop - s->thres) / s->ratio + s->thres; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    return 0; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																// A fake infinity value (because real infinity may break some hosts) | 
																 | 
																 | 
																// A fake infinity value (because real infinity may break some hosts) | 
															
														
														
													
														
															
																 | 
																 | 
																#define FAKE_INFINITY (65536.0 * 65536.0) | 
																 | 
																 | 
																#define FAKE_INFINITY (65536.0 * 65536.0) | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -138,6 +124,13 @@ static int compressor_config_output(AVFilterLink *outlink) | 
															
														
														
													
														
															
																 | 
																 | 
																    AVFilterContext *ctx = outlink->src; | 
																 | 
																 | 
																    AVFilterContext *ctx = outlink->src; | 
															
														
														
													
														
															
																 | 
																 | 
																    SidechainCompressContext *s = ctx->priv; | 
																 | 
																 | 
																    SidechainCompressContext *s = ctx->priv; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    s->thres = log(s->threshold); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    s->lin_knee_start = s->threshold / sqrt(s->knee); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    s->adj_knee_start = s->lin_knee_start * s->lin_knee_start; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    s->knee_start = log(s->lin_knee_start); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    s->knee_stop = log(s->threshold * sqrt(s->knee)); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    s->compressed_knee_stop = (s->knee_stop - s->thres) / s->ratio + s->thres; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    s->attack_coeff = FFMIN(1., 1. / (s->attack * outlink->sample_rate / 4000.)); | 
																 | 
																 | 
																    s->attack_coeff = FFMIN(1., 1. / (s->attack * outlink->sample_rate / 4000.)); | 
															
														
														
													
														
															
																 | 
																 | 
																    s->release_coeff = FFMIN(1., 1. / (s->release * outlink->sample_rate / 4000.)); | 
																 | 
																 | 
																    s->release_coeff = FFMIN(1., 1. / (s->release * outlink->sample_rate / 4000.)); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -333,7 +326,6 @@ AVFilter ff_af_sidechaincompress = { | 
															
														
														
													
														
															
																 | 
																 | 
																    .description    = NULL_IF_CONFIG_SMALL("Sidechain compressor."), | 
																 | 
																 | 
																    .description    = NULL_IF_CONFIG_SMALL("Sidechain compressor."), | 
															
														
														
													
														
															
																 | 
																 | 
																    .priv_size      = sizeof(SidechainCompressContext), | 
																 | 
																 | 
																    .priv_size      = sizeof(SidechainCompressContext), | 
															
														
														
													
														
															
																 | 
																 | 
																    .priv_class     = &sidechaincompress_class, | 
																 | 
																 | 
																    .priv_class     = &sidechaincompress_class, | 
															
														
														
													
														
															
																 | 
																 | 
																    .init           = init, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    .query_formats  = query_formats, | 
																 | 
																 | 
																    .query_formats  = query_formats, | 
															
														
														
													
														
															
																 | 
																 | 
																    .inputs         = sidechaincompress_inputs, | 
																 | 
																 | 
																    .inputs         = sidechaincompress_inputs, | 
															
														
														
													
														
															
																 | 
																 | 
																    .outputs        = sidechaincompress_outputs, | 
																 | 
																 | 
																    .outputs        = sidechaincompress_outputs, | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -427,7 +419,6 @@ AVFilter ff_af_acompressor = { | 
															
														
														
													
														
															
																 | 
																 | 
																    .description    = NULL_IF_CONFIG_SMALL("Audio compressor."), | 
																 | 
																 | 
																    .description    = NULL_IF_CONFIG_SMALL("Audio compressor."), | 
															
														
														
													
														
															
																 | 
																 | 
																    .priv_size      = sizeof(SidechainCompressContext), | 
																 | 
																 | 
																    .priv_size      = sizeof(SidechainCompressContext), | 
															
														
														
													
														
															
																 | 
																 | 
																    .priv_class     = &acompressor_class, | 
																 | 
																 | 
																    .priv_class     = &acompressor_class, | 
															
														
														
													
														
															
																 | 
																 | 
																    .init           = init, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    .query_formats  = acompressor_query_formats, | 
																 | 
																 | 
																    .query_formats  = acompressor_query_formats, | 
															
														
														
													
														
															
																 | 
																 | 
																    .inputs         = acompressor_inputs, | 
																 | 
																 | 
																    .inputs         = acompressor_inputs, | 
															
														
														
													
														
															
																 | 
																 | 
																    .outputs        = acompressor_outputs, | 
																 | 
																 | 
																    .outputs        = acompressor_outputs, | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |