| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -3636,6 +3636,41 @@ static int opt_bsf(const char *opt, const char *arg) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static int opt_preset(const char *opt, const char *arg) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    FILE *f; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    char tmp[100], tmp2[100]; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    char *home= getenv("HOME"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    snprintf(tmp, sizeof(tmp), "%s/.ffmpeg/%s.ffpreset", home, arg); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    f= fopen(tmp, "r"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(!f){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        char *codec_name= *opt == 'v' ? video_codec_name : | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                          *opt == 'a' ? audio_codec_name : | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                        subtitle_codec_name; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        snprintf(tmp, sizeof(tmp), "%s/.ffmpeg/%s-%s.ffpreset", home, codec_name, arg); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        f= fopen(tmp, "r"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(!f){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        fprintf(stderr, "Preset file not found\n"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        av_exit(1); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    while(!feof(f)){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        int e= fscanf(f, "%99[^=]=%99[^\n]\n", tmp, tmp2); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(e!=2){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            fprintf(stderr, "Preset file invalid\n"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            av_exit(1); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        opt_default(tmp, tmp2); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    fclose(f); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static const OptionDef options[] = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* main options */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "L", OPT_EXIT, {(void*)show_license}, "show license" }, | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -3758,6 +3793,10 @@ static const OptionDef options[] = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "vbsf", OPT_FUNC2 | HAS_ARG | OPT_VIDEO | OPT_EXPERT, {(void*)opt_bsf}, "", "bitstream_filter" }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "sbsf", OPT_FUNC2 | HAS_ARG | OPT_SUBTITLE | OPT_EXPERT, {(void*)opt_bsf}, "", "bitstream_filter" }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "apre", OPT_FUNC2 | HAS_ARG | OPT_AUDIO | OPT_EXPERT, {(void*)opt_preset}, "", "preset" }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "vpre", OPT_FUNC2 | HAS_ARG | OPT_VIDEO | OPT_EXPERT, {(void*)opt_preset}, "", "preset" }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "spre", OPT_FUNC2 | HAS_ARG | OPT_SUBTITLE | OPT_EXPERT, {(void*)opt_preset}, "", "preset" }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { "default", OPT_FUNC2 | HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {(void*)opt_default}, "generic catch all option", "" }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { NULL, }, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}; | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |