diff -up netpbm-10.35.58/converter/other/fiasco/codec/coder.c.pnmtofiasco-stdin netpbm-10.35.58/converter/other/fiasco/codec/coder.c --- netpbm-10.35.58/converter/other/fiasco/codec/coder.c.pnmtofiasco-stdin 2009-01-19 09:23:57.000000000 +0100 +++ netpbm-10.35.58/converter/other/fiasco/codec/coder.c 2009-01-21 08:03:00.000000000 +0100 @@ -213,15 +213,14 @@ alloc_coder (char const * const *inputna */ { char *filename; - int width, w = 0, height, h = 0; + int width, w = 0, height, h = 0, format; bool_t color, c = NO; + xelval maxval; unsigned n; for (n = 0; (filename = get_input_image_name (inputname, n)); n++) { FILE *file; - xelval maxval; - int format; if (filename == NULL) file = stdin; else @@ -251,6 +250,8 @@ alloc_coder (char const * const *inputna wi->width = w; wi->height = h; wi->color = c; + wi->format = format; + wi->maxval = maxval; } /* @@ -642,7 +643,18 @@ video_coder (char const * const *image_t */ future_frame = frame == future_display; c->mt->number = frame; - c->mt->original = read_image (image_name); + if (strcmp(image_name, "-")) { + c->mt->original = read_image (image_name); + } else { /* stdin is not seekable - read image contents without rewind */ + int width = wfa->wfainfo->width; + int height = wfa->wfainfo->height; + int color = wfa->wfainfo->color; + int format = wfa->wfainfo->format; + xelval maxval = wfa->wfainfo->maxval; + + c->mt->original = alloc_image(width, height, color, FORMAT_4_4_4); + read_image_data(c->mt->original, stdin, color, width, height, maxval, format); + } if (c->tiling->exponent && type == I_FRAME) perform_tiling (c->mt->original, c->tiling); diff -up netpbm-10.35.58/converter/other/fiasco/codec/wfa.h.pnmtofiasco-stdin netpbm-10.35.58/converter/other/fiasco/codec/wfa.h --- netpbm-10.35.58/converter/other/fiasco/codec/wfa.h.pnmtofiasco-stdin 2009-01-19 09:23:57.000000000 +0100 +++ netpbm-10.35.58/converter/other/fiasco/codec/wfa.h 2009-01-21 08:03:28.000000000 +0100 @@ -75,6 +75,7 @@ typedef struct range_info unsigned level; /* bintree level of range */ } range_info_t; +#include "pnm.h" #include "image.h" #include "rpf.h" #include "bit-io.h" @@ -93,6 +94,8 @@ typedef struct wfa_info unsigned width; /* image width */ unsigned height; /* image height */ unsigned level; /* image level */ + unsigned format; /* image format */ + xelval maxval; /* image maximal pixel intensity value */ rpf_t *rpf; /* Standard reduced precision format */ rpf_t *dc_rpf; /* DC reduced precision format */ rpf_t *d_rpf; /* Delta reduced precision format */ diff -up netpbm-10.35.58/converter/other/fiasco/lib/image.c.pnmtofiasco-stdin netpbm-10.35.58/converter/other/fiasco/lib/image.c --- netpbm-10.35.58/converter/other/fiasco/lib/image.c.pnmtofiasco-stdin 2009-01-19 09:23:57.000000000 +0100 +++ netpbm-10.35.58/converter/other/fiasco/lib/image.c 2009-01-21 08:01:53.000000000 +0100 @@ -273,7 +273,7 @@ free_image (image_t *image) } -static void +void read_image_data(image_t * const image, FILE *input, const bool_t color, const int width, const int height, const xelval maxval, const int format) { diff -up netpbm-10.35.58/converter/other/fiasco/lib/image.h.pnmtofiasco-stdin netpbm-10.35.58/converter/other/fiasco/lib/image.h --- netpbm-10.35.58/converter/other/fiasco/lib/image.h.pnmtofiasco-stdin 2009-01-19 09:23:57.000000000 +0100 +++ netpbm-10.35.58/converter/other/fiasco/lib/image.h 2009-01-21 08:02:29.000000000 +0100 @@ -17,6 +17,8 @@ #ifndef _IMAGE_H #define _IMAGE_H +#include "pnm.h" + #include #include "types.h" #include "fiasco.h" @@ -51,6 +53,10 @@ read_pnmheader (const char *image_name, image_t * read_image (const char *image_name); void +read_image_data(image_t * const image, FILE *input, const bool_t color, + const int width, const int height, const xelval maxval, + const int format); +void write_image (const char *image_name, const image_t *image); bool_t same_image_type (const image_t *img1, const image_t *img2);