| 
																	
																	
																		
																	
																	
																 | 
																@@ -23,6 +23,7 @@ | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																#include "parseutils.h" | 
																 | 
																 | 
																#include "parseutils.h" | 
															
														
														
													
														
															
																 | 
																 | 
																#include "libavutil/avutil.h" | 
																 | 
																 | 
																#include "libavutil/avutil.h" | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#include "libavutil/eval.h" | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																typedef struct { | 
																 | 
																 | 
																typedef struct { | 
															
														
														
													
														
															
																 | 
																 | 
																    const char *abbr; | 
																 | 
																 | 
																    const char *abbr; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -115,9 +116,9 @@ int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str) | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																int av_parse_video_rate(AVRational *rate, const char *arg) | 
																 | 
																 | 
																int av_parse_video_rate(AVRational *rate, const char *arg) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    int i; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    int i, ret; | 
															
														
														
													
														
															
																 | 
																 | 
																    int n = FF_ARRAY_ELEMS(video_rate_abbrs); | 
																 | 
																 | 
																    int n = FF_ARRAY_ELEMS(video_rate_abbrs); | 
															
														
														
													
														
															
																 | 
																 | 
																    char *cp; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    double res; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    /* First, we check our abbreviation table */ | 
																 | 
																 | 
																    /* First, we check our abbreviation table */ | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < n; ++i) | 
																 | 
																 | 
																    for (i = 0; i < n; ++i) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -127,20 +128,10 @@ int av_parse_video_rate(AVRational *rate, const char *arg) | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    /* Then, we try to parse it as fraction */ | 
																 | 
																 | 
																    /* Then, we try to parse it as fraction */ | 
															
														
														
													
														
															
																 | 
																 | 
																    cp = strchr(arg, '/'); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    if (!cp) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        cp = strchr(arg, ':'); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    if (cp) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        char *cpp; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        rate->num = strtol(arg, &cpp, 10); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (cpp != arg || cpp == cp) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            rate->den = strtol(cp+1, &cpp, 10); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        else | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            rate->num = 0; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    } else { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        /* Finally we give up and parse it as double */ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        *rate = av_d2q(strtod(arg, 0), 1001000); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if ((ret = av_parse_and_eval_expr(&res, arg, NULL, NULL, NULL, NULL, NULL, NULL, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                                      NULL, 0, NULL)) < 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    *rate = av_d2q(res, 1001000); | 
															
														
														
													
														
															
																 | 
																 | 
																    if (rate->num <= 0 || rate->den <= 0) | 
																 | 
																 | 
																    if (rate->num <= 0 || rate->den <= 0) | 
															
														
														
													
														
															
																 | 
																 | 
																        return AVERROR(EINVAL); | 
																 | 
																 | 
																        return AVERROR(EINVAL); | 
															
														
														
													
														
															
																 | 
																 | 
																    return 0; | 
																 | 
																 | 
																    return 0; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																 | 
																
  |