[Ffmpeg-cvslog] r6780 - trunk/libavcodec/pnm.c
kostya
subversion
Tue Oct 24 07:00:15 CEST 2006
Author: kostya
Date: Tue Oct 24 07:00:14 2006
New Revision: 6780
Modified:
trunk/libavcodec/pnm.c
Log:
PGM 16-bit gray support
Modified: trunk/libavcodec/pnm.c
==============================================================================
--- trunk/libavcodec/pnm.c (original)
+++ trunk/libavcodec/pnm.c Tue Oct 24 07:00:14 2006
@@ -70,7 +70,7 @@
static int pnm_decode_header(AVCodecContext *avctx, PNMContext * const s){
char buf1[32], tuple_type[32];
- int h, w, depth, maxval;;
+ int h, w, depth, maxval;
pnm_get(s, buf1, sizeof(buf1));
if (!strcmp(buf1, "P4")) {
@@ -142,8 +142,9 @@
return -1;
if (avctx->pix_fmt != PIX_FMT_MONOWHITE) {
pnm_get(s, buf1, sizeof(buf1));
+ if(atoi(buf1) == 65535 && avctx->pix_fmt == PIX_FMT_GRAY8)
+ avctx->pix_fmt = PIX_FMT_GRAY16BE;
}
-
/* more check if YUV420 */
if (avctx->pix_fmt == PIX_FMT_YUV420P) {
if ((avctx->width & 1) != 0)
@@ -194,6 +195,9 @@
case PIX_FMT_GRAY8:
n = avctx->width;
goto do_read;
+ case PIX_FMT_GRAY16BE:
+ n = avctx->width * 2;
+ goto do_read;
case PIX_FMT_MONOWHITE:
case PIX_FMT_MONOBLACK:
n = (avctx->width + 7) >> 3;
@@ -292,6 +296,10 @@
c = '5';
n = avctx->width;
break;
+ case PIX_FMT_GRAY16BE:
+ c = '5';
+ n = avctx->width * 2;
+ break;
case PIX_FMT_RGB24:
c = '6';
n = avctx->width * 3;
@@ -310,7 +318,7 @@
s->bytestream += strlen(s->bytestream);
if (avctx->pix_fmt != PIX_FMT_MONOWHITE) {
snprintf(s->bytestream, s->bytestream_end - s->bytestream,
- "%d\n", 255);
+ "%d\n", (avctx->pix_fmt != PIX_FMT_GRAY16BE) ? 255 : 65535);
s->bytestream += strlen(s->bytestream);
}
@@ -537,7 +545,7 @@
pnm_encode_frame,
NULL, //encode_end,
pnm_decode_frame,
- .pix_fmts= (enum PixelFormat[]){PIX_FMT_GRAY8, -1},
+ .pix_fmts= (enum PixelFormat[]){PIX_FMT_GRAY8, PIX_FMT_GRAY16BE, -1},
};
#endif // CONFIG_PGM_ENCODER
More information about the ffmpeg-cvslog
mailing list