use flags field and remove key_frame field
Originally committed as revision 18831 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
fe335ff530
commit
ab4752e382
@ -44,13 +44,14 @@
|
|||||||
#define MODE_IPOD 0x20
|
#define MODE_IPOD 0x20
|
||||||
|
|
||||||
typedef struct MOVIentry {
|
typedef struct MOVIentry {
|
||||||
unsigned int flags, size;
|
unsigned int size;
|
||||||
uint64_t pos;
|
uint64_t pos;
|
||||||
unsigned int samplesInChunk;
|
unsigned int samplesInChunk;
|
||||||
char key_frame;
|
|
||||||
unsigned int entries;
|
unsigned int entries;
|
||||||
int cts;
|
int cts;
|
||||||
int64_t dts;
|
int64_t dts;
|
||||||
|
#define MOV_SYNC_SAMPLE 0x0001
|
||||||
|
uint32_t flags;
|
||||||
} MOVIentry;
|
} MOVIentry;
|
||||||
|
|
||||||
typedef struct MOVIndex {
|
typedef struct MOVIndex {
|
||||||
@ -198,7 +199,7 @@ static int mov_write_stss_tag(ByteIOContext *pb, MOVTrack *track)
|
|||||||
entryPos = url_ftell(pb);
|
entryPos = url_ftell(pb);
|
||||||
put_be32(pb, track->entry); // entry count
|
put_be32(pb, track->entry); // entry count
|
||||||
for (i=0; i<track->entry; i++) {
|
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);
|
put_be32(pb, i+1);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
@ -1877,9 +1878,10 @@ static int mov_write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
if (pkt->dts != pkt->pts)
|
if (pkt->dts != pkt->pts)
|
||||||
trk->hasBframes = 1;
|
trk->hasBframes = 1;
|
||||||
trk->cluster[trk->entry].cts = pkt->pts - pkt->dts;
|
trk->cluster[trk->entry].cts = pkt->pts - pkt->dts;
|
||||||
trk->cluster[trk->entry].key_frame = !!(pkt->flags & PKT_FLAG_KEY);
|
if (pkt->flags & PKT_FLAG_KEY) {
|
||||||
if(trk->cluster[trk->entry].key_frame)
|
trk->cluster[trk->entry].flags = MOV_SYNC_SAMPLE;
|
||||||
trk->hasKeyframes++;
|
trk->hasKeyframes++;
|
||||||
|
}
|
||||||
trk->entry++;
|
trk->entry++;
|
||||||
trk->sampleCount += samplesInChunk;
|
trk->sampleCount += samplesInChunk;
|
||||||
mov->mdat_size += size;
|
mov->mdat_size += size;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user