summaryrefslogtreecommitdiff
path: root/libavcodec/mjpegenc.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-12-21 21:23:00 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-01-04 16:28:54 +0100
commit0b670a7f915fd4fa86444da7c24f325d651b16bd (patch)
tree6df01b6bd9ad25a3594747970e55e71a06b09d17 /libavcodec/mjpegenc.c
parent8ca7d474c19f856b28fa588e040b23b1a58368ed (diff)
avcodec/mjpegenc: Use custom close function directly
Currently, ff_mpv_encode_end() is the close function of the two MJPEG-based encoders; it calls ff_mjpeg_encode_close() for them which adds a check to the generic code. This commit reverses the order of this relationship: The MJPEG encoders directly use a custom close function which in turn calls ff_mpv_encode_end(). This avoids the branch in ff_mpv_encode_end() and makes the generic code more generic. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/mjpegenc.c')
-rw-r--r--libavcodec/mjpegenc.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c
index 30cbbddb59..05b6130de4 100644
--- a/libavcodec/mjpegenc.c
+++ b/libavcodec/mjpegenc.c
@@ -320,12 +320,15 @@ av_cold int ff_mjpeg_encode_init(MpegEncContext *s)
return 0;
}
-av_cold void ff_mjpeg_encode_close(MpegEncContext *s)
+static av_cold int mjpeg_encode_close(AVCodecContext *avctx)
{
+ MpegEncContext *const s = avctx->priv_data;
if (s->mjpeg_ctx) {
av_freep(&s->mjpeg_ctx->huff_buffer);
av_freep(&s->mjpeg_ctx);
}
+ ff_mpv_encode_end(avctx);
+ return 0;
}
/**
@@ -618,7 +621,7 @@ const AVCodec ff_mjpeg_encoder = {
.priv_data_size = sizeof(MpegEncContext),
.init = ff_mpv_encode_init,
.encode2 = ff_mpv_encode_picture,
- .close = ff_mpv_encode_end,
+ .close = mjpeg_encode_close,
.capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS,
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
.pix_fmts = (const enum AVPixelFormat[]) {
@@ -647,7 +650,7 @@ const AVCodec ff_amv_encoder = {
.priv_data_size = sizeof(MpegEncContext),
.init = ff_mpv_encode_init,
.encode2 = amv_encode_picture,
- .close = ff_mpv_encode_end,
+ .close = mjpeg_encode_close,
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
.pix_fmts = (const enum AVPixelFormat[]) {
AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_NONE