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.
17 using System.Diagnostics;
18 using Tizen.Internals.Errors;
20 namespace Tizen.Multimedia
23 /// Represents a container media format. This class cannot be inherited.
25 public sealed class ContainerMediaFormat : MediaFormat
28 /// Initializes a new instance of the ContainerMediaFormat class.
30 /// <param name="mimeType">The mime type of the container format.</param>
31 /// <exception cref="ArgumentException"><paramref name="mimeType"/> is invalid (i.e. undefined value).</exception>
32 public ContainerMediaFormat(MediaFormatContainerMimeType mimeType)
33 : base(MediaFormatType.Container)
35 if (!Enum.IsDefined(typeof(MediaFormatContainerMimeType), mimeType))
37 throw new ArgumentException($"Invalid mime type value : { (int)mimeType }");
43 /// Initializes a new instance of the ContainerMediaFormat class from a native handle.
45 /// <param name="handle">A native media format handle.</param>
46 internal ContainerMediaFormat(IntPtr handle)
47 : base(MediaFormatType.Container)
49 Debug.Assert(handle != IntPtr.Zero, "The handle is invalid!");
53 int ret = Interop.MediaFormat.GetContainerMimeType(handle, out mimeType);
55 MultimediaDebug.AssertNoError(ret);
57 Debug.Assert(Enum.IsDefined(typeof(MediaFormatContainerMimeType), mimeType),
58 "Invalid container mime type!");
60 MimeType = (MediaFormatContainerMimeType)mimeType;
64 /// Gets the mime type of the current format.
66 public MediaFormatContainerMimeType MimeType
71 internal override void AsNativeHandle(IntPtr handle)
73 Debug.Assert(Type == MediaFormatType.Container);
75 int ret = Interop.MediaFormat.SetContainerMimeType(handle, (int)MimeType);
77 MultimediaDebug.AssertNoError(ret);
80 public override string ToString()
82 return $"MimeType={ MimeType.ToString() }";
85 public override bool Equals(object obj)
87 var rhs = obj as ContainerMediaFormat;
93 return MimeType == rhs.MimeType;
96 public override int GetHashCode()