Mercurial > libavcodec.hg
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 |
