namespace MagicLeap.Android.NDK.Media { using System; using System.Diagnostics; using static MediaConstants; internal enum MediaStatus { /// /// The requested media operation completed successfully. /// Ok = 0, /// /// This indicates required resource was not able to be allocated. /// InsufficientResource = 1100, /// /// This indicates the resource manager reclaimed the media resource used by the codec. With this error, the codec must be released, as it has moved to terminal state. /// Reclaimed = 1101, /// /// The called media function failed with an unknown error. /// Unknown = kMediaErrorBase, /// /// The input media data is corrupt or incomplete. /// Malformed = kMediaErrorBase - 1, /// /// The required operation or media formats are not supported. /// Unsupported = kMediaErrorBase - 2, /// /// An invalid (or already closed) object is used in the function call. /// InvalidObject = kMediaErrorBase - 3, /// /// At least one of the invalid parameters is used. /// InvalidParameter = kMediaErrorBase - 4, /// /// The media object is not in the right state for the required operation. /// InvalidOperation = kMediaErrorBase - 5, /// /// Media stream ends while processing the requested operation. /// EndOfStream = kMediaErrorBase - 6, /// /// An Error occurred when the Media object is carrying IO operation. /// IOError = kMediaErrorBase - 7, /// /// The required operation would have to be blocked (on I/O or others), but blocking is not enabled. /// WouldBlock = kMediaErrorBase - 8, DRMNotProvisioned = kMediaDRMErrorBase - 1, DRMResourceBusy = kMediaDRMErrorBase - 2, DRMDeviceRemoved = kMediaDRMErrorBase - 3, DRMShortBuffer = kMediaDRMErrorBase - 4, DRMSessionNotOpened = kMediaDRMErrorBase - 5, DRMTamperDetected = kMediaDRMErrorBase - 6, DRMVerifyFailed = kMediaDRMErrorBase - 7, DRMNeedKey = kMediaDRMErrorBase - 8, DRMLicenseExpired = kMediaDRMErrorBase - 9, /// /// There are no more image buffers to read/write image data. /// ImageReaderNoBufferAvailable = kMediaImageReaderErrorBase - 1, /// /// The AImage object has used up the allowed maximum image buffers. /// ImageReaderMaxImagesAcquired = kMediaImageReaderErrorBase - 2, /// /// The required image buffer could not be locked to read. /// ImageReaderCannotLockImage = kMediaImageReaderErrorBase - 3, /// /// The media data or buffer could not be unlocked. /// ImageReaderCannotUnlockImage = kMediaImageReaderErrorBase - 4, /// /// The media/buffer needs to be locked to perform the required operation. /// ImageReaderImageNotLocked = kMediaImageReaderErrorBase - 5, } internal static class MediaStatusExtensions { [Conditional("DEVELOPMENT_BUILD")] public static void CheckReturnValueAndThrow(this MediaStatus actual, MediaStatus expected = MediaStatus.Ok) { if (expected != actual) throw new Exception($"Unexpected result from native call. Expected: '{expected}', Actual: '{actual}'"); } } }