comparison pnmenc.c @ 9002:eb98d61af310 libavcodec

Support 48-bit RGB PPM image.
author pross
date Sun, 22 Feb 2009 00:56:55 +0000
parents 04423b2f6e0b
children 18b83dac1221
comparison
equal deleted inserted replaced
9001:ec04c3c5a3e5 9002:eb98d61af310
61 p->key_frame= 1; 61 p->key_frame= 1;
62 62
63 switch(avctx->pix_fmt) { 63 switch(avctx->pix_fmt) {
64 default: 64 default:
65 return -1; 65 return -1;
66 case PIX_FMT_RGB48BE:
67 n = avctx->width * 6;
68 goto do_read;
66 case PIX_FMT_RGB24: 69 case PIX_FMT_RGB24:
67 n = avctx->width * 3; 70 n = avctx->width * 3;
68 goto do_read; 71 goto do_read;
69 case PIX_FMT_GRAY8: 72 case PIX_FMT_GRAY8:
70 n = avctx->width; 73 n = avctx->width;
193 break; 196 break;
194 case PIX_FMT_RGB24: 197 case PIX_FMT_RGB24:
195 c = '6'; 198 c = '6';
196 n = avctx->width * 3; 199 n = avctx->width * 3;
197 break; 200 break;
201 case PIX_FMT_RGB48BE:
202 c = '6';
203 n = avctx->width * 6;
204 break;
198 case PIX_FMT_YUV420P: 205 case PIX_FMT_YUV420P:
199 c = '5'; 206 c = '5';
200 n = avctx->width; 207 n = avctx->width;
201 h1 = (h * 3) / 2; 208 h1 = (h * 3) / 2;
202 break; 209 break;
207 "P%c\n%d %d\n", 214 "P%c\n%d %d\n",
208 c, avctx->width, h1); 215 c, avctx->width, h1);
209 s->bytestream += strlen(s->bytestream); 216 s->bytestream += strlen(s->bytestream);
210 if (avctx->pix_fmt != PIX_FMT_MONOWHITE) { 217 if (avctx->pix_fmt != PIX_FMT_MONOWHITE) {
211 snprintf(s->bytestream, s->bytestream_end - s->bytestream, 218 snprintf(s->bytestream, s->bytestream_end - s->bytestream,
212 "%d\n", (avctx->pix_fmt != PIX_FMT_GRAY16BE) ? 255 : 65535); 219 "%d\n", (avctx->pix_fmt != PIX_FMT_GRAY16BE && avctx->pix_fmt != PIX_FMT_RGB48BE) ? 255 : 65535);
213 s->bytestream += strlen(s->bytestream); 220 s->bytestream += strlen(s->bytestream);
214 } 221 }
215 222
216 ptr = p->data[0]; 223 ptr = p->data[0];
217 linesize = p->linesize[0]; 224 linesize = p->linesize[0];
392 sizeof(PNMContext), 399 sizeof(PNMContext),
393 common_init, 400 common_init,
394 pnm_encode_frame, 401 pnm_encode_frame,
395 NULL, //encode_end, 402 NULL, //encode_end,
396 pnm_decode_frame, 403 pnm_decode_frame,
397 .pix_fmts= (enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_NONE}, 404 .pix_fmts= (enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB48BE, PIX_FMT_NONE},
398 .long_name= NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"), 405 .long_name= NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"),
399 }; 406 };
400 #endif // CONFIG_PPM_ENCODER 407 #endif // CONFIG_PPM_ENCODER
401 408
402 #if CONFIG_PBM_ENCODER 409 #if CONFIG_PBM_ENCODER