Mercurial > libavformat.hg
comparison mov.c @ 615:adc5295cd0a2 libavformat
load the 'avcC' atom needed for 'avc1' decoding
author | melanson |
---|---|
date | Thu, 09 Dec 2004 19:44:55 +0000 |
parents | fe24632a577b |
children | 0b52743104ac |
comparison
equal
deleted
inserted
replaced
614:cbcb3ae970c8 | 615:adc5295cd0a2 |
---|---|
114 { CODEC_ID_CINEPAK, MKTAG('c', 'v', 'i', 'd') }, /* Cinepak */ | 114 { CODEC_ID_CINEPAK, MKTAG('c', 'v', 'i', 'd') }, /* Cinepak */ |
115 { CODEC_ID_8BPS, MKTAG('8', 'B', 'P', 'S') }, /* Planar RGB (8BPS) */ | 115 { CODEC_ID_8BPS, MKTAG('8', 'B', 'P', 'S') }, /* Planar RGB (8BPS) */ |
116 { CODEC_ID_SMC, MKTAG('s', 'm', 'c', ' ') }, /* Apple Graphics (SMC) */ | 116 { CODEC_ID_SMC, MKTAG('s', 'm', 'c', ' ') }, /* Apple Graphics (SMC) */ |
117 { CODEC_ID_QTRLE, MKTAG('r', 'l', 'e', ' ') }, /* Apple Animation (RLE) */ | 117 { CODEC_ID_QTRLE, MKTAG('r', 'l', 'e', ' ') }, /* Apple Animation (RLE) */ |
118 { CODEC_ID_QDRAW, MKTAG('q', 'd', 'r', 'w') }, /* QuickDraw */ | 118 { CODEC_ID_QDRAW, MKTAG('q', 'd', 'r', 'w') }, /* QuickDraw */ |
119 { CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') }, /* AVC-1/H.264 */ | |
119 { CODEC_ID_NONE, 0 }, | 120 { CODEC_ID_NONE, 0 }, |
120 }; | 121 }; |
121 | 122 |
122 static const CodecTag mov_audio_tags[] = { | 123 static const CodecTag mov_audio_tags[] = { |
123 /* { CODEC_ID_PCM_S16BE, MKTAG('N', 'O', 'N', 'E') }, *//* uncompressed */ | 124 /* { CODEC_ID_PCM_S16BE, MKTAG('N', 'O', 'N', 'E') }, *//* uncompressed */ |
684 | 685 |
685 if (st->codec.extradata) { | 686 if (st->codec.extradata) { |
686 strcpy(st->codec.extradata, "SVQ3"); // fake | 687 strcpy(st->codec.extradata, "SVQ3"); // fake |
687 get_buffer(pb, st->codec.extradata + 0x5a, atom.size); | 688 get_buffer(pb, st->codec.extradata + 0x5a, atom.size); |
688 //av_log(NULL, AV_LOG_DEBUG, "Reading SMI %Ld %s\n", atom.size, (char*)st->codec.extradata + 0x5a); | 689 //av_log(NULL, AV_LOG_DEBUG, "Reading SMI %Ld %s\n", atom.size, (char*)st->codec.extradata + 0x5a); |
690 } else | |
691 url_fskip(pb, atom.size); | |
692 | |
693 return 0; | |
694 } | |
695 | |
696 static int mov_read_avcC(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) | |
697 { | |
698 AVStream *st = c->fc->streams[c->fc->nb_streams-1]; | |
699 | |
700 av_free(st->codec.extradata); | |
701 | |
702 st->codec.extradata_size = atom.size; | |
703 st->codec.extradata = (uint8_t*) av_mallocz(st->codec.extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); | |
704 | |
705 if (st->codec.extradata) { | |
706 get_buffer(pb, st->codec.extradata, atom.size); | |
689 } else | 707 } else |
690 url_fskip(pb, atom.size); | 708 url_fskip(pb, atom.size); |
691 | 709 |
692 return 0; | 710 return 0; |
693 } | 711 } |
1479 { MKTAG( 'n', 'm', 'h', 'd' ), mov_read_leaf }, | 1497 { MKTAG( 'n', 'm', 'h', 'd' ), mov_read_leaf }, |
1480 { MKTAG( 'o', 'd', 'h', 'd' ), mov_read_default }, | 1498 { MKTAG( 'o', 'd', 'h', 'd' ), mov_read_default }, |
1481 { MKTAG( 's', 'd', 'h', 'd' ), mov_read_default }, | 1499 { MKTAG( 's', 'd', 'h', 'd' ), mov_read_default }, |
1482 { MKTAG( 's', 'k', 'i', 'p' ), mov_read_leaf }, | 1500 { MKTAG( 's', 'k', 'i', 'p' ), mov_read_leaf }, |
1483 { MKTAG( 's', 'm', 'h', 'd' ), mov_read_leaf }, /* sound media info header */ | 1501 { MKTAG( 's', 'm', 'h', 'd' ), mov_read_leaf }, /* sound media info header */ |
1484 { MKTAG( 'S', 'M', 'I', ' ' ), mov_read_smi }, /* Sorrenson extension ??? */ | 1502 { MKTAG( 'S', 'M', 'I', ' ' ), mov_read_smi }, /* Sorenson extension ??? */ |
1503 { MKTAG( 'a', 'v', 'c', 'C' ), mov_read_avcC }, | |
1485 { MKTAG( 's', 't', 'b', 'l' ), mov_read_default }, | 1504 { MKTAG( 's', 't', 'b', 'l' ), mov_read_default }, |
1486 { MKTAG( 's', 't', 'c', 'o' ), mov_read_stco }, | 1505 { MKTAG( 's', 't', 'c', 'o' ), mov_read_stco }, |
1487 { MKTAG( 's', 't', 'd', 'p' ), mov_read_default }, | 1506 { MKTAG( 's', 't', 'd', 'p' ), mov_read_default }, |
1488 { MKTAG( 's', 't', 's', 'c' ), mov_read_stsc }, | 1507 { MKTAG( 's', 't', 's', 'c' ), mov_read_stsc }, |
1489 { MKTAG( 's', 't', 's', 'd' ), mov_read_stsd }, /* sample description */ | 1508 { MKTAG( 's', 't', 's', 'd' ), mov_read_stsd }, /* sample description */ |