summaryrefslogtreecommitdiffstats
path: root/bltsville/ocd
diff options
context:
space:
mode:
authorHashcode <hashcode0f@gmail.com>2015-01-30 16:57:53 -0800
committerHashcode <hashcode0f@gmail.com>2015-01-30 16:57:53 -0800
commit1a79d769666832ce71bed28dd92f75403dc3f000 (patch)
tree4596db178c119485eba8fab0e554dcbf06604723 /bltsville/ocd
parenta63bfcb07c511ad9120516cfb495c82cdb125d0e (diff)
downloadhardware_ti_omap4-1a79d769666832ce71bed28dd92f75403dc3f000.zip
hardware_ti_omap4-1a79d769666832ce71bed28dd92f75403dc3f000.tar.gz
hardware_ti_omap4-1a79d769666832ce71bed28dd92f75403dc3f000.tar.bz2
bltsville: create subdir for merge w/ omap4-next
Diffstat (limited to 'bltsville/ocd')
-rw-r--r--bltsville/ocd/README1
-rwxr-xr-xbltsville/ocd/include/ocd.h801
-rwxr-xr-xbltsville/ocd/index.html617
-rwxr-xr-xbltsville/ocd/ocdlogo.jpgbin0 -> 45982 bytes
4 files changed, 1419 insertions, 0 deletions
diff --git a/bltsville/ocd/README b/bltsville/ocd/README
new file mode 100644
index 0000000..20a1485
--- /dev/null
+++ b/bltsville/ocd/README
@@ -0,0 +1 @@
+git://github.com/graphics/ocd.git
diff --git a/bltsville/ocd/include/ocd.h b/bltsville/ocd/include/ocd.h
new file mode 100755
index 0000000..14e6fc6
--- /dev/null
+++ b/bltsville/ocd/include/ocd.h
@@ -0,0 +1,801 @@
+/*
+ * ocd.h
+ *
+ * Open Color format Definitions
+ *
+ * Copyright (C) 2011 Texas Instruments, Inc.
+ *
+ * This file defines the Open Color format Definitions (OCD), an open,
+ * extensible, color format definition.
+ *
+ * This work is licensed under the Creative Commons Attribution-NoDerivs 3.0
+ * Unported License. To view a copy of this license, visit
+ * http://creativecommons.org/licenses/by-nd/3.0/ or send a letter to
+ * Creative Commons, 444 Castro Street, Suite 900, Mountain View, California,
+ * 94041, USA.
+ */
+
+#ifndef OCD_H
+#define OCD_H
+
+/*
+ * ocdformat - specifies one of the supported color formats
+ *
+ * ocdformat consists of 8 bits indicating the vendor ID, followed by 24 bits
+ * specified by the vendor.
+ *
+ * VENDOR_ALL is a common ID with formats defined below.
+ */
+
+/****** Bits 31-24 are the vendor ID. The other 24 are vendor defined. ******/
+#define OCDFMTDEF_VENDOR_SHIFT 24
+#define OCDFMTDEF_VENDOR_MASK (0xFF << OCDFMTDEF_VENDOR_SHIFT)
+
+#define OCDFMTDEF_VENDOR_ALL \
+ (0x00 << OCDFMTDEF_VENDOR_SHIFT) /* Common format */
+#define OCDFMTDEF_VENDOR_TI \
+ (0x01 << OCDFMTDEF_VENDOR_SHIFT) /* Texas Instruments, Inc. */
+/* 0xF0-0xFF reserved */
+
+/***** OCDFMTDEF_VENDOR_ALL *****/
+/* The formats in this group are created using combinations of the values
+ listed below. */
+
+/*
+ * 33222222 222 21 1 1 1 11 111 1
+ * 10987654 321 09 8 7 6 54 321 0 9 876 543210
+ * [------] [-] [] | | | [] [-] | | [-] [----]
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | color bits minus 1
+ * | | | | | | | | | | |
+ * | | | | | | | | | | container
+ * | | | | | | | | | |
+ * | | | | | | | | | left justified
+ * | | | | | | | | |
+ * | | | | | | | | reversed
+ * | | | | | | | |
+ * | | | | | | | layout
+ * | | | | | | |
+ * | | | | | | subsampling
+ * | | | | | |
+ * | | | | | subsample position \
+ * | | | | | |
+ * | | | | non-premult/fill empty 0 > alpha components
+ * | | | | |
+ * | | | alpha /
+ * | | |
+ * | | standard
+ * | |
+ * | color space
+ * |
+ * vendor ID (VENDOR_ALL = 0x00)
+ */
+
+/**** Bits 23-21 define the color space. ****/
+#define OCDFMTDEF_CS_SHIFT 21
+#define OCDFMTDEF_CS_MASK (7 << OCDFMTDEF_CS_SHIFT)
+
+#define OCDFMTDEF_CS_MONO \
+ (0 << OCDFMTDEF_CS_SHIFT) /* Monochrome (luma only) */
+#define OCDFMTDEF_CS_LUT \
+ (1 << OCDFMTDEF_CS_SHIFT) /* Look-up table (using palette) */
+#define OCDFMTDEF_CS_RGB \
+ (2 << OCDFMTDEF_CS_SHIFT) /* Red, green, blue */
+#define OCDFMTDEF_CS_YCbCr \
+ (3 << OCDFMTDEF_CS_SHIFT) /* YCbCr (YUV) (luma & chroma) */
+#define OCDFMTDEF_CS_ALPHA \
+ (4 << OCDFMTDEF_CS_SHIFT) /* Alpha only (transparency) */
+/* 5 reserved */
+/* 6 reserved */
+/* 7 reserved */
+
+/**** Bits 20-19 define the standard ****/
+#define OCDFMTDEF_STD_SHIFT 19
+#define OCDFMTDEF_STD_MASK (3 << OCDFMTDEF_STD_SHIFT)
+
+#define OCDFMTDEF_STD_ITUR_601_YCbCr \
+ (0 << OCDFMTDEF_STD_SHIFT) /* ITU-R BT.601 - YCbCr only */
+/* 0 default for non-YCbCr */
+#define OCDFMTDEF_STD_ITUR_709_YCbCr \
+ (1 << OCDFMTDEF_STD_SHIFT) /* ITU-R BT.709 - YCbCr only */
+/* 1 reserved for non-YCbCr */
+/* 2 reserved */
+#define OCDFMTDEF_FULLSCALE_YCbCr \
+ (3 << OCDFMTDEF_STD_SHIFT) /* RGB 0 to 255 =>
+ YCbCr 0 to 255, -128 to 127 */
+/* 3 reserved for non-YCbCr */
+
+/**** Bits 18-16 are component modifiers for non-alpha c/s only ****/
+#define OCDFMTDEF_ALPHA_SHIFT 18
+#define OCDFMTDEF_ALPHA \
+ (1 << OCDFMTDEF_ALPHA_SHIFT) /* An alpha component is added to the
+ format */
+#define OCDFMTDEF_NON_PREMULT_SHIFT 17
+#define OCDFMTDEF_NON_PREMULT \
+ (1 << OCDFMTDEF_NON_PREMULT_SHIFT) /* Component(s) is(are) not
+ premultiplied by the alpha
+ (default is
+ premultiplied) */
+#define OCDFMTDEF_FILL_EMPTY_0_SHIFT \
+ OCDFMTDEF_NON_PREMULT_SHIFT
+#define OCDFMTDEF_FILL_EMPTY_0 \
+ OCDFMTDEF_NON_PREMULT /* Empty bits are hard-wired to 0
+ (default is 1) */
+#define OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNMENT_SHIFT 16
+#define OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNED \
+ (0 << OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNMENT_SHIFT) /* Subsamples aligned
+ w/1st non-subsample
+ (e.g. MPEG-2) */
+#define OCDFMTDEF_SUBSAMPLE_HORZ_CENTERED \
+ (1 << OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNMENT_SHIFT) /* Subsamples are
+ between
+ non-subsamples
+ (e.g. MPEG-1) */
+
+/*** Bits 18-16 are used differently for alpha c/s ***/
+/* Bit 18 is reserved */
+/*** Bits 17-16 define the number of alpha components for alpha c/s ***/
+#define OCDFMTDEF_ALPHA_COMPONENTS_SHIFT 16
+#define OCDFMTDEF_ALPHA_COMPONENTS_MASK \
+ (3 << OCDFMTDEF_ALPHA_COMPONENTS_SHIFT)
+
+#define OCDFMTDEF_ALPHA_COMPONENTS_1 (0 << OCDFMTDEF_ALPHA_COMPONENTS_SHIFT)
+#define OCDFMTDEF_ALPHA_COMPONENTS_2 (1 << OCDFMTDEF_ALPHA_COMPONENTS_SHIFT)
+#define OCDFMTDEF_ALPHA_COMPONENTS_3 (2 << OCDFMTDEF_ALPHA_COMPONENTS_SHIFT)
+#define OCDFMTDEF_ALPHA_COMPONENTS_4 (3 << OCDFMTDEF_ALPHA_COMPONENTS_SHIFT)
+
+/**** Bits 15-14 define subsampling ****/
+#define OCDFMTDEF_SUBSAMPLE_SHIFT 14
+#define OCDFMTDEF_SUBSAMPLE_MASK (3 << OCDFMTDEF_SUBSAMPLE_SHIFT)
+
+#define OCDFMTDEF_SUBSAMPLE_NONE \
+ (0 << OCDFMTDEF_SUBSAMPLE_SHIFT) /* No subsampling;
+ each pixel has each component */
+#define OCDFMTDEF_SUBSAMPLE_422_YCbCr \
+ (1 << OCDFMTDEF_SUBSAMPLE_SHIFT) /* 4:2:2 subsampling;
+ each horizontal pair of pixels
+ has one Y (luma) component each,
+ but shares one Cb and Cr (chroma)
+ component. */
+/* 1 reserved for non-YCbCr */
+#define OCDFMTDEF_SUBSAMPLE_420_YCbCr \
+ (2 << OCDFMTDEF_SUBSAMPLE_SHIFT) /* 4:2:0 subsampling;
+ each square of four pixels has
+ one Y (luma) component each, but
+ shares one Cb and Cr (chroma)
+ component. */
+/* 2 reserved for non-YCbCr */
+#define OCDFMTDEF_SUBSAMPLE_411_YCbCr \
+ (3 << OCDFMTDEF_SUBSAMPLE_SHIFT) /* 4:1:1 subsampling;
+ each horizontal four pixels have
+ one Y (luma) component each, but
+ shares one Cb and Cr (chroma)
+ component. */
+/* 3 reserved for non-YCbCr */
+
+/**** Bits 13-11 define the memory layout
+ (combined with _REVERSED and _LEFT_JUSTIFIED) ****/
+#define OCDFMTDEF_LAYOUT_SHIFT 11
+#define OCDFMTDEF_LAYOUT_MASK (7 << OCDFMTDEF_LAYOUT_SHIFT)
+
+#define OCDFMTDEF_PACKED \
+ (0 << OCDFMTDEF_LAYOUT_SHIFT) /* Components interleaved together */
+#define OCDFMTDEF_DISTRIBUTED \
+ (1 << OCDFMTDEF_LAYOUT_SHIFT) /* Components are distributed evenly
+ across the container; e.g. a 64-bit
+ container with four 8-bit components
+ are distributed with 8 bits between
+ them: __C0__C1__C2__C3 */
+#define OCDFMTDEF_2_PLANE_YCbCr \
+ (2 << OCDFMTDEF_LAYOUT_SHIFT) /* Y component is separated from Cb & Cr
+ components. After the Y plane, an
+ interleaved CbCr plane follows. */
+/* 2 reserved for non-YCbCr */
+#define OCDFMTDEF_3_PLANE_STACKED \
+ (3 << OCDFMTDEF_LAYOUT_SHIFT) /* Y, Cb, and Cr components are
+ separated. After the Y plane is a Cb
+ plane, and then a Cr plane. */
+/* 3 reserved for non-YCbCr and non-RGB */
+/* 4 reserved */
+/* 5 reserved */
+/* 6 reserved */
+#define OCDFMTDEF_3_PLANE_SIDE_BY_SIDE_YCbCr \
+ (7 << OCDFMTDEF_LAYOUT_SHIFT) /* Y, Cb, and Cr components are
+ separated. After the Y plane the Cb
+ and Cr planes are separated but
+ side-by-side in memory (interleaved
+ on a line-by-line basis). */
+/* 7 reserved for non-YCbCr */
+
+/**** Bits 10-9 are layout modifiers. ****/
+#define OCDFMTDEF_REVERSED_SHIFT 10
+#define OCDFMTDEF_REVERSED \
+ (1 << OCDFMTDEF_REVERSED_SHIFT) /* Order of components reversed
+ (default is RGB or CbCr) */
+#define OCDFMTDEF_LEFT_JUSTIFIED_SHIFT 9
+#define OCDFMTDEF_LEFT_JUSTIFIED \
+ (1 << OCDFMTDEF_LEFT_JUSTIFIED_SHIFT) /* Components are shifted
+ left (default is shifted
+ right); for 3-plane YCbCr,
+ this indicates wasted space
+ to the right of the Cb & Cr
+ planes (stride matches Y
+ plane). */
+
+/**** Bits 6-8 specify the container type. ****/
+#define OCDFMTDEF_CONTAINER_SHIFT 6
+#define OCDFMTDEF_CONTAINER_MASK (7 << OCDFMTDEF_CONTAINER_SHIFT)
+
+#define OCDFMTDEF_CONTAINER_8BIT (0 << OCDFMTDEF_CONTAINER_SHIFT)
+#define OCDFMTDEF_CONTAINER_16BIT (1 << OCDFMTDEF_CONTAINER_SHIFT)
+#define OCDFMTDEF_CONTAINER_24BIT (2 << OCDFMTDEF_CONTAINER_SHIFT)
+#define OCDFMTDEF_CONTAINER_32BIT (3 << OCDFMTDEF_CONTAINER_SHIFT)
+/* 4 (0x008000) reserved */
+#define OCDFMTDEF_CONTAINER_48BIT (5 << OCDFMTDEF_CONTAINER_SHIFT)
+/* 6 (0x00C000) reserved */
+#define OCDFMTDEF_CONTAINER_64BIT (7 << OCDFMTDEF_CONTAINER_SHIFT)
+
+/**** Bits 0-5 contain the total number of component bits minus one. ****/
+/* To calculate the number of bits for each RGBA component, use the following
+ * formula:
+ *
+ * green bits = int((color bits + 2) / 3)
+ * blue bits = int((color bits - green bits) / 2)
+ * red bits = color bits - green bits - blue bits
+ * alpha bits (when present) = container size - color bits
+ *
+ * Ex. 1: RGB16 -> 16 bits
+ * green bits = int((16 + 2) / 3) = 6
+ * blue bits = int((16 - 6) / 2) = 5
+ * red bits = 16 - 6 - 5 = 5
+ * alpha bits = n/a
+ * Ex. 2: ARGB16 -> 16 bits
+ * green bits = int((16 + 2) / 3) = 6
+ * blue bits = int((16 - 6) / 2) = 5
+ * red bits = 16 - 6 - 5 = 5
+ * alpha bits = 24 - 16 = 8
+ * Ex. 3: RGB32 -> 32 bits
+ * green bits = int((32 + 2) / 3) = 11
+ * blue bits = int((32 - 11) / 2) = 10
+ * red bits = 32 - 11 - 10 = 11
+ * alpha bits = n/a
+ *
+ * For planar formats, the container indicates the total number of bits on the
+ * subsampled boundary, while the component bits are the average number of
+ * bits per pixel.
+ *
+ * Ex. 1: YV12 -> YCbCr 4:2:0 w/8-bit samples -> 4x8 + 2x8 = 48 bit container
+ * 48 bits / 4 pixels = 12 bpp
+ * Ex. 2: NV16 -> YCbCr 4:2:2 w/8-bit samples -> 2x8 + 2x8 = 32 bit container
+ * 24 bits / 2 pixels = 16 bpp
+ */
+#define OCDFMTDEF_COMPONENTSIZEMINUS1_SHIFT 0
+#define OCDFMTDEF_COMPONENTSIZEMINUS1_MASK \
+ (0x3F << OCDFMTDEF_COMPONENTSIZEMINUS1_SHIFT)
+
+
+/*
+ * The formats below are constructed from the definitions above. However, not
+ * all formats possible are specified (and named) below. The other formats
+ * which can be uniquely formed using the above definitions are legitimate
+ * formats, and may be used as well.
+ */
+enum ocdformat {
+ OCDFMT_UNKNOWN = -1,
+ OCDFMT_NONE = OCDFMT_UNKNOWN,
+
+ /*** Alpha only ***/
+ /** Packed **/
+ OCDFMT_ALPHA1 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_ALPHA |
+ OCDFMTDEF_ALPHA_COMPONENTS_1 |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (1 - 1),
+ OCDFMT_ALPHA2 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_ALPHA |
+ OCDFMTDEF_ALPHA_COMPONENTS_1 |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (2 - 1),
+ OCDFMT_ALPHA4 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_ALPHA |
+ OCDFMTDEF_ALPHA_COMPONENTS_1 |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (4 - 1),
+ OCDFMT_ALPHA8 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_ALPHA |
+ OCDFMTDEF_ALPHA_COMPONENTS_1 |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (8 - 1),
+ /* Sub-pixel */
+ OCDFMT_ALPHA4x1 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_ALPHA |
+ OCDFMTDEF_ALPHA_COMPONENTS_4 |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (4 - 1),
+ OCDFMT_ALPHA3x8 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_ALPHA |
+ OCDFMTDEF_ALPHA_COMPONENTS_3 |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_24BIT |
+ (24 - 1),
+ OCDFMT_ALPHA4x8 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_ALPHA |
+ OCDFMTDEF_ALPHA_COMPONENTS_4 |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_32BIT |
+ (32 - 1),
+
+ /*** Monochrome ***/
+ /** Packed **/
+ OCDFMT_MONO1 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_MONO |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (1 - 1),
+ OCDFMT_MONO2 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_MONO |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (2 - 1),
+ OCDFMT_MONO4 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_MONO |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (4 - 1),
+ OCDFMT_MONO8 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_MONO |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (8 - 1),
+
+ /*** Palettized (look-up-table) ***/
+ /** Packed **/
+ OCDFMT_LUT1 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_LUT |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (1 - 1),
+ OCDFMT_LUT2 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_LUT |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (2 - 1),
+ OCDFMT_LUT4 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_LUT |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (4 - 1),
+ OCDFMT_LUT8 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_LUT |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_8BIT |
+ (8 - 1),
+
+ /*** RGB ***/
+ /** Packed **/
+ /* No subsampling */
+ OCDFMT_RGB12 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_RGB |
+ OCDFMTDEF_SUBSAMPLE_NONE |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_16BIT |
+ (12 - 1), /* (15):4:4:4 */
+ OCDFMT_xRGB12 = OCDFMT_RGB12,
+ OCDFMT_1RGB12 = OCDFMT_xRGB12,
+ OCDFMT_0RGB12 = OCDFMT_xRGB12 |
+ OCDFMTDEF_FILL_EMPTY_0, /* (0):4:4:4 */
+
+ OCDFMT_BGR12 = OCDFMT_RGB12 |
+ OCDFMTDEF_REVERSED, /* (15):4:4:4 */
+ OCDFMT_xBGR12 = OCDFMT_BGR12,
+ OCDFMT_1BGR12 = OCDFMT_xBGR12,
+ OCDFMT_0BGR12 = OCDFMT_xBGR12 |
+ OCDFMTDEF_FILL_EMPTY_0, /* (0):4:4:4 */
+
+ OCDFMT_RGBx12 = OCDFMT_xRGB12 |
+ OCDFMTDEF_LEFT_JUSTIFIED, /* 4:4:4:(15) */
+ OCDFMT_RGB112 = OCDFMT_RGBx12,
+ OCDFMT_RGB012 = OCDFMT_RGBx12 |
+ OCDFMTDEF_FILL_EMPTY_0, /* 4:4:4:(0) */
+
+ OCDFMT_BGRx12 = OCDFMT_xRGB12 |
+ OCDFMTDEF_LEFT_JUSTIFIED |
+ OCDFMTDEF_REVERSED, /* 4:4:4:(15) */
+ OCDFMT_BGR112 = OCDFMT_BGRx12,
+ OCDFMT_BGR012 = OCDFMT_BGRx12 |
+ OCDFMTDEF_FILL_EMPTY_0, /* 4:4:4:(0) */
+
+ OCDFMT_RGB15 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_RGB |
+ OCDFMTDEF_SUBSAMPLE_NONE |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_16BIT |
+ (15 - 1), /* (1):5:5:5 */
+ OCDFMT_xRGB15 = OCDFMT_RGB15,
+ OCDFMT_1RGB15 = OCDFMT_xRGB15,
+ OCDFMT_0RGB15 = OCDFMT_xRGB15 |
+ OCDFMTDEF_FILL_EMPTY_0, /* (0):5:5:5 */
+
+ OCDFMT_BGR15 = OCDFMT_RGB15 |
+ OCDFMTDEF_REVERSED, /* (1):5:5:5 */
+ OCDFMT_xBGR15 = OCDFMT_BGR15,
+ OCDFMT_1BGR15 = OCDFMT_xBGR15,
+ OCDFMT_0BGR15 = OCDFMT_xBGR15 |
+ OCDFMTDEF_FILL_EMPTY_0, /* (0):5:5:5 */
+
+ OCDFMT_RGBx15 = OCDFMT_RGB15 |
+ OCDFMTDEF_LEFT_JUSTIFIED, /* 5:5:5:(1) */
+ OCDFMT_RGB115 = OCDFMT_RGBx15,
+ OCDFMT_RGB015 = OCDFMT_RGBx15 |
+ OCDFMTDEF_FILL_EMPTY_0, /* 5:5:5:(0) */
+
+ OCDFMT_BGRx15 = OCDFMT_RGB15 |
+ OCDFMTDEF_LEFT_JUSTIFIED |
+ OCDFMTDEF_REVERSED, /* 5:5:5:(1) */
+ OCDFMT_BGR115 = OCDFMT_BGRx15,
+ OCDFMT_BGR015 = OCDFMT_BGRx15 |
+ OCDFMTDEF_FILL_EMPTY_0, /* 5:5:5:(0) */
+
+ OCDFMT_RGB16 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_RGB |
+ OCDFMTDEF_SUBSAMPLE_NONE |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_16BIT |
+ (16 - 1), /* 5:6:5 */
+ OCDFMT_BGR16 = OCDFMT_RGB16 |
+ OCDFMTDEF_REVERSED, /* 5:6:5 */
+
+ OCDFMT_RGB24 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_RGB |
+ OCDFMTDEF_SUBSAMPLE_NONE |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_24BIT |
+ (24 - 1), /* 8:8:8 */
+ OCDFMT_BGR24 = OCDFMT_RGB24 |
+ OCDFMTDEF_REVERSED, /* 8:8:8 */
+
+ OCDFMT_xRGB16 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_RGB |
+ OCDFMTDEF_SUBSAMPLE_NONE |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_24BIT |
+ (16 - 1), /* (255):5:6:5 */
+ OCDFMT_1RGB16 = OCDFMT_xRGB16,
+ OCDFMT_0RGB16 = OCDFMT_xRGB16 |
+ OCDFMTDEF_FILL_EMPTY_0, /* (0):5:6:5 */
+
+ OCDFMT_xBGR16 = OCDFMT_xRGB16 |
+ OCDFMTDEF_REVERSED, /* (255):5:6:5 */
+ OCDFMT_1BGR16 = OCDFMT_xBGR16,
+ OCDFMT_0BGR16 = OCDFMT_xBGR16 |
+ OCDFMTDEF_FILL_EMPTY_0, /* (0):5:6:5 */
+
+ OCDFMT_RGBx16 = OCDFMT_xRGB16 |
+ OCDFMTDEF_LEFT_JUSTIFIED, /* 5:6:5:(255) */
+ OCDFMT_RGB116 = OCDFMT_RGBx16,
+ OCDFMT_RGB016 = OCDFMT_RGBx16 |
+ OCDFMTDEF_FILL_EMPTY_0, /* 5:6:5:(0) */
+
+ OCDFMT_BGRx16 = OCDFMT_xRGB16 |
+ OCDFMTDEF_LEFT_JUSTIFIED |
+ OCDFMTDEF_REVERSED, /* 5:6:5:(255) */
+ OCDFMT_BGR116 = OCDFMT_BGRx16,
+ OCDFMT_BGR016 = OCDFMT_BGRx16 |
+ OCDFMTDEF_FILL_EMPTY_0, /* 5:6:5:(0) */
+
+ OCDFMT_xRGB24 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_RGB |
+ OCDFMTDEF_SUBSAMPLE_NONE |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_32BIT |
+ (24 - 1), /* (255):8:8:8 */
+ OCDFMT_1RGB24 = OCDFMT_xRGB24,
+ OCDFMT_0RGB24 = OCDFMT_xRGB24 |
+ OCDFMTDEF_FILL_EMPTY_0, /* (0):8:8:8 */
+
+ OCDFMT_xBGR24 = OCDFMT_xRGB24 |
+ OCDFMTDEF_REVERSED, /* (255):8:8:8 */
+ OCDFMT_1BGR24 = OCDFMT_xBGR24,
+ OCDFMT_0BGR24 = OCDFMT_xBGR24 |
+ OCDFMTDEF_FILL_EMPTY_0, /* (0):8:8:8 */
+
+ OCDFMT_RGBx24 = OCDFMT_xRGB24 |
+ OCDFMTDEF_LEFT_JUSTIFIED, /* 8:8:8:(255) */
+ OCDFMT_RGB124 = OCDFMT_RGBx24,
+ OCDFMT_RGB024 = OCDFMT_RGBx24 |
+ OCDFMTDEF_FILL_EMPTY_0, /* 8:8:8:(0) */
+
+ OCDFMT_BGRx24 = OCDFMT_xRGB24 |
+ OCDFMTDEF_LEFT_JUSTIFIED |
+ OCDFMTDEF_REVERSED, /* 8:8:8:(255) */
+ OCDFMT_BGR124 = OCDFMT_BGRx24,
+ OCDFMT_BGR024 = OCDFMT_BGRx24 |
+ OCDFMTDEF_FILL_EMPTY_0, /* 8:8:8:(0) */
+
+ /* Premultiplied ARGB */
+ OCDFMT_ARGB12 = OCDFMT_xRGB12 |
+ OCDFMTDEF_ALPHA, /* 4:4:4:4 */
+ OCDFMT_ABGR12 = OCDFMT_xBGR12 |
+ OCDFMTDEF_ALPHA, /* 4:4:4:4 */
+ OCDFMT_RGBA12 = OCDFMT_RGBx12 |
+ OCDFMTDEF_ALPHA, /* 4:4:4:4 */
+ OCDFMT_BGRA12 = OCDFMT_BGRx12 |
+ OCDFMTDEF_ALPHA, /* 4:4:4:4 */
+
+ OCDFMT_ARGB16 = OCDFMT_xRGB16 |
+ OCDFMTDEF_ALPHA, /* 8:5:6:5 */
+ OCDFMT_ABGR16 = OCDFMT_ARGB16 |
+ OCDFMTDEF_REVERSED, /* 8:5:6:5 */
+ OCDFMT_RGBA16 = OCDFMT_ARGB16 |
+ OCDFMTDEF_LEFT_JUSTIFIED, /* 5:6:5:8 */
+ OCDFMT_BGRA16 = OCDFMT_ARGB16 |
+ OCDFMTDEF_LEFT_JUSTIFIED |
+ OCDFMTDEF_REVERSED, /* 5:6:5:8 */
+
+ OCDFMT_ARGB24 = OCDFMT_xRGB24 |
+ OCDFMTDEF_ALPHA, /* 8:8:8:8 */
+ OCDFMT_ABGR24 = OCDFMT_xBGR24 |
+ OCDFMTDEF_ALPHA, /* 8:8:8:8 */
+ OCDFMT_RGBA24 = OCDFMT_RGBx24 |
+ OCDFMTDEF_ALPHA, /* 8:8:8:8 */
+ OCDFMT_BGRA24 = OCDFMT_BGRx24 |
+ OCDFMTDEF_ALPHA, /* 8:8:8:8 */
+
+ /* Non-premultiplied ARGB */
+ OCDFMT_nARGB12 = OCDFMT_ARGB12 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_ARGB12_NON_PREMULT = OCDFMT_nARGB12,
+
+ OCDFMT_nABGR12 = OCDFMT_ABGR12 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_ABGR12_NON_PREMULT = OCDFMT_nABGR12,
+
+ OCDFMT_nRGBA12 = OCDFMT_RGBA12 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_RGBA12_NON_PREMULT = OCDFMT_nRGBA12,
+
+ OCDFMT_nBGRA12 = OCDFMT_BGRA12 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_BGRA12_NON_PREMULT = OCDFMT_nBGRA12,
+
+ OCDFMT_ARGB15 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_RGB |
+ OCDFMTDEF_ALPHA |
+ OCDFMTDEF_NON_PREMULT |
+ OCDFMTDEF_SUBSAMPLE_NONE |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_16BIT |
+ (15 - 1), /* 1:5:5:5 - "normal"
+ format is not
+ premultiplied */
+ OCDFMT_nARGB15 = OCDFMT_ARGB15,
+ OCDFMT_ARGB15_NON_PREMULT = OCDFMT_nARGB15,
+
+ OCDFMT_ABGR15 = OCDFMT_ARGB15 |
+ OCDFMTDEF_REVERSED, /* 1:5:5:5 - "normal"
+ format is not
+ premultiplied */
+ OCDFMT_nABGR15 = OCDFMT_ABGR15,
+ OCDFMT_ABGR15_NON_PREMULT = OCDFMT_nABGR15,
+
+ OCDFMT_RGBA15 = OCDFMT_ARGB15 |
+ OCDFMTDEF_LEFT_JUSTIFIED, /* 5:5:5:1 - "normal"
+ format is not
+ premultiplied */
+ OCDFMT_nRGBA15 = OCDFMT_RGBA15,
+ OCDFMT_RGBA15_NON_PREMULT = OCDFMT_nRGBA15,
+
+ OCDFMT_BGRA15 = OCDFMT_ARGB15 |
+ OCDFMTDEF_LEFT_JUSTIFIED |
+ OCDFMTDEF_REVERSED, /* 5:5:5:1 - "normal"
+ format is not
+ premultiplied */
+ OCDFMT_nBGRA15 = OCDFMT_BGRA15,
+ OCDFMT_BGRA15_NON_PREMULT = OCDFMT_nRGBA15,
+
+ OCDFMT_nARGB16 = OCDFMT_ARGB16 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_ARGB16_NON_PREMULT = OCDFMT_nARGB16,
+
+ OCDFMT_nABGR16 = OCDFMT_ABGR16 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_ABGR16_NON_PREMULT = OCDFMT_nABGR16,
+
+ OCDFMT_nRGBA16 = OCDFMT_RGBA16 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_RGBA16_NON_PREMULT = OCDFMT_nRGBA16,
+
+ OCDFMT_nBGRA16 = OCDFMT_BGRA16 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_BGRA16_NON_PREMULT = OCDFMT_nBGRA16,
+
+ OCDFMT_nARGB24 = OCDFMT_ARGB24 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_ARGB24_NON_PREMULT = OCDFMT_nARGB24,
+
+ OCDFMT_nABGR24 = OCDFMT_ABGR24 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_ABGR24_NON_PREMULT = OCDFMT_nABGR24,
+
+ OCDFMT_nRGBA24 = OCDFMT_RGBA24 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_RGBA24_NON_PREMULT = OCDFMT_nRGBA24,
+
+ OCDFMT_nBGRA24 = OCDFMT_BGRA24 |
+ OCDFMTDEF_NON_PREMULT,
+ OCDFMT_BGRA24_NON_PREMULT = OCDFMT_nBGRA24,
+
+ /*** YCbCr ***/
+ /** Packed **/
+ /* YCbCr 4:2:2 */
+ OCDFMT_UYVY = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_422_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNED |
+ OCDFMTDEF_PACKED |
+ OCDFMTDEF_CONTAINER_32BIT |
+ (16 - 1),
+ OCDFMT_UYVY_601 = OCDFMT_UYVY |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_UYVY_709 = OCDFMT_UYVY |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+ OCDFMT_Y422 = OCDFMT_UYVY,
+ OCDFMT_Y422_601 = OCDFMT_UYVY_601,
+ OCDFMT_Y422_709 = OCDFMT_UYVY_709,
+
+ OCDFMT_VYUY = OCDFMT_UYVY |
+ OCDFMTDEF_REVERSED,
+ OCDFMT_VYUY_601 = OCDFMT_VYUY |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_VYUY_709 = OCDFMT_VYUY |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ OCDFMT_YUYV = OCDFMT_UYVY |
+ OCDFMTDEF_LEFT_JUSTIFIED,
+ OCDFMT_YUYV_601 = OCDFMT_YUYV |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_YUYV_709 = OCDFMT_YUYV |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+ OCDFMT_YUY2 = OCDFMT_YUYV,
+ OCDFMT_YUY2_601 = OCDFMT_YUYV_601,
+ OCDFMT_YUY2_709 = OCDFMT_YUYV_709,
+
+ OCDFMT_YVYU = OCDFMT_VYUY |
+ OCDFMTDEF_LEFT_JUSTIFIED,
+ OCDFMT_YVYU_601 = OCDFMT_YVYU |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_YVYU_709 = OCDFMT_YVYU |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ /** 3-plane **/
+ /* YCbCr 4:2:2 */
+ OCDFMT_YV16 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_422_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNED |
+ OCDFMTDEF_3_PLANE_STACKED |
+ OCDFMTDEF_CONTAINER_32BIT |
+ (16 - 1),
+ OCDFMT_YV16_601 = OCDFMT_YV16 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_YV16_709 = OCDFMT_YV16 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ /* YCbCr 4:2:0 */
+ OCDFMT_IYUV = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_420_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNED |
+ OCDFMTDEF_3_PLANE_STACKED |
+ OCDFMTDEF_CONTAINER_48BIT |
+ (12 - 1),
+ OCDFMT_IYUV_601 = OCDFMT_IYUV |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_IYUV_709 = OCDFMT_IYUV |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+ OCDFMT_I420 = OCDFMT_IYUV,
+ OCDFMT_I420_601 = OCDFMT_IYUV_601,
+ OCDFMT_I420_709 = OCDFMT_IYUV_709,
+
+ OCDFMT_YV12 = OCDFMT_IYUV |
+ OCDFMTDEF_REVERSED,
+ OCDFMT_YV12_601 = OCDFMT_YV12 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_YV12_709 = OCDFMT_YV12 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ OCDFMT_IMC3 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_420_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNED |
+ OCDFMTDEF_3_PLANE_STACKED |
+ OCDFMTDEF_LEFT_JUSTIFIED | /* Indicates wasted
+ space to the
+ right */
+ OCDFMTDEF_CONTAINER_48BIT |
+ (12 - 1),
+ OCDFMT_IMC3_601 = OCDFMT_IMC3 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_IMC3_709 = OCDFMT_IMC3 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ OCDFMT_IMC1 = OCDFMT_IMC3 |
+ OCDFMTDEF_REVERSED,
+ OCDFMT_IMC1_601 = OCDFMT_IMC1 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_IMC1_709 = OCDFMT_IMC1 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ OCDFMT_IMC4 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_YCbCr |
+ OCDFMTDEF_STD_ITUR_601_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_420_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNED |
+ OCDFMTDEF_3_PLANE_SIDE_BY_SIDE_YCbCr |
+ OCDFMTDEF_CONTAINER_48BIT |
+ (12 - 1),
+ OCDFMT_IMC4_601 = OCDFMT_IMC4 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_IMC4_709 = OCDFMT_IMC4 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ OCDFMT_IMC2 = OCDFMT_IMC4 |
+ OCDFMTDEF_REVERSED,
+ OCDFMT_IMC2_601 = OCDFMT_IMC2 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_IMC2_709 = OCDFMT_IMC2 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ /** 2-plane **/
+ /* YCbCr 4:2:2 */
+ OCDFMT_NV16 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_422_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNED |
+ OCDFMTDEF_2_PLANE_YCbCr |
+ OCDFMTDEF_CONTAINER_32BIT |
+ (16 - 1),
+ OCDFMT_NV16_601 = OCDFMT_NV16 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_NV16_709 = OCDFMT_NV16 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ OCDFMT_NV61 = OCDFMT_NV16 |
+ OCDFMTDEF_REVERSED,
+ OCDFMT_NV61_601 = OCDFMT_NV61 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_NV61_709 = OCDFMT_NV61 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ /* YCbCr 4:2:0 */
+ OCDFMT_NV12 = OCDFMTDEF_VENDOR_ALL |
+ OCDFMTDEF_CS_YCbCr |
+ OCDFMTDEF_STD_ITUR_601_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_420_YCbCr |
+ OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNED |
+ OCDFMTDEF_2_PLANE_YCbCr |
+ OCDFMTDEF_CONTAINER_48BIT |
+ (12 - 1),
+ OCDFMT_NV12_601 = OCDFMT_NV12 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_NV12_709 = OCDFMT_NV12 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+ OCDFMT_NV21 = OCDFMT_NV12 |
+ OCDFMTDEF_REVERSED,
+ OCDFMT_NV21_601 = OCDFMT_NV21 |
+ OCDFMTDEF_STD_ITUR_601_YCbCr,
+ OCDFMT_NV21_709 = OCDFMT_NV21 |
+ OCDFMTDEF_STD_ITUR_709_YCbCr,
+
+#ifdef OCD_EXTERNAL_INCLUDE
+#include OCD_EXTERNAL_INCLUDE
+#endif
+};
+
+#endif /* OCD_H */
diff --git a/bltsville/ocd/index.html b/bltsville/ocd/index.html
new file mode 100755
index 0000000..52eaa11
--- /dev/null
+++ b/bltsville/ocd/index.html
@@ -0,0 +1,617 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
+
+<head>
+<meta http-equiv="Content-Language" content="en-us" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Need OCD?</title>
+<style type="text/css">
+.Header1 {
+ margin: 0px 0 0 0;
+ font-size: xx-large;
+ font-weight: bold;
+ text-align: left;
+ line-height: normal;
+ background-color: #E0E0E0;
+}
+.Header2 {
+ font-size: xx-large;
+ font-weight: bold;
+ margin: 0px;
+ line-height: 100%;
+}
+.Header3 {
+ font-size: x-large;
+ font-weight: bold;
+ text-align: left;
+ line-height: 100%;
+ margin: 0px;
+}
+.note {
+ font-family: Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ margin-left: 40px;
+}
+.description { font-size: 1.2em; margin-bottom: 30px; margin-top: 30px; font-style: italic;}
+.download { float: right; }
+.inline_code {
+ font-family: "Courier New", Courier, monospace;
+ font-size: small;
+}
+.cmd_line {
+ background: #000;
+ color: #fff;
+ padding: 10px;
+ font-family: "Courier New", Courier, monospace;
+ font-size: small;
+}
+.code_block {
+ margin-left: 40px;
+ font-family: "Courier New", Courier, monospace;
+ font-size: small;
+}
+.filename {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: small;
+}
+.Code_Header {
+ font-size: xx-large;
+ font-weight: bold;
+ text-align: left;
+ font-family: "Courier New", Courier, monospace;
+}
+.Code_Header_2 {
+ font-size: x-large;
+ font-weight: bold;
+ text-align: left;
+ font-family: "Courier New", Courier, monospace;
+}
+.Code_Header_3 {
+ font-size: large;
+ font-weight: bold;
+ text-align: left;
+ font-family: "Courier New", Courier, monospace;
+}
+.indent {
+ margin-left: 40px;
+}
+.ctr_thinbord {
+ text-align: center;
+ border: 1px solid #000000;
+}
+.style4 {
+ border-width: 0px;
+ margin-left: 40px;
+}
+.style5 {
+ margin-left: 80px;
+ font-family: "Courier New", Courier, monospace;
+ font-size: small;
+}
+</style>
+</head>
+
+<body>
+
+<table style="width: 100%; line-height: 100%;">
+ <tr>
+ <td style="width: 484px">
+<img alt="" src="ocdlogo.jpg"/></td>
+ <td>
+ <p>OCD is a set of Open Color format Definitions.</p>
+<p>Color formats are used in everything from BLTers to video codecs, and from cameras to displays.&nbsp; But although
+there are plenty of common formats, the definition of the code specifying them is never the same. </p>
+ <p>OCD attempts to solve this problem.&nbsp; It provides logical color format codes, and
+ is extensible.</p>
+<hr />
+ <table style="width: 100%">
+ <tr>
+ <td>
+<div class="download"><img alt="CC BY-ND" longdesc="Creative Commons Attribution-NoDerivs 3.0 Unported License" src="http://i.creativecommons.org/l/by-nd/3.0/88x31.png" width="88" height="31" /></div>
+<p class="Header2">License</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+<div>
+<p class="style17">The definitions are designed and maintained by Texas Instruments, Inc., but anyone is free to use them with no
+cost or obligation.</p>
+<p>This project is licensed under the <a href="http://creativecommons.org/licenses/by-nd/3.0/">Creative Commons
+Attribution-NoDerivs 3.0 Unported License</a>.</p>
+</div>
+ </td>
+ </tr>
+ </table>
+<hr />
+ <table style="width: 100%">
+ <tr>
+ <td>
+ <p class="Header2">Source</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div class="download">
+ <a href="http://github.com/graphics/ocd/zipball/master">
+ <img width="90" alt="download zip" src="http://github.com/images/modules/download/zip.png" border="0"/></a>
+ <a href="http://github.com/graphics/ocd/tarball/master">
+ <img width="90" alt ="download tar" src="http://github.com/images/modules/download/tar.png" border="0"/></a>
+ </div>
+<div>
+ Get the source code on GitHub at <a href="http://github.com/graphics/ocd">graphics/ocd</a>, or download this
+ project in either
+ <a href="http://github.com/graphics/ocd/zipball/master">zip</a> or
+ <a href="http://github.com/graphics/ocd/tarball/master">tar</a> formats.</div>
+ <p>You can also clone the project with <a href="http://git-scm.com">Git</a> by running:</p>
+ <pre><a class="cmd_line">$ git clone git://github.com/graphics/ocd</a></pre>
+ </td>
+ </tr>
+ <tr><td><hr />
+ <table style="width: 100%">
+ <tr>
+ <td class="Header2">Wiki</td>
+ </tr>
+ <tr>
+ <td><a href="https://github.com/graphics/ocd/wiki">https://github.com/graphics/ocd/wiki</a></td>
+ </tr>
+ </table>
+ </td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<hr />
+<p class="Header1">Header File</p>
+<p><span class="filename">ocd.h</span> contains the Open Color format Definitions.</p>
+<p class="Header1">How does it work?</p>
+<p>OCD was designed to allow a single 32-bit word (int) to specify the
+color format.&nbsp; The color format is specified as an enumeration.&nbsp; The
+enumeration values are constructed using bitfields.</p>
+<p>OCD breaks off a chunk of those 32 bits to specify a vendor ID.&nbsp; With
+this, OCD can allow vendors with very unique formats to obtain their own vendor
+ID and specify any of 16 million formats of their own.&nbsp; Minimum sharing
+here, but maximum flexibility.</p>
+<p class="Code_Header_2">OCDFMTDEF_VENDOR_ALL</p>
+<p>The power of OCD lies in the shared vendor ID.&nbsp; The
+<span class="inline_code">OCDFMTDEF_VENDOR_ALL</span> vendor ID indicates that the common set of definitions is
+being used.&nbsp; And this set of definitions is designed to specify pretty much
+any reasonably common color format in use today.</p>
+<p>When <span class="inline_code">OCDFMTDEF_VENDOR_ALL</span> is chosen, the remaining 24 bits of the format are
+sub-divided into bitfields used to describe the format.</p>
+<p class="Header2">Predefined Names</p>
+<p>A set of enumeration values are already provided with predefined names.&nbsp;
+It is easiest for clients to use these predefined values.&nbsp; They already cover most of
+the formats likely to be encountered.</p>
+<p class="note">NOTE:&nbsp; The naming conventions of the predefined formats are based on their byte
+ordering, so they are not endian-dependent.&nbsp; The exceptions are the 16-bit
+packed formats, which are little-endian.</p>
+<p>Some examples:</p>
+<p class="indent"><span class="inline_code">OCDFMT_RGB24</span> is a format
+where each pixel consists of 3 bytes (24 bits).&nbsp; The first byte in memory
+(at address A, read as a byte) is the red component.&nbsp; The second byte in
+memory (at address A+1, read as a byte) is the green component.&nbsp; The third
+byte in memory (at address A+2, read as a byte) is the blue component.</p>
+<p class="indent">OCDFMT_xRGB24 is a format where each pixel consists of 4 bytes
+(32 bits), but only 3 of these (24 bits) contain color information.&nbsp; The
+remaining 8 bits are ignored on a read, or filled with 0s on a write.</p>
+<p>If the format of interest is not already specified, it is still likely that
+the format is supported by the VENDOR_ALL design.&nbsp; Using the bitfields below, new combinations can be constructed.&nbsp; These
+combinations are already legal, but they just have not been given names.&nbsp;
+Users of OCD can define their own names in a separate header file and include it
+using the OCD_EXTERNAL_INCLUDE mechanism:</p>
+<p class="indent">file: <span class="filename">myocdfmts.h</span></p>
+<p class="style5">MYOCDFMT_ALPHAMONO8 = OCDFMT_MONO8 |<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+OCDFMTDEF_ALPHA,</p>
+<p class="indent">file:&nbsp; <span class="filename">mysource.c</span></p>
+<p class="style5">#define OCD_EXTERNAL_INCLUDE &quot;myocdfmts.h&quot;<br />
+#include &lt;ocd.h&gt;</p>
+<p class="Header2">VENDOR_ALL Bitfields</p>
+<p>The following bitfields only apply to the <span class="inline_code">
+OCDFMTDEF_VENDOR_ALL</span> color formats. </p>
+<p class="Header3">Color Space</p>
+<p>The first field specifies the color space.&nbsp; Currently there are five
+color spaces defined, but there is room for three more if the need arises:</p>
+<ul>
+ <li>Monochrome - <span class="inline_code">OCDFMTDEF_CS_MONO</span></li>
+ <li>Look-Up Table - <span class="inline_code">OCDFMTDEF_CS_LUT</span></li>
+ <li>RGB -<span class="inline_code"> OCDFMTDEF_CS_RGB</span></li>
+ <li>YCbCr (a.k.a. YUV) - <span class="inline_code">
+ OCDFMTDEF_CS_YCbCr</span></li>
+ <li>Alpha - <span class="inline_code">OCDFMTDEF_CS_ALPHA</span></li>
+</ul>
+<p>Once the color space has been selected, the remaining bits depend on that
+choice:</p>
+<p class="Code_Header_3">OCDFMTDEF_CS_MONO</p>
+<table class="style4">
+ <tr>
+ <td class="ctr_thinbord">31:24</td>
+ <td class="ctr_thinbord">23:21</td>
+ <td class="ctr_thinbord">20:19</td>
+ <td class="ctr_thinbord">18</td>
+ <td class="ctr_thinbord">17</td>
+ <td class="ctr_thinbord">16</td>
+ <td class="ctr_thinbord">15:14</td>
+ <td class="ctr_thinbord">13:11</td>
+ <td class="ctr_thinbord">10</td>
+ <td class="ctr_thinbord">9</td>
+ <td class="ctr_thinbord">8:6</td>
+ <td class="ctr_thinbord">5:0</td>
+ </tr>
+ <tr>
+ <td class="ctr_thinbord">00000000</td>
+ <td class="ctr_thinbord">000</td>
+ <td class="ctr_thinbord">reserved<br />
+ (00)</td>
+ <td class="ctr_thinbord">alpha</td>
+ <td class="ctr_thinbord">non-premult/<br />
+ fill empty 0</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reversed</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">container<br />
+ size</td>
+ <td class="ctr_thinbord">color<br />
+ bits-1</td>
+ </tr>
+</table>
+<p class="Code_Header_3">OCDFMTDEF_CS_LUT</p>
+<table class="style4">
+ <tr>
+ <td class="ctr_thinbord">31:24</td>
+ <td class="ctr_thinbord">23:21</td>
+ <td class="ctr_thinbord">20:19</td>
+ <td class="ctr_thinbord">18</td>
+ <td class="ctr_thinbord">17</td>
+ <td class="ctr_thinbord">16</td>
+ <td class="ctr_thinbord">15:14</td>
+ <td class="ctr_thinbord">13:11</td>
+ <td class="ctr_thinbord">10</td>
+ <td class="ctr_thinbord">9</td>
+ <td class="ctr_thinbord">8:6</td>
+ <td class="ctr_thinbord">5:0</td>
+ </tr>
+ <tr>
+ <td class="ctr_thinbord">00000000</td>
+ <td class="ctr_thinbord">001</td>
+ <td class="ctr_thinbord">reserved<br />
+ (00)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reversed</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">container<br />
+ size</td>
+ <td class="ctr_thinbord">color<br />
+ bits-1</td>
+ </tr>
+</table>
+<p class="Code_Header_3">OCDFMTDEF_CS_RGB</p>
+<table class="style4">
+ <tr>
+ <td class="ctr_thinbord">31:24</td>
+ <td class="ctr_thinbord">23:21</td>
+ <td class="ctr_thinbord">20:19</td>
+ <td class="ctr_thinbord">18</td>
+ <td class="ctr_thinbord">17</td>
+ <td class="ctr_thinbord">16</td>
+ <td class="ctr_thinbord">15:14</td>
+ <td class="ctr_thinbord">13:11</td>
+ <td class="ctr_thinbord">10</td>
+ <td class="ctr_thinbord">9</td>
+ <td class="ctr_thinbord">8:6</td>
+ <td class="ctr_thinbord">5:0</td>
+ </tr>
+ <tr>
+ <td class="ctr_thinbord">00000000</td>
+ <td class="ctr_thinbord">010</td>
+ <td class="ctr_thinbord">reserved<br />
+ (00)</td>
+ <td class="ctr_thinbord">alpha</td>
+ <td class="ctr_thinbord">non-premult/<br />
+ fill empty 0</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (00)</td>
+ <td class="ctr_thinbord">layout</td>
+ <td class="ctr_thinbord">reversed</td>
+ <td class="ctr_thinbord">left<br />
+ justified</td>
+ <td class="ctr_thinbord">container<br />
+ size</td>
+ <td class="ctr_thinbord">color<br />
+ bits-1</td>
+ </tr>
+</table>
+<p class="Code_Header_3">OCDFMTDEF_CS_YCbCr</p>
+<table class="style4">
+ <tr>
+ <td class="ctr_thinbord">31:24</td>
+ <td class="ctr_thinbord">23:21</td>
+ <td class="ctr_thinbord">20:19</td>
+ <td class="ctr_thinbord">18</td>
+ <td class="ctr_thinbord">17</td>
+ <td class="ctr_thinbord">16</td>
+ <td class="ctr_thinbord">15:14</td>
+ <td class="ctr_thinbord">13:11</td>
+ <td class="ctr_thinbord">10</td>
+ <td class="ctr_thinbord">9</td>
+ <td class="ctr_thinbord">8:6</td>
+ <td class="ctr_thinbord">5:0</td>
+ </tr>
+ <tr>
+ <td class="ctr_thinbord">00000000</td>
+ <td class="ctr_thinbord">011</td>
+ <td class="ctr_thinbord">standard</td>
+ <td class="ctr_thinbord">alpha</td>
+ <td class="ctr_thinbord">non-premult/<br />
+ fill empty 0</td>
+ <td class="ctr_thinbord">subsample<br />
+ position</td>
+ <td class="ctr_thinbord">subsampling</td>
+ <td class="ctr_thinbord">layout</td>
+ <td class="ctr_thinbord">reversed</td>
+ <td class="ctr_thinbord">left<br />
+ justified</td>
+ <td class="ctr_thinbord">container<br />
+ size</td>
+ <td class="ctr_thinbord">color<br />
+ bits-1</td>
+ </tr>
+</table>
+<p class="Code_Header_3">OCDFMTDEF_CS_ALPHA</p>
+<table class="style4">
+ <tr>
+ <td class="ctr_thinbord">31:24</td>
+ <td class="ctr_thinbord">23:21</td>
+ <td class="ctr_thinbord">20:19</td>
+ <td class="ctr_thinbord">18</td>
+ <td class="ctr_thinbord">17</td>
+ <td class="ctr_thinbord">16</td>
+ <td class="ctr_thinbord">15:14</td>
+ <td class="ctr_thinbord">13:11</td>
+ <td class="ctr_thinbord">10</td>
+ <td class="ctr_thinbord">9</td>
+ <td class="ctr_thinbord">8:6</td>
+ <td class="ctr_thinbord">5:0</td>
+ </tr>
+ <tr>
+ <td class="ctr_thinbord">00000000</td>
+ <td class="ctr_thinbord">100</td>
+ <td class="ctr_thinbord">reserved<br />
+ (00)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (00)</td>
+ <td class="ctr_thinbord">reserved<br />
+ (00)</td>
+ <td class="ctr_thinbord">reversed</td>
+ <td class="ctr_thinbord">reserved<br />
+ (0)</td>
+ <td class="ctr_thinbord">container<br />
+ size</td>
+ <td class="ctr_thinbord">alpha<br />
+ bits-1</td>
+ </tr>
+</table>
+<p>&nbsp;</p>
+<p class="Header3">Standard (YCbCr)</p>
+<p>This field specifies the standard being used for this color space.</p>
+<p>Currently, this field is only defined for the YCbCr color space:</p>
+<ul>
+ <li><a href="http://www.itu.int/rec/R-REC-BT.601/en">ITU-R BT.601</a> - <span class="inline_code">
+ OCDFMTDEF_STD_ITUR_601_YCbCr</span></li>
+ <li><a href="http://www.itu.int/rec/R-REC-BT.709/en">ITU-R BT.709</a> - <span class="inline_code">
+ OCDFMTDEF_STD_ITUR_709_YCbCr</span></li>
+ <li><a href="http://www.w3.org/Graphics/JPEG/jfif3.pdf">Full Scale</a> - <span class="inline_code">
+ OCDFMTDEF_FULLSCALE_YCbCr</span></li>
+</ul>
+<p>We believe that this field will be used to add linear format support in the
+very near future.</p>
+<p class="Header3">Fill Empty 0 (Mono, RGB, YCbCr)</p>
+<p>When there is no alpha included with a format, but the color components don&#39;t
+fill up the container, the remainder of the bits must be filled with something
+when written.&nbsp; When the <span class="inline_code">OCDFMTDEF_FILL_EMPTY_0</span>
+flag is not set, they are filled with 1.&nbsp; This is done in case they are
+later used as an alpha value, which will already represent an opaque pixel
+(whether the pixel is premultiplied or not).&nbsp; When the flag is set, they are
+filled with 0, to accommodate those environments where they are required to be
+cleared when unused.</p>
+<p class="Header3">Alpha (Mono, RGB, YCbCr)</p>
+<p>The <span class="inline_code">OCDFMTDEF_ALPHA</span> bit indicates that the
+format includes an alpha channel along with the main color components.</p>
+<p class="Header3">Non-Premult (Mono, RGB, YCbCr)</p>
+<p>Formats with alpha can have their color components pre-multiplied by the
+alpha component or not.&nbsp; When the <span class="inline_code">
+OCDFMTDEF_NON_PREMULT</span> bit is set, the color components are not
+premultiplied by the accompanying alpha.&nbsp; When the bit is not set, the
+color components are already multiplied by the alpha.</p>
+<p class="Header3">Subsampling (YCbCr)</p>
+<p>Some formats can be subsampled.&nbsp; At this point, only subsampled YCbCr is
+supported.</p>
+<ul>
+ <li>No subsampling - <span class="inline_code">
+ OCDFMTDEF_SUBSAMPLE_NONE</span></li>
+ <li>4:2:2 subsampling - <span class="inline_code">
+ OCDFMTDEF_SUBSAMPLE_422_YCbCr</span></li>
+ <li>4:2:0 subsampling - <span class="inline_code">
+ OCDFMTDEF_SUBSAMPLE_420_YCbCr</span></li>
+ <li>4:1:1 subsampling - <span class="inline_code">
+ OCDFMTDEF_SUBSAMPLE_411_YCbCr</span></li>
+</ul>
+<p class="Header3">Subsample Position (YCbCr)</p>
+<p>Subsampling can have different equivalent positions relative to the pixels.&nbsp;
+Vertical subsampling positions are consistent, so the following are supported to
+control the horizontal subsampling position:</p>
+<ul>
+ <li><span class="inline_code">OCDFMTDEF_SUBSAMPLE_HORZ_ALIGNED </span>- subsamples are aligned with first pixel (e.g. MPEG-2
+ spec)</li>
+ <li><span class="inline_code">OCDFMTDEF_SUBSAMPLE_HORZ_CENTERED
+ </span>- subsamples are centered between the pixels (e.g. MPEG-1
+ spec)</li>
+</ul>
+<p>NOTE:&nbsp; It is encouraged that users of OCD be generous when handling
+subsampling positions.&nbsp; Allowing misaligned subsampling is preferable to
+complete failure.</p>
+<p class="Header3">Alpha Components (Alpha)</p>
+<p>To support applying alpha values to the individual components of other color
+spaces, the alpha color space can have more than one alpha value per pixel.&nbsp;
+This field specifies how many:</p>
+<ul>
+ <li><span class="inline_code">OCDFMTDEF_ALPHA_COMPONENTS_1 </span>- pixel contains 1 alpha value (default)</li>
+ <li><span class="inline_code">OCDFMTDEF_ALPHA_COMPONENTS_2
+ </span>- pixel contains 2 alpha values</li>
+ <li><span class="inline_code">OCDFMTDEF_ALPHA_COMPONENTS_3
+ </span>- pixel contains 3 alpha values; suitable for RGB
+ manipulation (e.g. FreeType/ClearType)</li>
+ <li><span class="inline_code">OCDFMTDEF_ALPHA_COMPONENTS_4
+ </span>-- pixel contains 4 alpha values</li>
+</ul>
+<p class="Header3">Layout (RGB, YCbCr)</p>
+<p>The layout values, in conjunction with the reversed and left-justified
+modifiers, specify how the pixel components are placed into memory.&nbsp; All
+non-RGB/YCbCr formats are packed.</p>
+<ul>
+ <li><span class="inline_code">OCDFMTDEF_PACKED </span>- pixel
+ components are sequential in memory, defaulting to RGB or CbCr
+ order, right justified</li>
+ <li><span class="inline_code">OCDFMTDEF_DISTRIBUTED </span>-
+ pixel components that don&#39;t fill the container are evenly
+ distributed within the container (e.g. 32 bits of ARGB in a
+ 64-bit container is distributed 8 bits every 16 bits: xAxRxGxB)</li>
+ <li><span class="inline_code">OCDFMTDEF_2_PLANE_YCbCr </span>-
+ for subsampled formats only, Y plane is followed by subsampled
+ interleaved CbCr plane</li>
+ <li><span class="inline_code">OCDFMTDEF_3_PLANE_STACKED </span>-
+ pixel components are divided into planes that are sequential in
+ memory</li>
+ <li><span class="inline_code">
+ OCDFMTDEF_3_PLANE_SIDE_BY_SIDE_YCbCr </span>- for subsampled
+ formats only pixel components are divided into planes, with the
+ non-subsampled component followed by the subsampled components
+ stored side-by-side (lines interleaved) </li>
+</ul>
+<p class="Header3">Reversed (RGB, YCbCr)</p>
+<p><span class="inline_code">OCDFMTDEF_REVERSED</span> indicates that the order
+of the color components is the opposite of the defaults.&nbsp; For RGB formats,
+this means BGR.&nbsp; For YCbCr formats, this means CrCb.</p>
+<p class="Header3">Left-Justified (RGB, YCbCr)</p>
+<p><span class="inline_code">OCDFMTDEF_LEFT_JUSTIFIED</span> indicates that the
+color components are shifted to the left, as opposed to the default of shifting
+to the right.</p>
+<p>Some examples for <span class="inline_code">OCDFMTDEF_REVERSED</span> and
+<span class="inline_code">OCDFMTDEF_LEFT_JUSTIFIED</span>:</p>
+<ul>
+ <li>Packed RGB:&nbsp; x,R,G,B is the default byte order<ul>
+ <li>x,B,G,R is the format if
+ <span class="inline_code">OCDFMTDEF_REVERSED</span>
+ is set</li>
+ <li>R,G,B,x is the format if
+ <span class="inline_code">
+ OCDFMTDEF_LEFT_JUSTIFIED</span> is set</li>
+ <li>B,G,R,x is the format if
+ <span class="inline_code">OCDFMTDEF_REVERSED</span>
+ and <span class="inline_code">
+ OCDFMTDEF_LEFT_JUSTIFIED</span> are set</li>
+ </ul>
+ </li>
+ <li>Packed YCbCr 4:2:2:&nbsp; U,Y,V,Y is the default byte order<ul>
+ <li>V,Y,U,Y is the format if
+ <span class="inline_code">OCDFMTDEF_REVERSED</span>
+ is set</li>
+ <li>Y,U,Y,V is the format if
+ <span class="inline_code">
+ OCDFMTDEF_LEFT_JUSTIFIED</span> is set</li>
+ <li>Y,V,Y,U is the format if
+ <span class="inline_code">OCDFMTDEF_REVERSED</span>
+ and <span class="inline_code">
+ OCDFMTDEF_LEFT_JUSTIFIED</span> are set</li>
+ </ul>
+ </li>
+ <li>3-Plane YCbCr 4:2:2 or 4:2:0:&nbsp; The default is the Y
+ plane, followed by the Cb plane and then the Cr plane.&nbsp; The
+ Cb and Cr planes have half of the stride of the Y plane.<ul>
+ <li>If <span class="inline_code">
+ OCDFMTDEF_REVERSED</span> is set, the Cb and Cr
+ planes are reversed.</li>
+ <li><span class="inline_code">
+ OCDFMTDEF_LEFT_JUSTIFIED</span> has a special
+ case for this layout.&nbsp; When set, it
+ indicates that the Cb and Cr planes have the
+ same stride as the Y plane, and the Cb and Cr
+ data is shifted to the left.</li>
+ <li>If both <span class="inline_code">
+ OCDFMTDEF_LEFT_REVERSED</span> and
+ <span class="inline_code">
+ OCDFMTDEF_LEFT_JUSTIFIED</span> are set, the Cb
+ and Cr planes are reversed and double width.</li>
+ </ul>
+ </li>
+ <li>2-Plane YCbCr 4:2:2 or 4:2:0:&nbsp; The default is the Y
+ plane, followed by the CbCr interleaved plane, with the same
+ stride as the Y plane.<ul>
+ <li><span class="inline_code">OCDFMTDEF_REVERSED</span>
+ swaps the Cb and Cr components.</li>
+ </ul>
+ </li>
+</ul>
+<p class="Header3">Container (All)</p>
+<p>The container field indicates the total size of all the bits of the color
+components of a color format.&nbsp; This does not include the alpha component,
+if it is present.</p>
+<ul>
+ <li><span class="inline_code">OCDFMTDEF_CONTAINER_8BIT</span> -
+ Indicates the container is 8 bits.&nbsp; When the pixel
+ component size is 4 bits or less, multiple pixels are stored in
+ the container.</li>
+ <li><span class="inline_code">OCDFMTDEF_CONTAINER_16BIT</span> -
+ Indicates the container is 16 bits.&nbsp; When the pixel
+ component size is less than 16 bits, the remaining bits are
+ available to be used as an alpha channel.</li>
+ <li><span class="inline_code">OCDFMTDEF_CONTAINER_24BIT</span> -
+ Indicates the container is 24 bits.&nbsp; When the pixel
+ component size is less than 24 bits, the remaining bits are
+ available to be used as an alpha channel.</li>
+ <li><span class="inline_code">OCDFMTDEF_CONTAINER_32BIT</span> -
+ Indicates the container is 32 bits.&nbsp; When the pixel
+ component size is less than 32 bits, the remaining bits are
+ available to be used as an alpha channel.</li>
+ <li><span class="inline_code">OCDFMTDEF_CONTAINER_48BIT</span> -
+ Indicates the container is 48 bits.&nbsp; When the pixel
+ component size is less than 48 bits, the remaining bits are
+ available to be used as an alpha channel.</li>
+ <li><span class="inline_code">OCDFMTDEF_CONTAINER_64BIT</span> -
+ Indicates the container is 64 bits.&nbsp; When the pixel
+ component size is less than 64 bits, the remaining bits are
+ available to be used as an alpha channel.</li>
+</ul>
+<p class="Header3">Component Size (All)</p>
+<p>The component size field specifies the total number of bits in the color
+components, not including the alpha component.&nbsp; (It is specified in the
+code with one subtracted.)</p>
+<p class="note">NOTE:&nbsp; The alpha only color space uses this to specify the total number
+of alpha bits.</p>
+</body>
+
+</html>
diff --git a/bltsville/ocd/ocdlogo.jpg b/bltsville/ocd/ocdlogo.jpg
new file mode 100755
index 0000000..0537386
--- /dev/null
+++ b/bltsville/ocd/ocdlogo.jpg
Binary files differ