From f69a766d11e60cb11b45cee5a397db96bb8cf66e Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Sat, 31 Dec 2011 17:15:43 +0100 Subject: [PATCH] Fix mono* pam encoding. --- libavcodec/pamenc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavcodec/pamenc.c b/libavcodec/pamenc.c index 28fe7e13d7..c19ea0e117 100644 --- a/libavcodec/pamenc.c +++ b/libavcodec/pamenc.c @@ -50,7 +50,7 @@ static int pam_encode_frame(AVCodecContext *avctx, unsigned char *outbuf, h = avctx->height; w = avctx->width; switch (avctx->pix_fmt) { - case PIX_FMT_MONOWHITE: + case PIX_FMT_MONOBLACK: n = (w + 7) >> 3; depth = 1; maxval = 1; @@ -97,6 +97,13 @@ static int pam_encode_frame(AVCodecContext *avctx, unsigned char *outbuf, } ptr += linesize; } + } else if (avctx->pix_fmt == PIX_FMT_MONOBLACK){ + int j; + for (i = 0; i < h; i++) { + for (j = 0; j < w; j++) + *s->bytestream++ = ptr[j >> 3] >> (7 - j & 7) & 1; + ptr += linesize; + } } else { for (i = 0; i < h; i++) { memcpy(s->bytestream, ptr, n); @@ -115,6 +122,6 @@ AVCodec ff_pam_encoder = { .priv_data_size = sizeof(PNMContext), .init = ff_pnm_init, .encode = pam_encode_frame, - .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, PIX_FMT_NONE}, + .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_GRAY8, PIX_FMT_MONOBLACK, PIX_FMT_NONE}, .long_name = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"), };