diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-09-06 00:41:22 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-10-03 20:56:12 +0200 |
commit | e54bad3fce8678beae1754439510bc30594d7ad6 (patch) | |
tree | c8d74d81abfc49b67614898b0c7530ecb1ea9d16 | |
parent | b0e48651873ed989b1da063bccf47bf1084efaae (diff) | |
download | ffmpeg-e54bad3fce8678beae1754439510bc30594d7ad6.tar.gz |
avformat/tee: Avoid stack packet
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavformat/tee.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/libavformat/tee.c b/libavformat/tee.c index 9b9177dc9a..a96d883368 100644 --- a/libavformat/tee.c +++ b/libavformat/tee.c @@ -540,7 +540,7 @@ static int tee_write_packet(AVFormatContext *avf, AVPacket *pkt) TeeContext *tee = avf->priv_data; AVFormatContext *avf2; AVBSFContext *bsfs; - AVPacket pkt2; + AVPacket *const pkt2 = ffformatcontext(avf)->pkt; int ret_all = 0, ret; unsigned i, s; int s2; @@ -565,17 +565,17 @@ static int tee_write_packet(AVFormatContext *avf, AVPacket *pkt) if (s2 < 0) continue; - if ((ret = av_packet_ref(&pkt2, pkt)) < 0) { + if ((ret = av_packet_ref(pkt2, pkt)) < 0) { if (!ret_all) ret_all = ret; continue; } bsfs = tee->slaves[i].bsfs[s2]; - pkt2.stream_index = s2; + pkt2->stream_index = s2; - ret = av_bsf_send_packet(bsfs, &pkt2); + ret = av_bsf_send_packet(bsfs, pkt2); if (ret < 0) { - av_packet_unref(&pkt2); + av_packet_unref(pkt2); av_log(avf, AV_LOG_ERROR, "Error while sending packet to bitstream filter: %s\n", av_err2str(ret)); ret = tee_process_slave_failure(avf, i, ret); @@ -584,7 +584,7 @@ static int tee_write_packet(AVFormatContext *avf, AVPacket *pkt) } while(1) { - ret = av_bsf_receive_packet(bsfs, &pkt2); + ret = av_bsf_receive_packet(bsfs, pkt2); if (ret == AVERROR(EAGAIN)) { ret = 0; break; @@ -592,9 +592,9 @@ static int tee_write_packet(AVFormatContext *avf, AVPacket *pkt) break; } - av_packet_rescale_ts(&pkt2, bsfs->time_base_out, + av_packet_rescale_ts(pkt2, bsfs->time_base_out, avf2->streams[s2]->time_base); - ret = av_interleaved_write_frame(avf2, &pkt2); + ret = av_interleaved_write_frame(avf2, pkt2); if (ret < 0) break; }; |