xamarin-macios/src/videotoolbox.cs

1036 строки
29 KiB
C#

////
// VideoToolbox core types and enumerations
//
// Author: Miguel de Icaza (miguel@xamarin.com)
// Alex Soto (alex.soto@xamarin.com)
//
// Copyright 2014 Xamarin Inc
//
using System;
using XamCore.Foundation;
using XamCore.ObjCRuntime;
using XamCore.CoreMedia;
using XamCore.AVFoundation;
namespace XamCore.VideoToolbox {
[Static]
interface VTCompressionPropertyKey {
// Buffers
[Field ("kVTCompressionPropertyKey_NumberOfPendingFrames")]
[Mac (10,8), iOS (8,0)]
NSString NumberOfPendingFrames { get; }
[Field ("kVTCompressionPropertyKey_PixelBufferPoolIsShared")]
[Mac (10,8), iOS (8,0)]
NSString PixelBufferPoolIsShared { get; }
[Field ("kVTCompressionPropertyKey_VideoEncoderPixelBufferAttributes")]
[Mac (10,8), iOS (8,0)]
NSString VideoEncoderPixelBufferAttributes { get; }
// Frame dependency
[Field ("kVTCompressionPropertyKey_MaxKeyFrameInterval")]
[Mac (10,8), iOS (8,0)]
NSString MaxKeyFrameInterval { get; }
[Field ("kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration")]
[Mac (10,8), iOS (8,0)]
NSString MaxKeyFrameIntervalDuration { get; }
[Field ("kVTCompressionPropertyKey_AllowTemporalCompression")]
[Mac (10,8), iOS (8,0)]
NSString AllowTemporalCompression { get; }
[Field ("kVTCompressionPropertyKey_AllowFrameReordering")]
[Mac (10,8), iOS (8,0)]
NSString AllowFrameReordering { get; }
// Rate control
[Field ("kVTCompressionPropertyKey_AverageBitRate")]
[Mac (10,8), iOS (8,0)]
NSString AverageBitRate { get; }
[Field ("kVTCompressionPropertyKey_DataRateLimits")]
[Mac (10,8), iOS (8,0)]
NSString DataRateLimits { get; } // NSArray of an even number of CFNumbers alternating [int, double](bytes, seconds] Read/write
[Field ("kVTCompressionPropertyKey_Quality")]
[Mac (10,8), iOS (8,0)]
NSString Quality { get; }
[Field ("kVTCompressionPropertyKey_MoreFramesBeforeStart")]
[Mac (10,8), iOS (8,0)]
NSString MoreFramesBeforeStart { get; }
[Field ("kVTCompressionPropertyKey_MoreFramesAfterEnd")]
[Mac (10,8), iOS (8,0)]
NSString MoreFramesAfterEnd { get; }
// Bitstream configuration
[Field ("kVTCompressionPropertyKey_ProfileLevel")]
[Mac (10,8), iOS (8,0)]
NSString ProfileLevel { get; }
[Field ("kVTCompressionPropertyKey_H264EntropyMode")]
[Mac (10,9), iOS (8,0)]
NSString H264EntropyMode { get; }
[Field ("kVTCompressionPropertyKey_Depth")]
[Mac (10,8), iOS (8,0)]
NSString Depth { get; }
// Runtime restrictions
[Field ("kVTCompressionPropertyKey_MaxFrameDelayCount")]
[Mac (10,8), iOS (8,0)]
NSString MaxFrameDelayCount { get; }
[Field ("kVTCompressionPropertyKey_MaxH264SliceBytes")]
[Mac (10,8), iOS (8,0)]
NSString MaxH264SliceBytes { get; }
[Field ("kVTCompressionPropertyKey_RealTime")]
[Mac (10,9), iOS (8,0)]
NSString RealTime { get; }
// Hints
[Field ("kVTCompressionPropertyKey_SourceFrameCount")]
[Mac (10,8), iOS (8,0)]
NSString SourceFrameCount { get; }
[Field ("kVTCompressionPropertyKey_ExpectedFrameRate")]
[Mac (10,8), iOS (8,0)]
NSString ExpectedFrameRate { get; }
[Field ("kVTCompressionPropertyKey_ExpectedDuration")]
[Mac (10,8), iOS (8,0)]
NSString ExpectedDuration { get; }
// Hardware acceleration
// Hardware acceleration is default behavior on iOS. No opt-in required.
[Field ("kVTCompressionPropertyKey_UsingHardwareAcceleratedVideoEncoder")]
[Mac (10,8), iOS (8,0)]
NSString UsingHardwareAcceleratedVideoEncoder { get; } // CFBoolean Read
// Clean aperture and pixel aspect ratio
[Field ("kVTCompressionPropertyKey_CleanAperture")]
[Mac (10,8), iOS (8,0)]
NSString CleanAperture { get; }
[Field ("kVTCompressionPropertyKey_PixelAspectRatio")]
[Mac (10,8), iOS (8,0)]
NSString PixelAspectRatio { get; }
[Field ("kVTCompressionPropertyKey_FieldCount")]
[Mac (10,8), iOS (8,0)]
NSString FieldCount { get; }
[Field ("kVTCompressionPropertyKey_FieldDetail")]
[Mac (10,8), iOS (8,0)]
NSString FieldDetail { get; }
[Field ("kVTCompressionPropertyKey_AspectRatio16x9")]
[Mac (10,8), iOS (8,0)]
NSString AspectRatio16x9 { get; }
[Field ("kVTCompressionPropertyKey_ProgressiveScan")]
[Mac (10,8), iOS (8,0)]
NSString ProgressiveScan { get; }
// Color
[Field ("kVTCompressionPropertyKey_ColorPrimaries")]
[Mac (10,8), iOS (8,0)]
NSString ColorPrimaries { get; }
[Field ("kVTCompressionPropertyKey_TransferFunction")]
[Mac (10,8), iOS (8,0)]
NSString TransferFunction { get; }
[Field ("kVTCompressionPropertyKey_YCbCrMatrix")]
[Mac (10,8), iOS (8,0)]
NSString YCbCrMatrix { get; }
[Field ("kVTCompressionPropertyKey_ICCProfile")]
[Mac (10,8), iOS (8,0)]
NSString ICCProfile { get; }
// Pre-compression processing
[Field ("kVTCompressionPropertyKey_PixelTransferProperties")]
[Mac (10,8), iOS (8,0)]
NSString PixelTransferProperties { get; }
// Multi-pass
[Field ("kVTCompressionPropertyKey_MultiPassStorage")]
[Mac (10,10), iOS (8,0)]
NSString MultiPassStorage { get; }
}
[StrongDictionary ("VTCompressionPropertyKey")]
interface VTCompressionProperties {
[Mac (10,8), iOS (8,0)]
[Export ("NumberOfPendingFrames")]
int NumberOfPendingFrames { get; }
[Mac (10,8), iOS (8,0)]
[Export ("PixelBufferPoolIsShared")]
bool PixelBufferPoolIsShared { get; }
[Mac (10,8), iOS (8,0)]
[Export ("VideoEncoderPixelBufferAttributes")]
NSDictionary VideoEncoderPixelBufferAttributes { get; }
[Mac (10,8), iOS (8,0)]
[Export ("MaxKeyFrameInterval")]
int MaxKeyFrameInterval { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("MaxKeyFrameIntervalDuration")]
double MaxKeyFrameIntervalDuration { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("AllowTemporalCompression")]
bool AllowTemporalCompression { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("AllowFrameReordering")]
bool AllowFrameReordering { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("AverageBitRate")]
int AverageBitRate { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("Quality")]
float Quality { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("MoreFramesBeforeStart")]
bool MoreFramesBeforeStart { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("MoreFramesAfterEnd")]
bool MoreFramesAfterEnd { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("Depth")]
CMPixelFormat Depth { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("MaxFrameDelayCount")]
int MaxFrameDelayCount { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("MaxH264SliceBytes")]
int MaxH264SliceBytes { get; set; }
[Mac (10,9), iOS (8,0)]
[Export ("RealTime")]
bool RealTime { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("SourceFrameCount")]
uint SourceFrameCount { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("ExpectedFrameRate")]
double ExpectedFrameRate { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("ExpectedDuration")]
double ExpectedDuration { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("UsingHardwareAcceleratedVideoEncoder")]
bool UsingHardwareAcceleratedVideoEncoder { get; }
[Mac (10,8), iOS (8,0)]
[Export ("CleanAperture")]
NSDictionary CleanAperture { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("PixelAspectRatio")]
NSDictionary PixelAspectRatio { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("FieldCount")]
VTFieldCount FieldCount { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("AspectRatio16x9")]
bool AspectRatio16x9 { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("ProgressiveScan")]
bool ProgressiveScan { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("ICCProfile")]
NSData ICCProfile { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("PixelTransferProperties")]
NSDictionary PixelTransferProperties { get; set; }
}
[Static]
interface VTProfileLevelKeys {
// H264
[Field ("kVTProfileLevel_H264_Baseline_1_3")]
[Mac (10,8), iOS (8,0)]
NSString H264_Baseline_1_3 { get; }
[Field ("kVTProfileLevel_H264_Baseline_3_0")]
[Mac (10,8), iOS (8,0)]
NSString H264_Baseline_3_0 { get; }
[Field ("kVTProfileLevel_H264_Baseline_3_1")]
[Mac (10,8), iOS (8,0)]
NSString H264_Baseline_3_1 { get; }
[Field ("kVTProfileLevel_H264_Baseline_3_2")]
[Mac (10,8), iOS (8,0)]
NSString H264_Baseline_3_2 { get; }
[Field ("kVTProfileLevel_H264_Baseline_4_0")]
[Mac (10,9), iOS (8,0)]
NSString H264_Baseline_4_0 { get; }
[Field ("kVTProfileLevel_H264_Baseline_4_1")]
[Mac (10,8), iOS (8,0)]
NSString H264_Baseline_4_1 { get; }
[Field ("kVTProfileLevel_H264_Baseline_4_2")]
[Mac (10,9), iOS (8,0)]
NSString H264_Baseline_4_2 { get; }
[Field ("kVTProfileLevel_H264_Baseline_5_0")]
[Mac (10,9), iOS (8,0)]
NSString H264_Baseline_5_0 { get; }
[Field ("kVTProfileLevel_H264_Baseline_5_1")]
[Mac (10,9), iOS (8,0)]
NSString H264_Baseline_5_1 { get; }
[Field ("kVTProfileLevel_H264_Baseline_5_2")]
[Mac (10,9), iOS (8,0)]
NSString H264_Baseline_5_2 { get; }
[Field ("kVTProfileLevel_H264_Baseline_AutoLevel")]
[Mac (10,9), iOS (8,0)]
NSString H264_Baseline_AutoLevel { get; }
[Field ("kVTProfileLevel_H264_Main_3_0")]
[Mac (10,8), iOS (8,0)]
NSString H264_Main_3_0 { get; }
[Field ("kVTProfileLevel_H264_Main_3_1")]
[Mac (10,8), iOS (8,0)]
NSString H264_Main_3_1 { get; }
[Field ("kVTProfileLevel_H264_Main_3_2")]
[Mac (10,8), iOS (8,0)]
NSString H264_Main_3_2 { get; }
[Field ("kVTProfileLevel_H264_Main_4_0")]
[Mac (10,8), iOS (8,0)]
NSString H264_Main_4_0 { get; }
[Field ("kVTProfileLevel_H264_Main_4_1")]
[Mac (10,8), iOS (8,0)]
NSString H264_Main_4_1 { get; }
[Field ("kVTProfileLevel_H264_Main_4_2")]
[Mac (10,9), iOS (8,0)]
NSString H264_Main_4_2 { get; }
[Field ("kVTProfileLevel_H264_Main_5_0")]
[Mac (10,8), iOS (8,0)]
NSString H264_Main_5_0 { get; }
[Field ("kVTProfileLevel_H264_Main_5_1")]
[Mac (10,9), iOS (8,0)]
NSString H264_Main_5_1 { get; }
[Field ("kVTProfileLevel_H264_Main_5_2")]
[Mac (10,9), iOS (8,0)]
NSString H264_Main_5_2 { get; }
[Field ("kVTProfileLevel_H264_Main_AutoLevel")]
[Mac (10,9), iOS (8,0)]
NSString H264_Main_AutoLevel { get; }
[Field ("kVTProfileLevel_H264_Extended_5_0")]
[Mac (10,8), iOS (8,0)]
NSString H264_Extended_5_0 { get; }
[Field ("kVTProfileLevel_H264_Extended_AutoLevel")]
[Mac (10,9), iOS (8,0)]
NSString H264_Extended_AutoLevel { get; }
[Field ("kVTProfileLevel_H264_High_3_0")]
[Mac (10,9), iOS (8,0)]
NSString H264_High_3_0 { get; }
[Field ("kVTProfileLevel_H264_High_3_1")]
[Mac (10,9), iOS (8,0)]
NSString H264_High_3_1 { get; }
[Field ("kVTProfileLevel_H264_High_3_2")]
[Mac (10,9), iOS (8,0)]
NSString H264_High_3_2 { get; }
[Field ("kVTProfileLevel_H264_High_4_0")]
[Mac (10,9), iOS (8,0)]
NSString H264_High_4_0 { get; }
[Field ("kVTProfileLevel_H264_High_4_1")]
[Mac (10,9), iOS (8,0)]
NSString H264_High_4_1 { get; }
[Field ("kVTProfileLevel_H264_High_4_2")]
[Mac (10,9), iOS (8,0)]
NSString H264_High_4_2 { get; }
[Field ("kVTProfileLevel_H264_High_5_0")]
[Mac (10,8), iOS (8,0)]
NSString H264_High_5_0 { get; }
[Field ("kVTProfileLevel_H264_High_5_1")]
[Mac (10,9), iOS (8,0)]
NSString H264_High_5_1 { get; }
[Field ("kVTProfileLevel_H264_High_5_2")]
[Mac (10,9), iOS (8,0)]
NSString H264_High_5_2 { get; }
[Field ("kVTProfileLevel_H264_High_AutoLevel")]
[Mac (10,9), iOS (8,0)]
NSString H264_High_AutoLevel { get; }
// MP4V
[Field ("kVTProfileLevel_MP4V_Simple_L0")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_Simple_L0 { get; }
[Field ("kVTProfileLevel_MP4V_Simple_L1")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_Simple_L1 { get; }
[Field ("kVTProfileLevel_MP4V_Simple_L2")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_Simple_L2 { get; }
[Field ("kVTProfileLevel_MP4V_Simple_L3")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_Simple_L3 { get; }
[Field ("kVTProfileLevel_MP4V_Main_L2")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_Main_L2 { get; }
[Field ("kVTProfileLevel_MP4V_Main_L3")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_Main_L3 { get; }
[Field ("kVTProfileLevel_MP4V_Main_L4")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_Main_L4 { get; }
[Field ("kVTProfileLevel_MP4V_AdvancedSimple_L0")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_AdvancedSimple_L0 { get; }
[Field ("kVTProfileLevel_MP4V_AdvancedSimple_L1")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_AdvancedSimple_L1 { get; }
[Field ("kVTProfileLevel_MP4V_AdvancedSimple_L2")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_AdvancedSimple_L2 { get; }
[Field ("kVTProfileLevel_MP4V_AdvancedSimple_L3")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_AdvancedSimple_L3 { get; }
[Field ("kVTProfileLevel_MP4V_AdvancedSimple_L4")]
[Mac (10,8), iOS (8,0)]
NSString MP4V_AdvancedSimple_L4 { get; }
// H263
[Field ("kVTProfileLevel_H263_Profile0_Level10")]
[Mac (10,8), iOS (8,0)]
NSString H263_Profile0_Level10 { get; }
[Field ("kVTProfileLevel_H263_Profile0_Level45")]
[Mac (10,8), iOS (8,0)]
NSString H263_Profile0_Level45 { get; }
[Field ("kVTProfileLevel_H263_Profile3_Level45")]
[Mac (10,8), iOS (8,0)]
NSString H263_Profile3_Level45 { get; }
}
[Static]
interface VTH264EntropyModeKeys {
[Field ("kVTH264EntropyMode_CAVLC")]
[Mac (10,9), iOS (8,0)]
NSString CAVLC { get; }
[Field ("kVTH264EntropyMode_CABAC")]
[Mac (10,9), iOS (8,0)]
NSString CABAC { get; }
}
[StrongDictionary ("VTVideoEncoderSpecificationKeys")]
interface VTVideoEncoderSpecification {
#if MONOMAC
[Mac (10,9)]
[Export ("EnableHardwareAcceleratedVideoEncoder")]
bool EnableHardwareAcceleratedVideoEncoder { get; set; }
[Mac (10,9)]
[Export ("RequireHardwareAcceleratedVideoEncoder")]
bool RequireHardwareAcceleratedVideoEncoder { get; set; }
#endif
[Mac (10,8), iOS (8,0)]
[Export ("EncoderID")]
string EncoderID { get; set; }
}
[Static]
interface VTVideoEncoderSpecificationKeys {
#if MONOMAC
[Field ("kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder")]
[Mac (10,9)]
NSString EnableHardwareAcceleratedVideoEncoder { get; }
[Field ("kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder")]
[Mac (10,9)]
NSString RequireHardwareAcceleratedVideoEncoder { get; }
#endif
[Mac (10,8), iOS (8,0)]
[Field ("kVTVideoEncoderSpecification_EncoderID")]
NSString EncoderID { get; }
}
[StrongDictionary ("VTEncodeFrameOptionKey")]
interface VTEncodeFrameOptions {
[Export ("ForceKeyFrame")]
bool ForceKeyFrame { get; set; }
}
[Static]
interface VTEncodeFrameOptionKey {
// Per-frame configuration
[Field ("kVTEncodeFrameOptionKey_ForceKeyFrame")]
[Mac (10,8), iOS (8,0)]
NSString ForceKeyFrame { get; }
}
[Static]
interface VTDecompressionPropertyKey {
// Pixel buffer pools
[Field ("kVTDecompressionPropertyKey_PixelBufferPool")]
[Mac (10,8), iOS (8,0)]
NSString PixelBufferPool { get; }
[Field ("kVTDecompressionPropertyKey_PixelBufferPoolIsShared")]
[Mac (10,8), iOS (8,0)]
NSString PixelBufferPoolIsShared { get; }
[Field ("kVTDecompressionPropertyKey_OutputPoolRequestedMinimumBufferCount")]
[Mac (10,9), iOS (8,0)]
NSString OutputPoolRequestedMinimumBufferCount { get; }
// Asynchronous state
[Field ("kVTDecompressionPropertyKey_NumberOfFramesBeingDecoded")]
[Mac (10,8), iOS (8,0)]
NSString NumberOfFramesBeingDecoded { get; }
[Field ("kVTDecompressionPropertyKey_MinOutputPresentationTimeStampOfFramesBeingDecoded")]
[Mac (10,8), iOS (8,0)]
NSString MinOutputPresentationTimeStampOfFramesBeingDecoded { get; }
[Field ("kVTDecompressionPropertyKey_MaxOutputPresentationTimeStampOfFramesBeingDecoded")]
[Mac (10,8), iOS (8,0)]
NSString MaxOutputPresentationTimeStampOfFramesBeingDecoded { get; }
// Content
[Field ("kVTDecompressionPropertyKey_ContentHasInterframeDependencies")]
[Mac (10,8), iOS (8,0)]
NSString ContentHasInterframeDependencies { get; }
// Hardware acceleration
// hardware acceleration is default behavior on iOS. no opt-in required.
[Field ("kVTDecompressionPropertyKey_UsingHardwareAcceleratedVideoDecoder")]
[Mac (10,9), iOS (8,0)]
NSString UsingHardwareAcceleratedVideoDecoder { get; }
// Decoder behavior
[Field ("kVTDecompressionPropertyKey_RealTime")]
[Mac (10,10), iOS (8,0)]
NSString RealTime { get; }
[Field ("kVTDecompressionPropertyKey_ThreadCount")]
[Mac (10,8), iOS (8,0)]
NSString ThreadCount { get; }
[Field ("kVTDecompressionPropertyKey_FieldMode")]
[Mac (10,8), iOS (8,0)]
NSString FieldMode { get; }
[Field ("kVTDecompressionProperty_FieldMode_BothFields")]
[Mac (10,8), iOS (8,0)]
NSString FieldMode_BothFields { get; }
[Field ("kVTDecompressionProperty_FieldMode_TopFieldOnly")]
[Mac (10,8), iOS (8,0)]
NSString FieldMode_TopFieldOnly { get; }
[Field ("kVTDecompressionProperty_FieldMode_BottomFieldOnly")]
[Mac (10,8), iOS (8,0)]
NSString FieldMode_BottomFieldOnly { get; }
[Field ("kVTDecompressionProperty_FieldMode_SingleField")]
[Mac (10,8), iOS (8,0)]
NSString FieldMode_SingleField { get; }
[Field ("kVTDecompressionProperty_FieldMode_DeinterlaceFields")]
[Mac (10,8), iOS (8,0)]
NSString FieldMode_DeinterlaceFields { get; }
[Field ("kVTDecompressionPropertyKey_DeinterlaceMode")]
[Mac (10,8), iOS (8,0)]
NSString DeinterlaceMode { get; }
[Field ("kVTDecompressionProperty_DeinterlaceMode_VerticalFilter")]
[Mac (10,8), iOS (8,0)]
NSString DeinterlaceMode_VerticalFilter { get; }
[Field ("kVTDecompressionProperty_DeinterlaceMode_Temporal")]
[Mac (10,8), iOS (8,0)]
NSString DeinterlaceMode_Temporal { get; }
[Field ("kVTDecompressionPropertyKey_ReducedResolutionDecode")]
[Mac (10,8), iOS (8,0)]
NSString ReducedResolutionDecode { get; }
[Field ("kVTDecompressionPropertyKey_ReducedCoefficientDecode")]
[Mac (10,8), iOS (8,0)]
NSString ReducedCoefficientDecode { get; }
[Field ("kVTDecompressionPropertyKey_ReducedFrameDelivery")]
[Mac (10,8), iOS (8,0)]
NSString ReducedFrameDelivery { get; }
[Field ("kVTDecompressionPropertyKey_OnlyTheseFrames")]
[Mac (10,8), iOS (8,0)]
NSString OnlyTheseFrames { get; }
[Field ("kVTDecompressionProperty_OnlyTheseFrames_AllFrames")]
[Mac (10,8), iOS (8,0)]
NSString OnlyTheseFrames_AllFrames { get; }
[Field ("kVTDecompressionProperty_OnlyTheseFrames_NonDroppableFrames")]
[Mac (10,8), iOS (8,0)]
NSString OnlyTheseFrames_NonDroppableFrames { get; }
[Field ("kVTDecompressionProperty_OnlyTheseFrames_IFrames")]
[Mac (10,8), iOS (8,0)]
NSString OnlyTheseFrames_IFrames { get; }
[Field ("kVTDecompressionProperty_OnlyTheseFrames_KeyFrames")]
[Mac (10,8), iOS (8,0)]
NSString OnlyTheseFrames_KeyFrames { get; }
[Field ("kVTDecompressionPropertyKey_SuggestedQualityOfServiceTiers")]
[Mac (10,8), iOS (8,0)]
NSString SuggestedQualityOfServiceTiers { get; }
[Field ("kVTDecompressionPropertyKey_SupportedPixelFormatsOrderedByQuality")]
[Mac (10,8), iOS (8,0)]
NSString SupportedPixelFormatsOrderedByQuality { get; }
[Field ("kVTDecompressionPropertyKey_SupportedPixelFormatsOrderedByPerformance")]
[Mac (10,8), iOS (8,0)]
NSString SupportedPixelFormatsOrderedByPerformance { get; }
[Field ("kVTDecompressionPropertyKey_PixelFormatsWithReducedResolutionSupport")]
[Mac (10,8), iOS (8,0)]
NSString PixelFormatsWithReducedResolutionSupport { get; }
//Post-decompression processing
[Field ("kVTDecompressionPropertyKey_PixelTransferProperties")]
[Mac (10,8), iOS (8,0)]
NSString PixelTransferProperties { get; }
}
[StrongDictionary ("VTDecompressionPropertyKey")]
interface VTDecompressionProperties {
[Mac (10,8), iOS (8,0)]
[Export ("PixelBufferPoolIsShared")]
bool PixelBufferPoolIsShared { get; }
[Mac (10,8), iOS (8,0)]
[Export ("OutputPoolRequestedMinimumBufferCount")]
uint OutputPoolRequestedMinimumBufferCount { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("NumberOfFramesBeingDecoded")]
uint NumberOfFramesBeingDecoded { get; }
[Mac (10,8), iOS (8,0)]
[Export ("MinOutputPresentationTimeStampOfFramesBeingDecoded")]
NSDictionary MinOutputPresentationTimeStampOfFramesBeingDecoded { get; }
[Mac (10,8), iOS (8,0)]
[Export ("MaxOutputPresentationTimeStampOfFramesBeingDecoded")]
NSDictionary MaxOutputPresentationTimeStampOfFramesBeingDecoded { get; }
[Mac (10,8), iOS (8,0)]
[Export ("ContentHasInterframeDependencies")]
bool ContentHasInterframeDependencies { get; }
// Hardware acceleration
// hardware acceleration is default behavior on iOS. no opt-in required.
[Export ("UsingHardwareAcceleratedVideoDecoder")]
[Mac (10,9)]
bool UsingHardwareAcceleratedVideoDecoder { get; }
[Mac (10,10), iOS (8,0)]
[Export ("RealTime")]
bool RealTime { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("ThreadCount")]
uint ThreadCount { get; set; }
[StrongDictionary]
[Mac (10,8), iOS (8,0)]
[Export ("ReducedResolutionDecode")]
VTDecompressionResolutionOptions ReducedResolutionDecode { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("ReducedCoefficientDecode")]
uint ReducedCoefficientDecode { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("ReducedFrameDelivery")]
float ReducedFrameDelivery { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("SuggestedQualityOfServiceTiers")]
NSDictionary[] SuggestedQualityOfServiceTiers { get; }
[Mac (10,8), iOS (8,0)]
[Export ("SupportedPixelFormatsOrderedByQuality")]
CMPixelFormat[] SupportedPixelFormatsOrderedByQuality { get; }
[Mac (10,8), iOS (8,0)]
[Export ("SupportedPixelFormatsOrderedByPerformance")]
CMPixelFormat[] SupportedPixelFormatsOrderedByPerformance { get; }
[Mac (10,8), iOS (8,0)]
[Export ("PixelFormatsWithReducedResolutionSupport")]
CMPixelFormat[] PixelFormatsWithReducedResolutionSupport { get; }
[Mac (10,8), iOS (8,0)]
[Advice ("Use Strongly typed version PixelTransferSettings")]
[Export ("PixelTransferProperties")]
NSDictionary PixelTransferProperties { get; set; }
// VTPixelTransferProperties are available in iOS 9 radar://22614931 https://trello.com/c/bTl6hRu9
[StrongDictionary]
[Mac (10,8), iOS (9,0)]
[Export ("PixelTransferProperties")]
VTPixelTransferProperties PixelTransferSettings { get; set; }
}
[StrongDictionary ("VTVideoDecoderSpecificationKeys")]
interface VTVideoDecoderSpecification {
[Export ("EnableHardwareAcceleratedVideoDecoder")]
[Mac (10,9)]
bool EnableHardwareAcceleratedVideoDecoder { get; set; }
[Export ("RequireHardwareAcceleratedVideoDecoder")]
[Mac (10,9)]
bool RequireHardwareAcceleratedVideoDecoder { get; set; }
}
[Static]
interface VTVideoDecoderSpecificationKeys {
[Field ("kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder")]
[Mac (10,9), iOS (8,0)]
NSString EnableHardwareAcceleratedVideoDecoder { get; }
[Field ("kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder")]
[Mac (10,9), iOS (8,0)]
NSString RequireHardwareAcceleratedVideoDecoder { get; }
}
[StrongDictionary ("VTDecompressionResolutionKeys")]
interface VTDecompressionResolutionOptions {
[Export ("Width")]
[Mac (10,8), iOS (8,0)]
float Width { get; set; }
[Export ("Height")]
[Mac (10,8), iOS (8,0)]
float Height { get; set; }
}
[Static]
interface VTDecompressionResolutionKeys {
[Field ("kVTDecompressionResolutionKey_Width")]
[Mac (10,8), iOS (8,0)]
NSString Width { get; }
[Field ("kVTDecompressionResolutionKey_Height")]
[Mac (10,8), iOS (8,0)]
NSString Height { get; }
}
// VTSession.h
[StrongDictionary ("VTPropertyKeys")]
interface VTPropertyOptions {
[Export ("ShouldBeSerialized")]
[Mac (10,8), iOS (8,0)]
bool ShouldBeSerialized { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("SupportedValueMinimumKey")]
NSNumber SupportedValueMinimum { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("SupportedValueMaximumKey")]
NSNumber SupportedValueMaximum { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("SupportedValueListKey")]
NSNumber[] SupportedValueList { get; set; }
[Mac (10,8), iOS (8,0)]
[Export ("DocumentationKey")]
NSString Documentation { get; set; }
}
[Static]
interface VTPropertyKeys {
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertyTypeKey")]
NSString Type { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertyReadWriteStatusKey")]
NSString ReadWriteStatus { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertyShouldBeSerializedKey")]
NSString ShouldBeSerialized { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertySupportedValueMinimumKey")]
NSString SupportedValueMinimumKey { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertySupportedValueMaximumKey")]
NSString SupportedValueMaximumKey { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertySupportedValueListKey")]
NSString SupportedValueListKey { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertyDocumentationKey")]
NSString DocumentationKey { get; }
}
[Static]
interface VTPropertyTypeKeys {
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertyType_Boolean")]
NSString Boolean { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertyType_Enumeration")]
NSString Enumeration { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertyType_Number")]
NSString Number { get; }
}
[Static]
interface VTPropertyReadWriteStatusKeys {
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertyReadWriteStatus_ReadOnly")]
NSString ReadOnly { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTPropertyReadWriteStatus_ReadWrite")]
NSString ReadWrite { get; }
}
// VTVideoEncoderList.h
[Static]
[Internal]
interface VTVideoEncoderList {
[Mac (10,8), iOS (8,0)]
[Field ("kVTVideoEncoderList_CodecName")]
NSString CodecName { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTVideoEncoderList_CodecType")]
NSString CodecType { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTVideoEncoderList_DisplayName")]
NSString DisplayName { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTVideoEncoderList_EncoderID")]
NSString EncoderID { get; }
[Mac (10,8), iOS (8,0)]
[Field ("kVTVideoEncoderList_EncoderName")]
NSString EncoderName { get; }
}
// VTMultiPassStorage.h
[Static]
interface VTMultiPassStorageCreationOptionKeys {
[Field ("kVTMultiPassStorageCreationOption_DoNotDelete")]
[Mac (10,10), iOS (8,0)] // not decorated in the header files - but all other definitions are 10.10 & 8.0
NSString DoNotDelete { get; }
}
[StrongDictionary ("VTMultiPassStorageCreationOptionKeys")]
interface VTMultiPassStorageCreationOptions {
[Export ("DoNotDelete")]
[Mac (10,8), iOS (8,0)]
bool DoNotDelete { get; set; }
}
// VTPixelTransferProperties are available in iOS 9 radar://22614931 https://trello.com/c/bTl6hRu9
[StrongDictionary ("VTPixelTransferPropertyKeys")]
interface VTPixelTransferProperties {
[StrongDictionary]
[Mac (10,8), iOS (9,0)]
[Export ("DestinationCleanAperture")]
AVVideoCleanApertureSettings DestinationCleanAperture { get; set; }
[StrongDictionary]
[Mac (10,8), iOS (9,0)]
[Export ("DestinationPixelAspectRatio")]
AVVideoPixelAspectRatioSettings DestinationPixelAspectRatio { get; set; }
[iOS (10,0)]
[Mac (10,8)]
[Export ("DestinationICCProfile")]
NSData DestinationICCProfile { get; set; }
}
// VTPixelTransferProperties are available in iOS 9 radar://22614931 https://trello.com/c/bTl6hRu9
[Static]
[AdvancedAttribute]
interface VTPixelTransferPropertyKeys {
// ScalingMode
[Mac (10,8), iOS (9,0)]
[Field ("kVTPixelTransferPropertyKey_ScalingMode")]
NSString ScalingMode { get; }
[Mac (10,8), iOS (9,0)]
[Field ("kVTScalingMode_Normal")]
NSString ScalingMode_Normal { get; }
[Mac (10,8), iOS (9,0)]
[Field ("kVTScalingMode_CropSourceToCleanAperture")]
NSString ScalingMode_CropSourceToCleanAperture { get; }
[Mac (10,8), iOS (9,0)]
[Field ("kVTScalingMode_Letterbox")]
NSString ScalingMode_Letterbox { get; }
[Mac (10,8), iOS (9,0)]
[Field ("kVTScalingMode_Trim")]
NSString ScalingMode_Trim { get; }
// DestinationCleanAperture
[Mac (10,8), iOS (9,0)]
[Field ("kVTPixelTransferPropertyKey_DestinationCleanAperture")]
NSString DestinationCleanAperture { get; }
// DestinationCleanAperture
[Mac (10,8), iOS (9,0)]
[Field ("kVTPixelTransferPropertyKey_DestinationPixelAspectRatio")]
NSString DestinationPixelAspectRatio { get; }
// DownsamplingMode
[Mac (10,8), iOS (9,0)]
[Field ("kVTPixelTransferPropertyKey_DownsamplingMode")]
NSString DownsamplingMode { get; }
[Mac (10,8), iOS (9,0)]
[Field ("kVTDownsamplingMode_Decimate")]
NSString DownsamplingMode_Decimate { get; }
[Mac (10,8), iOS (9,0)]
[Field ("kVTDownsamplingMode_Average")]
NSString DownsamplingMode_Average { get; }
// DestinationColorPrimaries
[iOS (10,0)]
[Mac (10,8)]
[Field ("kVTPixelTransferPropertyKey_DestinationColorPrimaries")]
NSString DestinationColorPrimaries { get; }
// DestinationColorPrimaries
[iOS (10,0)]
[Mac (10,8)]
[Field ("kVTPixelTransferPropertyKey_DestinationTransferFunction")]
NSString DestinationTransferFunction { get; }
// DestinationICCProfile
[iOS (10,0)]
[Mac (10,8)]
[Field ("kVTPixelTransferPropertyKey_DestinationICCProfile")]
NSString DestinationICCProfile { get; }
// DestinationYCbCrMatrix
[Mac (10,8), iOS (9,0)]
[Field ("kVTPixelTransferPropertyKey_DestinationYCbCrMatrix")]
NSString DestinationYCbCrMatrix { get; }
}
}