diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-08-26 14:31:07 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-08-26 14:36:00 +0200 |
commit | e43c672b568e195a01e8748db096eff715eb7b5f (patch) | |
tree | 379e07079a126a987a3dc0b0397953c822d025d1 /libavformat/movenc.c | |
parent | d3ff77023e941e56242297071c1d8074490ed70a (diff) | |
parent | b89e8759e053792704741d08cbc41c9ac3c7ed63 (diff) | |
download | ffmpeg-e43c672b568e195a01e8748db096eff715eb7b5f.tar.gz |
Merge commit 'b89e8759e053792704741d08cbc41c9ac3c7ed63'
* commit 'b89e8759e053792704741d08cbc41c9ac3c7ed63':
mov: Write tmcd extradata
This commit should make no difference as we had tmcd support
already, which is not changed.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/movenc.c')
-rw-r--r-- | libavformat/movenc.c | 50 |
1 files changed, 30 insertions, 20 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index a46e8f888d..2fcdaad1dd 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -1140,9 +1140,30 @@ static int mov_write_video_tag(AVIOContext *pb, MOVTrack *track) return update_size(pb, pos); } +static int mov_write_rtp_tag(AVIOContext *pb, MOVTrack *track) +{ + int64_t pos = avio_tell(pb); + avio_wb32(pb, 0); /* size */ + ffio_wfourcc(pb, "rtp "); + avio_wb32(pb, 0); /* Reserved */ + avio_wb16(pb, 0); /* Reserved */ + avio_wb16(pb, 1); /* Data-reference index */ + + avio_wb16(pb, 1); /* Hint track version */ + avio_wb16(pb, 1); /* Highest compatible version */ + avio_wb32(pb, track->max_packet_size); /* Max packet size */ + + avio_wb32(pb, 12); /* size */ + ffio_wfourcc(pb, "tims"); + avio_wb32(pb, track->timescale); + + return update_size(pb, pos); +} + static int mov_write_tmcd_tag(AVIOContext *pb, MOVTrack *track) { int64_t pos = avio_tell(pb); +#if 1 int frame_duration = av_rescale(track->timescale, track->enc->time_base.num, track->enc->time_base.den); int nb_frames = 1.0/av_q2d(track->enc->time_base) + 0.5; @@ -1162,26 +1183,15 @@ static int mov_write_tmcd_tag(AVIOContext *pb, MOVTrack *track) avio_w8(pb, nb_frames); /* Number of frames */ avio_wb24(pb, 0); /* Reserved */ /* TODO: source reference string */ - return update_size(pb, pos); -} +#else -static int mov_write_rtp_tag(AVIOContext *pb, MOVTrack *track) -{ - int64_t pos = avio_tell(pb); avio_wb32(pb, 0); /* size */ - ffio_wfourcc(pb, "rtp "); - avio_wb32(pb, 0); /* Reserved */ - avio_wb16(pb, 0); /* Reserved */ - avio_wb16(pb, 1); /* Data-reference index */ - - avio_wb16(pb, 1); /* Hint track version */ - avio_wb16(pb, 1); /* Highest compatible version */ - avio_wb32(pb, track->max_packet_size); /* Max packet size */ - - avio_wb32(pb, 12); /* size */ - ffio_wfourcc(pb, "tims"); - avio_wb32(pb, track->timescale); - + ffio_wfourcc(pb, "tmcd"); /* Data format */ + avio_wb32(pb, 0); /* Reserved */ + avio_wb32(pb, 1); /* Data reference index */ + if (track->enc->extradata_size) + avio_write(pb, track->enc->extradata, track->enc->extradata_size); +#endif return update_size(pb, pos); } @@ -1510,10 +1520,10 @@ static int mov_write_minf_tag(AVIOContext *pb, MOVTrack *track) } else { mov_write_nmhd_tag(pb); } - } else if (track->tag == MKTAG('t','m','c','d')) { - mov_write_gmhd_tag(pb, track); } else if (track->tag == MKTAG('r','t','p',' ')) { mov_write_hmhd_tag(pb); + } else if (track->tag == MKTAG('t','m','c','d')) { + mov_write_gmhd_tag(pb, track); } if (track->mode == MODE_MOV) /* FIXME: Why do it for MODE_MOV only ? */ mov_write_hdlr_tag(pb, NULL); |