diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2013-08-25 13:02:33 +0200 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2013-08-25 13:49:21 +0200 |
commit | b89e8759e053792704741d08cbc41c9ac3c7ed63 (patch) | |
tree | 07027e319a19fb5dcaaecb21b5cc0d69250ddc70 | |
parent | 5b41eb91e0083755de8c35e8cd005896ec3ab31f (diff) | |
download | ffmpeg-b89e8759e053792704741d08cbc41c9ac3c7ed63.tar.gz |
mov: Write tmcd extradata
-rw-r--r-- | libavformat/movenc.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 577c7e848e..07807612f3 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -1060,6 +1060,19 @@ static int mov_write_rtp_tag(AVIOContext *pb, MOVTrack *track) return update_size(pb, pos); } +static int mov_write_tmcd_tag(AVIOContext *pb, MOVTrack *track) +{ + int64_t pos = avio_tell(pb); + + avio_wb32(pb, 0); /* size */ + 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); + return update_size(pb, pos); +} + static int mov_write_stsd_tag(AVIOContext *pb, MOVTrack *track) { int64_t pos = avio_tell(pb); @@ -1075,6 +1088,8 @@ static int mov_write_stsd_tag(AVIOContext *pb, MOVTrack *track) mov_write_subtitle_tag(pb, track); else if (track->enc->codec_tag == MKTAG('r','t','p',' ')) mov_write_rtp_tag(pb, track); + else if (track->enc->codec_tag == MKTAG('t','m','c','d')) + mov_write_tmcd_tag(pb, track); return update_size(pb, pos); } @@ -1324,6 +1339,8 @@ static int mov_write_minf_tag(AVIOContext *pb, MOVTrack *track) else mov_write_nmhd_tag(pb); } 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); } if (track->mode == MODE_MOV) /* FIXME: Why do it for MODE_MOV only ? */ mov_write_hdlr_tag(pb, NULL); |