[FFmpeg-cvslog] avcodec/flashsvenc: Change check for first frame
Andreas Rheinhardt
git at videolan.org
Wed Nov 23 23:55:15 EET 2022
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Sat Nov 19 02:38:52 2022 +0100| [a8d39e8846e9a7cc981094a3e0ede71eb3706d42] | committer: Andreas Rheinhardt
avcodec/flashsvenc: Change check for first frame
AVCodecContext.frame_number is actually only incremented
in case encoding was successfull; if e.g. the ff_alloc_packet()
below fails, it won't be incremented and therefore it is possible
for the previous_frame buffer to be allocated for multiple
first frames, leaking every one except the last.
So check for whether there already is a previous frame instead.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a8d39e8846e9a7cc981094a3e0ede71eb3706d42
---
libavcodec/flashsvenc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavcodec/flashsvenc.c b/libavcodec/flashsvenc.c
index bd912fb401..ba693ca8f3 100644
--- a/libavcodec/flashsvenc.c
+++ b/libavcodec/flashsvenc.c
@@ -209,7 +209,7 @@ static int flashsv_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
int opt_w = 4, opt_h = 4;
/* First frame needs to be a keyframe */
- if (avctx->frame_number == 0) {
+ if (!s->previous_frame) {
s->previous_frame = av_mallocz(FFABS(p->linesize[0]) * s->image_height);
if (!s->previous_frame) {
av_log(avctx, AV_LOG_ERROR, "Memory allocation failed.\n");
More information about the ffmpeg-cvslog
mailing list