| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -64,6 +64,7 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static int init_report(const char *env); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			struct SwsContext *sws_opts; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			AVDictionary *sws_dict; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			AVDictionary *swr_opts; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			AVDictionary *format_opts, *codec_opts, *resample_opts; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -77,6 +78,7 @@ void init_opts(void) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(CONFIG_SWSCALE) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        sws_opts = sws_getContext(16, 16, 0, 16, 16, 0, SWS_BICUBIC, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                              NULL, NULL, NULL); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_dict_set(&sws_dict, "flags", "bicubic", 0); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			void uninit_opts(void) | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -87,6 +89,7 @@ void uninit_opts(void) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_dict_free(&swr_opts); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_dict_free(&sws_dict); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_dict_free(&format_opts); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_dict_free(&codec_opts); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_dict_free(&resample_opts); | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -565,14 +568,23 @@ int opt_default(void *optctx, const char *opt, const char *arg) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if CONFIG_SWSCALE | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    sc = sws_get_class(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (!consumed && opt_find(&sc, opt, NULL, 0, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                         AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ)) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // XXX we only support sws_flags, not arbitrary sws options | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        int ret = av_opt_set(sws_opts, opt, arg, 0); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (!consumed && (o = opt_find(&sc, opt, NULL, 0, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                         AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        struct SwsContext *sws = sws_alloc_context(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        int ret = av_opt_set(sws, opt, arg, 0); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        sws_freeContext(sws); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (ret < 0) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            av_log(NULL, AV_LOG_ERROR, "Error setting option %s.\n", opt); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return ret; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ret = av_opt_set(sws_opts, opt, arg, 0); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (ret < 0) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            av_log(NULL, AV_LOG_ERROR, "Error setting option %s for sws_opts.\n", opt); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return ret; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        av_dict_set(&sws_dict, opt, arg, FLAGS); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        consumed = 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#else | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -649,6 +661,7 @@ static void finish_group(OptionParseContext *octx, int group_idx, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if CONFIG_SWSCALE | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    g->sws_opts    = sws_opts; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    g->sws_dict    = sws_dict; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    g->swr_opts    = swr_opts; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    g->codec_opts  = codec_opts; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    g->format_opts = format_opts; | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -660,6 +673,7 @@ static void finish_group(OptionParseContext *octx, int group_idx, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if CONFIG_SWSCALE | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    sws_opts    = NULL; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    sws_dict    = NULL; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    swr_opts    = NULL; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    init_opts(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -718,6 +732,8 @@ void uninit_parse_context(OptionParseContext *octx) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if CONFIG_SWSCALE | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            sws_freeContext(l->groups[j].sws_opts); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            av_dict_free(&l->groups[j].sws_dict); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            av_dict_free(&l->groups[j].swr_opts); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        av_freep(&l->groups); | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |