#include "avcodec.h"
#include "bytestream.h"
+#include "libavutil/imgutils.h"
typedef struct PCXContext {
AVFrame picture;
int bpp, nplanes, i, y, line_bytes, written;
const uint32_t *pal = NULL;
+ uint32_t palette256[256];
const uint8_t *src;
*pict = *(AVFrame *)data;
case PIX_FMT_RGB4_BYTE:
case PIX_FMT_BGR4_BYTE:
case PIX_FMT_GRAY8:
+ bpp = 8;
+ nplanes = 1;
+ ff_set_systematic_pal2(palette256, avctx->pix_fmt);
+ pal = palette256;
+ break;
case PIX_FMT_PAL8:
bpp = 8;
nplanes = 1;
}
AVCodec ff_pcx_encoder = {
- "pcx",
- AVMEDIA_TYPE_VIDEO,
- CODEC_ID_PCX,
- sizeof(PCXContext),
- pcx_encode_init,
- pcx_encode_frame,
- NULL,
+ .name = "pcx",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .id = CODEC_ID_PCX,
+ .priv_data_size = sizeof(PCXContext),
+ .init = pcx_encode_init,
+ .encode = pcx_encode_frame,
.pix_fmts = (const enum PixelFormat[]){
PIX_FMT_RGB24,
PIX_FMT_RGB8, PIX_FMT_BGR8, PIX_FMT_RGB4_BYTE, PIX_FMT_BGR4_BYTE, PIX_FMT_GRAY8, PIX_FMT_PAL8,