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;