diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-07-15 18:41:20 +0100 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-07-20 14:16:15 +0100 |
commit | d6604b29ef544793479d7fb4e05ef6622bb3e534 (patch) | |
tree | 37d5559063e276f17da8036e4c08bb8aa4b05534 /libavcodec | |
parent | 91f9b6579ac684c4b51c4cd0dbaed0a4f8295edf (diff) | |
download | ffmpeg-d6604b29ef544793479d7fb4e05ef6622bb3e534.tar.gz |
Gather all coded_frame allocations and free functions to a single place
Allocating coded_frame is what most encoders do anyway, so it makes
sense to always allocate and free it in a single place. Moreover a lot
of encoders freed the frame with av_freep() instead of the correct API
av_frame_free().
This bring uniformity to encoder behaviour and prevents applications
from erroneusly accessing this field when not allocated. Additionally
this helps isolating encoders that export information with coded_frame,
and heavily simplifies its deprecation.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Diffstat (limited to 'libavcodec')
49 files changed, 17 insertions, 419 deletions
diff --git a/libavcodec/a64multienc.c b/libavcodec/a64multienc.c index 1bd8287230..192adb5437 100644 --- a/libavcodec/a64multienc.c +++ b/libavcodec/a64multienc.c @@ -166,7 +166,6 @@ static void render_charset(AVCodecContext *avctx, uint8_t *charset, static av_cold int a64multi_close_encoder(AVCodecContext *avctx) { A64Context *c = avctx->priv_data; - av_frame_free(&avctx->coded_frame); av_free(c->mc_meta_charset); av_free(c->mc_best_cb); av_free(c->mc_charset); @@ -218,12 +217,6 @@ static av_cold int a64multi_encode_init(AVCodecContext *avctx) AV_WB32(avctx->extradata, c->mc_lifetime); AV_WB32(avctx->extradata + 16, INTERLACED); - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) { - a64multi_close_encoder(avctx); - return AVERROR(ENOMEM); - } - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; if (!avctx->codec_tag) diff --git a/libavcodec/alacenc.c b/libavcodec/alacenc.c index 401f26f66c..7777cf7fb4 100644 --- a/libavcodec/alacenc.c +++ b/libavcodec/alacenc.c @@ -483,7 +483,6 @@ static av_cold int alac_encode_close(AVCodecContext *avctx) ff_lpc_end(&s->lpc_ctx); av_freep(&avctx->extradata); avctx->extradata_size = 0; - av_freep(&avctx->coded_frame); return 0; } @@ -579,12 +578,6 @@ static av_cold int alac_encode_init(AVCodecContext *avctx) goto error; } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) { - ret = AVERROR(ENOMEM); - goto error; - } - s->avctx = avctx; if ((ret = ff_lpc_init(&s->lpc_ctx, avctx->frame_size, diff --git a/libavcodec/aliaspixenc.c b/libavcodec/aliaspixenc.c index 47e06129d5..5e3bcb4c98 100644 --- a/libavcodec/aliaspixenc.c +++ b/libavcodec/aliaspixenc.c @@ -27,14 +27,6 @@ #define ALIAS_HEADER_SIZE 10 -static av_cold int encode_init(AVCodecContext *avctx) -{ - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - return 0; -} - static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet) { @@ -114,20 +106,12 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static av_cold int encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - AVCodec ff_alias_pix_encoder = { .name = "alias_pix", .long_name = NULL_IF_CONFIG_SMALL("Alias/Wavefront PIX image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_ALIAS_PIX, - .init = encode_init, .encode2 = encode_frame, - .close = encode_close, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_BGR24, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE }, diff --git a/libavcodec/asvenc.c b/libavcodec/asvenc.c index 08796150f1..af0687a1e4 100644 --- a/libavcodec/asvenc.c +++ b/libavcodec/asvenc.c @@ -282,9 +282,6 @@ static av_cold int encode_init(AVCodecContext *avctx) int i; const int scale = avctx->codec_id == AV_CODEC_ID_ASV1 ? 1 : 2; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; @@ -313,13 +310,6 @@ static av_cold int encode_init(AVCodecContext *avctx) return 0; } -static av_cold int asv_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - - return 0; -} - #if CONFIG_ASV1_ENCODER AVCodec ff_asv1_encoder = { .name = "asv1", @@ -329,11 +319,9 @@ AVCodec ff_asv1_encoder = { .priv_data_size = sizeof(ASV1Context), .init = encode_init, .encode2 = encode_frame, - .close = asv_encode_close, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, - .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | - FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; #endif @@ -346,10 +334,8 @@ AVCodec ff_asv2_encoder = { .priv_data_size = sizeof(ASV1Context), .init = encode_init, .encode2 = encode_frame, - .close = asv_encode_close, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, - .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | - FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; #endif diff --git a/libavcodec/bmpenc.c b/libavcodec/bmpenc.c index a14fc61c15..7260baa67f 100644 --- a/libavcodec/bmpenc.c +++ b/libavcodec/bmpenc.c @@ -56,10 +56,6 @@ static av_cold int bmp_encode_init(AVCodecContext *avctx){ return -1; } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - return 0; } @@ -157,12 +153,6 @@ static int bmp_encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static av_cold int bmp_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - AVCodec ff_bmp_encoder = { .name = "bmp", .long_name = NULL_IF_CONFIG_SMALL("BMP (Windows and OS/2 bitmap)"), @@ -170,7 +160,6 @@ AVCodec ff_bmp_encoder = { .id = AV_CODEC_ID_BMP, .init = bmp_encode_init, .encode2 = bmp_encode_frame, - .close = bmp_encode_close, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_BGR24, AV_PIX_FMT_RGB555, AV_PIX_FMT_RGB444, AV_PIX_FMT_RGB565, diff --git a/libavcodec/cljrenc.c b/libavcodec/cljrenc.c index 2c315555e6..e2db7a6129 100644 --- a/libavcodec/cljrenc.c +++ b/libavcodec/cljrenc.c @@ -30,21 +30,6 @@ #include "internal.h" #include "put_bits.h" -static av_cold int encode_init(AVCodecContext *avctx) -{ - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - - return 0; -} - -static av_cold int encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *p, int *got_packet) { @@ -89,9 +74,7 @@ AVCodec ff_cljr_encoder = { .long_name = NULL_IF_CONFIG_SMALL("Cirrus Logic AccuPak"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_CLJR, - .init = encode_init, .encode2 = encode_frame, - .close = encode_close, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV411P, AV_PIX_FMT_NONE }, }; diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c index 427529bd1d..5c45fe0b3a 100644 --- a/libavcodec/dnxhdenc.c +++ b/libavcodec/dnxhdenc.c @@ -372,10 +372,6 @@ FF_ENABLE_DEPRECATION_WARNINGS FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->mb_qscale, ctx->m.mb_num * sizeof(uint8_t), fail); - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->key_frame = 1; avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; @@ -1127,8 +1123,6 @@ static av_cold int dnxhd_encode_end(AVCodecContext *avctx) for (i = 1; i < avctx->thread_count; i++) av_freep(&ctx->thread[i]); - av_frame_free(&avctx->coded_frame); - return 0; } diff --git a/libavcodec/dpxenc.c b/libavcodec/dpxenc.c index 2b1ead391b..aaa5d93f47 100644 --- a/libavcodec/dpxenc.c +++ b/libavcodec/dpxenc.c @@ -35,10 +35,6 @@ static av_cold int encode_init(AVCodecContext *avctx) { DPXContext *s = avctx->priv_data; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; @@ -177,12 +173,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static av_cold int encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - AVCodec ff_dpx_encoder = { .name = "dpx", .long_name = NULL_IF_CONFIG_SMALL("DPX image"), @@ -191,7 +181,6 @@ AVCodec ff_dpx_encoder = { .priv_data_size = sizeof(DPXContext), .init = encode_init, .encode2 = encode_frame, - .close = encode_close, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_RGB24, AV_PIX_FMT_RGBA, diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index 6d98d499e1..3bbcaf0955 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -61,10 +61,6 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx) return ret; } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - dv_vlc_map_tableinit(); ff_fdctdsp_init(&fdsp, avctx); @@ -737,12 +733,6 @@ static int dvvideo_encode_frame(AVCodecContext *c, AVPacket *pkt, return 0; } -static int dvvideo_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - AVCodec ff_dvvideo_encoder = { .name = "dvvideo", .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"), @@ -751,7 +741,6 @@ AVCodec ff_dvvideo_encoder = { .priv_data_size = sizeof(DVVideoContext), .init = dvvideo_encode_init, .encode2 = dvvideo_encode_frame, - .close = dvvideo_encode_close, .capabilities = CODEC_CAP_SLICE_THREADS, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUV422P, diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index 28289fb161..74f3d4aa2d 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -721,10 +721,6 @@ static av_cold int ffv1_encode_init(AVCodecContext *avctx) if ((ret = ffv1_allocate_initial_states(s)) < 0) return ret; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; if (!s->transparency) @@ -1061,7 +1057,6 @@ static int ffv1_encode_frame(AVCodecContext *avctx, AVPacket *pkt, static av_cold int ffv1_encode_close(AVCodecContext *avctx) { - av_frame_free(&avctx->coded_frame); ffv1_close(avctx); return 0; } diff --git a/libavcodec/flashsvenc.c b/libavcodec/flashsvenc.c index 1c87ae3b23..1cc010eff2 100644 --- a/libavcodec/flashsvenc.c +++ b/libavcodec/flashsvenc.c @@ -98,8 +98,6 @@ static av_cold int flashsv_encode_end(AVCodecContext *avctx) av_free(s->previous_frame); av_free(s->tmpblock); - av_frame_free(&avctx->coded_frame); - return 0; } @@ -131,12 +129,6 @@ static av_cold int flashsv_encode_init(AVCodecContext *avctx) return AVERROR(ENOMEM); } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) { - flashsv_encode_end(avctx); - return AVERROR(ENOMEM); - } - return 0; } diff --git a/libavcodec/gif.c b/libavcodec/gif.c index ae7fdfd818..cb1c71bd37 100644 --- a/libavcodec/gif.c +++ b/libavcodec/gif.c @@ -130,10 +130,6 @@ static av_cold int gif_encode_init(AVCodecContext *avctx) { GIFContext *s = avctx->priv_data; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; @@ -174,8 +170,6 @@ static int gif_encode_close(AVCodecContext *avctx) { GIFContext *s = avctx->priv_data; - av_frame_free(&avctx->coded_frame); - av_freep(&s->lzw); av_freep(&s->buf); return 0; diff --git a/libavcodec/huffyuvenc.c b/libavcodec/huffyuvenc.c index 175b2567f4..4f73fd868a 100644 --- a/libavcodec/huffyuvenc.c +++ b/libavcodec/huffyuvenc.c @@ -154,8 +154,7 @@ static av_cold int encode_init(AVCodecContext *avctx) avctx->stats_out = av_mallocz(1024*30); // 21*256*3(%llu ) + 3(\n) + 1(0) = 16132 s->version = 2; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->extradata || !avctx->stats_out || !avctx->coded_frame) + if (!avctx->extradata || !avctx->stats_out) return AVERROR(ENOMEM); avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; @@ -680,8 +679,6 @@ static av_cold int encode_end(AVCodecContext *avctx) av_freep(&avctx->extradata); av_freep(&avctx->stats_out); - av_frame_free(&avctx->coded_frame); - return 0; } diff --git a/libavcodec/jpeglsenc.c b/libavcodec/jpeglsenc.c index 839b540ee7..30213948c9 100644 --- a/libavcodec/jpeglsenc.c +++ b/libavcodec/jpeglsenc.c @@ -413,18 +413,8 @@ memfail: return AVERROR(ENOMEM); } -static av_cold int encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - static av_cold int encode_init_ls(AVCodecContext *ctx) { - ctx->coded_frame = av_frame_alloc(); - if (!ctx->coded_frame) - return AVERROR(ENOMEM); - ctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; ctx->coded_frame->key_frame = 1; @@ -445,7 +435,6 @@ AVCodec ff_jpegls_encoder = { .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_JPEGLS, .init = encode_init_ls, - .close = encode_close, .encode2 = encode_picture_ls, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_BGR24, AV_PIX_FMT_RGB24, diff --git a/libavcodec/lclenc.c b/libavcodec/lclenc.c index 2448b9ef91..6edde076b3 100644 --- a/libavcodec/lclenc.c +++ b/libavcodec/lclenc.c @@ -138,10 +138,6 @@ static av_cold int encode_init(AVCodecContext *avctx) if (!avctx->extradata) return AVERROR(ENOMEM); - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; @@ -185,8 +181,6 @@ static av_cold int encode_end(AVCodecContext *avctx) av_freep(&avctx->extradata); deflateEnd(&c->zstream); - av_frame_free(&avctx->coded_frame); - return 0; } diff --git a/libavcodec/libopencore-amr.c b/libavcodec/libopencore-amr.c index 72e0bbbbf5..ac6976f3e2 100644 --- a/libavcodec/libopencore-amr.c +++ b/libavcodec/libopencore-amr.c @@ -206,7 +206,6 @@ static av_cold int amr_nb_encode_init(AVCodecContext *avctx) s->enc_state = Encoder_Interface_init(s->enc_dtx); if (!s->enc_state) { av_log(avctx, AV_LOG_ERROR, "Encoder_Interface_init error\n"); - av_freep(&avctx->coded_frame); return -1; } diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c index 00c0ed6d0d..58aa3cf5fc 100644 --- a/libavcodec/libopenjpegenc.c +++ b/libavcodec/libopenjpegenc.c @@ -169,12 +169,6 @@ static av_cold int libopenjpeg_encode_init(AVCodecContext *avctx) return AVERROR(ENOMEM); } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) { - av_log(avctx, AV_LOG_ERROR, "Error allocating coded frame\n"); - goto fail; - } - ctx->image = libopenjpeg_create_image(avctx, &ctx->enc_params); if (!ctx->image) { av_log(avctx, AV_LOG_ERROR, "Error creating the mj2 image\n"); @@ -191,7 +185,6 @@ static av_cold int libopenjpeg_encode_init(AVCodecContext *avctx) fail: av_freep(&ctx->compress); - av_freep(&avctx->coded_frame); return err; } @@ -371,7 +364,6 @@ static av_cold int libopenjpeg_encode_close(AVCodecContext *avctx) opj_destroy_compress(ctx->compress); opj_image_destroy(ctx->image); - av_freep(&avctx->coded_frame); return 0; } diff --git a/libavcodec/libschroedingerenc.c b/libavcodec/libschroedingerenc.c index b2c492b990..bf30eb626b 100644 --- a/libavcodec/libschroedingerenc.c +++ b/libavcodec/libschroedingerenc.c @@ -158,10 +158,6 @@ static av_cold int libschroedinger_encode_init(AVCodecContext *avctx) avctx->width, avctx->height); - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - if (!avctx->gop_size) { schro_encoder_setting_set_double(p_schro_params->encoder, "gop_structure", @@ -437,8 +433,6 @@ static int libschroedinger_encode_close(AVCodecContext *avctx) /* Free the video format structure. */ av_freep(&p_schro_params->format); - av_frame_free(&avctx->coded_frame); - return 0; } diff --git a/libavcodec/libspeexenc.c b/libavcodec/libspeexenc.c index ec8882f936..d4ca45cee1 100644 --- a/libavcodec/libspeexenc.c +++ b/libavcodec/libspeexenc.c @@ -243,8 +243,8 @@ static av_cold int encode_init(AVCodecContext *avctx) below with speex_header_free() */ header_data = speex_header_to_packet(&s->header, &header_size); - /* allocate extradata and coded_frame */ - avctx->extradata = av_malloc(header_size + FF_INPUT_BUFFER_PADDING_SIZE); + /* allocate extradata */ + avctx->extradata = av_malloc(header_size + FF_INPUT_BUFFER_PADDING_SIZE); if (!avctx->extradata) { speex_header_free(header_data); speex_encoder_destroy(s->enc_state); diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c index 612a80832b..8927b32d84 100644 --- a/libavcodec/libtheoraenc.c +++ b/libavcodec/libtheoraenc.c @@ -264,11 +264,6 @@ static av_cold int encode_init(AVCodecContext* avc_context) th_comment_clear(&t_comment); - /* Set up the output AVFrame */ - avc_context->coded_frame = av_frame_alloc(); - if (!avc_context->coded_frame) - return AVERROR(ENOMEM); - return 0; } @@ -362,7 +357,6 @@ static av_cold int encode_close(AVCodecContext* avc_context) th_encode_free(h->t_state); av_freep(&h->stats); - av_freep(&avc_context->coded_frame); av_freep(&avc_context->stats_out); av_freep(&avc_context->extradata); avc_context->extradata_size = 0; diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index e8c7327b33..20fd38c5d2 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -210,7 +210,6 @@ static av_cold int vp8_free(AVCodecContext *avctx) vpx_codec_destroy(&ctx->encoder); av_freep(&ctx->twopass_stats.buf); - av_freep(&avctx->coded_frame); av_freep(&avctx->stats_out); free_frame_list(ctx->coded_frame_list); return 0; @@ -371,12 +370,6 @@ static av_cold int vpx_init(AVCodecContext *avctx, vpx_img_wrap(&ctx->rawimg, ff_vpx_pixfmt_to_imgfmt(avctx->pix_fmt), avctx->width, avctx->height, 1, (unsigned char *)1); - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) { - av_log(avctx, AV_LOG_ERROR, "Error allocating coded frame\n"); - vp8_free(avctx); - return AVERROR(ENOMEM); - } return 0; } diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 5d257ef889..ace750cc54 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -287,8 +287,6 @@ static av_cold int X264_close(AVCodecContext *avctx) x4->enc = NULL; } - av_frame_free(&avctx->coded_frame); - return 0; } @@ -546,10 +544,6 @@ static av_cold int X264_init(AVCodecContext *avctx) if (!x4->enc) return AVERROR_UNKNOWN; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER) { x264_nal_t *nal; uint8_t *p; diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index f5687f6a09..145480fc04 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -66,8 +66,6 @@ static av_cold int libx265_encode_close(AVCodecContext *avctx) { libx265Context *ctx = avctx->priv_data; - av_frame_free(&avctx->coded_frame); - ctx->api->param_free(ctx->params); if (ctx->encoder) @@ -92,12 +90,6 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx) return AVERROR(ENOSYS); } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) { - av_log(avctx, AV_LOG_ERROR, "Could not allocate frame.\n"); - return AVERROR(ENOMEM); - } - ctx->params = ctx->api->param_alloc(); if (!ctx->params) { av_log(avctx, AV_LOG_ERROR, "Could not allocate x265 param structure.\n"); diff --git a/libavcodec/libxavs.c b/libavcodec/libxavs.c index 7a74e361c1..9b80243612 100644 --- a/libavcodec/libxavs.c +++ b/libavcodec/libxavs.c @@ -209,8 +209,6 @@ static av_cold int XAVS_close(AVCodecContext *avctx) if (x4->enc) xavs_encoder_close(x4->enc); - av_frame_free(&avctx->coded_frame); - return 0; } @@ -358,10 +356,6 @@ static av_cold int XAVS_init(AVCodecContext *avctx) if (!(x4->pts_buffer = av_mallocz((avctx->max_b_frames+1) * sizeof(*x4->pts_buffer)))) return AVERROR(ENOMEM); - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - /* TAG: Do we have GLOBAL HEADER in AVS */ /* We Have PPS and SPS in AVS */ if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER) { diff --git a/libavcodec/libxvid.c b/libavcodec/libxvid.c index 00128767f1..5282ea7a19 100644 --- a/libavcodec/libxvid.c +++ b/libavcodec/libxvid.c @@ -651,9 +651,6 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) } x->encoder_handle = xvid_enc_create.handle; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); return 0; } @@ -790,7 +787,6 @@ static av_cold int xvid_encode_close(AVCodecContext *avctx) x->encoder_handle = NULL; } - av_frame_free(&avctx->coded_frame); av_freep(&avctx->extradata); if (x->twopassbuffer) { av_free(x->twopassbuffer); diff --git a/libavcodec/ljpegenc.c b/libavcodec/ljpegenc.c index fc2ade6ba7..c652653552 100644 --- a/libavcodec/ljpegenc.c +++ b/libavcodec/ljpegenc.c @@ -255,7 +255,6 @@ static av_cold int ljpeg_encode_close(AVCodecContext *avctx) { LJpegEncContext *s = avctx->priv_data; - av_frame_free(&avctx->coded_frame); av_freep(&s->scratch); return 0; @@ -277,10 +276,6 @@ static av_cold int ljpeg_encode_init(AVCodecContext *avctx) return AVERROR(EINVAL); } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 35c78394ef..84e9dc8c58 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1475,8 +1475,7 @@ static void frame_end(MpegEncContext *s) } } - s->avctx->coded_frame = s->current_picture_ptr->f; - + av_frame_copy_props(s->avctx->coded_frame, s->current_picture.f); } static void update_noise_reduction(MpegEncContext *s) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index ea260b0c87..388fbe476d 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -771,8 +771,6 @@ av_cold int ff_nvenc_encode_close(AVCodecContext *avctx) NV_ENCODE_API_FUNCTION_LIST *nv = &ctx->nvel.nvenc_funcs; int i; - av_frame_free(&avctx->coded_frame); - if (ctx->in) { for (i = 0; i < ctx->nb_surfaces; ++i) { nv->nvEncDestroyInputBuffer(ctx->nvenc_ctx, ctx->in[i].in); @@ -819,10 +817,6 @@ av_cold int ff_nvenc_encode_init(AVCodecContext *avctx) return ret; } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - return 0; } diff --git a/libavcodec/pamenc.c b/libavcodec/pamenc.c index 8535d3d235..483089afc1 100644 --- a/libavcodec/pamenc.c +++ b/libavcodec/pamenc.c @@ -109,29 +109,18 @@ static int pam_encode_frame(AVCodecContext *avctx, AVPacket *pkt, static av_cold int pam_encode_init(AVCodecContext *avctx) { - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; return 0; } -static av_cold int pam_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - AVCodec ff_pam_encoder = { .name = "pam", .long_name = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_PAM, .init = pam_encode_init, - .close = pam_encode_close, .encode2 = pam_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_RGB24, AV_PIX_FMT_RGB32, AV_PIX_FMT_GRAY8, AV_PIX_FMT_MONOWHITE, diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c index a87aafc859..8c44639f5b 100644 --- a/libavcodec/pcm.c +++ b/libavcodec/pcm.c @@ -48,16 +48,6 @@ static av_cold int pcm_encode_init(AVCodecContext *avctx) avctx->bits_per_coded_sample = av_get_bits_per_sample(avctx->codec->id); avctx->block_align = avctx->channels * avctx->bits_per_coded_sample / 8; avctx->bit_rate = avctx->block_align * avctx->sample_rate * 8; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - - return 0; -} - -static av_cold int pcm_encode_close(AVCodecContext *avctx) -{ - av_freep(&avctx->coded_frame); return 0; } @@ -460,7 +450,6 @@ AVCodec ff_ ## name_ ## _encoder = { \ .id = AV_CODEC_ID_ ## id_, \ .init = pcm_encode_init, \ .encode2 = pcm_encode_frame, \ - .close = pcm_encode_close, \ .capabilities = CODEC_CAP_VARIABLE_FRAME_SIZE, \ .sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_, \ AV_SAMPLE_FMT_NONE }, \ diff --git a/libavcodec/pcxenc.c b/libavcodec/pcxenc.c index 8553fe166e..24bca977ff 100644 --- a/libavcodec/pcxenc.c +++ b/libavcodec/pcxenc.c @@ -34,22 +34,12 @@ static const uint32_t monoblack_pal[16] = { 0x000000, 0xFFFFFF }; static av_cold int pcx_encode_init(AVCodecContext *avctx) { - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; return 0; } -static av_cold int pcx_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - /** * PCX run-length encoder * @param dst output buffer @@ -206,7 +196,6 @@ AVCodec ff_pcx_encoder = { .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_PCX, .init = pcx_encode_init, - .close = pcx_encode_close, .encode2 = pcx_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_RGB24, diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c index 3d11f370cb..bbeee0199c 100644 --- a/libavcodec/pngenc.c +++ b/libavcodec/pngenc.c @@ -455,10 +455,6 @@ static av_cold int png_enc_init(AVCodecContext *avctx) { PNGEncContext *s = avctx->priv_data; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; @@ -473,12 +469,6 @@ static av_cold int png_enc_init(AVCodecContext *avctx) return 0; } -static av_cold int png_enc_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - AVCodec ff_png_encoder = { .name = "png", .long_name = NULL_IF_CONFIG_SMALL("PNG (Portable Network Graphics) image"), @@ -486,7 +476,6 @@ AVCodec ff_png_encoder = { .id = AV_CODEC_ID_PNG, .priv_data_size = sizeof(PNGEncContext), .init = png_enc_init, - .close = png_enc_close, .encode2 = encode_frame, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_RGB24, AV_PIX_FMT_RGB32, AV_PIX_FMT_PAL8, AV_PIX_FMT_GRAY8, diff --git a/libavcodec/pnmenc.c b/libavcodec/pnmenc.c index 7513552815..58fd4fee06 100644 --- a/libavcodec/pnmenc.c +++ b/libavcodec/pnmenc.c @@ -120,22 +120,12 @@ static int pnm_encode_frame(AVCodecContext *avctx, AVPacket *pkt, static av_cold int pnm_encode_init(AVCodecContext *avctx) { - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; return 0; } -static av_cold int pnm_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - #if CONFIG_PGM_ENCODER AVCodec ff_pgm_encoder = { .name = "pgm", @@ -143,7 +133,6 @@ AVCodec ff_pgm_encoder = { .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_PGM, .init = pnm_encode_init, - .close = pnm_encode_close, .encode2 = pnm_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_GRAY8, AV_PIX_FMT_GRAY16BE, AV_PIX_FMT_NONE @@ -158,7 +147,6 @@ AVCodec ff_pgmyuv_encoder = { .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_PGMYUV, .init = pnm_encode_init, - .close = pnm_encode_close, .encode2 = pnm_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV420P16BE, AV_PIX_FMT_NONE @@ -173,7 +161,6 @@ AVCodec ff_ppm_encoder = { .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_PPM, .init = pnm_encode_init, - .close = pnm_encode_close, .encode2 = pnm_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_RGB24, AV_PIX_FMT_RGB48BE, AV_PIX_FMT_NONE @@ -188,7 +175,6 @@ AVCodec ff_pbm_encoder = { .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_PBM, .init = pnm_encode_init, - .close = pnm_encode_close, .encode2 = pnm_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_MONOWHITE, AV_PIX_FMT_NONE }, diff --git a/libavcodec/proresenc.c b/libavcodec/proresenc.c index b71a7db9b4..3e99d106ac 100644 --- a/libavcodec/proresenc.c +++ b/libavcodec/proresenc.c @@ -1097,8 +1097,6 @@ static av_cold int encode_close(AVCodecContext *avctx) ProresContext *ctx = avctx->priv_data; int i; - av_freep(&avctx->coded_frame); - if (ctx->tdata) { for (i = 0; i < avctx->thread_count; i++) av_free(ctx->tdata[i].nodes); @@ -1132,9 +1130,6 @@ static av_cold int encode_init(AVCodecContext *avctx) int interlaced = !!(avctx->flags & CODEC_FLAG_INTERLACED_DCT); avctx->bits_per_raw_sample = 10; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); ctx->fdct = prores_fdct; ctx->scantable = interlaced ? ff_prores_interlaced_scan diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index f1fed54f73..f9b9d6feb0 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -240,10 +240,6 @@ int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q) return ret; } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - q->avctx = avctx; return 0; @@ -511,7 +507,5 @@ int ff_qsv_enc_close(AVCodecContext *avctx, QSVEncContext *q) av_fifo_free(q->async_fifo); q->async_fifo = NULL; - av_frame_free(&avctx->coded_frame); - return 0; } diff --git a/libavcodec/qtrleenc.c b/libavcodec/qtrleenc.c index b6496ab4b8..c455c829e7 100644 --- a/libavcodec/qtrleenc.c +++ b/libavcodec/qtrleenc.c @@ -66,8 +66,6 @@ static av_cold int qtrle_encode_end(AVCodecContext *avctx) { QtrleEncContext *s = avctx->priv_data; - av_frame_free(&avctx->coded_frame); - avpicture_free(&s->previous_frame); av_free(s->rlecode_table); av_free(s->length_table); @@ -117,12 +115,6 @@ static av_cold int qtrle_encode_init(AVCodecContext *avctx) + s->avctx->height*2 /* skip code+rle end */ + s->avctx->width/MAX_RLE_BULK + 1 /* rle codes */; - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) { - qtrle_encode_end(avctx); - return AVERROR(ENOMEM); - } - return 0; } diff --git a/libavcodec/rawenc.c b/libavcodec/rawenc.c index d6e8009341..a360c34496 100644 --- a/libavcodec/rawenc.c +++ b/libavcodec/rawenc.c @@ -35,10 +35,6 @@ static av_cold int raw_encode_init(AVCodecContext *avctx) { const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; avctx->bits_per_coded_sample = av_get_bits_per_pixel(desc); @@ -72,18 +68,11 @@ static int raw_encode(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static av_cold int raw_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - AVCodec ff_rawvideo_encoder = { .name = "rawvideo", .long_name = NULL_IF_CONFIG_SMALL("raw video"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_RAWVIDEO, .init = raw_encode_init, - .close = raw_encode_close, .encode2 = raw_encode, }; diff --git a/libavcodec/sgienc.c b/libavcodec/sgienc.c index bfc0995a5a..73e1a678b5 100644 --- a/libavcodec/sgienc.c +++ b/libavcodec/sgienc.c @@ -36,10 +36,6 @@ static av_cold int encode_init(AVCodecContext *avctx) return AVERROR_INVALIDDATA; } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - return 0; } @@ -205,12 +201,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static av_cold int encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - AVCodec ff_sgi_encoder = { .name = "sgi", .long_name = NULL_IF_CONFIG_SMALL("SGI image"), @@ -218,7 +208,6 @@ AVCodec ff_sgi_encoder = { .id = AV_CODEC_ID_SGI, .init = encode_init, .encode2 = encode_frame, - .close = encode_close, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_RGB24, AV_PIX_FMT_RGBA, AV_PIX_FMT_RGB48LE, AV_PIX_FMT_RGB48BE, diff --git a/libavcodec/sunrastenc.c b/libavcodec/sunrastenc.c index 8e90a6cc87..0627c47750 100644 --- a/libavcodec/sunrastenc.c +++ b/libavcodec/sunrastenc.c @@ -153,10 +153,6 @@ static av_cold int sunrast_encode_init(AVCodecContext *avctx) return AVERROR(EINVAL); } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->key_frame = 1; avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; s->maptype = RMT_NONE; @@ -210,12 +206,6 @@ static int sunrast_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, return 0; } -static av_cold int sunrast_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - static const AVCodecDefault sunrast_defaults[] = { { "coder", "rle" }, { NULL }, @@ -228,7 +218,6 @@ AVCodec ff_sunrast_encoder = { .id = AV_CODEC_ID_SUNRAST, .priv_data_size = sizeof(SUNRASTContext), .init = sunrast_encode_init, - .close = sunrast_encode_close, .encode2 = sunrast_encode_frame, .defaults = sunrast_defaults, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_BGR24, diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c index ffc9b42e12..82e2f74bc4 100644 --- a/libavcodec/svq1enc.c +++ b/libavcodec/svq1enc.c @@ -499,7 +499,6 @@ static av_cold int svq1_encode_end(AVCodecContext *avctx) av_frame_free(&s->current_picture); av_frame_free(&s->last_picture); - av_frame_free(&avctx->coded_frame); return 0; } @@ -513,10 +512,9 @@ static av_cold int svq1_encode_init(AVCodecContext *avctx) ff_me_cmp_init(&s->mecc, avctx); ff_mpegvideoencdsp_init(&s->m.mpvencdsp, avctx); - avctx->coded_frame = av_frame_alloc(); s->current_picture = av_frame_alloc(); s->last_picture = av_frame_alloc(); - if (!avctx->coded_frame || !s->current_picture || !s->last_picture) { + if (!s->current_picture || !s->last_picture) { svq1_encode_end(avctx); return AVERROR(ENOMEM); } diff --git a/libavcodec/targaenc.c b/libavcodec/targaenc.c index 7679029643..048183f7b6 100644 --- a/libavcodec/targaenc.c +++ b/libavcodec/targaenc.c @@ -150,29 +150,18 @@ static int targa_encode_frame(AVCodecContext *avctx, AVPacket *pkt, static av_cold int targa_encode_init(AVCodecContext *avctx) { - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->key_frame = 1; avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; return 0; } -static av_cold int targa_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - AVCodec ff_targa_encoder = { .name = "targa", .long_name = NULL_IF_CONFIG_SMALL("Truevision Targa image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_TARGA, .init = targa_encode_init, - .close = targa_encode_close, .encode2 = targa_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_BGR24, AV_PIX_FMT_BGRA, AV_PIX_FMT_RGB555LE, AV_PIX_FMT_GRAY8, diff --git a/libavcodec/tiffenc.c b/libavcodec/tiffenc.c index a020f5f61a..fbdb8248fa 100644 --- a/libavcodec/tiffenc.c +++ b/libavcodec/tiffenc.c @@ -490,22 +490,12 @@ fail: static av_cold int encode_init(AVCodecContext *avctx) { - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; return 0; } -static av_cold int encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - return 0; -} - #define OFFSET(x) offsetof(TiffEncoderContext, x) #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { @@ -533,7 +523,6 @@ AVCodec ff_tiff_encoder = { .id = AV_CODEC_ID_TIFF, .priv_data_size = sizeof(TiffEncoderContext), .init = encode_init, - .close = encode_close, .encode2 = encode_frame, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_RGB24, AV_PIX_FMT_RGB48LE, AV_PIX_FMT_PAL8, diff --git a/libavcodec/utils.c b/libavcodec/utils.c index a1443920e3..d038e90852 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1169,6 +1169,11 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code if (av_codec_is_encoder(avctx->codec)) { int i; + avctx->coded_frame = av_frame_alloc(); + if (!avctx->coded_frame) { + ret = AVERROR(ENOMEM); + goto free_and_end; + } if (avctx->codec->sample_fmts) { for (i = 0; avctx->codec->sample_fmts[i] != AV_SAMPLE_FMT_NONE; i++) { if (avctx->sample_fmt == avctx->codec->sample_fmts[i]) @@ -1296,6 +1301,8 @@ free_and_end: av_opt_free(avctx->priv_data); av_opt_free(avctx); + av_frame_free(&avctx->coded_frame); + av_dict_free(&tmp); av_freep(&avctx->priv_data); if (avctx->internal) { @@ -1797,7 +1804,6 @@ av_cold int avcodec_close(AVCodecContext *avctx) ff_thread_free(avctx); if (avctx->codec && avctx->codec->close) avctx->codec->close(avctx); - avctx->coded_frame = NULL; av_frame_free(&avctx->internal->to_free); for (i = 0; i < FF_ARRAY_ELEMS(pool->pools); i++) av_buffer_pool_uninit(&pool->pools[i]); @@ -1814,8 +1820,10 @@ av_cold int avcodec_close(AVCodecContext *avctx) av_opt_free(avctx->priv_data); av_opt_free(avctx); av_freep(&avctx->priv_data); - if (av_codec_is_encoder(avctx->codec)) + if (av_codec_is_encoder(avctx->codec)) { av_freep(&avctx->extradata); + av_frame_free(&avctx->coded_frame); + } avctx->codec = NULL; avctx->active_thread_type = 0; diff --git a/libavcodec/utvideoenc.c b/libavcodec/utvideoenc.c index 8dc208bcde..c22f488446 100644 --- a/libavcodec/utvideoenc.c +++ b/libavcodec/utvideoenc.c @@ -48,7 +48,6 @@ static av_cold int utvideo_encode_close(AVCodecContext *avctx) UtvideoContext *c = avctx->priv_data; int i; - av_freep(&avctx->coded_frame); av_freep(&c->slice_bits); for (i = 0; i < 4; i++) av_freep(&c->slice_buffer[i]); @@ -154,14 +153,6 @@ static av_cold int utvideo_encode_init(AVCodecContext *avctx) return AVERROR(EINVAL); } - avctx->coded_frame = av_frame_alloc(); - - if (!avctx->coded_frame) { - av_log(avctx, AV_LOG_ERROR, "Could not allocate frame.\n"); - utvideo_encode_close(avctx); - return AVERROR(ENOMEM); - } - /* extradata size is 4 * 32bit */ avctx->extradata_size = 16; diff --git a/libavcodec/v210enc.c b/libavcodec/v210enc.c index cb887887ee..375236c520 100644 --- a/libavcodec/v210enc.c +++ b/libavcodec/v210enc.c @@ -91,10 +91,6 @@ static av_cold int encode_init(AVCodecContext *avctx) return AVERROR(EINVAL); } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; s->pack_line_8 = v210_planar_pack_8_c; @@ -213,13 +209,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static av_cold int encode_close(AVCodecContext *avctx) -{ - av_freep(&avctx->coded_frame); - - return 0; -} - AVCodec ff_v210_encoder = { .name = "v210", .long_name = NULL_IF_CONFIG_SMALL("Uncompressed 4:2:2 10-bit"), @@ -228,6 +217,5 @@ AVCodec ff_v210_encoder = { .priv_data_size = sizeof(V210EncContext), .init = encode_init, .encode2 = encode_frame, - .close = encode_close, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV422P, AV_PIX_FMT_NONE }, }; diff --git a/libavcodec/v410enc.c b/libavcodec/v410enc.c index 77b32d7ab6..ffbdc7d06c 100644 --- a/libavcodec/v410enc.c +++ b/libavcodec/v410enc.c @@ -32,13 +32,6 @@ static av_cold int v410_encode_init(AVCodecContext *avctx) return AVERROR_INVALIDDATA; } - avctx->coded_frame = av_frame_alloc(); - - if (!avctx->coded_frame) { - av_log(avctx, AV_LOG_ERROR, "Could not allocate frame.\n"); - return AVERROR(ENOMEM); - } - return 0; } @@ -81,13 +74,6 @@ static int v410_encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static av_cold int v410_encode_close(AVCodecContext *avctx) -{ - av_freep(&avctx->coded_frame); - - return 0; -} - AVCodec ff_v410_encoder = { .name = "v410", .long_name = NULL_IF_CONFIG_SMALL("Uncompressed 4:4:4 10-bit"), @@ -95,6 +81,5 @@ AVCodec ff_v410_encoder = { .id = AV_CODEC_ID_V410, .init = v410_encode_init, .encode2 = v410_encode_frame, - .close = v410_encode_close, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV444P10, AV_PIX_FMT_NONE }, }; diff --git a/libavcodec/xbmenc.c b/libavcodec/xbmenc.c index 517e569a60..41456cbc6e 100644 --- a/libavcodec/xbmenc.c +++ b/libavcodec/xbmenc.c @@ -26,9 +26,6 @@ static av_cold int xbm_encode_init(AVCodecContext *avctx) { - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; return 0; @@ -67,13 +64,6 @@ static int xbm_encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static av_cold int xbm_encode_close(AVCodecContext *avctx) -{ - av_frame_free(&avctx->coded_frame); - - return 0; -} - AVCodec ff_xbm_encoder = { .name = "xbm", .long_name = NULL_IF_CONFIG_SMALL("XBM (X BitMap) image"), @@ -81,7 +71,6 @@ AVCodec ff_xbm_encoder = { .id = AV_CODEC_ID_XBM, .init = xbm_encode_init, .encode2 = xbm_encode_frame, - .close = xbm_encode_close, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_MONOWHITE, AV_PIX_FMT_NONE }, }; diff --git a/libavcodec/xwdenc.c b/libavcodec/xwdenc.c index 54599a08a1..97a3eb8fe5 100644 --- a/libavcodec/xwdenc.c +++ b/libavcodec/xwdenc.c @@ -30,15 +30,6 @@ #define WINDOW_NAME "lavcxwdenc" #define WINDOW_NAME_SIZE 11 -static av_cold int xwd_encode_init(AVCodecContext *avctx) -{ - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - - return 0; -} - static int xwd_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *p, int *got_packet) { @@ -213,21 +204,12 @@ static int xwd_encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static av_cold int xwd_encode_close(AVCodecContext *avctx) -{ - av_freep(&avctx->coded_frame); - - return 0; -} - AVCodec ff_xwd_encoder = { .name = "xwd", .long_name = NULL_IF_CONFIG_SMALL("XWD (X Window Dump) image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_XWD, - .init = xwd_encode_init, .encode2 = xwd_encode_frame, - .close = xwd_encode_close, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_BGRA, AV_PIX_FMT_RGBA, AV_PIX_FMT_ARGB, diff --git a/libavcodec/zmbvenc.c b/libavcodec/zmbvenc.c index d7b518db26..ea63b9477a 100644 --- a/libavcodec/zmbvenc.c +++ b/libavcodec/zmbvenc.c @@ -261,8 +261,6 @@ static av_cold int encode_end(AVCodecContext *avctx) deflateEnd(&c->zstream); av_freep(&c->prev); - av_frame_free(&avctx->coded_frame); - return 0; } @@ -326,12 +324,6 @@ static av_cold int encode_init(AVCodecContext *avctx) return -1; } - avctx->coded_frame = av_frame_alloc(); - if (!avctx->coded_frame) { - encode_end(avctx); - return AVERROR(ENOMEM); - } - return 0; } |