Mercurial > projects > dstep
diff dstep/quartzcore/CVPixelBuffer.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/quartzcore/CVPixelBuffer.d Sun Jan 03 22:06:11 2010 +0100 @@ -0,0 +1,155 @@ +/** + * Copyright: Copyright (c) 2009 Jacob Carlborg. + * Authors: Jacob Carlborg + * Version: Initial created: Sep 24, 2009 + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) + */ +module dstep.quartzcore.CVPixelBuffer; + +import dstep.corefoundation.CFArray; +import dstep.corefoundation.CFBase; +import dstep.corefoundation.CFDictionary; +import dstep.corevideo.CVImageBuffer; +import dstep.corevideo.CVPixelBuffer; +import dstep.objc.bridge.Bridge; +import dstep.objc.bridge.TypeEncoding; +import dstep.objc.objc; + +//import bindings = dstep.quartzcore.CVPixelBuffer_bindings; + +alias CVImageBufferRef CVPixelBufferRef; + +extern (C) +{ + alias void function (void*, void*, uint, uint, void**) CVPixelBufferReleasePlanarBytesCallback; + alias void function (void*, void*) CVPixelBufferReleaseBytesCallback; +} + +extern (C) +{ + extern + { + const CFStringRef kCVPixelBufferPixelFormatTypeKey; + const CFStringRef kCVPixelBufferMemoryAllocatorKey; + const CFStringRef kCVPixelBufferWidthKey; + const CFStringRef kCVPixelBufferHeightKey; + const CFStringRef kCVPixelBufferExtendedPixelsLeftKey; + const CFStringRef kCVPixelBufferExtendedPixelsTopKey; + const CFStringRef kCVPixelBufferExtendedPixelsRightKey; + const CFStringRef kCVPixelBufferExtendedPixelsBottomKey; + const CFStringRef kCVPixelBufferBytesPerRowAlignmentKey; + const CFStringRef kCVPixelBufferCGBitmapContextCompatibilityKey; + const CFStringRef kCVPixelBufferCGImageCompatibilityKey; + const CFStringRef kCVPixelBufferOpenGLCompatibilityKey; + } +} + +// This is needed otherwise the enums will fail compiling with gdc +version (GNU) +{ + private + { + const __kCVPixelFormatType_16LE555 = getOSType!("L555"); + const __kCVPixelFormatType_16LE5551 = getOSType!("5551"); + const __kCVPixelFormatType_16BE565 = getOSType!("B565"); + const __kCVPixelFormatType_16LE565 = getOSType!("L565"); + const __kCVPixelFormatType_24BGR = getOSType!("24BG"); + const __kCVPixelFormatType_32BGRA = getOSType!("BGRA"); + const __kCVPixelFormatType_32ABGR = getOSType!("ABGR"); + const __kCVPixelFormatType_32RGBA = getOSType!("RGBA"); + const __kCVPixelFormatType_64ARGB = getOSType!("b64a"); + const __kCVPixelFormatType_48RGB = getOSType!("b48r"); + const __kCVPixelFormatType_32AlphaGray = getOSType!("b32a"); + const __kCVPixelFormatType_16Gray = getOSType!("b16g"); + const __kCVPixelFormatType_422YpCbCr8 = getOSType!("2vuy"); + const __kCVPixelFormatType_4444YpCbCrA8 = getOSType!("v408"); + const __kCVPixelFormatType_4444YpCbCrA8R = getOSType!("r408"); + const __kCVPixelFormatType_444YpCbCr8 = getOSType!("v308"); + const __kCVPixelFormatType_422YpCbCr16 = getOSType!("v216"); + const __kCVPixelFormatType_422YpCbCr10 = getOSType!("v210"); + const __kCVPixelFormatType_444YpCbCr10 = getOSType!("v410"); + const __kCVPixelFormatType_420YpCbCr8Planar = getOSType!("y420"); + } +} + +enum +{ + kCVPixelFormatType_1Monochrome = 0x00000001, + kCVPixelFormatType_2Indexed = 0x00000002, + kCVPixelFormatType_4Indexed = 0x00000004, + kCVPixelFormatType_8Indexed = 0x00000008, + kCVPixelFormatType_1IndexedGray_WhiteIsZero = 0x00000021, + kCVPixelFormatType_2IndexedGray_WhiteIsZero = 0x00000022, + kCVPixelFormatType_4IndexedGray_WhiteIsZero = 0x00000024, + kCVPixelFormatType_8IndexedGray_WhiteIsZero = 0x00000028, + kCVPixelFormatType_16BE555 = 0x00000010, + kCVPixelFormatType_16LE555 = getOSType!("L555"), + kCVPixelFormatType_16LE5551 = getOSType!("5551"), + kCVPixelFormatType_16BE565 = getOSType!("B565"), + kCVPixelFormatType_16LE565 = getOSType!("L565"), + kCVPixelFormatType_24RGB = 0x00000018, + kCVPixelFormatType_24BGR = getOSType!("24BG"), + kCVPixelFormatType_32ARGB = 0x00000020, + kCVPixelFormatType_32BGRA = getOSType!("BGRA"), + kCVPixelFormatType_32ABGR = getOSType!("ABGR"), + kCVPixelFormatType_32RGBA = getOSType!("RGBA"), + kCVPixelFormatType_64ARGB = getOSType!("b64a"), + kCVPixelFormatType_48RGB = getOSType!("b48r"), + kCVPixelFormatType_32AlphaGray = getOSType!("b32a"), + kCVPixelFormatType_16Gray = getOSType!("b16g"), + kCVPixelFormatType_422YpCbCr8 = getOSType!("2vuy"), + kCVPixelFormatType_4444YpCbCrA8 = getOSType!("v408"), + kCVPixelFormatType_4444YpCbCrA8R = getOSType!("r408"), + kCVPixelFormatType_444YpCbCr8 = getOSType!("v308"), + kCVPixelFormatType_422YpCbCr16 = getOSType!("v216"), + kCVPixelFormatType_422YpCbCr10 = getOSType!("v210"), + kCVPixelFormatType_444YpCbCr10 = getOSType!("v410"), + kCVPixelFormatType_420YpCbCr8Planar = getOSType!("y420") +} + +struct CVPlanarComponentInfo +{ + int offset; + uint rowBytes; +} + + +struct CVPlanarPixelBufferInfo +{ + CVPlanarComponentInfo* componentInfo; +} + + +struct CVPlanarPixelBufferInfo_YCbCrPlanar +{ + CVPlanarComponentInfo componentInfoY; + CVPlanarComponentInfo componentInfoCb; + CVPlanarComponentInfo componentInfoCr; +} + +extern (C) +{ + uint CVPixelBufferGetTypeID (); + CVPixelBufferRef CVPixelBufferRetain (CVPixelBufferRef texture); + void CVPixelBufferRelease (CVPixelBufferRef texture); + int CVPixelBufferCreateResolvedAttributesDictionary (CFAllocatorRef allocator, CFArrayRef attributes, CFDictionaryRef* resolvedDictionaryOut); + int CVPixelBufferCreate (CFAllocatorRef allocator, uint width, uint height, uint pixelFormatType, CFDictionaryRef pixelBufferAttributes, CVPixelBufferRef* pixelBufferOut); + int CVPixelBufferCreateWithBytes (CFAllocatorRef allocator, uint width, uint height, uint pixelFormatType, void* baseAddress, uint bytesPerRow, CVPixelBufferReleaseBytesCallback releaseCallback, void* releaseRefCon, CFDictionaryRef pixelBufferAttributes, CVPixelBufferRef* pixelBufferOut); + int CVPixelBufferCreateWithPlanarBytes (CFAllocatorRef allocator, uint width, uint height, uint pixelFormatType, void* dataPtr, uint dataSize, uint numberOfPlanes, void** planeBaseAddress, size_t* planeWidth, size_t* planeHeight, size_t* planeBytesPerRow, CVPixelBufferReleasePlanarBytesCallback releaseCallback, void* releaseRefCon, CFDictionaryRef pixelBufferAttributes, CVPixelBufferRef* pixelBufferOut); + int CVPixelBufferLockBaseAddress (CVPixelBufferRef pixelBuffer, ulong lockFlags); + int CVPixelBufferUnlockBaseAddress (CVPixelBufferRef pixelBuffer, ulong unlockFlags); + uint CVPixelBufferGetWidth (CVPixelBufferRef pixelBuffer); + uint CVPixelBufferGetHeight (CVPixelBufferRef pixelBuffer); + uint CVPixelBufferGetPixelFormatType (CVPixelBufferRef pixelBuffer); + void* CVPixelBufferGetBaseAddress (CVPixelBufferRef pixelBuffer); + uint CVPixelBufferGetBytesPerRow (CVPixelBufferRef pixelBuffer); + uint CVPixelBufferGetDataSize (CVPixelBufferRef pixelBuffer); + ubyte CVPixelBufferIsPlanar (CVPixelBufferRef pixelBuffer); + uint CVPixelBufferGetPlaneCount (CVPixelBufferRef pixelBuffer); + uint CVPixelBufferGetWidthOfPlane (CVPixelBufferRef pixelBuffer, uint planeIndex); + uint CVPixelBufferGetHeightOfPlane (CVPixelBufferRef pixelBuffer, uint planeIndex); + void* CVPixelBufferGetBaseAddressOfPlane (CVPixelBufferRef pixelBuffer, uint planeIndex); + uint CVPixelBufferGetBytesPerRowOfPlane (CVPixelBufferRef pixelBuffer, uint planeIndex); + void CVPixelBufferGetExtendedPixels (CVPixelBufferRef pixelBuffer, size_t* extraColumnsOnLeft, size_t* extraColumnsOnRight, size_t* extraRowsOnTop, size_t* extraRowsOnBottom); + int CVPixelBufferFillExtendedPixels (CVPixelBufferRef pixelBuffer); +} \ No newline at end of file