| 
																	
																	
																		
																	
																	
																 | 
																@@ -745,7 +745,8 @@ do {                                                                   \ | 
															
														
														
													
														
															
																 | 
																 | 
																            fmts = out_link->in_ ## list;                              \ | 
																 | 
																 | 
																            fmts = out_link->in_ ## list;                              \ | 
															
														
														
													
														
															
																 | 
																 | 
																                                                                       \ | 
																 | 
																 | 
																                                                                       \ | 
															
														
														
													
														
															
																 | 
																 | 
																            if (!out_link->in_ ## list->nb) {                          \ | 
																 | 
																 | 
																            if (!out_link->in_ ## list->nb) {                          \ | 
															
														
														
													
														
															
																 | 
																 | 
																                add_format(&out_link->in_ ##list, fmt);                \ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if ((ret = add_format(&out_link->in_ ##list, fmt)) < 0)\ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    return ret;                                        \ | 
															
														
														
													
														
															
																 | 
																 | 
																                ret = 1;                                               \ | 
																 | 
																 | 
																                ret = 1;                                               \ | 
															
														
														
													
														
															
																 | 
																 | 
																                break;                                                 \ | 
																 | 
																 | 
																                break;                                                 \ | 
															
														
														
													
														
															
																 | 
																 | 
																            }                                                          \ | 
																 | 
																 | 
																            }                                                          \ | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -811,16 +812,21 @@ static int reduce_formats_on_filter(AVFilterContext *filter) | 
															
														
														
													
														
															
																 | 
																 | 
																    return ret; | 
																 | 
																 | 
																    return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static void reduce_formats(AVFilterGraph *graph) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static int reduce_formats(AVFilterGraph *graph) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    int i, reduced; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    int i, reduced, ret; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    do { | 
																 | 
																 | 
																    do { | 
															
														
														
													
														
															
																 | 
																 | 
																        reduced = 0; | 
																 | 
																 | 
																        reduced = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																        for (i = 0; i < graph->nb_filters; i++) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            reduced |= reduce_formats_on_filter(graph->filters[i]); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        for (i = 0; i < graph->nb_filters; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if ((ret = reduce_formats_on_filter(graph->filters[i])) < 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            reduced |= ret; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																    } while (reduced); | 
																 | 
																 | 
																    } while (reduced); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    return 0; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static void swap_samplerates_on_filter(AVFilterContext *filter) | 
																 | 
																 | 
																static void swap_samplerates_on_filter(AVFilterContext *filter) | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -1138,7 +1144,8 @@ static int graph_config_formats(AVFilterGraph *graph, AVClass *log_ctx) | 
															
														
														
													
														
															
																 | 
																 | 
																    /* Once everything is merged, it's possible that we'll still have | 
																 | 
																 | 
																    /* Once everything is merged, it's possible that we'll still have | 
															
														
														
													
														
															
																 | 
																 | 
																     * multiple valid media format choices. We try to minimize the amount | 
																 | 
																 | 
																     * multiple valid media format choices. We try to minimize the amount | 
															
														
														
													
														
															
																 | 
																 | 
																     * of format conversion inside filters */ | 
																 | 
																 | 
																     * of format conversion inside filters */ | 
															
														
														
													
														
															
																 | 
																 | 
																    reduce_formats(graph); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if ((ret = reduce_formats(graph)) < 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    /* for audio filters, ensure the best format, sample rate and channel layout | 
																 | 
																 | 
																    /* for audio filters, ensure the best format, sample rate and channel layout | 
															
														
														
													
														
															
																 | 
																 | 
																     * is selected */ | 
																 | 
																 | 
																     * is selected */ | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |