diff options
Diffstat (limited to 'converter/ppm/ppmtompeg/docs/INPUT.FORMAT')
-rw-r--r-- | converter/ppm/ppmtompeg/docs/INPUT.FORMAT | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/converter/ppm/ppmtompeg/docs/INPUT.FORMAT b/converter/ppm/ppmtompeg/docs/INPUT.FORMAT new file mode 100644 index 00000000..8a663d3a --- /dev/null +++ b/converter/ppm/ppmtompeg/docs/INPUT.FORMAT @@ -0,0 +1,79 @@ + ---------------- + | FILE FORMATS | + ---------------- + +PPM FORMAT +---------- + +See http://netpbm.sourceforge.net/doc/ppm.html . + + +UCB YUV FORMAT +-------------- + +You should be aware that the YUV format used in the MPEG encoder is DIFFERENT +than the Abekas YUV format. The reason for this is that in MPEG, the U and +V components are subsampled 4:1. + +To give you an idea of what format the YUV file must be in, the following +code will read in a YUV file: + + unsigned char **y_data, **cr_data, **cb_data; + + void ReadYUV(char *fileName, int width, int height) + { + FILE *fpointer; + register int y; + + /* should allocate memory for y_data, cr_data, cb_data here */ + + fpointer = fopen(fileName, "r"); + + for (y = 0; y < height; y++) /* Y */ + fread(y_data[y], 1, width, fpointer); + + for (y = 0; y < height / 2; y++) /* U */ + fread(cb_data[y], 1, width / 2, fpointer); + + for (y = 0; y < height / 2; y++) /* V */ + fread(cr_data[y], 1, width / 2, fpointer); + + fclose(fpointer); + } + +There are two reasons why you'd want to use YUV files rather than PPM files: + 1) The YUV files are 50% the size of the corresponding PPM files + 2) The ENCODER will run slightly faster, since it doesn't have to + do the RGB to YUV conversion itself. + + +ABEKAS YUV FORMAT +----------------- + +The Abekas YUV Format interlaces the Y, U, and V values in a 4:2:2 format. +The interlacing pattern is + +UYVY + +for each group of 4 bytes in the file. + + +PHILLIPS YUV FORMAT +------------------- + +The Phillips YUV Format interlaces the Y, U, and V values in a 4:2:2 format. +The interlacing pattern is + +YVYU + +for each group of 4 bytes in the file. + + +You may specify either ABEKAS, PHILLIPS, or UCB as the YUV_FORMAT when +encoding ; the encoder defaults to UCB YUV_FORMAT if not specified. +In addition, if you've got a weird interlacing format, you can also +try and de-interlace it by giving the YUV pattern in the YUV_FORMAT. +So a YUV 4:4:4 format would be + +YUVYUV + |