| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <CoreFoundation/CoreFoundation.h> |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| extern "C" { |
| |
| // |
| // Declare CoreMedia types. |
| // |
| |
| typedef signed long CMItemCount; |
| typedef uint32_t CMBlockBufferFlags; |
| typedef struct OpaqueCMBlockBuffer *CMBlockBufferRef; |
| typedef const struct opaqueCMFormatDescription *CMFormatDescriptionRef; |
| typedef CMFormatDescriptionRef CMVideoFormatDescriptionRef; |
| typedef struct opaqueCMSampleBuffer *CMSampleBufferRef; |
| |
| typedef int64_t CMTimeValue; |
| typedef int32_t CMTimeScale; |
| typedef int64_t CMTimeEpoch; |
| typedef uint32_t CMTimeFlags; |
| |
| typedef struct { |
| CMTimeValue value; |
| CMTimeScale timescale; |
| CMTimeFlags flags; |
| CMTimeEpoch epoch; |
| } CMTime; |
| |
| typedef struct { |
| CMTime duration; |
| CMTime presentationTimeStamp; |
| CMTime decodeTimeStamp; |
| } CMSampleTimingInfo; |
| |
| typedef struct { |
| int32_t width; |
| int32_t height; |
| } CMVideoDimensions; |
| |
| typedef struct { |
| uint32_t version; |
| void *(*AllocateBlock)(void *refCon, size_t sizeInBytes); |
| void (*FreeBlock)(void *refCon, void *doomedMemoryBlock, size_t sizeInBytes); |
| void *refCon; |
| } CMBlockBufferCustomBlockSource; |
| |
| typedef OSStatus (*CMSampleBufferMakeDataReadyCallback)( |
| CMSampleBufferRef sbuf, |
| void *makeDataReadyRefcon); |
| |
| // |
| // Declare VideoToolbox types. |
| // |
| |
| typedef struct __CVBuffer *CVBufferRef; |
| typedef CVBufferRef CVImageBufferRef; |
| typedef uint32_t VTDecodeFrameFlags; |
| enum { |
| kVTDecodeFrame_EnableAsynchronousDecompression = 1 << 0, |
| kVTDecodeFrame_DoNotOutputFrame = 1 << 1, |
| kVTDecodeFrame_1xRealTimePlayback = 1 << 2, |
| kVTDecodeFrame_EnableTemporalProcessing = 1 << 3, |
| }; |
| typedef UInt32 VTDecodeInfoFlags; |
| typedef struct OpaqueVTDecompressionSession* VTDecompressionSessionRef; |
| typedef CFTypeRef VTSessionRef; |
| |
| typedef void (*VTDecompressionOutputCallback)( |
| void *decompressionOutputRefCon, |
| void *sourceFrameRefCon, |
| OSStatus status, |
| VTDecodeInfoFlags infoFlags, |
| CVImageBufferRef imageBuffer, |
| CMTime presentationTimeStamp, |
| CMTime presentationDuration); |
| |
| typedef struct { |
| VTDecompressionOutputCallback decompressionOutputCallback; |
| void *decompressionOutputRefCon; |
| } VTDecompressionOutputCallbackRecord; |
| |
| } // extern "C" |