Browse code

mov: Use defines for sample flags in fragments

Signed-off-by: Martin Storsjö <martin@martin.st>

Martin Storsjö authored on 2012/02/17 05:12:12
Showing 3 changed files
... ...
@@ -171,6 +171,16 @@ void ff_mp4_parse_es_descr(AVIOContext *pb, int *es_id);
171 171
 #define MOV_TRUN_SAMPLE_FLAGS          0x400
172 172
 #define MOV_TRUN_SAMPLE_CTS            0x800
173 173
 
174
+#define MOV_FRAG_SAMPLE_FLAG_DEGRADATION_PRIORITY_MASK 0x0000ffff
175
+#define MOV_FRAG_SAMPLE_FLAG_IS_NON_SYNC               0x00010000
176
+#define MOV_FRAG_SAMPLE_FLAG_PADDING_MASK              0x000e0000
177
+#define MOV_FRAG_SAMPLE_FLAG_REDUNDANCY_MASK           0x00300000
178
+#define MOV_FRAG_SAMPLE_FLAG_DEPENDED_MASK             0x00c00000
179
+#define MOV_FRAG_SAMPLE_FLAG_DEPENDS_MASK              0x03000000
180
+
181
+#define MOV_FRAG_SAMPLE_FLAG_DEPENDS_NO                0x02000000
182
+#define MOV_FRAG_SAMPLE_FLAG_DEPENDS_YES               0x01000000
183
+
174 184
 int ff_mov_read_esds(AVFormatContext *fc, AVIOContext *pb, MOVAtom atom);
175 185
 enum CodecID ff_mov_get_lpcm_codec_id(int bps, int flags);
176 186
 
... ...
@@ -2282,7 +2282,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
2282 2282
                                                   avio_rb32(pb) : 0;
2283 2283
         sc->ctts_count++;
2284 2284
         if ((keyframe = st->codec->codec_type == AVMEDIA_TYPE_AUDIO ||
2285
-             (flags & MOV_TRUN_FIRST_SAMPLE_FLAGS && !i && !(sample_flags & 0xffff0000)) || sample_flags & 0x2000000))
2285
+             (flags & MOV_TRUN_FIRST_SAMPLE_FLAGS && !i && !(sample_flags & ~MOV_FRAG_SAMPLE_FLAG_DEGRADATION_PRIORITY_MASK)) || sample_flags & MOV_FRAG_SAMPLE_FLAG_DEPENDS_NO))
2286 2286
             distance = 0;
2287 2287
         av_add_index_entry(st, offset, dts, sample_size, distance,
2288 2288
                            keyframe ? AVINDEX_KEYFRAME : 0);
... ...
@@ -2214,7 +2214,8 @@ static int mov_write_tfhd_tag(AVIOContext *pb, MOVTrack *track,
2214 2214
     if (flags & MOV_TFHD_DEFAULT_FLAGS) {
2215 2215
         track->default_sample_flags =
2216 2216
             track->enc->codec_type == AVMEDIA_TYPE_VIDEO ?
2217
-            0x01010000 : 0x02000000;
2217
+            (MOV_FRAG_SAMPLE_FLAG_DEPENDS_YES | MOV_FRAG_SAMPLE_FLAG_IS_NON_SYNC) :
2218
+            MOV_FRAG_SAMPLE_FLAG_DEPENDS_NO;
2218 2219
         avio_wb32(pb, track->default_sample_flags);
2219 2220
     }
2220 2221
 
... ...
@@ -2223,7 +2224,8 @@ static int mov_write_tfhd_tag(AVIOContext *pb, MOVTrack *track,
2223 2223
 
2224 2224
 static uint32_t get_sample_flags(MOVTrack *track, MOVIentry *entry)
2225 2225
 {
2226
-    return entry->flags & MOV_SYNC_SAMPLE ? 0x02000000 : 0x01010000;
2226
+    return entry->flags & MOV_SYNC_SAMPLE ? MOV_FRAG_SAMPLE_FLAG_DEPENDS_NO :
2227
+           (MOV_FRAG_SAMPLE_FLAG_DEPENDS_YES | MOV_FRAG_SAMPLE_FLAG_IS_NON_SYNC);
2227 2228
 }
2228 2229
 
2229 2230
 static int mov_write_trun_tag(AVIOContext *pb, MOVTrack *track)