2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 using System.Diagnostics;
21 namespace Tizen.Multimedia
23 internal static class AudioIOUtil
25 internal static void ThrowIfError(int errorCode, string msg = null)
29 Log.Info(nameof(AudioIOUtil), "No error.");
33 AudioIOError code = (AudioIOError)errorCode;
35 msg = $"{(msg == null ? "" : msg + " : ")}{ code }";
39 case AudioIOError.OutOfMemory:
40 throw new OutOfMemoryException();
42 case AudioIOError.InvalidParameter:
43 throw new ArgumentException(msg);
45 case AudioIOError.DevicePolicyRestriction:
46 case AudioIOError.PermissionDenied:
47 throw new UnauthorizedAccessException(msg);
49 case AudioIOError.SoundPolicy:
50 throw new AudioPolicyException(msg);
52 case AudioIOError.NotSupportedType:
53 case AudioIOError.NotSupported:
54 throw new NotSupportedException(msg);
56 case AudioIOError.DeviceNotOpened:
57 case AudioIOError.DeviceNotClosed:
58 case AudioIOError.InvalidBuffer:
59 case AudioIOError.InvalidOperation:
60 case AudioIOError.InvalidState:
62 throw new InvalidOperationException(msg);
66 internal static void ValidateState(AudioIOState curState, params AudioIOState[] desiredStates)
68 Debug.Assert(desiredStates.Length > 0);
70 if (desiredStates.Contains(curState))
75 throw new InvalidOperationException($"The audio is not in a valid state. " +
76 $"Current State : { curState }, Valid State : { string.Join(", ", desiredStates) }.");