Copyright (c) Hyperion Entertainment and contributors.
YUVN IFF YUV Image Data
Jump to navigation
Jump to search
YUVN
For storage of Y:U:V image data (MacroSystem)
yuvn.doc:
---------------------------------------------------------------------------
FORM YUVN
developed by:
MS MacroSystem Computer GmbH (Germany)
Henning Friedl
(18.4.92)
---------------------------------------------------------------------------
FORM YUVN
The IFF-format YUVN is designed to store YUV-pictures which mainly are used
in broadcast television. YUVN supports CCIR-601-2 which is a worldwide
standard for PAL- and NTSC-television.
---------------------------------------------------------------------------
Chunk 'YCHD'
The required property 'YCHD' holds a header which describes the dimensions
of the image and some other information which are necessary to understand
the data in the following data-chunks. The chunk 'YCHD' must appear before
the first data-chunk ('DATY').
You will find all definitions of this chunk in the file 'yuvn.i'.
---------------------------------------------------------------------------
Explanations on the components of the chunk 'YCHD':
ychd_Width
ychd_Width indicates the width of the stored image. Using YUV_MODE_411,
the width must be a multiple of four, usind YUV_MODE_422 or YUV_MODE_211 it
must be a multiple of two! Using YUV_MODE_444, YUV_MODE_400, YUV_MODE_222
or YUV_MODE_200 width may be any value.
The number of U- and V-pixels per line depends on the used YUV_MODE. See
the table below for details.
Mode | Y-pixels | U-pixels | V-pixels
-----------------------------+----------------+----------------+---------------
YCHD_MODE_400, YCHD_MODE_200 | ychd_Width | - | -
YCHD_MODE_411 | ychd_Width (4) | ychd_Width / 4 | ychd_Width / 4
YCHD_MODE_422, YCHD_MODE_211 | ychd_Width (2) | ychd_Width / 2 | ychd_Width / 2
YCHD_MODE_444, YCHD_MODE_222 | ychd_Width | ychd_Width | ychd_Width
(2) means, in this mode ychd_Width MUST be a multiple of two!
(4) means, in this mode ychd_Width MUST be a multiple of four!
ychd_Height
ychd_Height indicates the height (number of rows) of the image. If a
full-frame picture is stored, ychd_Height must be a multiple of two!
ychd_PageWidth, ychd_PageHeight
These fields describe the dimensions of the source page. The image itself
can be smaller or larger. If not used, set this to ychd_Width and
ychd_Height.
ychd_LeftEdge, ychd_TopEdge
These fields indicate the desired position of this image within the
destination picture. If not used, set to 0,0.
ychd_xAspect, ychd_yAspect
The aspect ratio of a single pixel in the stored image. If you do not know
the correct values (you should know them) use the following:
PAL-nonlace: 22/44 NTSC-nonlace: 22/52
PAL-lace: 22/22 NTSC-lace: 22/26
See also: 'Finding the Aspect Ratio' by Carolyn Scheppner (AmigaMail 9/10-91)
ychd_Compress
Type of compression. 0, if none.
ychd_Flags
Different Flags. Currently only bit-0 (YCHDB_LACE) is defined. It should
be set if the stored image has been a full-frame image within an interlace
video-source (TV, VTR, ...).
ychd_Mode
The type of YUV-format. If you only want to save the luminance information
(black-and-white) set ychd_Mode to YCHD_MODE_400. If you save the
additional color-difference-signals U and V set ychd_Mode to YCHD_MODE_411,
YCHD_MODE_422 or YCHD_MODE_444 depending what format you want to save.
With lores-pictures use YCHD_MODE_200, YCHD_MODE_211 or YCHD_MODE_222.
ychd_Norm
Information on the TV-system you got this picture from. If you really do
not know set ychd_Norm to YCHD_NORM_UNKNOWN. The better way is to set it
to the correct value YCHD_NORM_PAL or YCHD_NORM_NTSC!
---------------------------------------------------------------------------
The data-chunks DATY, DATU and DATV
In the IFF-file the chunks DATY, DATU and DATV must appear in this order.
The optional chunks DATU and DATV are both needed in color-pictures.
The data-chunk DATY
The chunk DATY contains the luminance-data (Y) of the YUV-picture. Each
pixel is stored in one byte (8 bits), the values follow the CCIR-standard.
Y ranges from 16 (black) to 235 (white). Isolated pixels may go lightly
beyond the limits but 0 and 255 must not appear!
The number of pixels in one line is given in ychd_Width. One line directly
follows the other, there are no pad-bytes between two lines even if
ychd_Width is odd. Only at the end of the chunk a pad-byte ($00) might be
inserted according the IFF guidelines.
Within a full-frame- (interlaced-) picture the lines are ordered as if it
was a non-lace picture (first line, first frame then first line, second
frame then second line first frame, ...). This is the same in IFF-ILBM or
the order of the bitmaps in Amiga-memory.
The data-chunks DATU and DATV
The chunks DATU and DATV are optional, they have to appear in
color-pictures because they contain the color-difference-signals.
Each pixel is stored in one byte (8 bits), the values follow the
CCIR-standard. The values range from 16 to 240 (128 means 0). For
calculations you have to subtract 128 so U or V are in a range from -112 to
112 where 0 means no color. Isolated pixels may go lightly beyond the
limits but 0 and 255 must not appear!
---------------------------------------------------------------------------
yuvn.i:
---------------------------------------------------------------------------
IFND YUVN_I
YUVN_I SET 1
;---------------------------------------------------------------------------
IFND EXEC_TYPES_I
INCLUDE "exec/types.i"
ENDC
;---------------------------------------------------------------------------
;---- ID's used in FORM YUVN
ID_YUVN: equ 'YUVN' ;the FORM-ID
ID_YCHD: equ 'YCHD' ;the header-chunk-ID
ID_DATY: equ 'DATY' ;the Y-data-chunk-ID
ID_DATU: equ 'DATU' ;the U-data-chunk-ID
ID_DATV: equ 'DATV' ;the V-data-chunk-ID
;---- values for ychd_Compress
COMPRESS_NONE equ 0 ;no comression
;---- values for ychd_Flags
YCHDB_LACE equ 0 ;if set the data-chunks contain
YCHDF_LACE equ 1 ;a full-frame (interlaced) picture
;---- values for ychd_Mode
YCHD_MODE_400 equ 0 ;a black-and-white picture (no DATU and DATV)
YCHD_MODE_411 equ 1 ;a YUV-411 picture
YCHD_MODE_422 equ 2 ;a YUV-422 picture
YCHD_MODE_444 equ 3 ;a YUV-444 picture
YCHD_MODE_200 equ 8 ;a lores black-and-white picture
YCHD_MODE_211 equ 9 ;a lores color picture (422, but lores)
YCHD_MODE_222 equ 10 ;a lores color picture (444, but lores)
YCHD_MODEB_LORES equ 3 ;test this bit to check for lores/hires
YCHD_MODEF_LORES equ 8
;---- values for ychd_Norm
YCHD_NORM_UNKNOWN equ 0 ;unknown, try to avoid this
YCHD_NORM_PAL equ 1 ;PAL 4.433 MHz
YCHD_NORM_NTSC equ 2 ;NTSC 3.579 MHz
;---- the FORM-YUVN DataHeader: 'YCHD'
STRUCTURE __YCHD_Header,0
UWORD ychd_Width ;picture width in Y-pixels
UWORD ychd_Height ;picture height (rows)
UWORD ychd_PageWidth ;source page width & height,
UWORD ychd_PageHeight ; normally same as Width and Height
UWORD ychd_LeftEdge ;position within the source page,
UWORD ychd_TopEdge ; normally 0,0
UBYTE ychd_AspectX ;pixel aspect (width : height)
UBYTE ychd_AspectY ;
UBYTE ychd_Compress ;(see above)
UBYTE ychd_Flags ;(see above)
UBYTE ychd_Mode ;(see above)
UBYTE ychd_Norm ;(see above)
WORD ychd_reserved2 ;must be 0
LONG ychd_reserved3 ;must be 0
LABEL ychd_SIZEOF
;---------------------------------------------------------------------------
; Warning, the UBYTE fields are byte-packed, C-compilers should not add pad
; bytes!
;---------------------------------------------------------------------------
ENDC ; YUVN_I