mirror of https://git.ffmpeg.org/ffmpeg.git
lclenc: use the AVFrame API properly.
This commit is contained in:
parent
d48c206302
commit
0ea430c75b
|
@ -54,7 +54,6 @@
|
||||||
typedef struct LclEncContext {
|
typedef struct LclEncContext {
|
||||||
|
|
||||||
AVCodecContext *avctx;
|
AVCodecContext *avctx;
|
||||||
AVFrame pic;
|
|
||||||
|
|
||||||
// Image type
|
// Image type
|
||||||
int imgtype;
|
int imgtype;
|
||||||
|
@ -74,7 +73,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
||||||
const AVFrame *pict, int *got_packet)
|
const AVFrame *pict, int *got_packet)
|
||||||
{
|
{
|
||||||
LclEncContext *c = avctx->priv_data;
|
LclEncContext *c = avctx->priv_data;
|
||||||
AVFrame * const p = &c->pic;
|
const AVFrame * const p = pict;
|
||||||
int i, ret;
|
int i, ret;
|
||||||
int zret; // Zlib return code
|
int zret; // Zlib return code
|
||||||
int max_size = deflateBound(&c->zstream, avctx->width * avctx->height * 3);
|
int max_size = deflateBound(&c->zstream, avctx->width * avctx->height * 3);
|
||||||
|
@ -85,10 +84,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
*p = *pict;
|
|
||||||
p->pict_type= AV_PICTURE_TYPE_I;
|
|
||||||
p->key_frame= 1;
|
|
||||||
|
|
||||||
if(avctx->pix_fmt != AV_PIX_FMT_BGR24){
|
if(avctx->pix_fmt != AV_PIX_FMT_BGR24){
|
||||||
av_log(avctx, AV_LOG_ERROR, "Format not supported!\n");
|
av_log(avctx, AV_LOG_ERROR, "Format not supported!\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -139,7 +134,13 @@ static av_cold int encode_init(AVCodecContext *avctx)
|
||||||
assert(avctx->width && avctx->height);
|
assert(avctx->width && avctx->height);
|
||||||
|
|
||||||
avctx->extradata= av_mallocz(8);
|
avctx->extradata= av_mallocz(8);
|
||||||
avctx->coded_frame= &c->pic;
|
|
||||||
|
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;
|
||||||
|
|
||||||
// Will be user settable someday
|
// Will be user settable someday
|
||||||
c->compression = 6;
|
c->compression = 6;
|
||||||
|
@ -181,6 +182,8 @@ static av_cold int encode_end(AVCodecContext *avctx)
|
||||||
av_freep(&avctx->extradata);
|
av_freep(&avctx->extradata);
|
||||||
deflateEnd(&c->zstream);
|
deflateEnd(&c->zstream);
|
||||||
|
|
||||||
|
av_frame_free(&avctx->coded_frame);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue