source-engine/common/quicktime_win32/CVPixelFormatDescription.h
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

155 lines
7.8 KiB
C

/*
* CVPixelFormatDescription.h
* CoreVideo
*
* Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
*
*/
#if !defined(__COREVIDEO_CVPIXELFORMATDESCRIPTION_H__)
#define __COREVIDEO_CVPIXELFORMATDESCRIPTION_H__
#include <TargetConditionals.h>
#if TARGET_OS_MAC
#include <QuartzCore/CoreVideo.h>
#include <CoreFoundation/CFDictionary.h>
#include <CoreFoundation/CFArray.h>
#else
#include <CoreVideo.h>
#include <CFDictionary.h>
#include <CFArray.h>
#endif
#if defined(__cplusplus)
extern "C" {
#endif
/* This document is influenced by Ice Floe #19: http://developer.apple.com/quicktime/icefloe/dispatch019.html */
#if TARGET_OS_MAC
/* The canonical name for the format. This should bethe same as the codec name you'd use in QT */
CV_EXPORT const CFStringRef kCVPixelFormatName AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* QuickTime/QuickDraw Pixel Format Type constant (OSType) */
CV_EXPORT const CFStringRef kCVPixelFormatConstant AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* This is the codec type constant, i.e. '2vuy' or k422YpCbCr8CodecType */
CV_EXPORT const CFStringRef kCVPixelFormatCodecType AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* This is the equivalent Microsoft FourCC code for this pixel format */
CV_EXPORT const CFStringRef kCVPixelFormatFourCC AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* All buffers have one or more image planes. Each plane may contain a single or an interleaved set of components */
/* For simplicity sake, pixel formats that are not planar may place the required format keys at the top
level dictionary. */
CV_EXPORT const CFStringRef kCVPixelFormatPlanes AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* The following keys describe the requirements/layout of a a single image plane. */
/* Used to assist with allocating memory for pixel formats that don't have an integer value for
bytes per pixel */
/* Block width is essentially the width in pixels of the smallest "byte addressable" group of pixels */
/* This works in close conjunction with BitsPerBlock */
/* Examples:
8-bit luminance only, BlockWidth would be 1, BitsPerBlock would be 8
16-bit 1555 RGB, BlockWidth would be 1, BitsPerBlock would be 16
32-bit 8888 ARGB, BlockWidth would be 1, BitsPerBlock would be 32
2vuy (CbYCrY), BlockWidth would be 2, BitsPerBlock would be 32
1-bit bitmap, BlockWidth would be 8, BitsPerBlock would be 8
v210, BlockWidth would be 6, BitsPerBlock would be 128 */
/* Values assumed to 1 be one if not present */
CV_EXPORT const CFStringRef kCVPixelFormatBlockWidth AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
CV_EXPORT const CFStringRef kCVPixelFormatBlockHeight AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* This value must be present. For simple pixel formats this will be equivalent to the traditional
bitsPerPixel value. */
CV_EXPORT const CFStringRef kCVPixelFormatBitsPerBlock AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* Used to state requirements on block multiples. v210 would be '8' here for the horizontal case,
to match the standard v210 row alignment value of 48.
These may be assumed as 1 if not present. */
CV_EXPORT const CFStringRef kCVPixelFormatBlockHorizontalAlignment AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
CV_EXPORT const CFStringRef kCVPixelFormatBlockVerticalAlignment AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* Subsampling information for this plane. Assumed to be '1' if not present. */
CV_EXPORT const CFStringRef kCVPixelFormatHorizontalSubsampling AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
CV_EXPORT const CFStringRef kCVPixelFormatVerticalSubsampling AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* If present, these two keys describe the OpenGL format and type enums you would use to describe this
image plane to OpenGL */
CV_EXPORT const CFStringRef kCVPixelFormatOpenGLFormat AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
CV_EXPORT const CFStringRef kCVPixelFormatOpenGLType AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
CV_EXPORT const CFStringRef kCVPixelFormatOpenGLInternalFormat AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* CGBitmapInfo value, if required */
CV_EXPORT const CFStringRef kCVPixelFormatCGBitmapInfo AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* Pixel format compatibility flags */
CV_EXPORT const CFStringRef kCVPixelFormatQDCompatibility AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
CV_EXPORT const CFStringRef kCVPixelFormatCGBitmapContextCompatibility AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
CV_EXPORT const CFStringRef kCVPixelFormatCGImageCompatibility AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
CV_EXPORT const CFStringRef kCVPixelFormatOpenGLCompatibility AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
#endif
/* This callback routine implements code to handle the functionality of CVPixelBufferFillExtendedPixels.
For custom pixel formats where you will never need to use that call, this is not required. */
typedef Boolean (*CVFillExtendedPixelsCallBack)( CVPixelBufferRef pixelBuffer, void *refCon);
typedef struct {
CFIndex version;
CVFillExtendedPixelsCallBack fillCallBack;
void *refCon;
} CVFillExtendedPixelsCallBackData;
#if TARGET_OS_MAC
/* The value for this key is a CFData containing a CVFillExtendedPixelsCallBackData struct */
CV_EXPORT const CFStringRef kCVPixelFormatFillExtendedPixelsCallback AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
#endif
/* Create a description of a pixel format from a provided OSType */
CV_EXPORT CFDictionaryRef CVPixelFormatDescriptionCreateWithPixelFormatType(CFAllocatorRef allocator, OSType pixelFormat) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* Get an array containing all known pixel format description dictionaries */
CV_EXPORT CFArrayRef CVPixelFormatDescriptionArrayCreateWithAllPixelFormatTypes(CFAllocatorRef allocator) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
/* Register a new pixel format with CoreVideo */
CV_EXPORT void CVPixelFormatDescriptionRegisterDescriptionWithPixelFormatType(CFDictionaryRef description, OSType pixelFormat) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
#if TARGET_OS_WIN32
#define kCVPixelFormatName CFSTR("Name")
#define kCVPixelFormatName422YpCbCr8 CFSTR("Component Y'CbCr 8-bit 4:2:2")
#define kCVPixelFormatName422YpCbCr10 CFSTR("Component Y'CbCr 10-bit 4:2:2")
#define kCVPixelFormatConstant CFSTR("PixelFormat")
#define kCVPixelFormatCodecType CFSTR("CodecType")
#define kCVPixelFormatFourCC CFSTR("FourCC")
#define kCVPixelFormatPlanes CFSTR("Planes")
#define kCVPixelFormatComponents CFSTR("ComponentLayout")
#define kCVPixelFormatBlockWidth CFSTR("BlockWidth")
#define kCVPixelFormatBlockHeight CFSTR("BlockHeight")
#define kCVPixelFormatBlockHorizontalAlignment CFSTR("BlockHorizontalAlignment")
#define kCVPixelFormatBlockVerticalAlignment CFSTR("BlockVerticalAlignment")
#define kCVPixelFormatBitsPerBlock CFSTR("BitsPerBlock")
#define kCVPixelFormatHorizontalSubsampling CFSTR("HorizontalSubsampling")
#define kCVPixelFormatVerticalSubsampling CFSTR("VerticalSubsampling")
#define kCVPixelFormatOpenGLFormat CFSTR("OpenGLFormat")
#define kCVPixelFormatOpenGLType CFSTR("OpenGLType")
#define kCVPixelFormatOpenGLInternalFormat CFSTR("OpenGLInternalFormat")
#define kCVPixelFormatDirect3DFormat CFSTR("D3DFormat")
#define kCVPixelFormatDirect3DType CFSTR("D3DType")
#define kCVPixelFormatDirect3DInternalFormat CFSTR("D3DInternalFormat")
#define kCVPixelFormatQDCompatibility CFSTR("QDCompatibility")
#define kCVPixelFormatCGBitmapContextCompatibility CFSTR("CGBitmapContextCompatibility")
#define kCVPixelFormatCGImageCompatibility CFSTR("CGImageCompatibility")
#define kCVPixelFormatOpenGLCompatibility CFSTR("OpenGLCompatibility")
#define kCVPixelFormatDirect3DCompatibility CFSTR("Direct3DCompatibility")
#define kCVPixelFormatCGBitmapInfo CFSTR("CGBitmapInfo")
#define kCVPixelFormatFillExtendedPixelsCallback CFSTR("FillExtendedPixelsCallback")
#endif
#if defined(__cplusplus)
}
#endif
#endif