diff --git a/libavcodec/cljrenc.c b/libavcodec/cljrenc.c index 6f04c62cb0..15fe43e073 100644 --- a/libavcodec/cljrenc.c +++ b/libavcodec/cljrenc.c @@ -28,6 +28,7 @@ #include "libavutil/opt.h" #include "avcodec.h" +#include "encode.h" #include "internal.h" #include "put_bits.h" @@ -56,7 +57,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, return AVERROR_EXPERIMENTAL; } - if ((ret = ff_alloc_packet2(avctx, pkt, 32*avctx->height*avctx->width/4, 0)) < 0) + ret = ff_get_encode_buffer(avctx, pkt, 4 * avctx->height * ((avctx->width + 3) / 4), 0); + if (ret < 0) return ret; init_put_bits(&pb, pkt->data, pkt->size); @@ -89,7 +91,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, flush_put_bits(&pb); - pkt->size = put_bytes_output(&pb); pkt->flags |= AV_PKT_FLAG_KEY; *got_packet = 1; return 0; @@ -114,6 +115,7 @@ const AVCodec ff_cljr_encoder = { .long_name = NULL_IF_CONFIG_SMALL("Cirrus Logic AccuPak"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_CLJR, + .capabilities = AV_CODEC_CAP_DR1, .priv_data_size = sizeof(CLJRContext), .encode2 = encode_frame, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV411P,