X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=libavcodec%2Flclenc.c;h=a73f6d6fedb6a828bcf453dc7c7d934f78d0078b;hb=15ec7aa4170ed05ad1b17000ef1e3940d0a0c5e7;hp=9906fd11f2033a5b9e21d4661cce7620ffe443bc;hpb=00c3b67b8ac6bfdc5a01535173dc537824a53d6e;p=ffmpeg diff --git a/libavcodec/lclenc.c b/libavcodec/lclenc.c index 9906fd11f20..a73f6d6fedb 100644 --- a/libavcodec/lclenc.c +++ b/libavcodec/lclenc.c @@ -42,7 +42,10 @@ #include #include "avcodec.h" +#include "internal.h" #include "lcl.h" +#include "libavutil/internal.h" +#include "libavutil/mem.h" #include @@ -52,7 +55,6 @@ typedef struct LclEncContext { AVCodecContext *avctx; - AVFrame pic; // Image type int imgtype; @@ -72,7 +74,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pict, int *got_packet) { LclEncContext *c = avctx->priv_data; - AVFrame * const p = &c->pic; + const AVFrame * const p = pict; int i, ret; int zret; // Zlib return code int max_size = deflateBound(&c->zstream, avctx->width * avctx->height * 3); @@ -83,11 +85,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, return ret; } - *p = *pict; - p->pict_type= AV_PICTURE_TYPE_I; - p->key_frame= 1; - - if(avctx->pix_fmt != PIX_FMT_BGR24){ + if(avctx->pix_fmt != AV_PIX_FMT_BGR24){ av_log(avctx, AV_LOG_ERROR, "Format not supported!\n"); return -1; } @@ -137,7 +135,15 @@ static av_cold int encode_init(AVCodecContext *avctx) assert(avctx->width && avctx->height); avctx->extradata= av_mallocz(8); - avctx->coded_frame= &c->pic; + if (!avctx->extradata) + return AVERROR(ENOMEM); + +#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 // Will be user settable someday c->compression = 6; @@ -161,7 +167,7 @@ static av_cold int encode_init(AVCodecContext *avctx) zret = deflateInit(&c->zstream, c->compression); if (zret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Deflate init error: %d\n", zret); - return 1; + return AVERROR_UNKNOWN; } return 0; @@ -184,12 +190,14 @@ static av_cold int encode_end(AVCodecContext *avctx) AVCodec ff_zlib_encoder = { .name = "zlib", + .long_name = NULL_IF_CONFIG_SMALL("LCL (LossLess Codec Library) ZLIB"), .type = AVMEDIA_TYPE_VIDEO, - .id = CODEC_ID_ZLIB, + .id = AV_CODEC_ID_ZLIB, .priv_data_size = sizeof(LclEncContext), .init = encode_init, .encode2 = encode_frame, .close = encode_end, - .pix_fmts = (const enum PixelFormat[]) { PIX_FMT_BGR24, PIX_FMT_NONE }, - .long_name = NULL_IF_CONFIG_SMALL("LCL (LossLess Codec Library) ZLIB"), + .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_BGR24, AV_PIX_FMT_NONE }, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | + FF_CODEC_CAP_INIT_CLEANUP, };