• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/ap/gpl/minidlna/ffmpeg-0.5.1/libavformat/

Lines Matching refs:track

97 static int mov_write_stco_tag(ByteIOContext *pb, MOVTrack *track)
109 put_be32(pb, track->entry); /* entry count */
110 for (i=0; i<track->entry; i++) {
112 put_be64(pb, track->cluster[i].pos);
114 put_be32(pb, track->cluster[i].pos);
120 static int mov_write_stsz_tag(ByteIOContext *pb, MOVTrack *track)
130 for (i=0; i<track->entry; i++) {
131 tst = track->cluster[i].size/track->cluster[i].entries;
136 entries += track->cluster[i].entries;
139 int sSize = track->cluster[0].size/track->cluster[0].entries;
146 for (i=0; i<track->entry; i++) {
147 for (j=0; j<track->cluster[i].entries; j++) {
148 put_be32(pb, track->cluster[i].size /
149 track->cluster[i].entries);
157 static int mov_write_stsc_tag(ByteIOContext *pb, MOVTrack *track)
167 put_be32(pb, track->entry); // entry count
168 for (i=0; i<track->entry; i++) {
169 if(oldval != track->cluster[i].samplesInChunk)
172 put_be32(pb, track->cluster[i].samplesInChunk); // samples per chunk
174 oldval = track->cluster[i].samplesInChunk;
187 static int mov_write_stss_tag(ByteIOContext *pb, MOVTrack *track)
196 put_be32(pb, track->entry); // entry count
197 for (i=0; i<track->entry; i++) {
198 if(track->cluster[i].key_frame == 1) {
210 static int mov_write_amr_tag(ByteIOContext *pb, MOVTrack *track)
213 if (track->mode == MODE_MOV) put_tag(pb, "samr");
224 static int mov_write_ac3_tag(ByteIOContext *pb, MOVTrack *track)
231 if (track->vosLen < 7)
237 init_get_bits(&gbc, track->vosData+4, track->vosLen-4);
272 static int mov_write_extradata_tag(ByteIOContext *pb, MOVTrack *track)
274 put_buffer(pb, track->enc->extradata, track->enc->extradata_size);
275 return track->enc->extradata_size;
302 static int mov_write_esds_tag(ByteIOContext *pb, MOVTrack *track) // Basic
305 int decoderSpecificInfoLen = track->vosLen ? descrLength(track->vosLen):0;
314 put_be16(pb, track->trackID);
321 if ((track->enc->codec_id == CODEC_ID_MP2 ||
322 track->enc->codec_id == CODEC_ID_MP3) &&
323 track->enc->sample_rate > 24000)
326 put_byte(pb, codec_get_tag(ff_mp4_obj_type, track->enc->codec_id));
330 if(track->enc->codec_type == CODEC_TYPE_AUDIO)
335 put_byte(pb, track->enc->rc_buffer_size>>(3+16)); // Buffersize DB (24 bits)
336 put_be16(pb, (track->enc->rc_buffer_size>>3)&0xFFFF); // Buffersize DB
338 put_be32(pb, FFMAX(track->enc->bit_rate, track->enc->rc_max_rate)); // maxbitrate (FIXME should be max rate in any 1 sec window)
339 if(track->enc->rc_max_rate != track->enc->rc_min_rate || track->enc->rc_min_rate==0)
342 put_be32(pb, track->enc->rc_max_rate); // avg bitrate
344 if (track->vosLen) {
346 putDescr(pb, 0x05, track->vosLen);
347 put_buffer(pb, track->vosData, track->vosLen);
356 static int mov_write_wave_tag(ByteIOContext *pb, MOVTrack *track)
365 put_le32(pb, track->tag);
367 if (track->enc->codec_id == CODEC_ID_AAC) {
372 mov_write_esds_tag(pb, track);
373 } else if (track->enc->codec_id == CODEC_ID_PCM_S24LE ||
374 track->enc->codec_id == CODEC_ID_PCM_S32LE) {
376 } else if (track->enc->codec_id == CODEC_ID_AMR_NB) {
377 mov_write_amr_tag(pb, track);
378 } else if (track->enc->codec_id == CODEC_ID_AC3) {
379 mov_write_ac3_tag(pb, track);
380 } else if (track->enc->codec_id == CODEC_ID_ALAC) {
381 mov_write_extradata_tag(pb, track);
390 static int mov_write_glbl_tag(ByteIOContext *pb, MOVTrack *track)
392 put_be32(pb, track->vosLen+8);
394 put_buffer(pb, track->vosData, track->vosLen);
395 return 8+track->vosLen;
398 static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack *track)
401 int version = track->mode == MODE_MOV &&
402 (track->audio_vbr ||
403 track->enc->codec_id == CODEC_ID_PCM_S32LE ||
404 track->enc->codec_id == CODEC_ID_PCM_S24LE);
407 put_le32(pb, track->tag); // store it byteswapped
417 if (track->mode == MODE_MOV) {
418 put_be16(pb, track->enc->channels);
419 if (track->enc->codec_id == CODEC_ID_PCM_U8 ||
420 track->enc->codec_id == CODEC_ID_PCM_S8)
424 put_be16(pb, track->audio_vbr ? -2 : 0); /* compression ID */
432 put_be16(pb, track->timescale); /* Time scale */
436 put_be32(pb, track->enc->frame_size); /* Samples per packet */
437 put_be32(pb, track->sampleSize / track->enc->channels); /* Bytes per packet */
438 put_be32(pb, track->sampleSize); /* Bytes per frame */
442 if(track->mode == MODE_MOV &&
443 (track->enc->codec_id == CODEC_ID_AAC ||
444 track->enc->codec_id == CODEC_ID_AC3 ||
445 track->enc->codec_id == CODEC_ID_AMR_NB ||
446 track->enc->codec_id == CODEC_ID_PCM_S24LE ||
447 track->enc->codec_id == CODEC_ID_PCM_S32LE ||
448 track->enc->codec_id == CODEC_ID_ALAC))
449 mov_write_wave_tag(pb, track);
450 else if(track->tag == MKTAG('m','p','4','a'))
451 mov_write_esds_tag(pb, track);
452 else if(track->enc->codec_id == CODEC_ID_AMR_NB)
453 mov_write_amr_tag(pb, track);
454 else if(track->enc->codec_id == CODEC_ID_AC3)
455 mov_write_ac3_tag(pb, track);
456 else if(track->enc->codec_id == CODEC_ID_ALAC)
457 mov_write_extradata_tag(pb, track);
458 else if(track->vosLen > 0)
459 mov_write_glbl_tag(pb, track);
489 static int mov_write_avcc_tag(ByteIOContext *pb, MOVTrack *track)
495 ff_isom_write_avcc(pb, track->vosData, track->vosLen);
500 static int mov_write_avid_tag(ByteIOContext *pb, MOVTrack *track)
521 put_be32(pb, AV_RB32(track->vosData + 0x28)); /* dnxhd cid, some id ? */
522 put_be32(pb, track->enc->width);
524 if (track->vosData[5] & 2) { // interlaced
525 put_be32(pb, track->enc->height/2);
530 put_be32(pb, track->enc->height);
533 if (track->enc->height == 1080)
576 static int mov_find_codec_tag(AVFormatContext *s, MOVTrack *track)
578 int tag = track->enc->codec_tag;
579 if (track->mode == MODE_MP4 || track->mode == MODE_PSP) {
580 if (!codec_get_tag(ff_mp4_obj_type, track->enc->codec_id))
582 if (track->enc->codec_id == CODEC_ID_H264) tag = MKTAG('a','v','c','1');
583 else if (track->enc->codec_id == CODEC_ID_AC3) tag = MKTAG('a','c','-','3');
584 else if (track->enc->codec_id == CODEC_ID_DIRAC) tag = MKTAG('d','r','a','c');
585 else if (track->enc->codec_id == CODEC_ID_MOV_TEXT) tag = MKTAG('t','x','3','g');
586 else if (track->enc->codec_type == CODEC_TYPE_VIDEO) tag = MKTAG('m','p','4','v');
587 else if (track->enc->codec_type == CODEC_TYPE_AUDIO) tag = MKTAG('m','p','4','a');
588 } else if (track->mode == MODE_IPOD) {
589 tag = codec_get_tag(codec_ipod_tags, track->enc->codec_id);
593 } else if (track->mode & MODE_3GP) {
594 tag = codec_get_tag(codec_3gp_tags, track->enc->codec_id);
595 } else if (!tag || (track->enc->strict_std_compliance >= FF_COMPLIANCE_NORMAL &&
597 track->enc->codec_id == CODEC_ID_RAWVIDEO))) {
598 if (track->enc->codec_id == CODEC_ID_DVVIDEO) {
599 if (track->enc->height == 480) /* NTSC */
600 if (track->enc->pix_fmt == PIX_FMT_YUV422P) tag = MKTAG('d','v','5','n');
602 else if (track->enc->pix_fmt == PIX_FMT_YUV422P) tag = MKTAG('d','v','5','p');
603 else if (track->enc->pix_fmt == PIX_FMT_YUV420P) tag = MKTAG('d','v','c','p');
605 } else if (track->enc->codec_id == CODEC_ID_RAWVIDEO) {
606 tag = codec_get_tag(mov_pix_fmt_tags, track->enc->pix_fmt);
608 tag = track->enc->codec_tag;
610 if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
611 tag = codec_get_tag(codec_movvideo_tags, track->enc->codec_id);
613 tag = codec_get_tag(codec_bmp_tags, track->enc->codec_id);
618 } else if (track->enc->codec_type == CODEC_TYPE_AUDIO) {
619 tag = codec_get_tag(codec_movaudio_tags, track->enc->codec_id);
621 int ms_tag = codec_get_tag(codec_wav_tags, track->enc->codec_id);
628 } else if (track->enc->codec_type == CODEC_TYPE_SUBTITLE) {
629 tag = codec_get_tag(ff_codec_movsubtitle_tags, track->enc->codec_id);
652 static int mov_write_subtitle_tag(ByteIOContext *pb, MOVTrack *track)
656 put_le32(pb, track->tag); // store it byteswapped
661 if (track->enc->extradata_size)
662 put_buffer(pb, track->enc->extradata, track->enc->extradata_size);
667 static int mov_write_video_tag(ByteIOContext *pb, MOVTrack *track)
673 put_le32(pb, track->tag); // store it byteswapped
680 if (track->mode == MODE_MOV) {
682 if(track->enc->codec_id == CODEC_ID_RAWVIDEO) {
694 put_be16(pb, track->enc->width); /* Video width */
695 put_be16(pb, track->height); /* Video height */
703 if (track->mode == MODE_MOV && track->enc->codec && track->enc->codec->name)
704 strncpy(compressor_name,track->enc->codec->name,31);
708 if (track->mode == MODE_MOV && track->enc->bits_per_coded_sample)
709 put_be16(pb, track->enc->bits_per_coded_sample);
713 if(track->tag == MKTAG('m','p','4','v'))
714 mov_write_esds_tag(pb, track);
715 else if(track->enc->codec_id == CODEC_ID_H263)
717 else if(track->enc->codec_id == CODEC_ID_SVQ3)
719 else if(track->enc->codec_id == CODEC_ID_DNXHD)
720 mov_write_avid_tag(pb, track);
721 else if(track->enc->codec_id == CODEC_ID_H264) {
722 mov_write_avcc_tag(pb, track);
723 if(track->mode == MODE_IPOD)
725 } else if(track->vosLen > 0)
726 mov_write_glbl_tag(pb, track);
731 static int mov_write_stsd_tag(ByteIOContext *pb, MOVTrack *track)
738 if (track->enc->codec_type == CODEC_TYPE_VIDEO)
739 mov_write_video_tag(pb, track);
740 else if (track->enc->codec_type == CODEC_TYPE_AUDIO)
741 mov_write_audio_tag(pb, track);
742 else if (track->enc->codec_type == CODEC_TYPE_SUBTITLE)
743 mov_write_subtitle_tag(pb, track);
747 static int mov_write_ctts_tag(ByteIOContext *pb, MOVTrack *track)
754 ctts_entries = av_malloc((track->entry + 1) * sizeof(*ctts_entries)); /* worst case */
756 ctts_entries[0].duration = track->cluster[0].cts;
757 for (i=1; i<track->entry; i++) {
758 if (track->cluster[i].cts == ctts_entries[entries].duration) {
762 ctts_entries[entries].duration = track->cluster[i].cts;
781 static int mov_write_stts_tag(ByteIOContext *pb, MOVTrack *track)
788 if (track->enc->codec_type == CODEC_TYPE_AUDIO && !track->audio_vbr) {
790 stts_entries[0].count = track->sampleCount;
794 stts_entries = av_malloc(track->entry * sizeof(*stts_entries)); /* worst case */
795 for (i=0; i<track->entry; i++) {
796 int64_t duration = i + 1 == track->entry ?
797 track->trackDuration - track->cluster[i].dts + track->cluster[0].dts : /* readjusting */
798 track->cluster[i+1].dts - track->cluster[i].dts;
836 static int mov_write_stbl_tag(ByteIOContext *pb, MOVTrack *track)
841 mov_write_stsd_tag(pb, track);
842 mov_write_stts_tag(pb, track);
843 if (track->enc->codec_type == CODEC_TYPE_VIDEO &&
844 track->hasKeyframes && track->hasKeyframes < track->entry)
845 mov_write_stss_tag(pb, track);
846 if (track->enc->codec_type == CODEC_TYPE_VIDEO &&
847 track->hasBframes)
848 mov_write_ctts_tag(pb, track);
849 mov_write_stsc_tag(pb, track);
850 mov_write_stsz_tag(pb, track);
851 mov_write_stco_tag(pb, track);
907 static int mov_write_hdlr_tag(ByteIOContext *pb, MOVTrack *track)
912 if (!track) { /* no media --> data handler */
917 hdlr = (track->mode == MODE_MOV) ? "mhlr" : "\0\0\0\0";
918 if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
921 } else if (track->enc->codec_type == CODEC_TYPE_AUDIO) {
924 } else if (track->enc->codec_type == CODEC_TYPE_SUBTITLE) {
925 if (track->mode == MODE_IPOD) hdlr_type = "sbtl";
944 static int mov_write_minf_tag(ByteIOContext *pb, MOVTrack *track)
949 if(track->enc->codec_type == CODEC_TYPE_VIDEO)
951 else if (track->enc->codec_type == CODEC_TYPE_AUDIO)
953 else if (track->enc->codec_type == CODEC_TYPE_SUBTITLE) {
954 if (track->mode == MODE_MOV) mov_write_gmhd_tag(pb);
957 if (track->mode == MODE_MOV) /* FIXME: Why do it for MODE_MOV only ? */
960 mov_write_stbl_tag(pb, track);
964 static int mov_write_mdhd_tag(ByteIOContext *pb, MOVTrack *track)
966 int version = track->trackDuration < INT32_MAX ? 0 : 1;
973 put_be64(pb, track->time);
974 put_be64(pb, track->time);
976 put_be32(pb, track->time); /* creation time */
977 put_be32(pb, track->time); /* modification time */
979 put_be32(pb, track->timescale); /* time scale (sample rate for audio) */
980 (version == 1) ? put_be64(pb, track->trackDuration) : put_be32(pb, track->trackDuration); /* duration */
981 put_be16(pb, track->language); /* language */
984 if(version!=0 && track->mode == MODE_MOV){
994 static int mov_write_mdia_tag(ByteIOContext *pb, MOVTrack *track)
999 mov_write_mdhd_tag(pb, track);
1000 mov_write_hdlr_tag(pb, track);
1001 mov_write_minf_tag(pb, track);
1005 static int mov_write_tkhd_tag(ByteIOContext *pb, MOVTrack *track, AVStream *st)
1007 int64_t duration = av_rescale_rnd(track->trackDuration, globalTimescale, track->timescale, AV_ROUND_UP);
1013 put_be24(pb, 0xf); /* flags (track enabled) */
1015 put_be64(pb, track->time);
1016 put_be64(pb, track->time);
1018 put_be32(pb, track->time); /* creation time */
1019 put_be32(pb, track->time); /* modification time */
1021 put_be32(pb, track->trackID); /* track-id */
1029 if(track->enc->codec_type == CODEC_TYPE_AUDIO)
1047 if(track->enc->codec_type == CODEC_TYPE_VIDEO ||
1048 track->enc->codec_type == CODEC_TYPE_SUBTITLE) {
1050 if(!sample_aspect_ratio || track->height != track->enc->height)
1052 put_be32(pb, sample_aspect_ratio * track->enc->width*0x10000);
1053 put_be32(pb, track->height*0x10000);
1063 static int mov_write_edts_tag(ByteIOContext *pb, MOVTrack *track)
1072 put_be32(pb, av_rescale_rnd(track->trackDuration, globalTimescale, track->timescale, AV_ROUND_UP)); /* duration ... doesn't seem to effect psp */
1074 put_be32(pb, track->cluster[0].cts); /* first pts is cts since dts is 0 */
1079 // goes at the end of each track! ... Critical for PSP playback ("Incompatible data" without it)
1098 static int mov_write_trak_tag(ByteIOContext *pb, MOVTrack *track, AVStream *st)
1103 mov_write_tkhd_tag(pb, track, st);
1104 if (track->mode == MODE_PSP || track->hasBframes)
1105 mov_write_edts_tag(pb, track); // PSP Movies require edts box
1106 mov_write_mdia_tag(pb, track);
1107 if (track->mode == MODE_PSP)
1108 mov_write_uuid_tag_psp(pb,track); // PSP Movies require this uuid box
1157 (version == 1) ? put_be64(pb, maxTrackLen) : put_be32(pb, maxTrackLen); /* duration of longest track */
1182 put_be32(pb, maxTrackID+1); /* Next track id */
1257 /* iTunes track number */
1261 AVMetadataTag *t = av_metadata_get(s->metadata, "track", NULL, 0);
1262 int size = 0, track = t ? atoi(t->value) : 0;
1263 if (track) {
1274 put_be16(pb, track); // track number
1275 put_be16(pb, 0); // total track number
1661 MOVTrack *track= &mov->tracks[i];
1664 track->enc = st->codec;
1665 track->language = ff_mov_iso639_to_lang(lang?lang->value:"und", mov->mode!=MODE_MOV);
1666 if (track->language < 0)
1667 track->language = 0;
1668 track->mode = mov->mode;
1669 track->tag = mov_find_codec_tag(s, track);
1670 if (!track->tag) {
1671 av_log(s, AV_LOG_ERROR, "track %d: could not find tag, "
1676 if (track->tag == MKTAG('m','x','3','p') || track->tag == MKTAG('m','x','3','n') ||
1677 track->tag == MKTAG('m','x','4','p') || track->tag == MKTAG('m','x','4','n') ||
1678 track->tag == MKTAG('m','x','5','p') || track->tag == MKTAG('m','x','5','n')) {
1683 track->height = track->tag>>24 == 'n' ? 486 : 576;
1685 track->height = st->codec->height;
1686 track->timescale = st->codec->time_base.den;
1688 if (track->mode == MODE_MOV && track->timescale > 100000)
1694 track->timescale = st->codec->sample_rate;
1697 av_log(s, AV_LOG_ERROR, "track %d: codec frame size is not set\n", i);
1700 track->audio_vbr = 1;
1703 track->sampleSize = (av_get_bits_per_sample(st->codec->codec_id) >> 3) * st->codec->channels;
1705 if(track->mode != MODE_MOV &&
1706 track->enc->codec_id == CODEC_ID_MP3 && track->enc->sample_rate < 16000){
1707 av_log(s, AV_LOG_ERROR, "track %d: muxing mp3 at %dhz is not supported\n",
1708 i, track->enc->sample_rate);
1712 track->timescale = st->codec->time_base.den;