summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-03-03 14:04:48 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-03-03 14:05:09 +0100
commit3fac99cd9d002423a746522736f93742c84df018 (patch)
tree507fd36cdd9c73d5f28c55773a293bb63f09d881 /libavformat
parentd98aa7cdc19b6392ab3a29b11305104338166ddc (diff)
parent981cf0c300037950be2ed20505ff8b20e7a53224 (diff)
Merge remote-tracking branch 'cehoyos/master'
* cehoyos/master: movenc: Do not flag secondary audio and subtitle tracks as enabled. Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/movenc.c10
-rw-r--r--libavformat/movenc.h1
2 files changed, 10 insertions, 1 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 510cef5bdb..42496b57e9 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1602,7 +1602,7 @@ static int mov_write_tkhd_tag(AVIOContext *pb, MOVTrack *track, AVStream *st)
(version == 1) ? avio_wb32(pb, 104) : avio_wb32(pb, 92); /* size */
ffio_wfourcc(pb, "tkhd");
avio_w8(pb, version);
- avio_wb24(pb, 0xf); /* flags (track enabled) */
+ avio_wb24(pb, track->secondary ? 0x2 : 0xf); /* flags (first track enabled) */
if (version == 1) {
avio_wb64(pb, track->time);
avio_wb64(pb, track->time);
@@ -2315,6 +2315,7 @@ static int mov_write_moov_tag(AVIOContext *pb, MOVMuxContext *mov,
{
int i;
int64_t pos = avio_tell(pb);
+ int not_first[AVMEDIA_TYPE_NB]={0};
avio_wb32(pb, 0); /* size placeholder*/
ffio_wfourcc(pb, "moov");
@@ -2355,6 +2356,13 @@ static int mov_write_moov_tag(AVIOContext *pb, MOVMuxContext *mov,
mov_write_iods_tag(pb, mov);
for (i=0; i<mov->nb_streams; i++) {
if (mov->tracks[i].entry > 0 || mov->flags & FF_MOV_FLAG_FRAGMENT) {
+ if(i < s->nb_streams){
+ int codec_type= s->streams[i]->codec->codec_type;
+ if(codec_type==AVMEDIA_TYPE_AUDIO || codec_type==AVMEDIA_TYPE_SUBTITLE){
+ mov->tracks[i].secondary= not_first[codec_type];
+ not_first[codec_type]= 1;
+ }
+ }
mov_write_trak_tag(pb, mov, &(mov->tracks[i]), i < s->nb_streams ? s->streams[i] : NULL);
}
}
diff --git a/libavformat/movenc.h b/libavformat/movenc.h
index b5d066f4d9..a5db8950ab 100644
--- a/libavformat/movenc.h
+++ b/libavformat/movenc.h
@@ -94,6 +94,7 @@ typedef struct MOVIndex {
#define MOV_TIMECODE_FLAG_ALLOWNEGATIVE 0x0004
uint32_t timecode_flags;
int language;
+ int secondary;
int track_id;
int tag; ///< stsd fourcc
AVCodecContext *enc;