// 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 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 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"