You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
7.8 KiB
154 lines
7.8 KiB
/* |
|
* 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 |
|
|
|
|