mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-28 22:10:34 +00:00
Merge commit 'bef3b1f59f036aba4a5fe599b2480f6bd9e6b280'
* commit 'bef3b1f59f036aba4a5fe599b2480f6bd9e6b280': movenc: Allow setting start_dts/start_cts before writing actual packets Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is contained in:
commit
3e0daf0716
@ -4564,9 +4564,6 @@ static int mov_write_single_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
int64_t frag_duration = 0;
|
||||
int size = pkt->size;
|
||||
|
||||
if (!pkt->size)
|
||||
return 0; /* Discard 0 sized packets */
|
||||
|
||||
if (mov->flags & FF_MOV_FLAG_FRAG_DISCONT) {
|
||||
int i;
|
||||
for (i = 0; i < s->nb_streams; i++)
|
||||
@ -4574,6 +4571,18 @@ static int mov_write_single_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
mov->flags &= ~FF_MOV_FLAG_FRAG_DISCONT;
|
||||
}
|
||||
|
||||
if (!pkt->size) {
|
||||
if (trk->start_dts == AV_NOPTS_VALUE && trk->frag_discont) {
|
||||
trk->start_dts = pkt->dts;
|
||||
if (pkt->pts != AV_NOPTS_VALUE)
|
||||
trk->start_cts = pkt->pts - pkt->dts;
|
||||
else
|
||||
trk->start_cts = 0;
|
||||
}
|
||||
|
||||
return 0; /* Discard 0 sized packets */
|
||||
}
|
||||
|
||||
if (trk->entry && pkt->stream_index < s->nb_streams)
|
||||
frag_duration = av_rescale_q(pkt->dts - trk->cluster[0].dts,
|
||||
s->streams[pkt->stream_index]->time_base,
|
||||
@ -4628,7 +4637,8 @@ static int mov_write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
int i;
|
||||
MOVMuxContext *mov = s->priv_data;
|
||||
|
||||
if (!pkt->size) return 0; /* Discard 0 sized packets */
|
||||
if (!pkt->size)
|
||||
return mov_write_single_packet(s, pkt); /* Passthrough. */
|
||||
|
||||
/*
|
||||
* Subtitles require special handling.
|
||||
|
Loading…
Reference in New Issue
Block a user