use flags field and remove key_frame field
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Thu, 14 May 2009 21:05:52 +0000 (21:05 +0000)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Thu, 14 May 2009 21:05:52 +0000 (21:05 +0000)
Originally committed as revision 18831 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/movenc.c

index 809a4f8..624189a 100644 (file)
 #define MODE_IPOD 0x20
 
 typedef struct MOVIentry {
 #define MODE_IPOD 0x20
 
 typedef struct MOVIentry {
-    unsigned int flags, size;
+    unsigned int size;
     uint64_t     pos;
     unsigned int samplesInChunk;
     uint64_t     pos;
     unsigned int samplesInChunk;
-    char         key_frame;
     unsigned int entries;
     int          cts;
     int64_t      dts;
     unsigned int entries;
     int          cts;
     int64_t      dts;
+#define MOV_SYNC_SAMPLE         0x0001
+    uint32_t     flags;
 } MOVIentry;
 
 typedef struct MOVIndex {
 } MOVIentry;
 
 typedef struct MOVIndex {
@@ -198,7 +199,7 @@ static int mov_write_stss_tag(ByteIOContext *pb, MOVTrack *track)
     entryPos = url_ftell(pb);
     put_be32(pb, track->entry); // entry count
     for (i=0; i<track->entry; i++) {
     entryPos = url_ftell(pb);
     put_be32(pb, track->entry); // entry count
     for (i=0; i<track->entry; i++) {
-        if(track->cluster[i].key_frame == 1) {
+        if (track->cluster[i].flags & MOV_SYNC_SAMPLE) {
             put_be32(pb, i+1);
             index++;
         }
             put_be32(pb, i+1);
             index++;
         }
@@ -1877,9 +1878,10 @@ static int mov_write_packet(AVFormatContext *s, AVPacket *pkt)
     if (pkt->dts != pkt->pts)
         trk->hasBframes = 1;
     trk->cluster[trk->entry].cts = pkt->pts - pkt->dts;
     if (pkt->dts != pkt->pts)
         trk->hasBframes = 1;
     trk->cluster[trk->entry].cts = pkt->pts - pkt->dts;
-    trk->cluster[trk->entry].key_frame = !!(pkt->flags & PKT_FLAG_KEY);
-    if(trk->cluster[trk->entry].key_frame)
+    if (pkt->flags & PKT_FLAG_KEY) {
+        trk->cluster[trk->entry].flags = MOV_SYNC_SAMPLE;
         trk->hasKeyframes++;
         trk->hasKeyframes++;
+    }
     trk->entry++;
     trk->sampleCount += samplesInChunk;
     mov->mdat_size += size;
     trk->entry++;
     trk->sampleCount += samplesInChunk;
     mov->mdat_size += size;