avformat/mux: keep AVPacket fields consistent in ff_write_chained()

This might have caused double frees in theory, i do not have a test case
though

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-07-24 22:33:21 +02:00
parent d44b8f0a47
commit 383a04a127

@ -963,6 +963,7 @@ int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt,
AVFormatContext *src) AVFormatContext *src)
{ {
AVPacket local_pkt; AVPacket local_pkt;
int ret;
local_pkt = *pkt; local_pkt = *pkt;
local_pkt.stream_index = dst_stream; local_pkt.stream_index = dst_stream;
@ -978,7 +979,11 @@ int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt,
local_pkt.duration = av_rescale_q(pkt->duration, local_pkt.duration = av_rescale_q(pkt->duration,
src->streams[pkt->stream_index]->time_base, src->streams[pkt->stream_index]->time_base,
dst->streams[dst_stream]->time_base); dst->streams[dst_stream]->time_base);
return av_write_frame(dst, &local_pkt);
ret = av_write_frame(dst, &local_pkt);
pkt->buf = local_pkt.buf;
pkt->destruct = local_pkt.destruct;
return ret;
} }
static int av_write_uncoded_frame_internal(AVFormatContext *s, int stream_index, static int av_write_uncoded_frame_internal(AVFormatContext *s, int stream_index,