| | '''OpenGL extension APPLE.ycbcr_422 |
| | |
| | This module customises the behaviour of the |
| | OpenGL.raw.GL.APPLE.ycbcr_422 to provide a more |
| | Python-friendly API |
| | |
| | Overview (from the spec) |
| | |
| | This extension provides a method for GL to read, store and optionally |
| | process textures that are defined in Y'CbCr 422 video formats. This |
| | extension supports the two common Y'CbCr 422 video formats (known by |
| | QuickTime FourCC as '2vuy' and 'yuvs'). These formats represent one of the |
| | most common 16 bit Y'CbCr formats in both standard and reverse byte |
| | ordering. From a client stand point these can be assumed to be decoded |
| | immediately (even though the implementation is free to optimize the data |
| | storage and keep it in the native format) and otherwise function as any |
| | other texture format. The texture command <internalformat> parameter |
| | normally be should be specified as RGB, since Y'CbCr is just a form of RGB |
| | data. This extension can be supported with either hardware or software |
| | decoding and it is up to the specific implementation to determine which is |
| | used. |
| | |
| | A new <format> is added, YCBCR_422_APPLE. Additionally, to handle the |
| | difference in pixel size and byte ordering for 422 video, the pixel storage |
| | operations treat YCBCR_422_APPLE as a 2 component format using |
| | the UNSIGNED_SHORT_8_8_APPLE or UNSIGNED_SHORT_8_8_REV_APPLE <type>. |
| | |
| | The '2vuy' or k2vuyPixelFormat pixel format is an 8-bit 4:2:2 Component |
| | Y'CbCr format. Each 16 bit pixel is represented by an unsigned eight bit |
| | luminance component and two unsigned eight bit chroma components. Each pair |
| | of pixels shares a common set of chroma values. The components are ordered |
| | in memory; Cb, Y0, Cr, Y1. The luminance components have a range of [16, |
| | 235], while the chroma value has a range of [16, 240]. This is consistent |
| | with the CCIR601 spec. This format is fairly prevalent on both Mac and Win32 |
| | platforms. The equivalent Microsoft fourCC is OUYVYO. This format is |
| | supported with the UNSIGNED_SHORT_8_8_REV_APPLE type for pixel storage |
| | operations. |
| | |
| | The 'yuvs' or kYUVSPixelFormat is an 8-bit 4:2:2 Component Y'CbCr format. |
| | Identical to the k2vuyPixelFormat except each 16 bit word has been byte |
| | swapped. This results in a component ordering of; Y0, Cb, Y1, Cr. This is |
| | most prevalent yuv 4:2:2 format on both Mac and Win32 platforms. The |
| | equivalent Microsoft fourCC is 'YUY2'. This format is supported with the |
| | UNSIGNED_SHORT_8_8_APPLE type for pixel storage operations. |
| | |
| | The official definition of this extension is available here: |
| | http://www.opengl.org/registry/specs/APPLE/ycbcr_422.txt |
| | ''' |
| | from OpenGL import platform, constant, arrays |
| | from OpenGL import extensions, wrapper |
| | import ctypes |
| | from OpenGL.raw.GL import _types, _glgets |
| | from OpenGL.raw.GL.APPLE.ycbcr_422 import * |
| | from OpenGL.raw.GL.APPLE.ycbcr_422 import _EXTENSION_NAME |
| |
|
| | def glInitYcbcr422APPLE(): |
| | '''Return boolean indicating whether this extension is available''' |
| | from OpenGL import extensions |
| | return extensions.hasGLExtension( _EXTENSION_NAME ) |
| |
|
| |
|
| | |