comparison mov.c @ 1418:9720274e2621 libavformat

remove mov_read_leaf and remove useless reading function table, mov_read_default will skip atom with no parsing function anyway
author bcoudurier
date Wed, 25 Oct 2006 22:50:49 +0000
parents 3b00fb8ef8e4
children 0f45ff21ea4e
comparison
equal deleted inserted replaced
1417:84aa565e7da8 1418:9720274e2621
303 typedef struct MOVParseTableEntry { 303 typedef struct MOVParseTableEntry {
304 uint32_t type; 304 uint32_t type;
305 mov_parse_function func; 305 mov_parse_function func;
306 } MOVParseTableEntry; 306 } MOVParseTableEntry;
307 307
308 static int mov_read_leaf(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
309 {
310 if (atom.size>1)
311 url_fskip(pb, atom.size);
312 /* url_seek(pb, atom_offset+atom.size, SEEK_SET); */
313 return 0;
314 }
315
316 static int mov_read_default(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) 308 static int mov_read_default(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
317 { 309 {
318 int64_t total_size = 0; 310 int64_t total_size = 0;
319 MOV_atom_t a; 311 MOV_atom_t a;
320 int i; 312 int i;
1414 } 1406 }
1415 1407
1416 static const MOVParseTableEntry mov_default_parse_table[] = { 1408 static const MOVParseTableEntry mov_default_parse_table[] = {
1417 /* mp4 atoms */ 1409 /* mp4 atoms */
1418 { MKTAG( 'c', 'o', '6', '4' ), mov_read_stco }, 1410 { MKTAG( 'c', 'o', '6', '4' ), mov_read_stco },
1419 { MKTAG( 'c', 'p', 'r', 't' ), mov_read_default },
1420 { MKTAG( 'c', 'r', 'h', 'd' ), mov_read_default },
1421 { MKTAG( 'c', 't', 't', 's' ), mov_read_ctts }, /* composition time to sample */ 1411 { MKTAG( 'c', 't', 't', 's' ), mov_read_ctts }, /* composition time to sample */
1422 { MKTAG( 'd', 'i', 'n', 'f' ), mov_read_default }, /* data information */
1423 { MKTAG( 'd', 'p', 'n', 'd' ), mov_read_leaf },
1424 { MKTAG( 'd', 'r', 'e', 'f' ), mov_read_leaf },
1425 { MKTAG( 'e', 'd', 't', 's' ), mov_read_default }, 1412 { MKTAG( 'e', 'd', 't', 's' ), mov_read_default },
1426 { MKTAG( 'e', 'l', 's', 't' ), mov_read_elst }, 1413 { MKTAG( 'e', 'l', 's', 't' ), mov_read_elst },
1427 { MKTAG( 'e', 'n', 'd', 'a' ), mov_read_enda }, 1414 { MKTAG( 'e', 'n', 'd', 'a' ), mov_read_enda },
1428 { MKTAG( 'f', 'r', 'e', 'e' ), mov_read_leaf },
1429 { MKTAG( 'f', 't', 'y', 'p' ), mov_read_ftyp }, 1415 { MKTAG( 'f', 't', 'y', 'p' ), mov_read_ftyp },
1430 { MKTAG( 'h', 'd', 'l', 'r' ), mov_read_hdlr }, 1416 { MKTAG( 'h', 'd', 'l', 'r' ), mov_read_hdlr },
1431 { MKTAG( 'h', 'i', 'n', 't' ), mov_read_leaf },
1432 { MKTAG( 'h', 'm', 'h', 'd' ), mov_read_leaf },
1433 { MKTAG( 'i', 'o', 'd', 's' ), mov_read_leaf },
1434 { MKTAG( 'j', 'p', '2', 'h' ), mov_read_jp2h }, 1417 { MKTAG( 'j', 'p', '2', 'h' ), mov_read_jp2h },
1435 { MKTAG( 'm', 'd', 'a', 't' ), mov_read_mdat }, 1418 { MKTAG( 'm', 'd', 'a', 't' ), mov_read_mdat },
1436 { MKTAG( 'm', 'd', 'h', 'd' ), mov_read_mdhd }, 1419 { MKTAG( 'm', 'd', 'h', 'd' ), mov_read_mdhd },
1437 { MKTAG( 'm', 'd', 'i', 'a' ), mov_read_default }, 1420 { MKTAG( 'm', 'd', 'i', 'a' ), mov_read_default },
1438 { MKTAG( 'm', 'i', 'n', 'f' ), mov_read_default }, 1421 { MKTAG( 'm', 'i', 'n', 'f' ), mov_read_default },
1439 { MKTAG( 'm', 'o', 'o', 'v' ), mov_read_moov }, 1422 { MKTAG( 'm', 'o', 'o', 'v' ), mov_read_moov },
1440 { MKTAG( 'm', 'p', '4', 'a' ), mov_read_default },
1441 { MKTAG( 'm', 'p', '4', 's' ), mov_read_default },
1442 { MKTAG( 'm', 'p', '4', 'v' ), mov_read_default },
1443 { MKTAG( 'm', 'p', 'o', 'd' ), mov_read_leaf },
1444 { MKTAG( 'm', 'v', 'h', 'd' ), mov_read_mvhd }, 1423 { MKTAG( 'm', 'v', 'h', 'd' ), mov_read_mvhd },
1445 { MKTAG( 'n', 'm', 'h', 'd' ), mov_read_leaf },
1446 { MKTAG( 'o', 'd', 'h', 'd' ), mov_read_default },
1447 { MKTAG( 's', 'd', 'h', 'd' ), mov_read_default },
1448 { MKTAG( 's', 'k', 'i', 'p' ), mov_read_leaf },
1449 { MKTAG( 's', 'm', 'h', 'd' ), mov_read_leaf }, /* sound media info header */
1450 { MKTAG( 'S', 'M', 'I', ' ' ), mov_read_smi }, /* Sorenson extension ??? */ 1424 { MKTAG( 'S', 'M', 'I', ' ' ), mov_read_smi }, /* Sorenson extension ??? */
1451 { MKTAG( 'a', 'l', 'a', 'c' ), mov_read_alac }, /* alac specific atom */ 1425 { MKTAG( 'a', 'l', 'a', 'c' ), mov_read_alac }, /* alac specific atom */
1452 { MKTAG( 'a', 'v', 'c', 'C' ), mov_read_avcC }, 1426 { MKTAG( 'a', 'v', 'c', 'C' ), mov_read_avcC },
1453 { MKTAG( 's', 't', 'b', 'l' ), mov_read_default }, 1427 { MKTAG( 's', 't', 'b', 'l' ), mov_read_default },
1454 { MKTAG( 's', 't', 'c', 'o' ), mov_read_stco }, 1428 { MKTAG( 's', 't', 'c', 'o' ), mov_read_stco },
1455 { MKTAG( 's', 't', 'd', 'p' ), mov_read_default },
1456 { MKTAG( 's', 't', 's', 'c' ), mov_read_stsc }, 1429 { MKTAG( 's', 't', 's', 'c' ), mov_read_stsc },
1457 { MKTAG( 's', 't', 's', 'd' ), mov_read_stsd }, /* sample description */ 1430 { MKTAG( 's', 't', 's', 'd' ), mov_read_stsd }, /* sample description */
1458 { MKTAG( 's', 't', 's', 'h' ), mov_read_default },
1459 { MKTAG( 's', 't', 's', 's' ), mov_read_stss }, /* sync sample */ 1431 { MKTAG( 's', 't', 's', 's' ), mov_read_stss }, /* sync sample */
1460 { MKTAG( 's', 't', 's', 'z' ), mov_read_stsz }, /* sample size */ 1432 { MKTAG( 's', 't', 's', 'z' ), mov_read_stsz }, /* sample size */
1461 { MKTAG( 's', 't', 't', 's' ), mov_read_stts }, 1433 { MKTAG( 's', 't', 't', 's' ), mov_read_stts },
1462 { MKTAG( 't', 'k', 'h', 'd' ), mov_read_tkhd }, /* track header */ 1434 { MKTAG( 't', 'k', 'h', 'd' ), mov_read_tkhd }, /* track header */
1463 { MKTAG( 't', 'r', 'a', 'k' ), mov_read_trak }, 1435 { MKTAG( 't', 'r', 'a', 'k' ), mov_read_trak },
1464 { MKTAG( 't', 'r', 'e', 'f' ), mov_read_default }, /* not really */
1465 { MKTAG( 'u', 'd', 't', 'a' ), mov_read_leaf },
1466 { MKTAG( 'u', 'r', 'l', ' ' ), mov_read_leaf },
1467 { MKTAG( 'u', 'r', 'n', ' ' ), mov_read_leaf },
1468 { MKTAG( 'u', 'u', 'i', 'd' ), mov_read_leaf },
1469 { MKTAG( 'v', 'm', 'h', 'd' ), mov_read_leaf }, /* video media info header */
1470 { MKTAG( 'w', 'a', 'v', 'e' ), mov_read_wave }, 1436 { MKTAG( 'w', 'a', 'v', 'e' ), mov_read_wave },
1471 /* extra mp4 */
1472 { MKTAG( 'M', 'D', 'E', 'S' ), mov_read_leaf },
1473 /* QT atoms */
1474 { MKTAG( 'c', 'h', 'a', 'p' ), mov_read_leaf },
1475 { MKTAG( 'c', 'l', 'i', 'p' ), mov_read_default },
1476 { MKTAG( 'c', 'r', 'g', 'n' ), mov_read_leaf },
1477 { MKTAG( 'c', 't', 'a', 'b' ), mov_read_ctab }, 1437 { MKTAG( 'c', 't', 'a', 'b' ), mov_read_ctab },
1478 { MKTAG( 'e', 's', 'd', 's' ), mov_read_esds }, 1438 { MKTAG( 'e', 's', 'd', 's' ), mov_read_esds },
1479 { MKTAG( 'k', 'm', 'a', 't' ), mov_read_leaf },
1480 { MKTAG( 'm', 'a', 't', 't' ), mov_read_default },
1481 { MKTAG( 'r', 'd', 'r', 'f' ), mov_read_leaf },
1482 { MKTAG( 'r', 'm', 'd', 'a' ), mov_read_default },
1483 { MKTAG( 'r', 'm', 'd', 'r' ), mov_read_leaf },
1484 { MKTAG( 'r', 'm', 'r', 'a' ), mov_read_default },
1485 { MKTAG( 's', 'c', 'p', 't' ), mov_read_leaf },
1486 { MKTAG( 's', 's', 'r', 'c' ), mov_read_leaf },
1487 { MKTAG( 's', 'y', 'n', 'c' ), mov_read_leaf },
1488 { MKTAG( 't', 'c', 'm', 'd' ), mov_read_leaf },
1489 { MKTAG( 'w', 'i', 'd', 'e' ), mov_read_wide }, /* place holder */ 1439 { MKTAG( 'w', 'i', 'd', 'e' ), mov_read_wide }, /* place holder */
1490 //{ MKTAG( 'r', 'm', 'q', 'u' ), mov_read_leaf },
1491 { MKTAG( 'c', 'm', 'o', 'v' ), mov_read_cmov }, 1440 { MKTAG( 'c', 'm', 'o', 'v' ), mov_read_cmov },
1492 { 0L, mov_read_leaf } 1441 { 0L, NULL }
1493 }; 1442 };
1494 1443
1495 static void mov_free_stream_context(MOVStreamContext *sc) 1444 static void mov_free_stream_context(MOVStreamContext *sc)
1496 { 1445 {
1497 if(sc) { 1446 if(sc) {