| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -985,7 +985,7 @@ typedef struct HDCDContext { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#define A AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static const AVOption hdcd_options[] = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "disable_autoconvert", "Disable any format conversion or resampling in the filter graph.", | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        OFFSET(disable_autoconvert), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, A }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        OFFSET(disable_autoconvert), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, A }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "process_stereo", "Process stereo channels together. Only apply target_gain when both channels match.", | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        OFFSET(process_stereo), AV_OPT_TYPE_BOOL, { .i64 = HDCD_PROCESS_STEREO_DEFAULT }, 0, 1, A }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "cdt_ms", "Code detect timer period in ms.", | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -1710,7 +1710,6 @@ static av_cold int init(AVFilterContext *ctx) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static int config_input(AVFilterLink *inlink) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    AVFilterContext *ctx = inlink->dst; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    HDCDContext *s = ctx->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    AVFilterLink *lk; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    int c; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_log(ctx, AV_LOG_VERBOSE, "Auto-convert: %s\n", | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -1751,24 +1750,6 @@ static int config_input(AVFilterLink *inlink) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_log(ctx, AV_LOG_VERBOSE, "Analyze mode: [%d] %s\n", | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        s->analyze_mode, ana_mode_str[s->analyze_mode] ); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    lk = inlink; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    while(lk != NULL) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        AVFilterContext *nextf = lk->src; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (lk->type == AVMEDIA_TYPE_AUDIO) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            int sfok = (lk->format == AV_SAMPLE_FMT_S16 || | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        lk->format == AV_SAMPLE_FMT_S16P); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if ( !sfok || lk->sample_rate != 44100) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                av_log(ctx, AV_LOG_WARNING, "An input format is %s@%dHz at %s. It will truncated/resampled to s16@44100Hz.\n", | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    av_get_sample_fmt_name(lk->format), lk->sample_rate, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    (nextf->name) ? nextf->name : "<unknown>" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    ); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                s->bad_config = 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                break; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        lk = (nextf->inputs) ? nextf->inputs[0] : NULL; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* more warning will appear after config_output() */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -1782,36 +1763,10 @@ static const AVFilterPad avfilter_af_hdcd_inputs[] = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { NULL } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static int config_output(AVFilterLink *outlink) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    static const char hdcd_baduse[] = | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        "The HDCD filter is unlikely to produce a desirable result in this context."; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    AVFilterContext *ctx = outlink->src; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    HDCDContext *s = ctx->priv; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    AVFilterLink *lk = outlink; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    while(lk != NULL) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        AVFilterContext *nextf = lk->dst; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (lk->type == AVMEDIA_TYPE_AUDIO) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (lk->format == AV_SAMPLE_FMT_S16 || lk->format == AV_SAMPLE_FMT_U8) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                av_log(ctx, AV_LOG_WARNING, "s24 output is being truncated to %s at %s.\n", | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    av_get_sample_fmt_name(lk->format), | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    (nextf->name) ? nextf->name : "<unknown>" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    ); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                s->bad_config = 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                break; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        lk = (nextf->outputs) ? nextf->outputs[0] : NULL; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (s->bad_config) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        av_log(ctx, AV_LOG_WARNING, "%s\n", hdcd_baduse); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static const AVFilterPad avfilter_af_hdcd_outputs[] = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        .name = "default", | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        .type = AVMEDIA_TYPE_AUDIO, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        .config_props = config_output, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { NULL } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}; | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |