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 { get; }
68 internal override void AsNativeHandle(IntPtr handle)
70 Debug.Assert(Type == MediaFormatType.Container);
72 int ret = Interop.MediaFormat.SetContainerMimeType(handle, (int)MimeType);
74 MultimediaDebug.AssertNoError(ret);
78 /// Returns a string that represents the current object.
80 /// <returns>A string that represents the current object.</returns>
81 public override string ToString() => $"MimeType={ MimeType.ToString() }";
84 /// Compares an object to an instance of <see cref="ContainerMediaFormat"/> for equality.
86 /// <param name="obj">A <see cref="Object"/> to compare.</param>
87 /// <returns>true if the formats are equal; otherwise, false.</returns>
88 public override bool Equals(object obj)
90 var rhs = obj as ContainerMediaFormat;
96 return MimeType == rhs.MimeType;
100 /// Gets the hash code for this instance of <see cref="ContainerMediaFormat"/>.
102 /// <returns>The hash code for this instance of <see cref="ContainerMediaFormat"/>.</returns>
103 public override int GetHashCode()