diff --git a/src/AVFoundation/AVTypes.cs b/src/AVFoundation/AVTypes.cs index b94803060f63..913fdce8b52b 100644 --- a/src/AVFoundation/AVTypes.cs +++ b/src/AVFoundation/AVTypes.cs @@ -573,6 +573,15 @@ public bool HasUniformFormatDescriptions { [MarshalAs (UnmanagedType.I1)] public bool HasUniformFormatDescriptions; + + internal AVSampleCursorChunkInfo_Blittable ToBlittable () + { + var rv = new AVSampleCursorChunkInfo_Blittable (); + rv.HasUniformSampleSizes = HasUniformSampleSizes; + rv.HasUniformSampleDurations = HasUniformSampleDurations; + rv.HasUniformFormatDescriptions = HasUniformFormatDescriptions; + return rv; + } #endif } diff --git a/src/Foundation/NSObject.mac.cs b/src/Foundation/NSObject.mac.cs index 55723c530c91..937abf4a0837 100644 --- a/src/Foundation/NSObject.mac.cs +++ b/src/Foundation/NSObject.mac.cs @@ -108,6 +108,7 @@ public partial class NSObject { static IntPtr sw = Dlfcn.dlopen (Constants.SharedWithYouLibrary, 1); static IntPtr swc = Dlfcn.dlopen (Constants.SharedWithYouCoreLibrary, 1); static IntPtr th = Dlfcn.dlopen (Constants.ThreadNetworkLibrary, 1); + static IntPtr mx = Dlfcn.dlopen (Constants.MediaExtensionLibrary, 1); static IntPtr ni = Dlfcn.dlopen (Constants.NearbyInteractionLibrary, 1); static IntPtr sm = Dlfcn.dlopen (Constants.ServiceManagementLibrary, 1); static IntPtr sa = Dlfcn.dlopen (Constants.SafetyKitLibrary, 1); diff --git a/src/MediaExtension/MEByteSource.cs b/src/MediaExtension/MEByteSource.cs new file mode 100644 index 000000000000..7db378b6fbc1 --- /dev/null +++ b/src/MediaExtension/MEByteSource.cs @@ -0,0 +1,77 @@ +#if NET +#if MONOMAC +using System; + +using Foundation; +using ObjCRuntime; + +namespace MediaExtension { + public partial class MEByteSource { + /// Read data asynchronously into a byte array. + /// The offset (relative to the start of the ifle) where to start reading. + /// The byte array to write the data into. + /// The delegate which is called when the read operation has completed. + /// This overload will try to fill the byte array with data. + public void ReadData (long offset, byte[] data, MEByteSourceReadBytesCallback completionHandler) + { + ReadData ((nuint) data.Length, offset, data, completionHandler); + } + + /// Read data asynchronously into a byte array. + /// The number of bytes to read. + /// The offset (relative to the start of the ifle) where to start reading. + /// The byte array to write the data into. + /// The delegate which is called when the read operation has completed. + public void ReadData (nuint length, long offset, byte[] data, MEByteSourceReadBytesCallback completionHandler) + { + if (data is null) + ThrowHelper.ThrowArgumentNullException (nameof (data)); + + if (length > (nuint) data.Length) + ThrowHelper.ThrowArgumentOutOfRangeException (nameof (length), length, $"length cannot be higher than the length of the data array."); + + unsafe { + fixed (byte* dataPtr = data) { + ReadData (length, offset, dataPtr, completionHandler); + } + } + } + + /// Read data synchronously into a byte array. + /// The offset (relative to the start of the ifle) where to start reading. + /// The byte array to write the data into. + /// Upon return, will contain the number of read bytes. + /// Null if an error occurred, otherwise an instance with information about the error. The error will be if the end was reached. + /// True if successful, false otherwise. + /// This overload will try to fill the byte array with data. + public bool ReadData (long offset, byte[] data, out nuint bytesRead, out NSError? error) + { + return ReadData ((nuint) data.Length, offset, data, out bytesRead, out error); + } + + /// Read data synchronously into a byte array. + /// The number of bytes to read. + /// The offset (relative to the start of the ifle) where to start reading. + /// The byte array to write the data into. + /// Upon return, will contain the number of read bytes. + /// Null if an error occurred, otherwise an instance with information about the error. The error will be if the end was reached. + /// True if successful, false otherwise. + public bool ReadData (nuint length, long offset, byte[] data, out nuint bytesRead, out NSError? error) + { + if (data is null) + ThrowHelper.ThrowArgumentNullException (nameof (data)); + + if (length > (nuint) data.Length) + ThrowHelper.ThrowArgumentOutOfRangeException (nameof (length), length, $"length cannot be higher than the length of the data array."); + + unsafe { + fixed (byte* dataPtr = data) { + return ReadData (length, offset, dataPtr, out bytesRead, out error); + } + } + } + + } +} +#endif // MONOMAC +#endif // NET diff --git a/src/MediaExtension/MERawProcessingBooleanParameter.cs b/src/MediaExtension/MERawProcessingBooleanParameter.cs new file mode 100644 index 000000000000..b2e414575f52 --- /dev/null +++ b/src/MediaExtension/MERawProcessingBooleanParameter.cs @@ -0,0 +1,42 @@ +#if NET +#if MONOMAC +using System; + +using Foundation; +using ObjCRuntime; + +namespace MediaExtension { + /// This enum is used to select how to initialize a new instance of a . + public enum MERawProcessingBooleanParameterInitializationOption { + /// The neutralOrCameraValue parameter passed to the constructor is a neutral value. + NeutralValue, + /// The neutralOrCameraValue parameter passed to the constructor is a camera value. + CameraValue, + } + + public partial class MERawProcessingBooleanParameter { + /// Create a new instance. + /// The name of the parameter. + /// The key value for the parameter. + /// The description for the parameter. + /// The parameter's initial value. + /// The parameter's neutral or camera value. + /// Specifies whether is a neutral or a camera value. + public MERawProcessingBooleanParameter (string name, string key, string description, bool initialValue, bool neutralOrCameraValue, MERawProcessingBooleanParameterInitializationOption option) + : base (NSObjectFlag.Empty) + { + switch (option) { + case MERawProcessingBooleanParameterInitializationOption.NeutralValue: + InitializeHandle (_InitWithNeutralValue (name, key, description, initialValue, neutralOrCameraValue)); + break; + case MERawProcessingBooleanParameterInitializationOption.CameraValue: + InitializeHandle (_InitWithCameraValue (name, key, description, initialValue, neutralOrCameraValue)); + break; + default: + throw new ArgumentOutOfRangeException (nameof (option), option, "Invalid enum value."); + } + } + } +} +#endif // MONOMAC +#endif // NET diff --git a/src/MediaExtension/MERawProcessingFloatParameter.cs b/src/MediaExtension/MERawProcessingFloatParameter.cs new file mode 100644 index 000000000000..20a7c020619f --- /dev/null +++ b/src/MediaExtension/MERawProcessingFloatParameter.cs @@ -0,0 +1,44 @@ +#if NET +#if MONOMAC +using System; + +using Foundation; +using ObjCRuntime; + +namespace MediaExtension { + /// This enum is used to select how to initialize a new instance of a . + public enum MERawProcessingFloatParameterInitializationOption { + /// The neutralOrCameraValue parameter passed to the constructor is a neutral value. + NeutralValue, + /// The neutralOrCameraValue parameter passed to the constructor is a camera value. + CameraValue, + } + + public partial class MERawProcessingFloatParameter { + /// Create a new instance. + /// The name of the parameter. + /// The key value for the parameter. + /// The description for the parameter. + /// The parameter's initial value. + /// The parameter's maximum value. + /// The parameter's minimum value. + /// The parameter's neutral or camera value. + /// Specifies whether is a neutral or a camera value. + public MERawProcessingFloatParameter (string name, string key, string description, float initialValue, float maximum, float minimum, float neutralOrCameraValue, MERawProcessingFloatParameterInitializationOption option) + : base (NSObjectFlag.Empty) + { + switch (option) { + case MERawProcessingFloatParameterInitializationOption.NeutralValue: + InitializeHandle (_InitWithNeutralValue (name, key, description, initialValue, maximum, minimum, neutralOrCameraValue)); + break; + case MERawProcessingFloatParameterInitializationOption.CameraValue: + InitializeHandle (_InitWithCameraValue (name, key, description, initialValue, maximum, minimum, neutralOrCameraValue)); + break; + default: + throw new ArgumentOutOfRangeException (nameof (option), option, "Invalid enum value."); + } + } + } +} +#endif // MONOMAC +#endif // NET diff --git a/src/MediaExtension/MERawProcessingIntegerParameter.cs b/src/MediaExtension/MERawProcessingIntegerParameter.cs new file mode 100644 index 000000000000..cc4e5694ade0 --- /dev/null +++ b/src/MediaExtension/MERawProcessingIntegerParameter.cs @@ -0,0 +1,44 @@ +#if NET +#if MONOMAC +using System; + +using Foundation; +using ObjCRuntime; + +namespace MediaExtension { + /// This enum is used to select how to initialize a new instance of a . + public enum MERawProcessingIntegerParameterInitializationOption { + /// The neutralOrCameraValue parameter passed to the constructor is a neutral value. + NeutralValue, + /// The neutralOrCameraValue parameter passed to the constructor is a camera value. + CameraValue, + } + + public partial class MERawProcessingIntegerParameter { + /// Create a new instance. + /// The name of the parameter. + /// The key value for the parameter. + /// The description for the parameter. + /// The parameter's initial value. + /// The parameter's maximum value. + /// The parameter's minimum value. + /// The parameter's neutral or camera value. + /// Specifies whether is a neutral or a camera value. + public MERawProcessingIntegerParameter (string name, string key, string description, nint initialValue, nint maximum, nint minimum, nint neutralOrCameraValue, MERawProcessingIntegerParameterInitializationOption option) + : base (NSObjectFlag.Empty) + { + switch (option) { + case MERawProcessingIntegerParameterInitializationOption.NeutralValue: + InitializeHandle (_InitWithNeutralValue (name, key, description, initialValue, maximum, minimum, neutralOrCameraValue)); + break; + case MERawProcessingIntegerParameterInitializationOption.CameraValue: + InitializeHandle (_InitWithCameraValue (name, key, description, initialValue, maximum, minimum, neutralOrCameraValue)); + break; + default: + throw new ArgumentOutOfRangeException (nameof (option), option, "Invalid enum value."); + } + } + } +} +#endif // MONOMAC +#endif // NET diff --git a/src/MediaExtension/MERawProcessingListParameter.cs b/src/MediaExtension/MERawProcessingListParameter.cs new file mode 100644 index 000000000000..35aaba9a5026 --- /dev/null +++ b/src/MediaExtension/MERawProcessingListParameter.cs @@ -0,0 +1,43 @@ +#if NET +#if MONOMAC +using System; + +using Foundation; +using ObjCRuntime; + +namespace MediaExtension { + /// This enum is used to select how to initialize a new instance of a . + public enum MERawProcessingListParameterInitializationOption { + /// The neutralOrCameraValue parameter passed to the constructor is a neutral value. + NeutralValue, + /// The neutralOrCameraValue parameter passed to the constructor is a camera value. + CameraValue, + } + + public partial class MERawProcessingListParameter { + /// Create a new instance. + /// The name of the parameter. + /// The key value for the parameter. + /// The description for the parameter. + /// The parameter's list elements value. + /// The parameter's initial value. + /// The parameter's neutral or camera value. + /// Specifies whether is a neutral or a camera value. + public MERawProcessingListParameter (string name, string key, string description, MERawProcessingListElementParameter[] listElements, nint initialValue, nint neutralOrCameraValue, MERawProcessingListParameterInitializationOption option) + : base (NSObjectFlag.Empty) + { + switch (option) { + case MERawProcessingListParameterInitializationOption.NeutralValue: + InitializeHandle (_InitWithNeutralValue (name, key, description, listElements, initialValue, neutralOrCameraValue)); + break; + case MERawProcessingListParameterInitializationOption.CameraValue: + InitializeHandle (_InitWithCameraValue (name, key, description, listElements, initialValue, neutralOrCameraValue)); + break; + default: + throw new ArgumentOutOfRangeException (nameof (option), option, "Invalid enum value."); + } + } + } +} +#endif // MONOMAC +#endif // NET diff --git a/src/MediaExtension/MESampleCursor.cs b/src/MediaExtension/MESampleCursor.cs new file mode 100644 index 000000000000..340ac8de24fb --- /dev/null +++ b/src/MediaExtension/MESampleCursor.cs @@ -0,0 +1,28 @@ +#if NET +#if MONOMAC +using System; + +using AVFoundation; +using Foundation; +using ObjCRuntime; + +namespace MediaExtension { + public partial interface IMESampleCursor { + /// Compute an exact sample location based on data returned from . + /// The estimated sample location returned from . + /// The refinement data returned from . + /// Upon return, the exact location of the sample. + /// Upon return, null if successful, otherwise an instance for the error. + /// True if successful, false otherwise. + public bool RefineSampleLocation (AVSampleCursorStorageRange estimatedSampleLocation, byte [] refinementData, out AVSampleCursorStorageRange refinedLocation, out NSError? error) + { + unsafe { + fixed (byte* refinementDataPtr = refinementData) { + return RefineSampleLocation (estimatedSampleLocation, refinementDataPtr, (nuint) refinementData.Length, out refinedLocation, out error); + } + } + } + } +} +#endif // MONOMAC +#endif // NET diff --git a/src/build/generator-frameworks.g.cs b/src/build/generator-frameworks.g.cs index e76849d87158..f16ffd5bee06 100644 --- a/src/build/generator-frameworks.g.cs +++ b/src/build/generator-frameworks.g.cs @@ -225,6 +225,7 @@ partial class Frameworks { "MailKit", "MapKit", "MediaAccessibility", + "MediaExtension", "MediaLibrary", "MediaPlayer", "MediaToolbox", @@ -659,6 +660,7 @@ partial class Frameworks { bool? _MailKit; bool? _MapKit; bool? _MediaAccessibility; + bool? _MediaExtension; bool? _MediaLibrary; bool? _MediaPlayer; bool? _MediaSetup; @@ -831,6 +833,7 @@ partial class Frameworks { public bool HaveMailKit { get { if (!_MailKit.HasValue) _MailKit = GetValue ("MailKit"); return _MailKit.Value; } } public bool HaveMapKit { get { if (!_MapKit.HasValue) _MapKit = GetValue ("MapKit"); return _MapKit.Value; } } public bool HaveMediaAccessibility { get { if (!_MediaAccessibility.HasValue) _MediaAccessibility = GetValue ("MediaAccessibility"); return _MediaAccessibility.Value; } } + public bool HaveMediaExtension { get { if (!_MediaExtension.HasValue) _MediaExtension = GetValue ("MediaExtension"); return _MediaExtension.Value; } } public bool HaveMediaLibrary { get { if (!_MediaLibrary.HasValue) _MediaLibrary = GetValue ("MediaLibrary"); return _MediaLibrary.Value; } } public bool HaveMediaPlayer { get { if (!_MediaPlayer.HasValue) _MediaPlayer = GetValue ("MediaPlayer"); return _MediaPlayer.Value; } } public bool HaveMediaSetup { get { if (!_MediaSetup.HasValue) _MediaSetup = GetValue ("MediaSetup"); return _MediaSetup.Value; } } diff --git a/src/frameworks.sources b/src/frameworks.sources index 7e3245a1adcd..ecb2fef5f769 100644 --- a/src/frameworks.sources +++ b/src/frameworks.sources @@ -1183,6 +1183,16 @@ MEDIAACCESSIBILITY_SOURCES = \ MediaAccessibility/MediaAccessibility.cs \ MediaAccessibility/MAImageCaptioning.cs \ +# MediaExtesion + +MEDIAEXTENSION_SOURCES = \ + MediaExtension/MEByteSource.cs \ + MediaExtension/MERawProcessingBooleanParameter.cs \ + MediaExtension/MERawProcessingFloatParameter.cs \ + MediaExtension/MERawProcessingIntegerParameter.cs \ + MediaExtension/MERawProcessingListParameter.cs \ + MediaExtension/MESampleCursor.cs \ + # MediaPlayer MEDIAPLAYER_API_SOURCES = \ @@ -2173,6 +2183,7 @@ MACOS_FRAMEWORKS = \ MailKit \ MapKit \ MediaAccessibility \ + MediaExtension \ MediaLibrary \ MediaPlayer \ MediaToolbox \ diff --git a/src/mediaextension.cs b/src/mediaextension.cs new file mode 100644 index 000000000000..2929a3a370c6 --- /dev/null +++ b/src/mediaextension.cs @@ -0,0 +1,811 @@ +#if NET + +using System; + +using AVFoundation; +using CoreGraphics; +using CoreMedia; +using CoreVideo; +using Foundation; +using ObjCRuntime; +using UniformTypeIdentifiers; + +namespace MediaExtension { + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Native] + [ErrorDomain ("MediaExtensionErrorDomain")] + public enum MEError : long + { + UnsupportedFeature = -19320, + AllocationFailure = -19321, + InvalidParameter = -19322, + ParsingFailure = -19323, + InternalFailure = -19324, + PropertyNotSupported = -19325, + NoSuchEdit = -19326, + NoSamples = -19327, + LocationNotAvailable = -19328, + EndOfStream = -19329, + PermissionDenied = -19330, + ReferenceMissing = -19331, + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Native] + public enum MEFileInfoFragmentsStatus : long + { + CouldNotContainFragments = 0, + ContainsFragments = 1, + CouldContainButDoesNotContainFragments = 2, + } + + [Flags, NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Native] + public enum MEFormatReaderParseAdditionalFragmentsStatus : ulong + { + SizeIncreased = 1uL << 0, + FragmentAdded = 1uL << 1, + FragmentsComplete = 1uL << 2, + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject))] + [DisableDefaultCtor] + interface MEFormatReaderInstantiationOptions : NSCopying + { + [Export ("allowIncrementalFragmentParsing")] + bool AllowIncrementalFragmentParsing { get; } + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Protocol (BackwardsCompatibleCodeGeneration = false)] + interface MEFormatReaderExtension + { + [Abstract] + [Export ("formatReaderWithByteSource:options:error:")] + [return: NullAllowed] + IMEFormatReader CreateFormatReader (MEByteSource primaryByteSource, [NullAllowed] MEFormatReaderInstantiationOptions options, [NullAllowed] out NSError error); + } + + delegate void MEFormatReaderLoadFileInfoCallback ([NullAllowed] MEFileInfo fileInfo, [NullAllowed] NSError error); + delegate void MEFormatReaderLoadMetadataCallback ([NullAllowed] AVMetadataItem[] metadata, [NullAllowed] NSError error); + delegate void MEFormatReaderLoadTrackReadersCallback ([NullAllowed] IMETrackReader[] trackReaders, [NullAllowed] NSError error); + delegate void MEFormatReaderParseAdditionalFragmentsCallback ([NullAllowed] MEFormatReaderParseAdditionalFragmentsStatus fragmentStatus, [NullAllowed] NSError error); + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Protocol (BackwardsCompatibleCodeGeneration = false)] + interface MEFormatReader + { + [Abstract] + [Export ("loadFileInfoWithCompletionHandler:")] + void LoadFileInfo (MEFormatReaderLoadFileInfoCallback completionHandler); + + [Abstract] + [Export ("loadMetadataWithCompletionHandler:")] + void LoadMetadata (MEFormatReaderLoadMetadataCallback completionHandler); + + [Abstract] + [Export ("loadTrackReadersWithCompletionHandler:")] + void LoadTrackReaders (MEFormatReaderLoadTrackReadersCallback completionHandler); + + [Export ("parseAdditionalFragmentsWithCompletionHandler:")] + void ParseAdditionalFragments (MEFormatReaderParseAdditionalFragmentsCallback completionHandler); + } + + interface IMEFormatReader { } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject))] + interface MEFileInfo : NSCopying + { + [Export ("duration", ArgumentSemantic.Assign)] + CMTime Duration { get; set; } + + [Export ("fragmentsStatus", ArgumentSemantic.Assign)] + MEFileInfoFragmentsStatus FragmentsStatus { get; set; } + } + + delegate void METrackReaderLoadTrackInfoCallback ([NullAllowed] METrackInfo trackInfo, [NullAllowed] NSError error); + delegate void METrackReaderGenerateSampleCursorCallback ([NullAllowed] IMESampleCursor trackInfo, [NullAllowed] NSError error); + delegate void METrackReaderLoadUneditedDurationCallback ([NullAllowed] CMTime uneditedDuration, [NullAllowed] NSError error); + delegate void METrackReaderLoadTotalSampleDataLengthCallback (long totalSampleDataLength, [NullAllowed] NSError error); + delegate void METrackReaderLoadEstimatedDataRateCallback (float estimatedDataRate, [NullAllowed] NSError error); + delegate void METrackReaderLoadMetadataCallback ([NullAllowed] AVMetadataItem[] metadata, [NullAllowed] NSError error); + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Protocol (BackwardsCompatibleCodeGeneration = false)] + interface METrackReader + { + [Abstract] + [Export ("loadTrackInfoWithCompletionHandler:")] + void LoadTrackInfo (METrackReaderLoadTrackInfoCallback completionHandler); + + [Abstract] + [Export ("generateSampleCursorAtPresentationTimeStamp:completionHandler:")] + void GenerateSampleCursorAtPresentationTimeStamp (CMTime presentationTimeStamp, METrackReaderGenerateSampleCursorCallback completionHandler); + + [Abstract] + [Export ("generateSampleCursorAtFirstSampleInDecodeOrderWithCompletionHandler:")] + void GenerateSampleCursorAtFirstSampleInDecodeOrder (METrackReaderGenerateSampleCursorCallback completionHandler); + + [Abstract] + [Export ("generateSampleCursorAtLastSampleInDecodeOrderWithCompletionHandler:")] + void GenerateSampleCursorAtLastSampleInDecodeOrder (METrackReaderGenerateSampleCursorCallback completionHandler); + + [Export ("loadUneditedDurationWithCompletionHandler:")] + void LoadUneditedDuration (METrackReaderLoadUneditedDurationCallback completionHandler); + + [Export ("loadTotalSampleDataLengthWithCompletionHandler:")] + void LoadTotalSampleDataLength (METrackReaderLoadTotalSampleDataLengthCallback completionHandler); + + [Export ("loadEstimatedDataRateWithCompletionHandler:")] + void LoadEstimatedDataRate (METrackReaderLoadEstimatedDataRateCallback completionHandler); + + [Export ("loadMetadataWithCompletionHandler:")] + void LoadMetadata (METrackReaderLoadMetadataCallback completionHandler); + } + + interface IMETrackReader { } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject))] + [DisableDefaultCtor] + interface METrackInfo : NSCopying + { + [Export ("initWithMediaType:trackID:formatDescriptions:")] + [DesignatedInitializer] + // It's not clear from the documentation which type the format descriptors are, so keep as an array of NSObject for now. + NativeHandle Constructor (CMMediaType mediaType, int trackId, [Params] NSObject[] formatDescriptions); + + [Export ("mediaType")] + CMMediaType MediaType { get; } + + [Export ("trackID")] + int TrackId { get; } + + [Export ("enabled")] + bool Enabled { [Bind ("isEnabled")] get; set; } + + // It's not clear from the documentation which type the format descriptors are, so keep as an array of NSObject for now. + // However, name as 'Weak' to leave the good name open for when we know. + [Export ("formatDescriptions", ArgumentSemantic.Copy)] + NSObject[] WeakFormatDescriptions { get; } + + // Inlined from the OptionalProperties (METrackInfo) category + [Export ("naturalTimescale")] + CMTimeScale NaturalTimescale { get; set; } + + // Inlined from the OptionalProperties (METrackInfo) category + [Export ("trackEdits", ArgumentSemantic.Copy), NullAllowed] + [BindAs (typeof (CMTimeMapping []))] + NSValue[] TrackEdits { get; set; } + + // Inlined from the LanguageTagOptionalProperties (METrackInfo) category + [NullAllowed, Export ("extendedLanguageTag")] + string ExtendedLanguageTag { get; set; } + + // Inlined from the VideoSpecificOptionalProperties (METrackInfo) category + [Export ("naturalSize", ArgumentSemantic.Assign)] + CGSize NaturalSize { get; set; } + + // Inlined from the VideoSpecificOptionalProperties (METrackInfo) category + [Export ("preferredTransform", ArgumentSemantic.Assign)] + CGAffineTransform PreferredTransform { get; set; } + + // Inlined from the VideoSpecificOptionalProperties (METrackInfo) category + [Export ("nominalFrameRate")] + float NominalFrameRate { get; set; } + + // Inlined from the VideoSpecificOptionalProperties (METrackInfo) category + [Export ("requiresFrameReordering")] + bool RequiresFrameReordering { get; set; } + } + + delegate void MESampleCursorStepInOrderCallback (long stepCount, [NullAllowed] NSError error); + delegate void MESampleCursorStepByTimeCallback (CMTime actualDecodeTime, bool positionWasPinned, [NullAllowed] NSError error); + delegate void MESampleCursorLoadSampleBufferCallback ([NullAllowed] CMSampleBuffer newSampleBuffer, [NullAllowed] NSError error); + delegate void MESampleCursorLoadPostDecodeProcessingMetadataCallback ([NullAllowed] NSDictionary postDecodeProcessingMetadata, [NullAllowed] NSError error); + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Protocol (BackwardsCompatibleCodeGeneration = false)] + interface MESampleCursor : INSCopying + { + [Abstract] + [Export ("presentationTimeStamp")] + CMTime PresentationTimeStamp { get; } + + [Abstract] + [Export ("decodeTimeStamp")] + CMTime DecodeTimeStamp { get; } + + [Abstract] + [Export ("currentSampleDuration")] + CMTime CurrentSampleDuration { get; } + + [Abstract] + [NullAllowed, Export ("currentSampleFormatDescription")] + CMFormatDescription CurrentSampleFormatDescription { get; } + + [Abstract] + [Export ("stepInDecodeOrderByCount:completionHandler:")] + void StepInDecodeOrder (long stepCount, MESampleCursorStepInOrderCallback completionHandler); + + [Abstract] + [Export ("stepInPresentationOrderByCount:completionHandler:")] + void StepInPresentationOrder (long stepCount, MESampleCursorStepInOrderCallback completionHandler); + + [Abstract] + [Export ("stepByDecodeTime:completionHandler:")] + void StepByDecodeTime (CMTime deltaDecodeTime, MESampleCursorStepByTimeCallback completionHandler); + + [Abstract] + [Export ("stepByPresentationTime:completionHandler:")] + void StepByPresentationTime (CMTime deltaPresentationTime, MESampleCursorStepByTimeCallback completionHandler); + + [Export ("syncInfo")] +#if XAMCORE_5_0 + AVSampleCursorChunkInfo SyncInfo { get; } +#else + [Internal] + AVSampleCursorChunkInfo_Blittable SyncInfo_Blittable { get; } + + [Wrap ("SyncInfo_Blittable.ToAVSampleCursorChunkInfo ()", IsVirtual = true)] + AVSampleCursorChunkInfo SyncInfo { get; } +#endif + + [Export ("dependencyInfo")] +#if XAMCORE_5_0 + AVSampleCursorDependencyInfo DependencyInfo { get; } +#else + [Internal] + AVSampleCursorDependencyInfo_Blittable DependencyInfo_Blittable { get; } + + [Wrap ("DependencyInfo_Blittable.ToAVSampleCursorDependencyInfo ()", IsVirtual = true)] + AVSampleCursorDependencyInfo DependencyInfo { get; } +#endif + [Export ("hevcDependencyInfo", ArgumentSemantic.Copy)] + MEHevcDependencyInfo HevcDependencyInfo { get; } + + [Export ("decodeTimeOfLastSampleReachableByForwardSteppingThatIsAlreadyLoadedByByteSource")] + CMTime DecodeTimeOfLastSampleReachableByForwardSteppingThatIsAlreadyLoadedByByteSource { get; } + + [Export ("samplesWithEarlierDTSsMayHaveLaterPTSsThanCursor:")] + bool SamplesWithEarlierDtssMayHaveLaterPtssThanCursor (IMESampleCursor cursor); + + [Export ("samplesWithLaterDTSsMayHaveEarlierPTSsThanCursor:")] + bool SamplesWithLaterDtssMayHaveEarlierPtssThanCursor (IMESampleCursor cursor); + + [Export ("chunkDetailsReturningError:")] + [return: NullAllowed] + MESampleCursorChunk GetChunkDetails ([NullAllowed] out NSError error); + + [Export ("sampleLocationReturningError:")] + [return: NullAllowed] + MESampleLocation GetSampleLocation ([NullAllowed] out NSError error); + + [Export ("estimatedSampleLocationReturningError:")] + [return: NullAllowed] + MEEstimatedSampleLocation GetEstimatedSampleLocation ([NullAllowed] out NSError error); + + [Export ("refineSampleLocation:refinementData:refinementDataLength:refinedLocation:error:")] + unsafe bool RefineSampleLocation (AVSampleCursorStorageRange estimatedSampleLocation, byte* refinementData, nuint refinementDataLength, out AVSampleCursorStorageRange refinedLocation, [NullAllowed] out NSError error); + + [Export ("loadSampleBufferContainingSamplesToEndCursor:completionHandler:")] + void LoadSampleBufferContainingSamples ([NullAllowed] IMESampleCursor endSampleCursor, MESampleCursorLoadSampleBufferCallback completionHandler); + + [Export ("loadPostDecodeProcessingMetadataWithCompletionHandler:")] + void LoadPostDecodeProcessingMetadata (MESampleCursorLoadPostDecodeProcessingMetadataCallback completionHandler); + } + + interface IMESampleCursor { } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject))] + [DisableDefaultCtor] + interface MESampleCursorChunk : NSCopying + { + [Export ("initWithByteSource:chunkStorageRange:chunkInfo:sampleIndexWithinChunk:")] + [DesignatedInitializer] +#if XAMCORE_5_0 + NativeHandle Constructor (MEByteSource byteSource, AVSampleCursorStorageRange chunkStorageRange, AVSampleCursorChunkInfo chunkInfo, nint sampleIndexWithinChunk); +#else + [Internal] + NativeHandle Constructor (MEByteSource byteSource, AVSampleCursorStorageRange chunkStorageRange, AVSampleCursorChunkInfo_Blittable chunkInfo, nint sampleIndexWithinChunk); + + [Wrap ("this (byteSource, chunkStorageRange, chunkInfo.ToBlittable (), sampleIndexWithinChunk)")] + NativeHandle Constructor (MEByteSource byteSource, AVSampleCursorStorageRange chunkStorageRange, AVSampleCursorChunkInfo chunkInfo, nint sampleIndexWithinChunk); +#endif + + + [Export ("byteSource", ArgumentSemantic.Retain)] + MEByteSource ByteSource { get; } + + [Export ("chunkStorageRange")] + AVSampleCursorStorageRange ChunkStorageRange { get; } + + [Export ("chunkInfo")] +#if XAMCORE_5_0 + AVSampleCursorChunkInfo ChunkInfo { get; } +#else + [Internal] + AVSampleCursorChunkInfo_Blittable ChunkInfo_Blittable { get; } + + [Wrap ("ChunkInfo_Blittable.ToAVSampleCursorChunkInfo ()", IsVirtual = true)] + AVSampleCursorChunkInfo ChunkInfo { get; } +#endif + + [Export ("sampleIndexWithinChunk")] + nint SampleIndexWithinChunk { get; } + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject))] + [DisableDefaultCtor] + interface MESampleLocation : NSCopying + { + [Export ("initWithByteSource:sampleLocation:")] + [DesignatedInitializer] + NativeHandle Constructor (MEByteSource byteSource, AVSampleCursorStorageRange sampleLocation); + + [Export ("sampleLocation")] + AVSampleCursorStorageRange SampleLocation { get; } + + [Export ("byteSource", ArgumentSemantic.Retain)] + MEByteSource ByteSource { get; } + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject))] + [DisableDefaultCtor] + interface MEEstimatedSampleLocation : INSCopying + { + [Export ("initWithByteSource:estimatedSampleLocation:refinementDataLocation:")] + [DesignatedInitializer] + NativeHandle Constructor (MEByteSource byteSource, AVSampleCursorStorageRange estimatedSampleLocation, AVSampleCursorStorageRange refinementDataLocation); + + [Export ("estimatedSampleLocation")] + AVSampleCursorStorageRange EstimatedSampleLocation { get; } + + [Export ("refinementDataLocation")] + AVSampleCursorStorageRange RefinementDataLocation { get; } + + [Export ("byteSource", ArgumentSemantic.Retain)] + MEByteSource ByteSource { get; } + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject), Name = "MEHEVCDependencyInfo")] + interface MEHevcDependencyInfo : INSCopying + { + [Export ("temporalSubLayerAccess")] + bool TemporalSubLayerAccess { [Bind ("hasTemporalSubLayerAccess")] get; set; } + + [Export ("stepwiseTemporalSubLayerAccess")] + bool StepwiseTemporalSubLayerAccess { [Bind ("hasStepwiseTemporalSubLayerAccess")] get; set; } + + [Export ("syncSampleNALUnitType")] + short SyncSampleNALUnitType { get; set; } + + // Inlined from the HEVCTemporalLevelInfo (MEHEVCDependencyInfo) category + [Export ("temporalLevel")] + short TemporalLevel { get; set; } + + // Inlined from the HEVCTemporalLevelInfo (MEHEVCDependencyInfo) category + [Export ("profileSpace")] + short ProfileSpace { get; set; } + + // Inlined from the HEVCTemporalLevelInfo (MEHEVCDependencyInfo) category + [Export ("tierFlag")] + short TierFlag { get; set; } + + // Inlined from the HEVCTemporalLevelInfo (MEHEVCDependencyInfo) category + [Export ("profileIndex")] + short ProfileIndex { get; set; } + + // Inlined from the HEVCTemporalLevelInfo (MEHEVCDependencyInfo) category + [NullAllowed, Export ("profileCompatibilityFlags", ArgumentSemantic.Copy)] + NSData ProfileCompatibilityFlags { get; set; } + + // Inlined from the HEVCTemporalLevelInfo (MEHEVCDependencyInfo) category + [NullAllowed, Export ("constraintIndicatorFlags", ArgumentSemantic.Copy)] + NSData ConstraintIndicatorFlags { get; set; } + + // Inlined from the HEVCTemporalLevelInfo (MEHEVCDependencyInfo) category + [Export ("levelIndex")] + short LevelIndex { get; set; } + } + + delegate void MEByteSourceReadBytesCallback (nuint bytesRead, [NullAllowed] NSError error); + delegate void MEByteSourceReadDataCallback ([NullAllowed] NSData data, [NullAllowed] NSError error); + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface MEByteSource + { + [Export ("fileName")] + string FileName { get; } + + [NullAllowed, Export ("contentType")] + UTType ContentType { get; } + + [Export ("fileLength")] + long FileLength { get; } + + [Export ("relatedFileNamesInSameDirectory")] + string[] RelatedFileNamesInSameDirectory { get; } + + [Export ("readDataOfLength:fromOffset:toDestination:completionHandler:")] + unsafe void ReadData (nuint length, long offset, byte* dest, MEByteSourceReadBytesCallback completionHandler); + + [Export ("readDataOfLength:fromOffset:completionHandler:")] + void ReadData (nuint length, long offset, MEByteSourceReadDataCallback completionHandler); + + [Export ("readDataOfLength:fromOffset:toDestination:bytesRead:error:")] + unsafe bool ReadData (nuint length, long offset, byte* dest, out nuint bytesRead, [NullAllowed] out NSError error); + + [Export ("availableLengthAtOffset:")] + long GetAvailableLength (long offset); + + [Export ("byteSourceForRelatedFileName:error:")] + [return: NullAllowed] + MEByteSource GetByteSource (string relatedFileName, [NullAllowed] out NSError error); + } + + [Flags] + [NoWatch, NoTV, NoiOS, Mac (15, 0), NoMacCatalyst] + [Native] + public enum MEDecodeFrameStatus : ulong + { + NoStatus = 0, + FrameDropped = 1uL << 0, + } + + delegate void MEVideoDecoderDecodeFrameCallback ([NullAllowed] CVImageBuffer imageBuffer, MEDecodeFrameStatus decodeStatus, [NullAllowed] NSError error); + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Protocol (BackwardsCompatibleCodeGeneration = false)] + interface MEVideoDecoder + { + [Export ("producesRAWOutput")] + bool ProducesRawOutput { get; } + + [Export ("contentHasInterframeDependencies")] + bool ContentHasInterframeDependencies { get; } + + [Export ("recommendedThreadCount")] + nint RecommendedThreadCount { get; set; } + + [Export ("actualThreadCount")] + nint ActualThreadCount { get; } + + // Can't use BindAs in a protocol. We could bind it strongly in manual code, + // but this is a protocol developers are supposed to provide an implementation + // of (and not call themselves), in which case the manual code would be + // useless. Thus there's no strongly typed binding for this property. + [Export ("supportedPixelFormatsOrderedByQuality")] + NSNumber[] SupportedPixelFormatsOrderedByQuality { get; } + + [Export ("reducedResolution", ArgumentSemantic.Assign)] + CGSize ReducedResolution { get; set; } + + // Can't use BindAs in a protocol. We could bind it strongly in manual code, + // but this is a protocol developers are supposed to provide an implementation + // of (and not call themselves), in which case the manual code would be + // useless. Thus there's no strongly typed binding for this property. + [Export ("pixelFormatsWithReducedResolutionDecodeSupport")] + NSNumber[] PixelFormatsWithReducedResolutionDecodeSupport { get; } + + [Abstract] + [Export ("readyForMoreMediaData")] + bool ReadyForMoreMediaData { [Bind ("isReadyForMoreMediaData")] get; } + + [Abstract] + [Export ("decodeFrameFromSampleBuffer:options:completionHandler:")] + void DecodeFrame (CMSampleBuffer sampleBuffer, MEDecodeFrameOptions options, MEVideoDecoderDecodeFrameCallback completionHandler); + + [Export ("canAcceptFormatDescription:")] + bool CanAcceptFormatDescription (CMFormatDescription formatDescription); + } + + interface IMEVideoDecoder {} + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Static] + interface MEVideoDecoderFields { + [Field ("MEVideoDecoderReadyForMoreMediaDataDidChangeNotification")] + NSString ReadyForMoreMediaDataDidChangeNotification { get; } + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Protocol (BackwardsCompatibleCodeGeneration = false, Name = "MERAWProcessorExtension")] + interface MERawProcessorExtension + { + [Abstract] + [Export ("init")] + NativeHandle Constructor (); + + [Abstract] + [Export ("processorWithFormatDescription:extensionPixelBufferManager:error:")] + [return: NullAllowed] + IMERawProcessor CreateProcessor (CMVideoFormatDescription formatDescription, MERawProcessorPixelBufferManager extensionPixelBufferManager, [NullAllowed] out NSError error); + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject), Name = "MERAWProcessorPixelBufferManager")] + interface MERawProcessorPixelBufferManager + { + [Export ("pixelBufferAttributes", ArgumentSemantic.Copy)] + NSDictionary PixelBufferAttributes { get; set; } + + [Export ("createPixelBufferAndReturnError:")] + [return: NullAllowed] + CVPixelBuffer CreatePixelBuffer ([NullAllowed] out NSError error); + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject), Name = "MERAWProcessingParameter")] + interface MERawProcessingParameter + { + [Export ("name")] + string Name { get; } + + [Export ("key")] + string Key { get; } + + [Export ("longDescription")] + string LongDescription { get; } + + [Export ("enabled")] + bool Enabled { get; set; } + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(MERawProcessingParameter), Name = "MERAWProcessingListElementParameter")] + interface MERawProcessingListElementParameter + { + [Export ("initWithName:description:elementID:")] + NativeHandle Constructor (string name, string description, nint elementId); + + [Export ("listElementID")] + nint ListElementId { get; } + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(MERawProcessingParameter), Name = "MERAWProcessingBooleanParameter")] + [DisableDefaultCtor] + interface MERawProcessingBooleanParameter + { + [Export ("initWithName:key:description:initialValue:")] + NativeHandle Constructor (string name, string key, string description, bool initialValue); + + [Internal] + [Export ("initWithName:key:description:initialValue:neutralValue:")] + NativeHandle _InitWithNeutralValue (string name, string key, string description, bool initialValue, bool neutralValue); + + [Internal] + [Export ("initWithName:key:description:initialValue:cameraValue:")] + NativeHandle _InitWithCameraValue (string name, string key, string description, bool initialValue, bool cameraValue); + + [Export ("initWithName:key:description:initialValue:neutralValue:cameraValue:")] + [DesignatedInitializer] + NativeHandle Constructor (string name, string key, string description, bool initialValue, bool neutralValue, bool cameraValue); + + [Export ("initialValue")] + bool InitialValue { get; } + + [Export ("currentValue")] + bool CurrentValue { get; set; } + + [Export ("hasNeutralValue:")] + bool HasNeutralValue ([NullAllowed] out bool neutralValue); + + [Export ("hasCameraValue:")] + bool HasCameraValue ([NullAllowed] out bool cameraValue); + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(MERawProcessingParameter), Name = "MERAWProcessingIntegerParameter")] + [DisableDefaultCtor] + interface MERawProcessingIntegerParameter + { + [Export ("initWithName:key:description:initialValue:maximum:minimum:")] + NativeHandle Constructor (string name, string key, string description, nint initialValue, nint maximum, nint minimum); + + [Internal] + [Export ("initWithName:key:description:initialValue:maximum:minimum:neutralValue:")] + NativeHandle _InitWithNeutralValue (string name, string key, string description, nint initialValue, nint maximum, nint minimum, nint neutralValue); + + [Internal] + [Export ("initWithName:key:description:initialValue:maximum:minimum:cameraValue:")] + NativeHandle _InitWithCameraValue (string name, string key, string description, nint initialValue, nint maximum, nint minimum, nint cameraValue); + + [Export ("initWithName:key:description:initialValue:maximum:minimum:neutralValue:cameraValue:")] + [DesignatedInitializer] + NativeHandle Constructor (string name, string key, string description, nint initialValue, nint maximum, nint minimum, nint neutralValue, nint cameraValue); + + [Export ("maximumValue")] + nint MaximumValue { get; } + + [Export ("minimumValue")] + nint MinimumValue { get; } + + [Export ("initialValue")] + nint InitialValue { get; } + + [Export ("currentValue")] + nint CurrentValue { get; set; } + + [Export ("hasNeutralValue:")] + bool HasNeutralValue ([NullAllowed] out nint neutralValue); + + [Export ("hasCameraValue:")] + bool HasCameraValue ([NullAllowed] out nint cameraValue); + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(MERawProcessingParameter), Name = "MERAWProcessingFloatParameter")] + [DisableDefaultCtor] + interface MERawProcessingFloatParameter + { + [Export ("initWithName:key:description:initialValue:maximum:minimum:")] + NativeHandle Constructor (string name, string key, string description, float initialValue, float maximum, float minimum); + + [Internal] + [Export ("initWithName:key:description:initialValue:maximum:minimum:neutralValue:")] + NativeHandle _InitWithNeutralValue (string name, string key, string description, float initialValue, float maximum, float minimum, float neutralValue); + + [Internal] + [Export ("initWithName:key:description:initialValue:maximum:minimum:cameraValue:")] + NativeHandle _InitWithCameraValue (string name, string key, string description, float initialValue, float maximum, float minimum, float cameraValue); + + [Export ("initWithName:key:description:initialValue:maximum:minimum:neutralValue:cameraValue:")] + [DesignatedInitializer] + NativeHandle Constructor (string name, string key, string description, float initialValue, float maximum, float minimum, float neutralValue, float cameraValue); + + [Export ("maximumValue")] + float MaximumValue { get; } + + [Export ("minimumValue")] + float MinimumValue { get; } + + [Export ("initialValue")] + float InitialValue { get; } + + [Export ("currentValue")] + float CurrentValue { get; set; } + + [Export ("hasNeutralValue:")] + bool HasNeutralValue ([NullAllowed] out float neutralValue); + + [Export ("hasCameraValue:")] + bool HasCameraValue ([NullAllowed] out float cameraValue); + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(MERawProcessingParameter), Name = "MERAWProcessingListParameter")] + [DisableDefaultCtor] + interface MERawProcessingListParameter + { + [Export ("initWithName:key:description:list:initialValue:")] + NativeHandle Constructor (string name, string key, string description, MERawProcessingListElementParameter[] listElements, nint initialValue); + + [Internal] + [Export ("initWithName:key:description:list:initialValue:neutralValue:")] + NativeHandle _InitWithNeutralValue (string name, string key, string description, MERawProcessingListElementParameter[] listElements, nint initialValue, nint neutralValue); + + [Internal] + [Export ("initWithName:key:description:list:initialValue:cameraValue:")] + NativeHandle _InitWithCameraValue (string name, string key, string description, MERawProcessingListElementParameter[] listElements, nint initialValue, nint cameraValue); + + [Export ("initWithName:key:description:list:initialValue:neutralValue:cameraValue:")] + [DesignatedInitializer] + NativeHandle Constructor (string name, string key, string description, MERawProcessingListElementParameter[] listElements, nint initialValue, nint neutralValue, nint cameraValue); + + [Export ("listElements")] + MERawProcessingListElementParameter[] ListElements { get; } + + [Export ("initialValue")] + nint InitialValue { get; } + + [Export ("currentValue")] + nint CurrentValue { get; set; } + + [Export ("hasNeutralValue:")] + bool HasNeutralValue ([NullAllowed] out nint neutralValue); + + [Export ("hasCameraValue:")] + bool HasCameraValue ([NullAllowed] out nint cameraValue); + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(MERawProcessingParameter), Name = "MERAWProcessingSubGroupParameter")] + [DisableDefaultCtor] + interface MERawProcessingSubGroupParameter + { + [Export ("initWithName:description:parameters:")] + NativeHandle Constructor (string name, string description, MERawProcessingParameter[] parameters); + + [Export ("subGroupParameters")] + MERawProcessingParameter[] SubGroupParameters { get; } + } + + delegate void MERawProcessorProcessFrameCallback ([NullAllowed] CVPixelBuffer pixelBuffer, [NullAllowed] NSError error); + + [NoWatch, NoTV, NoiOS, Mac (15,0), MacCatalyst (18, 0)] + [Protocol (BackwardsCompatibleCodeGeneration = false, Name = "MERAWProcessor")] + interface MERawProcessor + { + [Export ("metalDeviceRegistryID")] + ulong MetalDeviceRegistryId { get; set; } + + [Export ("outputColorAttachments")] + NSDictionary OutputColorAttachments { get; } + + [Abstract] + [Export ("processingParameters")] + MERawProcessingParameter[] ProcessingParameters { get; } + + [Abstract] + [Export ("readyForMoreMediaData")] + bool ReadyForMoreMediaData { [Bind ("isReadyForMoreMediaData")] get; } + + [Abstract] + [Export ("processFrameFromImageBuffer:completionHandler:")] + void ProcessFrame (CVPixelBuffer inputFrame, MERawProcessorProcessFrameCallback completionHandler); + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), MacCatalyst (18, 0)] + [Static] + interface MERawProcessorFields + { + [Field ("MERAWProcessorValuesDidChangeNotification")] + NSString ValuesDidChangeNotification { get; } + + [Field ("MERAWProcessorReadyForMoreMediaDataDidChangeNotification")] + NSString ReadyForMoreMediaDataDidChangeNotification { get; } + } + + interface IMERawProcessor {} + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [Protocol (BackwardsCompatibleCodeGeneration = false)] + interface MEVideoDecoderExtension + { + [Abstract] + [Export ("init")] + NativeHandle Constructor (); + + [Abstract] + [Export ("videoDecoderWithCodecType:videoFormatDescription:videoDecoderSpecifications:extensionDecoderPixelBufferManager:error:")] + [return: NullAllowed] + IMEVideoDecoder CreateVideoDecoder (CMVideoCodecType codecType, CMVideoFormatDescription videoFormatDescription, NSDictionary videoDecoderSpecifications, MEVideoDecoderPixelBufferManager extensionDecoderPixelBufferManager, [NullAllowed] out NSError error); + } + + [NoWatch, NoTV, NoiOS, Mac (15,0), NoMacCatalyst] + [BaseType (typeof(NSObject))] + interface MEVideoDecoderPixelBufferManager + { + [Export ("pixelBufferAttributes", ArgumentSemantic.Copy)] + NSDictionary PixelBufferAttributes { get; set; } + + [Export ("createPixelBufferAndReturnError:")] + [return: NullAllowed] + CVPixelBuffer CreatePixelBuffer ([NullAllowed] out NSError error); + + [Export ("registerCustomPixelFormat:")] + void RegisterCustomPixelFormat (NSDictionary customPixelFormat); + } + + [NoWatch, NoTV, NoiOS, Mac (15, 0), NoMacCatalyst] + [BaseType (typeof(NSObject))] + interface MEDecodeFrameOptions + { + [Export ("doNotOutputFrame")] + bool DoNotOutputFrame { get; set; } + + [Export ("realTimePlayback")] + bool RealTimePlayback { get; set; } + } +} +#endif // NET diff --git a/src/rsp/dotnet/macos-defines-dotnet.rsp b/src/rsp/dotnet/macos-defines-dotnet.rsp index fba4fb35ffc9..eac757368e9c 100644 --- a/src/rsp/dotnet/macos-defines-dotnet.rsp +++ b/src/rsp/dotnet/macos-defines-dotnet.rsp @@ -71,6 +71,7 @@ -d:HAS_MAILKIT -d:HAS_MAPKIT -d:HAS_MEDIAACCESSIBILITY +-d:HAS_MEDIAEXTENSION -d:HAS_MEDIALIBRARY -d:HAS_MEDIAPLAYER -d:HAS_MEDIATOOLBOX diff --git a/src/rsp/macos-defines.rsp b/src/rsp/macos-defines.rsp index 0a7fbd5a7853..87cddefa3110 100644 --- a/src/rsp/macos-defines.rsp +++ b/src/rsp/macos-defines.rsp @@ -73,6 +73,7 @@ -d:HAS_MAILKIT -d:HAS_MAPKIT -d:HAS_MEDIAACCESSIBILITY +-d:HAS_MEDIAEXTENSION -d:HAS_MEDIALIBRARY -d:HAS_MEDIAPLAYER -d:HAS_MEDIATOOLBOX diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index bacb18d01596..2e258d5ec335 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -13846,6 +13846,26 @@ F:MediaAccessibility.MACaptionAppearanceTextEdgeStyle.None F:MediaAccessibility.MACaptionAppearanceTextEdgeStyle.Raised F:MediaAccessibility.MACaptionAppearanceTextEdgeStyle.Undefined F:MediaAccessibility.MACaptionAppearanceTextEdgeStyle.Uniform +F:MediaExtension.MEDecodeFrameStatus.FrameDropped +F:MediaExtension.MEDecodeFrameStatus.NoStatus +F:MediaExtension.MEError.AllocationFailure +F:MediaExtension.MEError.EndOfStream +F:MediaExtension.MEError.InternalFailure +F:MediaExtension.MEError.InvalidParameter +F:MediaExtension.MEError.LocationNotAvailable +F:MediaExtension.MEError.NoSamples +F:MediaExtension.MEError.NoSuchEdit +F:MediaExtension.MEError.ParsingFailure +F:MediaExtension.MEError.PermissionDenied +F:MediaExtension.MEError.PropertyNotSupported +F:MediaExtension.MEError.ReferenceMissing +F:MediaExtension.MEError.UnsupportedFeature +F:MediaExtension.MEFileInfoFragmentsStatus.ContainsFragments +F:MediaExtension.MEFileInfoFragmentsStatus.CouldContainButDoesNotContainFragments +F:MediaExtension.MEFileInfoFragmentsStatus.CouldNotContainFragments +F:MediaExtension.MEFormatReaderParseAdditionalFragmentsStatus.FragmentAdded +F:MediaExtension.MEFormatReaderParseAdditionalFragmentsStatus.FragmentsComplete +F:MediaExtension.MEFormatReaderParseAdditionalFragmentsStatus.SizeIncreased F:MediaLibrary.MLMediaSourceType.Audio F:MediaLibrary.MLMediaSourceType.Image F:MediaLibrary.MLMediaSourceType.Movie @@ -16280,6 +16300,7 @@ F:ObjCRuntime.Constants.LocalAuthenticationLibrary F:ObjCRuntime.Constants.MailKitLibrary F:ObjCRuntime.Constants.MapKitLibrary F:ObjCRuntime.Constants.MediaAccessibilityLibrary +F:ObjCRuntime.Constants.MediaExtensionLibrary F:ObjCRuntime.Constants.MediaLibraryLibrary F:ObjCRuntime.Constants.MediaPlayerLibrary F:ObjCRuntime.Constants.MediaSetupLibrary @@ -40319,6 +40340,73 @@ M:MediaAccessibility.MAMusicHapticsManager.CheckHapticTrackAvailability(System.S M:MediaAccessibility.MAMusicHapticsManager.CheckHapticTrackAvailabilityAsync(System.String) M:MediaAccessibility.MAMusicHapticsManager.RemoveStatusObserver(Foundation.INSCopying) M:MediaAccessibility.MAVideoAccommodations.IsDimFlashingLightsEnabled +M:MediaExtension.IMEFormatReader.LoadFileInfo(MediaExtension.MEFormatReaderLoadFileInfoCallback) +M:MediaExtension.IMEFormatReader.LoadMetadata(MediaExtension.MEFormatReaderLoadMetadataCallback) +M:MediaExtension.IMEFormatReader.LoadTrackReaders(MediaExtension.MEFormatReaderLoadTrackReadersCallback) +M:MediaExtension.IMEFormatReader.ParseAdditionalFragments(MediaExtension.MEFormatReaderParseAdditionalFragmentsCallback) +M:MediaExtension.IMEFormatReaderExtension.CreateFormatReader(MediaExtension.MEByteSource,MediaExtension.MEFormatReaderInstantiationOptions,Foundation.NSError@) +M:MediaExtension.IMERawProcessor.ProcessFrame(CoreVideo.CVPixelBuffer,MediaExtension.MERawProcessorProcessFrameCallback) +M:MediaExtension.IMERawProcessorExtension.CreateInstance``1 +M:MediaExtension.IMERawProcessorExtension.CreateProcessor(CoreMedia.CMVideoFormatDescription,MediaExtension.MERawProcessorPixelBufferManager,Foundation.NSError@) +M:MediaExtension.IMESampleCursor.GetChunkDetails(Foundation.NSError@) +M:MediaExtension.IMESampleCursor.GetEstimatedSampleLocation(Foundation.NSError@) +M:MediaExtension.IMESampleCursor.GetSampleLocation(Foundation.NSError@) +M:MediaExtension.IMESampleCursor.LoadPostDecodeProcessingMetadata(MediaExtension.MESampleCursorLoadPostDecodeProcessingMetadataCallback) +M:MediaExtension.IMESampleCursor.LoadSampleBufferContainingSamples(MediaExtension.IMESampleCursor,MediaExtension.MESampleCursorLoadSampleBufferCallback) +M:MediaExtension.IMESampleCursor.RefineSampleLocation(AVFoundation.AVSampleCursorStorageRange,System.Byte*,System.UIntPtr,AVFoundation.AVSampleCursorStorageRange@,Foundation.NSError@) +M:MediaExtension.IMESampleCursor.SamplesWithEarlierDtssMayHaveLaterPtssThanCursor(MediaExtension.IMESampleCursor) +M:MediaExtension.IMESampleCursor.SamplesWithLaterDtssMayHaveEarlierPtssThanCursor(MediaExtension.IMESampleCursor) +M:MediaExtension.IMESampleCursor.StepByDecodeTime(CoreMedia.CMTime,MediaExtension.MESampleCursorStepByTimeCallback) +M:MediaExtension.IMESampleCursor.StepByPresentationTime(CoreMedia.CMTime,MediaExtension.MESampleCursorStepByTimeCallback) +M:MediaExtension.IMESampleCursor.StepInDecodeOrder(System.Int64,MediaExtension.MESampleCursorStepInOrderCallback) +M:MediaExtension.IMESampleCursor.StepInPresentationOrder(System.Int64,MediaExtension.MESampleCursorStepInOrderCallback) +M:MediaExtension.IMETrackReader.GenerateSampleCursorAtFirstSampleInDecodeOrder(MediaExtension.METrackReaderGenerateSampleCursorCallback) +M:MediaExtension.IMETrackReader.GenerateSampleCursorAtLastSampleInDecodeOrder(MediaExtension.METrackReaderGenerateSampleCursorCallback) +M:MediaExtension.IMETrackReader.GenerateSampleCursorAtPresentationTimeStamp(CoreMedia.CMTime,MediaExtension.METrackReaderGenerateSampleCursorCallback) +M:MediaExtension.IMETrackReader.LoadEstimatedDataRate(MediaExtension.METrackReaderLoadEstimatedDataRateCallback) +M:MediaExtension.IMETrackReader.LoadMetadata(MediaExtension.METrackReaderLoadMetadataCallback) +M:MediaExtension.IMETrackReader.LoadTotalSampleDataLength(MediaExtension.METrackReaderLoadTotalSampleDataLengthCallback) +M:MediaExtension.IMETrackReader.LoadTrackInfo(MediaExtension.METrackReaderLoadTrackInfoCallback) +M:MediaExtension.IMETrackReader.LoadUneditedDuration(MediaExtension.METrackReaderLoadUneditedDurationCallback) +M:MediaExtension.IMEVideoDecoder.CanAcceptFormatDescription(CoreMedia.CMFormatDescription) +M:MediaExtension.IMEVideoDecoder.DecodeFrame(CoreMedia.CMSampleBuffer,MediaExtension.MEDecodeFrameOptions,MediaExtension.MEVideoDecoderDecodeFrameCallback) +M:MediaExtension.IMEVideoDecoderExtension.CreateInstance``1 +M:MediaExtension.IMEVideoDecoderExtension.CreateVideoDecoder(CoreMedia.CMVideoCodecType,CoreMedia.CMVideoFormatDescription,Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject},MediaExtension.MEVideoDecoderPixelBufferManager,Foundation.NSError@) +M:MediaExtension.MEByteSource.GetAvailableLength(System.Int64) +M:MediaExtension.MEByteSource.GetByteSource(System.String,Foundation.NSError@) +M:MediaExtension.MEByteSource.ReadData(System.UIntPtr,System.Int64,MediaExtension.MEByteSourceReadDataCallback) +M:MediaExtension.MEByteSource.ReadData(System.UIntPtr,System.Int64,System.Byte*,MediaExtension.MEByteSourceReadBytesCallback) +M:MediaExtension.MEByteSource.ReadData(System.UIntPtr,System.Int64,System.Byte*,System.UIntPtr@,Foundation.NSError@) +M:MediaExtension.MEEstimatedSampleLocation.#ctor(MediaExtension.MEByteSource,AVFoundation.AVSampleCursorStorageRange,AVFoundation.AVSampleCursorStorageRange) +M:MediaExtension.MEFileInfo.Copy(Foundation.NSZone) +M:MediaExtension.MEFormatReaderInstantiationOptions.Copy(Foundation.NSZone) +M:MediaExtension.MERawProcessingBooleanParameter.#ctor(System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean) +M:MediaExtension.MERawProcessingBooleanParameter.#ctor(System.String,System.String,System.String,System.Boolean) +M:MediaExtension.MERawProcessingBooleanParameter.HasCameraValue(System.Boolean@) +M:MediaExtension.MERawProcessingBooleanParameter.HasNeutralValue(System.Boolean@) +M:MediaExtension.MERawProcessingFloatParameter.#ctor(System.String,System.String,System.String,System.Single,System.Single,System.Single,System.Single,System.Single) +M:MediaExtension.MERawProcessingFloatParameter.#ctor(System.String,System.String,System.String,System.Single,System.Single,System.Single) +M:MediaExtension.MERawProcessingFloatParameter.HasCameraValue(System.Single@) +M:MediaExtension.MERawProcessingFloatParameter.HasNeutralValue(System.Single@) +M:MediaExtension.MERawProcessingIntegerParameter.#ctor(System.String,System.String,System.String,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) +M:MediaExtension.MERawProcessingIntegerParameter.#ctor(System.String,System.String,System.String,System.IntPtr,System.IntPtr,System.IntPtr) +M:MediaExtension.MERawProcessingIntegerParameter.HasCameraValue(System.IntPtr@) +M:MediaExtension.MERawProcessingIntegerParameter.HasNeutralValue(System.IntPtr@) +M:MediaExtension.MERawProcessingListElementParameter.#ctor(System.String,System.String,System.IntPtr) +M:MediaExtension.MERawProcessingListParameter.#ctor(System.String,System.String,System.String,MediaExtension.MERawProcessingListElementParameter[],System.IntPtr,System.IntPtr,System.IntPtr) +M:MediaExtension.MERawProcessingListParameter.#ctor(System.String,System.String,System.String,MediaExtension.MERawProcessingListElementParameter[],System.IntPtr) +M:MediaExtension.MERawProcessingListParameter.HasCameraValue(System.IntPtr@) +M:MediaExtension.MERawProcessingListParameter.HasNeutralValue(System.IntPtr@) +M:MediaExtension.MERawProcessingSubGroupParameter.#ctor(System.String,System.String,MediaExtension.MERawProcessingParameter[]) +M:MediaExtension.MERawProcessorPixelBufferManager.CreatePixelBuffer(Foundation.NSError@) +M:MediaExtension.MESampleCursorChunk.#ctor(MediaExtension.MEByteSource,AVFoundation.AVSampleCursorStorageRange,AVFoundation.AVSampleCursorChunkInfo,System.IntPtr) +M:MediaExtension.MESampleCursorChunk.Copy(Foundation.NSZone) +M:MediaExtension.MESampleLocation.#ctor(MediaExtension.MEByteSource,AVFoundation.AVSampleCursorStorageRange) +M:MediaExtension.MESampleLocation.Copy(Foundation.NSZone) +M:MediaExtension.METrackInfo.#ctor(CoreMedia.CMMediaType,System.Int32,Foundation.NSObject[]) +M:MediaExtension.METrackInfo.Copy(Foundation.NSZone) +M:MediaExtension.MEVideoDecoderPixelBufferManager.CreatePixelBuffer(Foundation.NSError@) +M:MediaExtension.MEVideoDecoderPixelBufferManager.RegisterCustomPixelFormat(Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}) M:MediaLibrary.MLMediaGroup.Dispose(System.Boolean) M:MediaLibrary.MLMediaLibrary.#ctor(Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}) M:MediaLibrary.MLMediaObject.Dispose(System.Boolean) @@ -70699,6 +70787,87 @@ P:MediaAccessibility.MAMusicHapticsManager.ActiveStatusDidChangeNotification P:MediaAccessibility.MAMusicHapticsManager.IsActive P:MediaAccessibility.MAMusicHapticsManager.SharedManager P:MediaAccessibility.MAVideoAccommodations.DimFlashingLightsChangedNotification +P:MediaExtension.IMERawProcessor.MetalDeviceRegistryId +P:MediaExtension.IMERawProcessor.OutputColorAttachments +P:MediaExtension.IMERawProcessor.ProcessingParameters +P:MediaExtension.IMERawProcessor.ReadyForMoreMediaData +P:MediaExtension.IMESampleCursor.CurrentSampleDuration +P:MediaExtension.IMESampleCursor.CurrentSampleFormatDescription +P:MediaExtension.IMESampleCursor.DecodeTimeOfLastSampleReachableByForwardSteppingThatIsAlreadyLoadedByByteSource +P:MediaExtension.IMESampleCursor.DecodeTimeStamp +P:MediaExtension.IMESampleCursor.HevcDependencyInfo +P:MediaExtension.IMESampleCursor.PresentationTimeStamp +P:MediaExtension.IMEVideoDecoder.ActualThreadCount +P:MediaExtension.IMEVideoDecoder.ContentHasInterframeDependencies +P:MediaExtension.IMEVideoDecoder.PixelFormatsWithReducedResolutionDecodeSupport +P:MediaExtension.IMEVideoDecoder.ProducesRawOutput +P:MediaExtension.IMEVideoDecoder.ReadyForMoreMediaData +P:MediaExtension.IMEVideoDecoder.RecommendedThreadCount +P:MediaExtension.IMEVideoDecoder.ReducedResolution +P:MediaExtension.IMEVideoDecoder.SupportedPixelFormatsOrderedByQuality +P:MediaExtension.MEByteSource.ContentType +P:MediaExtension.MEByteSource.FileLength +P:MediaExtension.MEByteSource.FileName +P:MediaExtension.MEByteSource.RelatedFileNamesInSameDirectory +P:MediaExtension.MEDecodeFrameOptions.DoNotOutputFrame +P:MediaExtension.MEDecodeFrameOptions.RealTimePlayback +P:MediaExtension.MEEstimatedSampleLocation.ByteSource +P:MediaExtension.MEEstimatedSampleLocation.EstimatedSampleLocation +P:MediaExtension.MEEstimatedSampleLocation.RefinementDataLocation +P:MediaExtension.MEFileInfo.Duration +P:MediaExtension.MEFileInfo.FragmentsStatus +P:MediaExtension.MEFormatReaderInstantiationOptions.AllowIncrementalFragmentParsing +P:MediaExtension.MEHevcDependencyInfo.ConstraintIndicatorFlags +P:MediaExtension.MEHevcDependencyInfo.LevelIndex +P:MediaExtension.MEHevcDependencyInfo.ProfileCompatibilityFlags +P:MediaExtension.MEHevcDependencyInfo.ProfileIndex +P:MediaExtension.MEHevcDependencyInfo.ProfileSpace +P:MediaExtension.MEHevcDependencyInfo.StepwiseTemporalSubLayerAccess +P:MediaExtension.MEHevcDependencyInfo.SyncSampleNALUnitType +P:MediaExtension.MEHevcDependencyInfo.TemporalLevel +P:MediaExtension.MEHevcDependencyInfo.TemporalSubLayerAccess +P:MediaExtension.MEHevcDependencyInfo.TierFlag +P:MediaExtension.MERawProcessingBooleanParameter.CurrentValue +P:MediaExtension.MERawProcessingBooleanParameter.InitialValue +P:MediaExtension.MERawProcessingFloatParameter.CurrentValue +P:MediaExtension.MERawProcessingFloatParameter.InitialValue +P:MediaExtension.MERawProcessingFloatParameter.MaximumValue +P:MediaExtension.MERawProcessingFloatParameter.MinimumValue +P:MediaExtension.MERawProcessingIntegerParameter.CurrentValue +P:MediaExtension.MERawProcessingIntegerParameter.InitialValue +P:MediaExtension.MERawProcessingIntegerParameter.MaximumValue +P:MediaExtension.MERawProcessingIntegerParameter.MinimumValue +P:MediaExtension.MERawProcessingListElementParameter.ListElementId +P:MediaExtension.MERawProcessingListParameter.CurrentValue +P:MediaExtension.MERawProcessingListParameter.InitialValue +P:MediaExtension.MERawProcessingListParameter.ListElements +P:MediaExtension.MERawProcessingParameter.Enabled +P:MediaExtension.MERawProcessingParameter.Key +P:MediaExtension.MERawProcessingParameter.LongDescription +P:MediaExtension.MERawProcessingParameter.Name +P:MediaExtension.MERawProcessingSubGroupParameter.SubGroupParameters +P:MediaExtension.MERawProcessorFields.ReadyForMoreMediaDataDidChangeNotification +P:MediaExtension.MERawProcessorFields.ValuesDidChangeNotification +P:MediaExtension.MERawProcessorPixelBufferManager.PixelBufferAttributes +P:MediaExtension.MESampleCursorChunk.ByteSource +P:MediaExtension.MESampleCursorChunk.ChunkInfo +P:MediaExtension.MESampleCursorChunk.ChunkStorageRange +P:MediaExtension.MESampleCursorChunk.SampleIndexWithinChunk +P:MediaExtension.MESampleLocation.ByteSource +P:MediaExtension.MESampleLocation.SampleLocation +P:MediaExtension.METrackInfo.Enabled +P:MediaExtension.METrackInfo.ExtendedLanguageTag +P:MediaExtension.METrackInfo.MediaType +P:MediaExtension.METrackInfo.NaturalSize +P:MediaExtension.METrackInfo.NaturalTimescale +P:MediaExtension.METrackInfo.NominalFrameRate +P:MediaExtension.METrackInfo.PreferredTransform +P:MediaExtension.METrackInfo.RequiresFrameReordering +P:MediaExtension.METrackInfo.TrackEdits +P:MediaExtension.METrackInfo.TrackId +P:MediaExtension.METrackInfo.WeakFormatDescriptions +P:MediaExtension.MEVideoDecoderFields.ReadyForMoreMediaDataDidChangeNotification +P:MediaExtension.MEVideoDecoderPixelBufferManager.PixelBufferAttributes P:MediaLibrary.MediaLibraryTypeIdentifierKey.ApertureAllPhotosTypeIdentifier P:MediaLibrary.MediaLibraryTypeIdentifierKey.ApertureAllProjectsTypeIdentifier P:MediaLibrary.MediaLibraryTypeIdentifierKey.ApertureFacebookAlbumTypeIdentifier @@ -83634,6 +83803,56 @@ T:MediaAccessibility.MAMusicHapticsManager T:MediaAccessibility.MAMusicHapticTrackAvailabilityCallback T:MediaAccessibility.MAMusicHapticTrackStatusObserver T:MediaAccessibility.MAVideoAccommodations +T:MediaExtension.IMEFormatReader +T:MediaExtension.IMEFormatReaderExtension +T:MediaExtension.IMERawProcessor +T:MediaExtension.IMERawProcessorExtension +T:MediaExtension.IMESampleCursor +T:MediaExtension.IMETrackReader +T:MediaExtension.IMEVideoDecoder +T:MediaExtension.IMEVideoDecoderExtension +T:MediaExtension.MEByteSource +T:MediaExtension.MEByteSourceReadBytesCallback +T:MediaExtension.MEByteSourceReadDataCallback +T:MediaExtension.MEDecodeFrameOptions +T:MediaExtension.MEDecodeFrameStatus +T:MediaExtension.MEError +T:MediaExtension.MEEstimatedSampleLocation +T:MediaExtension.MEFileInfo +T:MediaExtension.MEFileInfoFragmentsStatus +T:MediaExtension.MEFormatReaderInstantiationOptions +T:MediaExtension.MEFormatReaderLoadFileInfoCallback +T:MediaExtension.MEFormatReaderLoadMetadataCallback +T:MediaExtension.MEFormatReaderLoadTrackReadersCallback +T:MediaExtension.MEFormatReaderParseAdditionalFragmentsCallback +T:MediaExtension.MEFormatReaderParseAdditionalFragmentsStatus +T:MediaExtension.MEHevcDependencyInfo +T:MediaExtension.MERawProcessingBooleanParameter +T:MediaExtension.MERawProcessingFloatParameter +T:MediaExtension.MERawProcessingIntegerParameter +T:MediaExtension.MERawProcessingListElementParameter +T:MediaExtension.MERawProcessingListParameter +T:MediaExtension.MERawProcessingParameter +T:MediaExtension.MERawProcessingSubGroupParameter +T:MediaExtension.MERawProcessorFields +T:MediaExtension.MERawProcessorPixelBufferManager +T:MediaExtension.MERawProcessorProcessFrameCallback +T:MediaExtension.MESampleCursorChunk +T:MediaExtension.MESampleCursorLoadPostDecodeProcessingMetadataCallback +T:MediaExtension.MESampleCursorLoadSampleBufferCallback +T:MediaExtension.MESampleCursorStepByTimeCallback +T:MediaExtension.MESampleCursorStepInOrderCallback +T:MediaExtension.MESampleLocation +T:MediaExtension.METrackInfo +T:MediaExtension.METrackReaderGenerateSampleCursorCallback +T:MediaExtension.METrackReaderLoadEstimatedDataRateCallback +T:MediaExtension.METrackReaderLoadMetadataCallback +T:MediaExtension.METrackReaderLoadTotalSampleDataLengthCallback +T:MediaExtension.METrackReaderLoadTrackInfoCallback +T:MediaExtension.METrackReaderLoadUneditedDurationCallback +T:MediaExtension.MEVideoDecoderDecodeFrameCallback +T:MediaExtension.MEVideoDecoderFields +T:MediaExtension.MEVideoDecoderPixelBufferManager T:MediaLibrary.MediaLibraryTypeIdentifierKey T:MediaLibrary.MLMediaGroup T:MediaLibrary.MLMediaLibrary diff --git a/tests/monotouch-test/MediaExtension/MERawProcessingBooleanParameterTest.cs b/tests/monotouch-test/MediaExtension/MERawProcessingBooleanParameterTest.cs new file mode 100644 index 000000000000..98c62b5b7a7e --- /dev/null +++ b/tests/monotouch-test/MediaExtension/MERawProcessingBooleanParameterTest.cs @@ -0,0 +1,50 @@ +#if HAS_MEDIAEXTENSION && NET +using Foundation; +using MediaExtension; + +using NUnit.Framework; + +namespace MonoTouchFixtures.MediaExtension { + [TestFixture] + [Preserve (AllMembers = true)] + public class MERawProcessingBooleanParameterTest { + [Test] + public void CtorTest_Neutral () + { + TestRuntime.AssertXcodeVersion (16, 0); + + using var obj = new MERawProcessingBooleanParameter ("name", "key", "description", false, true, MERawProcessingBooleanParameterInitializationOption.NeutralValue); + Assert.Multiple (() => { + Assert.AreEqual ("name", obj.Name, "Name"); + Assert.AreEqual ("key", obj.Key, "Key"); + Assert.IsNull (obj.LongDescription, "LongDescription"); + Assert.IsFalse (obj.InitialValue, "InitialValue"); + Assert.IsFalse (obj.CurrentValue, "CurrentValue"); + Assert.IsTrue (obj.HasNeutralValue (out var neutralValue), "HasNeutralValue"); + Assert.IsTrue (neutralValue, "NeutralValue"); + Assert.IsFalse (obj.HasCameraValue (out var cameraValue), "HasCameraValue"); + Assert.IsFalse (cameraValue, "NeutralValue"); + }); + } + + [Test] + public void CtorTest_Camera () + { + TestRuntime.AssertXcodeVersion (16, 0); + + using var obj = new MERawProcessingBooleanParameter ("name", "key", "description", false, true, MERawProcessingBooleanParameterInitializationOption.CameraValue); + Assert.Multiple (() => { + Assert.AreEqual ("name", obj.Name, "Name"); + Assert.AreEqual ("key", obj.Key, "Key"); + Assert.IsNull (obj.LongDescription, "LongDescription"); + Assert.IsFalse (obj.InitialValue, "InitialValue"); + Assert.IsFalse (obj.CurrentValue, "CurrentValue"); + Assert.IsFalse (obj.HasNeutralValue (out var neutralValue), "HasNeutralValue"); + Assert.IsFalse (neutralValue, "NeutralValue"); + Assert.IsTrue (obj.HasCameraValue (out var cameraValue), "HasCameraValue"); + Assert.IsTrue (cameraValue, "NeutralValue"); + }); + } + } +} +#endif // HAS_MEDIAEXTENSION diff --git a/tests/monotouch-test/MediaExtension/MERawProcessingFloatParameterTest.cs b/tests/monotouch-test/MediaExtension/MERawProcessingFloatParameterTest.cs new file mode 100644 index 000000000000..e72b1a0bdf20 --- /dev/null +++ b/tests/monotouch-test/MediaExtension/MERawProcessingFloatParameterTest.cs @@ -0,0 +1,54 @@ +#if HAS_MEDIAEXTENSION && NET +using Foundation; +using MediaExtension; + +using NUnit.Framework; + +namespace MonoTouchFixtures.MediaExtension { + [TestFixture] + [Preserve (AllMembers = true)] + public class MERawProcessingFloatParameterTest { + [Test] + public void CtorTest_Neutral () + { + TestRuntime.AssertXcodeVersion (16, 0); + + using var obj = new MERawProcessingFloatParameter ("name", "key", "description", 1.2f, 3.4f, 0.1f, 1.1f, MERawProcessingFloatParameterInitializationOption.NeutralValue); + Assert.Multiple (() => { + Assert.AreEqual ("name", obj.Name, "Name"); + Assert.AreEqual ("key", obj.Key, "Key"); + Assert.IsNull (obj.LongDescription, "LongDescription"); + Assert.AreEqual (1.2f, obj.InitialValue, "InitialValue"); + Assert.AreEqual (1.2f, obj.CurrentValue, "CurrentValue"); + Assert.AreEqual (3.4f, obj.MaximumValue, "MaximumValue"); + Assert.AreEqual (0.1f, obj.MinimumValue, "MinimumValue"); + Assert.IsTrue (obj.HasNeutralValue (out var neutralValue), "HasNeutralValue"); + Assert.AreEqual (1.1f, neutralValue, "NeutralValue"); + Assert.IsFalse (obj.HasCameraValue (out var cameraValue), "HasCameraValue"); + Assert.AreEqual (0f, cameraValue, "NeutralValue"); + }); + } + + [Test] + public void CtorTest_Camera () + { + TestRuntime.AssertXcodeVersion (16, 0); + + using var obj = new MERawProcessingFloatParameter ("name", "key", "description", 1.2f, 3.4f, 0.1f, 1.1f, MERawProcessingFloatParameterInitializationOption.CameraValue); + Assert.Multiple (() => { + Assert.AreEqual ("name", obj.Name, "Name"); + Assert.AreEqual ("key", obj.Key, "Key"); + Assert.IsNull (obj.LongDescription, "LongDescription"); + Assert.AreEqual (1.2f, obj.InitialValue, "InitialValue"); + Assert.AreEqual (1.2f, obj.CurrentValue, "CurrentValue"); + Assert.AreEqual (3.4f, obj.MaximumValue, "MaximumValue"); + Assert.AreEqual (0.1f, obj.MinimumValue, "MinimumValue"); + Assert.IsFalse (obj.HasNeutralValue (out var neutralValue), "HasNeutralValue"); + Assert.AreEqual (0f, neutralValue, "NeutralValue"); + Assert.IsTrue (obj.HasCameraValue (out var cameraValue), "HasCameraValue"); + Assert.AreEqual (1.1f, cameraValue, "NeutralValue"); + }); + } + } +} +#endif // HAS_MEDIAEXTENSION diff --git a/tests/monotouch-test/MediaExtension/MERawProcessingIntegerParameterTest.cs b/tests/monotouch-test/MediaExtension/MERawProcessingIntegerParameterTest.cs new file mode 100644 index 000000000000..10e62ac6d6fb --- /dev/null +++ b/tests/monotouch-test/MediaExtension/MERawProcessingIntegerParameterTest.cs @@ -0,0 +1,54 @@ +#if HAS_MEDIAEXTENSION && NET +using Foundation; +using MediaExtension; + +using NUnit.Framework; + +namespace MonoTouchFixtures.MediaExtension { + [TestFixture] + [Preserve (AllMembers = true)] + public class MERawProcessingIntegerParameterTest { + [Test] + public void CtorTest_Neutral () + { + TestRuntime.AssertXcodeVersion (16, 0); + + using var obj = new MERawProcessingIntegerParameter ("name", "key", "description", 3, 5, 1, 2, MERawProcessingIntegerParameterInitializationOption.NeutralValue); + Assert.Multiple (() => { + Assert.AreEqual ("name", obj.Name, "Name"); + Assert.AreEqual ("key", obj.Key, "Key"); + Assert.IsNull (obj.LongDescription, "LongDescription"); + Assert.AreEqual ((nint) 3, obj.InitialValue, "InitialValue"); + Assert.AreEqual ((nint) 3, obj.CurrentValue, "CurrentValue"); + Assert.AreEqual ((nint) 5, obj.MaximumValue, "MaximumValue"); + Assert.AreEqual ((nint) 1, obj.MinimumValue, "MinimumValue"); + Assert.IsTrue (obj.HasNeutralValue (out var neutralValue), "HasNeutralValue"); + Assert.AreEqual ((nint) 2, neutralValue, "NeutralValue"); + Assert.IsFalse (obj.HasCameraValue (out var cameraValue), "HasCameraValue"); + Assert.AreEqual ((nint) 0, cameraValue, "NeutralValue"); + }); + } + + [Test] + public void CtorTest_Camera () + { + TestRuntime.AssertXcodeVersion (16, 0); + + using var obj = new MERawProcessingIntegerParameter ("name", "key", "description", 3, 5, 1, 2, MERawProcessingIntegerParameterInitializationOption.CameraValue); + Assert.Multiple (() => { + Assert.AreEqual ("name", obj.Name, "Name"); + Assert.AreEqual ("key", obj.Key, "Key"); + Assert.IsNull (obj.LongDescription, "LongDescription"); + Assert.AreEqual ((nint) 3, obj.InitialValue, "InitialValue"); + Assert.AreEqual ((nint) 3, obj.CurrentValue, "CurrentValue"); + Assert.AreEqual ((nint) 5, obj.MaximumValue, "MaximumValue"); + Assert.AreEqual ((nint) 1, obj.MinimumValue, "MinimumValue"); + Assert.IsFalse (obj.HasNeutralValue (out var neutralValue), "HasNeutralValue"); + Assert.AreEqual ((nint) 0, neutralValue, "NeutralValue"); + Assert.IsTrue (obj.HasCameraValue (out var cameraValue), "HasCameraValue"); + Assert.AreEqual ((nint) 2, cameraValue, "NeutralValue"); + }); + } + } +} +#endif // HAS_MEDIAEXTENSION diff --git a/tests/monotouch-test/MediaExtension/MERawProcessingListParameterTest.cs b/tests/monotouch-test/MediaExtension/MERawProcessingListParameterTest.cs new file mode 100644 index 000000000000..5199c7990116 --- /dev/null +++ b/tests/monotouch-test/MediaExtension/MERawProcessingListParameterTest.cs @@ -0,0 +1,62 @@ +#if HAS_MEDIAEXTENSION && NET +using Foundation; +using MediaExtension; + +using NUnit.Framework; + +namespace MonoTouchFixtures.MediaExtension { + [TestFixture] + [Preserve (AllMembers = true)] + public class MERawProcessingListParameterTest { + [Test] + public void CtorTest_Neutral () + { + TestRuntime.AssertXcodeVersion (16, 0); + + var array = new MERawProcessingListElementParameter [] + { + new MERawProcessingListElementParameter ("name0", "desc0", 1), + new MERawProcessingListElementParameter ("name1", "desc1", 3), + new MERawProcessingListElementParameter ("name2", "desc2", 5), + }; + using var obj = new MERawProcessingListParameter ("name", "key", "description", array, 1, 3, MERawProcessingListParameterInitializationOption.NeutralValue); + Assert.Multiple (() => { + Assert.AreEqual ("name", obj.Name, "Name"); + Assert.AreEqual ("key", obj.Key, "Key"); + Assert.IsNull (obj.LongDescription, "LongDescription"); + Assert.AreEqual ((nint) 1, obj.InitialValue, "InitialValue"); + Assert.AreEqual ((nint) 1, obj.CurrentValue, "CurrentValue"); + Assert.IsTrue (obj.HasNeutralValue (out var neutralValue), "HasNeutralValue"); + Assert.AreEqual ((nint) 3, neutralValue, "NeutralValue"); + Assert.IsFalse (obj.HasCameraValue (out var cameraValue), "HasCameraValue"); + Assert.AreEqual ((nint) 0, cameraValue, "NeutralValue"); + }); + } + + [Test] + public void CtorTest_Camera () + { + TestRuntime.AssertXcodeVersion (16, 0); + + var array = new MERawProcessingListElementParameter [] + { + new MERawProcessingListElementParameter ("name0", "desc0", 1), + new MERawProcessingListElementParameter ("name1", "desc1", 3), + new MERawProcessingListElementParameter ("name2", "desc2", 5), + }; + using var obj = new MERawProcessingListParameter ("name", "key", "description", array, 1, 3, MERawProcessingListParameterInitializationOption.CameraValue); + Assert.Multiple (() => { + Assert.AreEqual ("name", obj.Name, "Name"); + Assert.AreEqual ("key", obj.Key, "Key"); + Assert.IsNull (obj.LongDescription, "LongDescription"); + Assert.AreEqual ((nint) 1, obj.InitialValue, "InitialValue"); + Assert.AreEqual ((nint) 1, obj.CurrentValue, "CurrentValue"); + Assert.IsFalse (obj.HasNeutralValue (out var neutralValue), "HasNeutralValue"); + Assert.AreEqual ((nint) 0, neutralValue, "NeutralValue"); + Assert.IsTrue (obj.HasCameraValue (out var cameraValue), "HasCameraValue"); + Assert.AreEqual ((nint) 3, cameraValue, "NeutralValue"); + }); + } + } +} +#endif // HAS_MEDIAEXTENSION diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-MediaExtension.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-MediaExtension.todo deleted file mode 100644 index 523bf03ded5f..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-MediaExtension.todo +++ /dev/null @@ -1,161 +0,0 @@ -!missing-enum! MEDecodeFrameStatus not bound -!missing-enum! MEError not bound -!missing-enum! MEFileInfoFragmentsStatus not bound -!missing-enum! MEFormatReaderParseAdditionalFragmentsStatus not bound -!missing-field! MediaExtensionErrorDomain not bound -!missing-field! MERAWProcessorReadyForMoreMediaDataDidChangeNotification not bound -!missing-field! MERAWProcessorValuesDidChangeNotification not bound -!missing-field! MEVideoDecoderReadyForMoreMediaDataDidChangeNotification not bound -!missing-protocol! MEFormatReader not bound -!missing-protocol! MEFormatReaderExtension not bound -!missing-protocol! MERAWProcessor not bound -!missing-protocol! MERAWProcessorExtension not bound -!missing-protocol! MESampleCursor not bound -!missing-protocol! METrackReader not bound -!missing-protocol! MEVideoDecoder not bound -!missing-protocol! MEVideoDecoderExtension not bound -!missing-selector! MEByteSource::availableLengthAtOffset: not bound -!missing-selector! MEByteSource::byteSourceForRelatedFileName:error: not bound -!missing-selector! MEByteSource::contentType not bound -!missing-selector! MEByteSource::fileLength not bound -!missing-selector! MEByteSource::fileName not bound -!missing-selector! MEByteSource::readDataOfLength:fromOffset:completionHandler: not bound -!missing-selector! MEByteSource::readDataOfLength:fromOffset:toDestination:bytesRead:error: not bound -!missing-selector! MEByteSource::readDataOfLength:fromOffset:toDestination:completionHandler: not bound -!missing-selector! MEByteSource::relatedFileNamesInSameDirectory not bound -!missing-selector! MEDecodeFrameOptions::doNotOutputFrame not bound -!missing-selector! MEDecodeFrameOptions::realTimePlayback not bound -!missing-selector! MEDecodeFrameOptions::setDoNotOutputFrame: not bound -!missing-selector! MEDecodeFrameOptions::setRealTimePlayback: not bound -!missing-selector! MEEstimatedSampleLocation::byteSource not bound -!missing-selector! MEEstimatedSampleLocation::estimatedSampleLocation not bound -!missing-selector! MEEstimatedSampleLocation::initWithByteSource:estimatedSampleLocation:refinementDataLocation: not bound -!missing-selector! MEEstimatedSampleLocation::refinementDataLocation not bound -!missing-selector! MEFileInfo::duration not bound -!missing-selector! MEFileInfo::fragmentsStatus not bound -!missing-selector! MEFileInfo::setDuration: not bound -!missing-selector! MEFileInfo::setFragmentsStatus: not bound -!missing-selector! MEFormatReaderInstantiationOptions::allowIncrementalFragmentParsing not bound -!missing-selector! MEHEVCDependencyInfo::constraintIndicatorFlags not bound -!missing-selector! MEHEVCDependencyInfo::hasStepwiseTemporalSubLayerAccess not bound -!missing-selector! MEHEVCDependencyInfo::hasTemporalSubLayerAccess not bound -!missing-selector! MEHEVCDependencyInfo::levelIndex not bound -!missing-selector! MEHEVCDependencyInfo::profileCompatibilityFlags not bound -!missing-selector! MEHEVCDependencyInfo::profileIndex not bound -!missing-selector! MEHEVCDependencyInfo::profileSpace not bound -!missing-selector! MEHEVCDependencyInfo::setConstraintIndicatorFlags: not bound -!missing-selector! MEHEVCDependencyInfo::setLevelIndex: not bound -!missing-selector! MEHEVCDependencyInfo::setProfileCompatibilityFlags: not bound -!missing-selector! MEHEVCDependencyInfo::setProfileIndex: not bound -!missing-selector! MEHEVCDependencyInfo::setProfileSpace: not bound -!missing-selector! MEHEVCDependencyInfo::setStepwiseTemporalSubLayerAccess: not bound -!missing-selector! MEHEVCDependencyInfo::setSyncSampleNALUnitType: not bound -!missing-selector! MEHEVCDependencyInfo::setTemporalLevel: not bound -!missing-selector! MEHEVCDependencyInfo::setTemporalSubLayerAccess: not bound -!missing-selector! MEHEVCDependencyInfo::setTierFlag: not bound -!missing-selector! MEHEVCDependencyInfo::syncSampleNALUnitType not bound -!missing-selector! MEHEVCDependencyInfo::temporalLevel not bound -!missing-selector! MEHEVCDependencyInfo::tierFlag not bound -!missing-selector! MERAWProcessingBooleanParameter::currentValue not bound -!missing-selector! MERAWProcessingBooleanParameter::initialValue not bound -!missing-selector! MERAWProcessingBooleanParameter::initWithName:key:description:initialValue: not bound -!missing-selector! MERAWProcessingBooleanParameter::initWithName:key:description:initialValue:neutralValue:cameraValue: not bound -!missing-selector! MERAWProcessingBooleanParameter::setCurrentValue: not bound -!missing-selector! MERAWProcessingFloatParameter::currentValue not bound -!missing-selector! MERAWProcessingFloatParameter::initialValue not bound -!missing-selector! MERAWProcessingFloatParameter::initWithName:key:description:initialValue:maximum:minimum: not bound -!missing-selector! MERAWProcessingFloatParameter::initWithName:key:description:initialValue:maximum:minimum:neutralValue:cameraValue: not bound -!missing-selector! MERAWProcessingFloatParameter::maximumValue not bound -!missing-selector! MERAWProcessingFloatParameter::minimumValue not bound -!missing-selector! MERAWProcessingFloatParameter::setCurrentValue: not bound -!missing-selector! MERAWProcessingIntegerParameter::currentValue not bound -!missing-selector! MERAWProcessingIntegerParameter::initialValue not bound -!missing-selector! MERAWProcessingIntegerParameter::initWithName:key:description:initialValue:maximum:minimum: not bound -!missing-selector! MERAWProcessingIntegerParameter::initWithName:key:description:initialValue:maximum:minimum:neutralValue:cameraValue: not bound -!missing-selector! MERAWProcessingIntegerParameter::maximumValue not bound -!missing-selector! MERAWProcessingIntegerParameter::minimumValue not bound -!missing-selector! MERAWProcessingIntegerParameter::setCurrentValue: not bound -!missing-selector! MERAWProcessingListParameter::currentValue not bound -!missing-selector! MERAWProcessingListParameter::initialValue not bound -!missing-selector! MERAWProcessingListParameter::initWithName:key:description:list:initialValue: not bound -!missing-selector! MERAWProcessingListParameter::initWithName:key:description:list:initialValue:neutralValue:cameraValue: not bound -!missing-selector! MERAWProcessingListParameter::listElements not bound -!missing-selector! MERAWProcessingListParameter::setCurrentValue: not bound -!missing-selector! MERAWProcessingParameter::enabled not bound -!missing-selector! MERAWProcessingParameter::key not bound -!missing-selector! MERAWProcessingParameter::longDescription not bound -!missing-selector! MERAWProcessingParameter::name not bound -!missing-selector! MERAWProcessingParameter::setEnabled: not bound -!missing-selector! MERAWProcessingSubGroupParameter::initWithName:description:parameters: not bound -!missing-selector! MERAWProcessingSubGroupParameter::subGroupParameters not bound -!missing-selector! MERAWProcessorPixelBufferManager::createPixelBufferAndReturnError: not bound -!missing-selector! MERAWProcessorPixelBufferManager::pixelBufferAttributes not bound -!missing-selector! MERAWProcessorPixelBufferManager::setPixelBufferAttributes: not bound -!missing-selector! MESampleCursorChunk::byteSource not bound -!missing-selector! MESampleCursorChunk::chunkInfo not bound -!missing-selector! MESampleCursorChunk::chunkStorageRange not bound -!missing-selector! MESampleCursorChunk::initWithByteSource:chunkStorageRange:chunkInfo:sampleIndexWithinChunk: not bound -!missing-selector! MESampleCursorChunk::sampleIndexWithinChunk not bound -!missing-selector! MESampleLocation::byteSource not bound -!missing-selector! MESampleLocation::initWithByteSource:sampleLocation: not bound -!missing-selector! MESampleLocation::sampleLocation not bound -!missing-selector! METrackInfo::extendedLanguageTag not bound -!missing-selector! METrackInfo::formatDescriptions not bound -!missing-selector! METrackInfo::initWithMediaType:trackID:formatDescriptions: not bound -!missing-selector! METrackInfo::isEnabled not bound -!missing-selector! METrackInfo::mediaType not bound -!missing-selector! METrackInfo::naturalSize not bound -!missing-selector! METrackInfo::naturalTimescale not bound -!missing-selector! METrackInfo::nominalFrameRate not bound -!missing-selector! METrackInfo::preferredTransform not bound -!missing-selector! METrackInfo::requiresFrameReordering not bound -!missing-selector! METrackInfo::setEnabled: not bound -!missing-selector! METrackInfo::setExtendedLanguageTag: not bound -!missing-selector! METrackInfo::setNaturalSize: not bound -!missing-selector! METrackInfo::setNaturalTimescale: not bound -!missing-selector! METrackInfo::setNominalFrameRate: not bound -!missing-selector! METrackInfo::setPreferredTransform: not bound -!missing-selector! METrackInfo::setRequiresFrameReordering: not bound -!missing-selector! METrackInfo::setTrackEdits: not bound -!missing-selector! METrackInfo::trackEdits not bound -!missing-selector! METrackInfo::trackID not bound -!missing-selector! MEVideoDecoderPixelBufferManager::createPixelBufferAndReturnError: not bound -!missing-selector! MEVideoDecoderPixelBufferManager::pixelBufferAttributes not bound -!missing-selector! MEVideoDecoderPixelBufferManager::setPixelBufferAttributes: not bound -!missing-type! MEByteSource not bound -!missing-type! MEDecodeFrameOptions not bound -!missing-type! MEEstimatedSampleLocation not bound -!missing-type! MEFileInfo not bound -!missing-type! MEFormatReaderInstantiationOptions not bound -!missing-type! MEHEVCDependencyInfo not bound -!missing-type! MERAWProcessingBooleanParameter not bound -!missing-type! MERAWProcessingFloatParameter not bound -!missing-type! MERAWProcessingIntegerParameter not bound -!missing-type! MERAWProcessingListParameter not bound -!missing-type! MERAWProcessingParameter not bound -!missing-type! MERAWProcessingSubGroupParameter not bound -!missing-type! MERAWProcessorPixelBufferManager not bound -!missing-type! MESampleCursorChunk not bound -!missing-type! MESampleLocation not bound -!missing-type! METrackInfo not bound -!missing-type! MEVideoDecoderPixelBufferManager not bound -!missing-selector! MEVideoDecoderPixelBufferManager::registerCustomPixelFormat: not bound -!missing-selector! MERAWProcessingBooleanParameter::hasCameraValue: not bound -!missing-selector! MERAWProcessingBooleanParameter::hasNeutralValue: not bound -!missing-selector! MERAWProcessingBooleanParameter::initWithName:key:description:initialValue:cameraValue: not bound -!missing-selector! MERAWProcessingBooleanParameter::initWithName:key:description:initialValue:neutralValue: not bound -!missing-selector! MERAWProcessingFloatParameter::hasCameraValue: not bound -!missing-selector! MERAWProcessingFloatParameter::hasNeutralValue: not bound -!missing-selector! MERAWProcessingFloatParameter::initWithName:key:description:initialValue:maximum:minimum:cameraValue: not bound -!missing-selector! MERAWProcessingFloatParameter::initWithName:key:description:initialValue:maximum:minimum:neutralValue: not bound -!missing-selector! MERAWProcessingIntegerParameter::hasCameraValue: not bound -!missing-selector! MERAWProcessingIntegerParameter::hasNeutralValue: not bound -!missing-selector! MERAWProcessingIntegerParameter::initWithName:key:description:initialValue:maximum:minimum:cameraValue: not bound -!missing-selector! MERAWProcessingIntegerParameter::initWithName:key:description:initialValue:maximum:minimum:neutralValue: not bound -!missing-selector! MERAWProcessingListElementParameter::initWithName:description:elementID: not bound -!missing-selector! MERAWProcessingListElementParameter::listElementID not bound -!missing-selector! MERAWProcessingListParameter::hasCameraValue: not bound -!missing-selector! MERAWProcessingListParameter::hasNeutralValue: not bound -!missing-selector! MERAWProcessingListParameter::initWithName:key:description:list:initialValue:cameraValue: not bound -!missing-selector! MERAWProcessingListParameter::initWithName:key:description:list:initialValue:neutralValue: not bound -!missing-type! MERAWProcessingListElementParameter not bound diff --git a/tests/xtro-sharpie/xtro-sharpie/ObjCProtocolCheck.cs b/tests/xtro-sharpie/xtro-sharpie/ObjCProtocolCheck.cs index 7eec68e2b20a..53baad54cbc2 100644 --- a/tests/xtro-sharpie/xtro-sharpie/ObjCProtocolCheck.cs +++ b/tests/xtro-sharpie/xtro-sharpie/ObjCProtocolCheck.cs @@ -224,7 +224,11 @@ static string GetName (ObjCProtocolDecl decl, ObjCMethodDecl method) bool IsInit (string selector) { - return selector.StartsWith ("init", StringComparison.Ordinal) && Char.IsUpper (selector [4]); + if (!selector.StartsWith ("init", StringComparison.Ordinal)) + return false; + if (selector.Length == 4) + return true; + return Char.IsUpper (selector [4]); } public override void End () diff --git a/tools/common/Frameworks.cs b/tools/common/Frameworks.cs index 970becbc8b5e..031bb09058e8 100644 --- a/tools/common/Frameworks.cs +++ b/tools/common/Frameworks.cs @@ -295,6 +295,7 @@ public static Frameworks MacFrameworks { { "DeviceDiscoveryExtension", "DeviceDiscoveryExtension", 15, 0}, // FSKit was removed from Xcode 16 RC, but keeping it commented, because it's likely to return in a later release // { "FSKit", "FSKit", 15, 0 }, + { "MediaExtension", "MediaExtension", 15, 0 }, }; } return mac_frameworks;