From 3eec23f3cd7b0d8ef0a545089f75b55390a8ddb9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20Storsj=C3=B6?= Date: Thu, 16 Feb 2012 20:58:09 +0100 Subject: [PATCH] mov: Use defines for trun flags MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Storsjö --- libavformat/isom.h | 7 +++++++ libavformat/mov.c | 15 ++++++++------- libavformat/movenc.c | 24 ++++++++++++------------ 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/libavformat/isom.h b/libavformat/isom.h index 88eb44ae94..88cda27c43 100644 --- a/libavformat/isom.h +++ b/libavformat/isom.h @@ -164,6 +164,13 @@ void ff_mp4_parse_es_descr(AVIOContext *pb, int *es_id); #define MOV_TFHD_DEFAULT_FLAGS 0x20 #define MOV_TFHD_DURATION_IS_EMPTY 0x010000 +#define MOV_TRUN_DATA_OFFSET 0x01 +#define MOV_TRUN_FIRST_SAMPLE_FLAGS 0x04 +#define MOV_TRUN_SAMPLE_DURATION 0x100 +#define MOV_TRUN_SAMPLE_SIZE 0x200 +#define MOV_TRUN_SAMPLE_FLAGS 0x400 +#define MOV_TRUN_SAMPLE_CTS 0x800 + int ff_mov_read_esds(AVFormatContext *fc, AVIOContext *pb, MOVAtom atom); enum CodecID ff_mov_get_lpcm_codec_id(int bps, int flags); diff --git a/libavformat/mov.c b/libavformat/mov.c index 74b2f2abf1..5f1302d6c3 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2262,8 +2262,8 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom) return AVERROR(ENOMEM); sc->ctts_data = ctts_data; - if (flags & 0x001) data_offset = avio_rb32(pb); - if (flags & 0x004) first_sample_flags = avio_rb32(pb); + if (flags & MOV_TRUN_DATA_OFFSET) data_offset = avio_rb32(pb); + if (flags & MOV_TRUN_FIRST_SAMPLE_FLAGS) first_sample_flags = avio_rb32(pb); dts = sc->track_end - sc->time_offset; offset = frag->base_data_offset + data_offset; distance = 0; @@ -2274,14 +2274,15 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom) unsigned sample_duration = frag->duration; int keyframe; - if (flags & 0x100) sample_duration = avio_rb32(pb); - if (flags & 0x200) sample_size = avio_rb32(pb); - if (flags & 0x400) sample_flags = avio_rb32(pb); + if (flags & MOV_TRUN_SAMPLE_DURATION) sample_duration = avio_rb32(pb); + if (flags & MOV_TRUN_SAMPLE_SIZE) sample_size = avio_rb32(pb); + if (flags & MOV_TRUN_SAMPLE_FLAGS) sample_flags = avio_rb32(pb); sc->ctts_data[sc->ctts_count].count = 1; - sc->ctts_data[sc->ctts_count].duration = (flags & 0x800) ? avio_rb32(pb) : 0; + sc->ctts_data[sc->ctts_count].duration = (flags & MOV_TRUN_SAMPLE_CTS) ? + avio_rb32(pb) : 0; sc->ctts_count++; if ((keyframe = st->codec->codec_type == AVMEDIA_TYPE_AUDIO || - (flags & 0x004 && !i && !(sample_flags & 0xffff0000)) || sample_flags & 0x2000000)) + (flags & MOV_TRUN_FIRST_SAMPLE_FLAGS && !i && !(sample_flags & 0xffff0000)) || sample_flags & 0x2000000)) distance = 0; av_add_index_entry(st, offset, dts, sample_size, distance, keyframe ? AVINDEX_KEYFRAME : 0); diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 6c17e5ad16..22c918391c 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -2229,7 +2229,7 @@ static uint32_t get_sample_flags(MOVTrack *track, MOVIentry *entry) static int mov_write_trun_tag(AVIOContext *pb, MOVTrack *track) { int64_t pos = avio_tell(pb); - uint32_t flags = 1; /* data-offset-present */ + uint32_t flags = MOV_TRUN_DATA_OFFSET; int i; for (i = 0; i < track->entry; i++) { @@ -2237,16 +2237,16 @@ static int mov_write_trun_tag(AVIOContext *pb, MOVTrack *track) track->track_duration - track->cluster[i].dts + track->start_dts : track->cluster[i + 1].dts - track->cluster[i].dts; if (duration != track->default_duration) - flags |= 0x100; /* sample-duration-present */ + flags |= MOV_TRUN_SAMPLE_DURATION; if (track->cluster[i].size != track->default_size) - flags |= 0x200; /* sample-size-present */ + flags |= MOV_TRUN_SAMPLE_SIZE; if (i > 0 && get_sample_flags(track, &track->cluster[i]) != track->default_sample_flags) - flags |= 0x400; /* sample-flags-present */ + flags |= MOV_TRUN_SAMPLE_FLAGS; } - if (!(flags & 0x400)) - flags |= 0x4; /* first-sample-flags-present */ + if (!(flags & MOV_TRUN_SAMPLE_FLAGS)) + flags |= MOV_TRUN_FIRST_SAMPLE_FLAGS; if (track->flags & MOV_TRACK_CTTS) - flags |= 0x800; /* sample-composition-time-offsets-present */ + flags |= MOV_TRUN_SAMPLE_CTS; avio_wb32(pb, 0); /* size placeholder */ ffio_wfourcc(pb, "trun"); @@ -2256,20 +2256,20 @@ static int mov_write_trun_tag(AVIOContext *pb, MOVTrack *track) avio_wb32(pb, track->entry); /* sample count */ track->moof_size_offset = avio_tell(pb); avio_wb32(pb, 0); /* data offset */ - if (flags & 0x4) /* first sample flags */ + if (flags & MOV_TRUN_FIRST_SAMPLE_FLAGS) avio_wb32(pb, get_sample_flags(track, &track->cluster[0])); for (i = 0; i < track->entry; i++) { int64_t duration = i + 1 == track->entry ? track->track_duration - track->cluster[i].dts + track->start_dts : track->cluster[i + 1].dts - track->cluster[i].dts; - if (flags & 0x100) + if (flags & MOV_TRUN_SAMPLE_DURATION) avio_wb32(pb, duration); - if (flags & 0x200) + if (flags & MOV_TRUN_SAMPLE_SIZE) avio_wb32(pb, track->cluster[i].size); - if (flags & 0x400) + if (flags & MOV_TRUN_SAMPLE_FLAGS) avio_wb32(pb, get_sample_flags(track, &track->cluster[i])); - if (flags & 0x800) + if (flags & MOV_TRUN_SAMPLE_CTS) avio_wb32(pb, track->cluster[i].cts); } -- 2.11.0