| @@ -29,10 +29,6 @@ | |||||
| #include "rle.h" | #include "rle.h" | ||||
| #include "targa.h" | #include "targa.h" | ||||
| typedef struct TargaContext { | |||||
| AVFrame picture; | |||||
| } TargaContext; | |||||
| /** | /** | ||||
| * RLE compress the image, with maximum size of out_size | * RLE compress the image, with maximum size of out_size | ||||
| * @param outbuf Output buffer | * @param outbuf Output buffer | ||||
| @@ -154,23 +150,29 @@ static int targa_encode_frame(AVCodecContext *avctx, AVPacket *pkt, | |||||
| static av_cold int targa_encode_init(AVCodecContext *avctx) | static av_cold int targa_encode_init(AVCodecContext *avctx) | ||||
| { | { | ||||
| TargaContext *s = avctx->priv_data; | |||||
| avctx->coded_frame = av_frame_alloc(); | |||||
| if (!avctx->coded_frame) | |||||
| return AVERROR(ENOMEM); | |||||
| avcodec_get_frame_defaults(&s->picture); | |||||
| s->picture.key_frame= 1; | |||||
| s->picture.pict_type = AV_PICTURE_TYPE_I; | |||||
| avctx->coded_frame= &s->picture; | |||||
| avctx->coded_frame->key_frame = 1; | |||||
| avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| static av_cold int targa_encode_close(AVCodecContext *avctx) | |||||
| { | |||||
| av_frame_free(&avctx->coded_frame); | |||||
| return 0; | |||||
| } | |||||
| AVCodec ff_targa_encoder = { | AVCodec ff_targa_encoder = { | ||||
| .name = "targa", | .name = "targa", | ||||
| .long_name = NULL_IF_CONFIG_SMALL("Truevision Targa image"), | .long_name = NULL_IF_CONFIG_SMALL("Truevision Targa image"), | ||||
| .type = AVMEDIA_TYPE_VIDEO, | .type = AVMEDIA_TYPE_VIDEO, | ||||
| .id = AV_CODEC_ID_TARGA, | .id = AV_CODEC_ID_TARGA, | ||||
| .priv_data_size = sizeof(TargaContext), | |||||
| .init = targa_encode_init, | .init = targa_encode_init, | ||||
| .close = targa_encode_close, | |||||
| .encode2 = targa_encode_frame, | .encode2 = targa_encode_frame, | ||||
| .pix_fmts = (const enum AVPixelFormat[]){ | .pix_fmts = (const enum AVPixelFormat[]){ | ||||
| AV_PIX_FMT_BGR24, AV_PIX_FMT_BGRA, AV_PIX_FMT_RGB555LE, AV_PIX_FMT_GRAY8, | AV_PIX_FMT_BGR24, AV_PIX_FMT_BGRA, AV_PIX_FMT_RGB555LE, AV_PIX_FMT_GRAY8, | ||||