Mercurial > libavformat.hg
changeset 2163:6c0176688fae libavformat
Move the video size and rate abbreviations system from libavformat to libavcodec
patch by Stefano Sabatini: [stefano dot sabatini minus lala poste dot it]
original thread:
[FFmpeg-devel] [PATCH] Redesign the video size and rateabbreviations system
date: 06/02/2007 05:30 PM
author | benoit |
---|---|
date | Tue, 12 Jun 2007 08:06:54 +0000 |
parents | f0b9505b7b8b |
children | 3804e39efbfd |
files | avformat.h utils.c |
diffstat | 2 files changed, 11 insertions(+), 105 deletions(-) [+] |
line wrap: on
line diff
--- a/avformat.h Tue Jun 12 08:01:35 2007 +0000 +++ b/avformat.h Tue Jun 12 08:06:54 2007 +0000 @@ -763,13 +763,15 @@ /** * parses width and height out of string str. + * @deprecated Use av_parse_video_frame_size instead. */ -int parse_image_size(int *width_ptr, int *height_ptr, const char *str); +attribute_deprecated int parse_image_size(int *width_ptr, int *height_ptr, const char *str); /** * Converts frame rate from string to a fraction. + * @deprecated Use av_parse_video_frame_rate instead. */ -int parse_frame_rate(int *frame_rate, int *frame_rate_base, const char *arg); +attribute_deprecated int parse_frame_rate(int *frame_rate, int *frame_rate_base, const char *arg); /** * Converts date string to number of seconds since Jan 1st, 1970.
--- a/utils.c Tue Jun 12 08:01:35 2007 +0000 +++ b/utils.c Tue Jun 12 08:06:54 2007 +0000 @@ -2482,114 +2482,18 @@ } } -typedef struct { - const char *abv; - int width, height; - int frame_rate, frame_rate_base; -} AbvEntry; - -static AbvEntry frame_abvs[] = { - { "ntsc", 720, 480, 30000, 1001 }, - { "pal", 720, 576, 25, 1 }, - { "qntsc", 352, 240, 30000, 1001 }, /* VCD compliant ntsc */ - { "qpal", 352, 288, 25, 1 }, /* VCD compliant pal */ - { "sntsc", 640, 480, 30000, 1001 }, /* square pixel ntsc */ - { "spal", 768, 576, 25, 1 }, /* square pixel pal */ - { "film", 352, 240, 24, 1 }, - { "ntsc-film", 352, 240, 24000, 1001 }, - { "sqcif", 128, 96, 0, 0 }, - { "qcif", 176, 144, 0, 0 }, - { "cif", 352, 288, 0, 0 }, - { "4cif", 704, 576, 0, 0 }, - { "qqvga", 160, 120, 0, 0 }, - { "qvga", 320, 240, 0, 0 }, - { "vga", 640, 480, 0, 0 }, - { "svga", 800, 600, 0, 0 }, - { "xga", 1024, 768, 0, 0 }, - { "uxga", 1600,1200, 0, 0 }, - { "qxga", 2048,1536, 0, 0 }, - { "sxga", 1280,1024, 0, 0 }, - { "qsxga", 2560,2048, 0, 0 }, - { "hsxga", 5120,4096, 0, 0 }, - { "wvga", 852, 480, 0, 0 }, - { "wxga", 1366, 768, 0, 0 }, - { "wsxga", 1600,1024, 0, 0 }, - { "wuxga", 1920,1200, 0, 0 }, - { "woxga", 2560,1600, 0, 0 }, - { "wqsxga", 3200,2048, 0, 0 }, - { "wquxga", 3840,2400, 0, 0 }, - { "whsxga", 6400,4096, 0, 0 }, - { "whuxga", 7680,4800, 0, 0 }, - { "cga", 320, 200, 0, 0 }, - { "ega", 640, 350, 0, 0 }, - { "hd480", 852, 480, 0, 0 }, - { "hd720", 1280, 720, 0, 0 }, - { "hd1080", 1920,1080, 0, 0 }, -}; - int parse_image_size(int *width_ptr, int *height_ptr, const char *str) { - int i; - int n = sizeof(frame_abvs) / sizeof(AbvEntry); - const char *p; - int frame_width = 0, frame_height = 0; - - for(i=0;i<n;i++) { - if (!strcmp(frame_abvs[i].abv, str)) { - frame_width = frame_abvs[i].width; - frame_height = frame_abvs[i].height; - break; - } - } - if (i == n) { - p = str; - frame_width = strtol(p, (char **)&p, 10); - if (*p) - p++; - frame_height = strtol(p, (char **)&p, 10); - } - if (frame_width <= 0 || frame_height <= 0) - return -1; - *width_ptr = frame_width; - *height_ptr = frame_height; - return 0; + return av_parse_video_frame_size(width_ptr, height_ptr, str); } -int parse_frame_rate(int *frame_rate, int *frame_rate_base, const char *arg) +int parse_frame_rate(int *frame_rate_num, int *frame_rate_den, const char *arg) { - int i; - char* cp; - - /* First, we check our abbreviation table */ - for (i = 0; i < sizeof(frame_abvs)/sizeof(*frame_abvs); ++i) - if (!strcmp(frame_abvs[i].abv, arg)) { - *frame_rate = frame_abvs[i].frame_rate; - *frame_rate_base = frame_abvs[i].frame_rate_base; - return 0; - } - - /* Then, we try to parse it as fraction */ - cp = strchr(arg, '/'); - if (!cp) - cp = strchr(arg, ':'); - if (cp) { - char* cpp; - *frame_rate = strtol(arg, &cpp, 10); - if (cpp != arg || cpp == cp) - *frame_rate_base = strtol(cp+1, &cpp, 10); - else - *frame_rate = 0; - } - else { - /* Finally we give up and parse it as double */ - AVRational time_base = av_d2q(strtod(arg, 0), DEFAULT_FRAME_RATE_BASE); - *frame_rate_base = time_base.den; - *frame_rate = time_base.num; - } - if (!*frame_rate || !*frame_rate_base) - return -1; - else - return 0; + AVRational frame_rate; + int ret = av_parse_video_frame_rate(&frame_rate, arg); + *frame_rate_num= frame_rate.num; + *frame_rate_den= frame_rate.den; + return ret; } int64_t parse_date(const char *datestr, int duration)