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}'");
}
}
}