mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
move actual writing before so new size can be taken into account
Originally committed as revision 16623 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
a97772b166
commit
5d2160a0dd
@ -1732,6 +1732,14 @@ static int mov_write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
memcpy(trk->vosData, enc->extradata, trk->vosLen);
|
||||
}
|
||||
|
||||
if (enc->codec_id == CODEC_ID_H264 && trk->vosLen > 0 && *(uint8_t *)trk->vosData != 1) {
|
||||
/* from x264 or from bytestream h264 */
|
||||
/* nal reformating needed */
|
||||
size = ff_avc_parse_nal_units(pb, pkt->data, pkt->size);
|
||||
} else {
|
||||
put_buffer(pb, pkt->data, size);
|
||||
}
|
||||
|
||||
if ((enc->codec_id == CODEC_ID_DNXHD ||
|
||||
enc->codec_id == CODEC_ID_AC3) && !trk->vosLen) {
|
||||
/* copy frame to create needed atoms */
|
||||
@ -1748,7 +1756,7 @@ static int mov_write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
return -1;
|
||||
}
|
||||
|
||||
trk->cluster[trk->entry].pos = url_ftell(pb);
|
||||
trk->cluster[trk->entry].pos = url_ftell(pb) - size;
|
||||
trk->cluster[trk->entry].samplesInChunk = samplesInChunk;
|
||||
trk->cluster[trk->entry].size = size;
|
||||
trk->cluster[trk->entry].entries = samplesInChunk;
|
||||
@ -1769,14 +1777,6 @@ static int mov_write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
trk->sampleCount += samplesInChunk;
|
||||
mov->mdat_size += size;
|
||||
|
||||
if (enc->codec_id == CODEC_ID_H264 && trk->vosLen > 0 && *(uint8_t *)trk->vosData != 1) {
|
||||
/* from x264 or from bytestream h264 */
|
||||
/* nal reformating needed */
|
||||
ff_avc_parse_nal_units(pb, pkt->data, pkt->size);
|
||||
} else {
|
||||
put_buffer(pb, pkt->data, size);
|
||||
}
|
||||
|
||||
put_flush_packet(pb);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user