summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/CVPixelFormatDescription.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/CVPixelFormatDescription.h')
-rw-r--r--common/quicktime_win32/CVPixelFormatDescription.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/common/quicktime_win32/CVPixelFormatDescription.h b/common/quicktime_win32/CVPixelFormatDescription.h
new file mode 100644
index 0000000..400003b
--- /dev/null
+++ b/common/quicktime_win32/CVPixelFormatDescription.h
@@ -0,0 +1,154 @@
+/*
+ * 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
+