aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-09-06 00:41:22 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-10-03 20:56:12 +0200
commite54bad3fce8678beae1754439510bc30594d7ad6 (patch)
treec8d74d81abfc49b67614898b0c7530ecb1ea9d16
parentb0e48651873ed989b1da063bccf47bf1084efaae (diff)
downloadffmpeg-e54bad3fce8678beae1754439510bc30594d7ad6.tar.gz
avformat/tee: Avoid stack packet
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--libavformat/tee.c16
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;
};