Mercurial > libavcodec.hg
comparison utils.c @ 5176:82f7eaa32f46 libavcodec
split frame rate and frame size abbreviation into two structures
patch by Stefano Sabatini: [stefano sabatini-lala poste it]
| author | benoit |
|---|---|
| date | Thu, 21 Jun 2007 07:46:48 +0000 |
| parents | 4dbe6578f811 |
| children | 431eef69a62f |
comparison
equal
deleted
inserted
replaced
| 5175:830576859f71 | 5176:82f7eaa32f46 |
|---|---|
| 1347 } | 1347 } |
| 1348 return fd; /* success */ | 1348 return fd; /* success */ |
| 1349 } | 1349 } |
| 1350 | 1350 |
| 1351 typedef struct { | 1351 typedef struct { |
| 1352 const char *abv; | 1352 const char *abbr; |
| 1353 int width, height; | 1353 int width, height; |
| 1354 int frame_rate, frame_rate_base; | 1354 } VideoFrameSizeAbbr; |
| 1355 } AbvEntry; | 1355 |
| 1356 | 1356 typedef struct { |
| 1357 static AbvEntry frame_abvs[] = { | 1357 const char *abbr; |
| 1358 { "ntsc", 720, 480, 30000, 1001 }, | 1358 int rate_num, rate_den; |
| 1359 { "pal", 720, 576, 25, 1 }, | 1359 } VideoFrameRateAbbr; |
| 1360 { "qntsc", 352, 240, 30000, 1001 }, /* VCD compliant NTSC */ | 1360 |
| 1361 { "qpal", 352, 288, 25, 1 }, /* VCD compliant PAL */ | 1361 static VideoFrameSizeAbbr video_frame_size_abbrs[] = { |
| 1362 { "sntsc", 640, 480, 30000, 1001 }, /* square pixel NTSC */ | 1362 { "ntsc", 720, 480 }, |
| 1363 { "spal", 768, 576, 25, 1 }, /* square pixel PAL */ | 1363 { "pal", 720, 576 }, |
| 1364 { "film", 352, 240, 24, 1 }, | 1364 { "qntsc", 352, 240 }, /* VCD compliant NTSC */ |
| 1365 { "ntsc-film", 352, 240, 24000, 1001 }, | 1365 { "qpal", 352, 288 }, /* VCD compliant PAL */ |
| 1366 { "sqcif", 128, 96, 0, 0 }, | 1366 { "sntsc", 640, 480 }, /* square pixel NTSC */ |
| 1367 { "qcif", 176, 144, 0, 0 }, | 1367 { "spal", 768, 576 }, /* square pixel PAL */ |
| 1368 { "cif", 352, 288, 0, 0 }, | 1368 { "film", 352, 240 }, |
| 1369 { "4cif", 704, 576, 0, 0 }, | 1369 { "ntsc-film", 352, 240 }, |
| 1370 { "qqvga", 160, 120, 0, 0 }, | 1370 { "sqcif", 128, 96 }, |
| 1371 { "qvga", 320, 240, 0, 0 }, | 1371 { "qcif", 176, 144 }, |
| 1372 { "vga", 640, 480, 0, 0 }, | 1372 { "cif", 352, 288 }, |
| 1373 { "svga", 800, 600, 0, 0 }, | 1373 { "4cif", 704, 576 }, |
| 1374 { "xga", 1024, 768, 0, 0 }, | 1374 { "qqvga", 160, 120 }, |
| 1375 { "uxga", 1600,1200, 0, 0 }, | 1375 { "qvga", 320, 240 }, |
| 1376 { "qxga", 2048,1536, 0, 0 }, | 1376 { "vga", 640, 480 }, |
| 1377 { "sxga", 1280,1024, 0, 0 }, | 1377 { "svga", 800, 600 }, |
| 1378 { "qsxga", 2560,2048, 0, 0 }, | 1378 { "xga", 1024, 768 }, |
| 1379 { "hsxga", 5120,4096, 0, 0 }, | 1379 { "uxga", 1600,1200 }, |
| 1380 { "wvga", 852, 480, 0, 0 }, | 1380 { "qxga", 2048,1536 }, |
| 1381 { "wxga", 1366, 768, 0, 0 }, | 1381 { "sxga", 1280,1024 }, |
| 1382 { "wsxga", 1600,1024, 0, 0 }, | 1382 { "qsxga", 2560,2048 }, |
| 1383 { "wuxga", 1920,1200, 0, 0 }, | 1383 { "hsxga", 5120,4096 }, |
| 1384 { "woxga", 2560,1600, 0, 0 }, | 1384 { "wvga", 852, 480 }, |
| 1385 { "wqsxga", 3200,2048, 0, 0 }, | 1385 { "wxga", 1366, 768 }, |
| 1386 { "wquxga", 3840,2400, 0, 0 }, | 1386 { "wsxga", 1600,1024 }, |
| 1387 { "whsxga", 6400,4096, 0, 0 }, | 1387 { "wuxga", 1920,1200 }, |
| 1388 { "whuxga", 7680,4800, 0, 0 }, | 1388 { "woxga", 2560,1600 }, |
| 1389 { "cga", 320, 200, 0, 0 }, | 1389 { "wqsxga", 3200,2048 }, |
| 1390 { "ega", 640, 350, 0, 0 }, | 1390 { "wquxga", 3840,2400 }, |
| 1391 { "hd480", 852, 480, 0, 0 }, | 1391 { "whsxga", 6400,4096 }, |
| 1392 { "hd720", 1280, 720, 0, 0 }, | 1392 { "whuxga", 7680,4800 }, |
| 1393 { "hd1080", 1920,1080, 0, 0 }, | 1393 { "cga", 320, 200 }, |
| 1394 { "ega", 640, 350 }, | |
| 1395 { "hd480", 852, 480 }, | |
| 1396 { "hd720", 1280, 720 }, | |
| 1397 { "hd1080", 1920,1080 }, | |
| 1394 }; | 1398 }; |
| 1395 | 1399 |
| 1400 static VideoFrameRateAbbr video_frame_rate_abbrs[]= { | |
| 1401 { "ntsc", 30000, 1001 }, | |
| 1402 { "pal", 25, 1 }, | |
| 1403 { "qntsc", 30000, 1001 }, /* VCD compliant NTSC */ | |
| 1404 { "qpal", 25, 1 }, /* VCD compliant PAL */ | |
| 1405 { "sntsc", 30000, 1001 }, /* square pixel NTSC */ | |
| 1406 { "spal", 25, 1 }, /* square pixel PAL */ | |
| 1407 { "film", 24, 1 }, | |
| 1408 { "ntsc-film", 24000, 1001 }, | |
| 1409 }; | |
| 1410 | |
| 1396 int av_parse_video_frame_size(int *width_ptr, int *height_ptr, const char *str) | 1411 int av_parse_video_frame_size(int *width_ptr, int *height_ptr, const char *str) |
| 1397 { | 1412 { |
| 1398 int i; | 1413 int i; |
| 1399 int n = sizeof(frame_abvs) / sizeof(AbvEntry); | 1414 int n = sizeof(video_frame_size_abbrs) / sizeof(VideoFrameSizeAbbr); |
| 1400 const char *p; | 1415 const char *p; |
| 1401 int frame_width = 0, frame_height = 0; | 1416 int frame_width = 0, frame_height = 0; |
| 1402 | 1417 |
| 1403 for(i=0;i<n;i++) { | 1418 for(i=0;i<n;i++) { |
| 1404 if (!strcmp(frame_abvs[i].abv, str)) { | 1419 if (!strcmp(video_frame_size_abbrs[i].abbr, str)) { |
| 1405 frame_width = frame_abvs[i].width; | 1420 frame_width = video_frame_size_abbrs[i].width; |
| 1406 frame_height = frame_abvs[i].height; | 1421 frame_height = video_frame_size_abbrs[i].height; |
| 1407 break; | 1422 break; |
| 1408 } | 1423 } |
| 1409 } | 1424 } |
| 1410 if (i == n) { | 1425 if (i == n) { |
| 1411 p = str; | 1426 p = str; |
| 1422 } | 1437 } |
| 1423 | 1438 |
| 1424 int av_parse_video_frame_rate(AVRational *frame_rate, const char *arg) | 1439 int av_parse_video_frame_rate(AVRational *frame_rate, const char *arg) |
| 1425 { | 1440 { |
| 1426 int i; | 1441 int i; |
| 1442 int n = sizeof(video_frame_rate_abbrs) / sizeof(VideoFrameRateAbbr); | |
| 1427 char* cp; | 1443 char* cp; |
| 1428 | 1444 |
| 1429 /* First, we check our abbreviation table */ | 1445 /* First, we check our abbreviation table */ |
| 1430 for (i = 0; i < sizeof(frame_abvs)/sizeof(*frame_abvs); ++i) | 1446 for (i = 0; i < n; ++i) |
| 1431 if (!strcmp(frame_abvs[i].abv, arg)) { | 1447 if (!strcmp(video_frame_rate_abbrs[i].abbr, arg)) { |
| 1432 frame_rate->num = frame_abvs[i].frame_rate; | 1448 frame_rate->num = video_frame_rate_abbrs[i].rate_num; |
| 1433 frame_rate->den = frame_abvs[i].frame_rate_base; | 1449 frame_rate->den = video_frame_rate_abbrs[i].rate_den; |
| 1434 return 0; | 1450 return 0; |
| 1435 } | 1451 } |
| 1436 | 1452 |
| 1437 /* Then, we try to parse it as fraction */ | 1453 /* Then, we try to parse it as fraction */ |
| 1438 cp = strchr(arg, '/'); | 1454 cp = strchr(arg, '/'); |
