Browse Source

avformat/mux: Restore original ts in write_packet on error

Restore original timestamps in write_packet() if the
actual write operation was not successfull. This allows
to pass the same packet to nonblocking muxer repeatedly
without corrupting the timestamps.

Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
tags/n3.2
Jan Sebechlebsky Michael Niedermayer 9 years ago
parent
commit
2fc9a3eb7a
1 changed files with 9 additions and 0 deletions
  1. +9
    -0
      libavformat/mux.c

+ 9
- 0
libavformat/mux.c View File

@@ -657,6 +657,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
static int write_packet(AVFormatContext *s, AVPacket *pkt)
{
int ret, did_split;
int64_t pts_backup, dts_backup;

pts_backup = pkt->pts;
dts_backup = pkt->dts;

if (s->output_ts_offset) {
AVStream *st = s->streams[pkt->stream_index];
@@ -743,6 +747,11 @@ fail:
if (did_split)
av_packet_merge_side_data(pkt);

if (ret < 0) {
pkt->pts = pts_backup;
pkt->dts = dts_backup;
}

return ret;
}



Loading…
Cancel
Save