X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fa64multienc.c;h=5d8d162348a5ee5003786dd4506e424b60337b10;hb=dcc39ee10e82833ce24aa57926c00ffeb1948198;hp=4e604dc8bcc25c9324566f2a67754b38a8d02429;hpb=36ef5369ee9b336febc2c270f8718cec4476cb85;p=ffmpeg diff --git a/libavcodec/a64multienc.c b/libavcodec/a64multienc.c index 4e604dc8bcc..5d8d162348a 100644 --- a/libavcodec/a64multienc.c +++ b/libavcodec/a64multienc.c @@ -29,6 +29,7 @@ #include "a64tables.h" #include "elbg.h" #include "internal.h" +#include "libavutil/common.h" #include "libavutil/intreadwrite.h" #define DITHERSTEPS 8 @@ -43,7 +44,8 @@ static const int mc_colors[5]={0x0,0xb,0xc,0xf,0x1}; //static const int mc_colors[5]={0x0,0x8,0xa,0xf,0x7}; //static const int mc_colors[5]={0x0,0x9,0x8,0xa,0x3}; -static void to_meta_with_crop(AVCodecContext *avctx, AVFrame *p, int *dest) +static void to_meta_with_crop(AVCodecContext *avctx, + const AVFrame *p, int *dest) { int blockx, blocky, x, y; int luma = 0; @@ -172,7 +174,7 @@ static av_cold int a64multi_close_encoder(AVCodecContext *avctx) return 0; } -static av_cold int a64multi_init_encoder(AVCodecContext *avctx) +static av_cold int a64multi_encode_init(AVCodecContext *avctx) { A64Context *c = avctx->priv_data; int a; @@ -207,7 +209,7 @@ static av_cold int a64multi_init_encoder(AVCodecContext *avctx) } /* set up extradata */ - if (!(avctx->extradata = av_mallocz(8 * 4 + FF_INPUT_BUFFER_PADDING_SIZE))) { + if (!(avctx->extradata = av_mallocz(8 * 4 + AV_INPUT_BUFFER_PADDING_SIZE))) { av_log(avctx, AV_LOG_ERROR, "Failed to allocate memory for extradata.\n"); return AVERROR(ENOMEM); } @@ -215,10 +217,12 @@ static av_cold int a64multi_init_encoder(AVCodecContext *avctx) AV_WB32(avctx->extradata, c->mc_lifetime); AV_WB32(avctx->extradata + 16, INTERLACED); - avcodec_get_frame_defaults(&c->picture); - avctx->coded_frame = &c->picture; +#if FF_API_CODED_FRAME +FF_DISABLE_DEPRECATION_WARNINGS avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; avctx->coded_frame->key_frame = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (!avctx->codec_tag) avctx->codec_tag = AV_RL32("a64m"); @@ -246,7 +250,6 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pict, int *got_packet) { A64Context *c = avctx->priv_data; - AVFrame *const p = &c->picture; int frame; int x, y; @@ -290,10 +293,13 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt, } else { /* fill up mc_meta_charset with data until lifetime exceeds */ if (c->mc_frame_counter < c->mc_lifetime) { - *p = *pict; - p->pict_type = AV_PICTURE_TYPE_I; - p->key_frame = 1; - to_meta_with_crop(avctx, p, meta + 32000 * c->mc_frame_counter); +#if FF_API_CODED_FRAME +FF_DISABLE_DEPRECATION_WARNINGS + avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; + avctx->coded_frame->key_frame = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + to_meta_with_crop(avctx, pict, meta + 32000 * c->mc_frame_counter); c->mc_frame_counter++; if (c->next_pts == AV_NOPTS_VALUE) c->next_pts = pict->pts; @@ -315,8 +321,14 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt, buf = pkt->data; /* calc optimal new charset + charmaps */ - ff_init_elbg(meta, 32, 1000 * c->mc_lifetime, best_cb, CHARSET_CHARS, 50, charmap, &c->randctx); - ff_do_elbg (meta, 32, 1000 * c->mc_lifetime, best_cb, CHARSET_CHARS, 50, charmap, &c->randctx); + ret = ff_init_elbg(meta, 32, 1000 * c->mc_lifetime, best_cb, + CHARSET_CHARS, 50, charmap, &c->randctx); + if (ret < 0) + return ret; + ret = ff_do_elbg(meta, 32, 1000 * c->mc_lifetime, best_cb, + CHARSET_CHARS, 50, charmap, &c->randctx); + if (ret < 0) + return ret; /* create colorram map and a c64 readable charset */ render_charset(avctx, charset, colram); @@ -372,26 +384,26 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt, AVCodec ff_a64multi_encoder = { .name = "a64multi", + .long_name = NULL_IF_CONFIG_SMALL("Multicolor charset for Commodore 64"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_A64_MULTI, .priv_data_size = sizeof(A64Context), - .init = a64multi_init_encoder, + .init = a64multi_encode_init, .encode2 = a64multi_encode_frame, .close = a64multi_close_encoder, - .pix_fmts = (const enum PixelFormat[]) {PIX_FMT_GRAY8, PIX_FMT_NONE}, - .long_name = NULL_IF_CONFIG_SMALL("Multicolor charset for Commodore 64"), - .capabilities = CODEC_CAP_DELAY, + .pix_fmts = (const enum AVPixelFormat[]) {AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE}, + .capabilities = AV_CODEC_CAP_DELAY, }; AVCodec ff_a64multi5_encoder = { .name = "a64multi5", + .long_name = NULL_IF_CONFIG_SMALL("Multicolor charset for Commodore 64, extended with 5th color (colram)"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_A64_MULTI5, .priv_data_size = sizeof(A64Context), - .init = a64multi_init_encoder, + .init = a64multi_encode_init, .encode2 = a64multi_encode_frame, .close = a64multi_close_encoder, - .pix_fmts = (const enum PixelFormat[]) {PIX_FMT_GRAY8, PIX_FMT_NONE}, - .long_name = NULL_IF_CONFIG_SMALL("Multicolor charset for Commodore 64, extended with 5th color (colram)"), - .capabilities = CODEC_CAP_DELAY, + .pix_fmts = (const enum AVPixelFormat[]) {AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE}, + .capabilities = AV_CODEC_CAP_DELAY, };