/*
* PNM image format
- * Copyright (c) 2002, 2003 Fabrice Bellard.
+ * Copyright (c) 2002, 2003 Fabrice Bellard
*
* This file is part of FFmpeg.
*
static int pnm_decode_frame(AVCodecContext *avctx,
void *data, int *data_size,
- const uint8_t *buf, int buf_size)
+ AVPacket *avpkt)
{
+ const uint8_t *buf = avpkt->data;
+ int buf_size = avpkt->size;
PNMContext * const s = avctx->priv_data;
AVFrame *picture = data;
AVFrame * const p= (AVFrame*)&s->picture;
switch(avctx->pix_fmt) {
default:
return -1;
+ case PIX_FMT_RGB48BE:
+ n = avctx->width * 6;
+ goto do_read;
case PIX_FMT_RGB24:
n = avctx->width * 3;
goto do_read;
c = '6';
n = avctx->width * 3;
break;
+ case PIX_FMT_RGB48BE:
+ c = '6';
+ n = avctx->width * 6;
+ break;
case PIX_FMT_YUV420P:
c = '5';
n = avctx->width;
s->bytestream += strlen(s->bytestream);
if (avctx->pix_fmt != PIX_FMT_MONOWHITE) {
snprintf(s->bytestream, s->bytestream_end - s->bytestream,
- "%d\n", (avctx->pix_fmt != PIX_FMT_GRAY16BE) ? 255 : 65535);
+ "%d\n", (avctx->pix_fmt != PIX_FMT_GRAY16BE && avctx->pix_fmt != PIX_FMT_RGB48BE) ? 255 : 65535);
s->bytestream += strlen(s->bytestream);
}
#endif
-#ifdef CONFIG_PGM_ENCODER
+#if CONFIG_PGM_DECODER
+AVCodec pgm_decoder = {
+ "pgm",
+ CODEC_TYPE_VIDEO,
+ CODEC_ID_PGM,
+ sizeof(PNMContext),
+ common_init,
+ NULL,
+ NULL,
+ pnm_decode_frame,
+ CODEC_CAP_DR1,
+ .pix_fmts= (enum PixelFormat[]){PIX_FMT_GRAY8, PIX_FMT_GRAY16BE, PIX_FMT_NONE},
+ .long_name= NULL_IF_CONFIG_SMALL("PGM (Portable GrayMap) image"),
+};
+#endif
+
+#if CONFIG_PGM_ENCODER
AVCodec pgm_encoder = {
"pgm",
CODEC_TYPE_VIDEO,
sizeof(PNMContext),
common_init,
pnm_encode_frame,
- NULL, //encode_end,
- pnm_decode_frame,
.pix_fmts= (enum PixelFormat[]){PIX_FMT_GRAY8, PIX_FMT_GRAY16BE, PIX_FMT_NONE},
- .long_name= "PGM (Portable GrayMap) image",
+ .long_name= NULL_IF_CONFIG_SMALL("PGM (Portable GrayMap) image"),
};
#endif // CONFIG_PGM_ENCODER
-#ifdef CONFIG_PGMYUV_ENCODER
+#if CONFIG_PGMYUV_DECODER
+AVCodec pgmyuv_decoder = {
+ "pgmyuv",
+ CODEC_TYPE_VIDEO,
+ CODEC_ID_PGMYUV,
+ sizeof(PNMContext),
+ common_init,
+ NULL,
+ NULL,
+ pnm_decode_frame,
+ CODEC_CAP_DR1,
+ .pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
+ .long_name= NULL_IF_CONFIG_SMALL("PGMYUV (Portable GrayMap YUV) image"),
+};
+#endif
+
+#if CONFIG_PGMYUV_ENCODER
AVCodec pgmyuv_encoder = {
"pgmyuv",
CODEC_TYPE_VIDEO,
sizeof(PNMContext),
common_init,
pnm_encode_frame,
- NULL, //encode_end,
- pnm_decode_frame,
.pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
- .long_name= "PGMYUV (Portable GrayMap YUV) image",
+ .long_name= NULL_IF_CONFIG_SMALL("PGMYUV (Portable GrayMap YUV) image"),
};
#endif // CONFIG_PGMYUV_ENCODER
-#ifdef CONFIG_PPM_ENCODER
+#if CONFIG_PPM_DECODER
+AVCodec ppm_decoder = {
+ "ppm",
+ CODEC_TYPE_VIDEO,
+ CODEC_ID_PPM,
+ sizeof(PNMContext),
+ common_init,
+ NULL,
+ NULL,
+ pnm_decode_frame,
+ CODEC_CAP_DR1,
+ .pix_fmts= (enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB48BE, PIX_FMT_NONE},
+ .long_name= NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"),
+};
+#endif
+
+#if CONFIG_PPM_ENCODER
AVCodec ppm_encoder = {
"ppm",
CODEC_TYPE_VIDEO,
sizeof(PNMContext),
common_init,
pnm_encode_frame,
- NULL, //encode_end,
- pnm_decode_frame,
- .pix_fmts= (enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_NONE},
- .long_name= "PPM (Portable PixelMap) image",
+ .pix_fmts= (enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB48BE, PIX_FMT_NONE},
+ .long_name= NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"),
};
#endif // CONFIG_PPM_ENCODER
-#ifdef CONFIG_PBM_ENCODER
+#if CONFIG_PBM_DECODER
+AVCodec pbm_decoder = {
+ "pbm",
+ CODEC_TYPE_VIDEO,
+ CODEC_ID_PBM,
+ sizeof(PNMContext),
+ common_init,
+ NULL,
+ NULL,
+ pnm_decode_frame,
+ CODEC_CAP_DR1,
+ .pix_fmts= (enum PixelFormat[]){PIX_FMT_MONOWHITE, PIX_FMT_NONE},
+ .long_name= NULL_IF_CONFIG_SMALL("PBM (Portable BitMap) image"),
+};
+#endif
+
+#if CONFIG_PBM_ENCODER
AVCodec pbm_encoder = {
"pbm",
CODEC_TYPE_VIDEO,
sizeof(PNMContext),
common_init,
pnm_encode_frame,
- NULL, //encode_end,
- pnm_decode_frame,
.pix_fmts= (enum PixelFormat[]){PIX_FMT_MONOWHITE, PIX_FMT_NONE},
- .long_name= "PBM (Portable BitMap) image",
+ .long_name= NULL_IF_CONFIG_SMALL("PBM (Portable BitMap) image"),
};
#endif // CONFIG_PBM_ENCODER
-#ifdef CONFIG_PAM_ENCODER
+#if CONFIG_PAM_DECODER
+AVCodec pam_decoder = {
+ "pam",
+ CODEC_TYPE_VIDEO,
+ CODEC_ID_PAM,
+ sizeof(PNMContext),
+ common_init,
+ NULL,
+ NULL,
+ pnm_decode_frame,
+ CODEC_CAP_DR1,
+ .pix_fmts= (enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, PIX_FMT_NONE},
+ .long_name= NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"),
+};
+#endif
+
+#if CONFIG_PAM_ENCODER
AVCodec pam_encoder = {
"pam",
CODEC_TYPE_VIDEO,
sizeof(PNMContext),
common_init,
pam_encode_frame,
- NULL, //encode_end,
- pnm_decode_frame,
.pix_fmts= (enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, PIX_FMT_NONE},
- .long_name= "PAM (Portable AnyMap) image",
+ .long_name= NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"),
};
#endif // CONFIG_PAM_ENCODER