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;
20 namespace Tizen.Multimedia.Util
22 internal enum ImageColorSpace
25 /// YV12 - YCrCb planar format.
49 /// RGB565, high-byte is blue.
53 /// RGB888, high-byte is blue.
57 /// ARGB8888, high-byte is blue.
61 /// BGRA8888, high-byte is alpha.
65 /// RGBA8888, high-byte is alpha.
69 /// BGRX8888, high-byte is X.
86 internal static class ImageColorSpaceExtensions
88 internal static ColorSpace ToCommonColorSpace(this ImageColorSpace value)
90 Debug.Assert(Enum.IsDefined(typeof(ImageColorSpace), value));
94 case ImageColorSpace.YV12: return ColorSpace.YV12;
96 case ImageColorSpace.Uyvy: return ColorSpace.Uyvy;
98 case ImageColorSpace.Yuyv: return ColorSpace.Yuyv;
100 case ImageColorSpace.Yuv422: return ColorSpace.Yuv422P;
102 case ImageColorSpace.I420: return ColorSpace.I420;
104 case ImageColorSpace.Rgb565: return ColorSpace.Rgb565;
106 case ImageColorSpace.Rgb888: return ColorSpace.Rgb888;
108 case ImageColorSpace.Argb8888: return ColorSpace.Argb8888;
110 case ImageColorSpace.Bgra8888: return ColorSpace.Bgra8888;
112 case ImageColorSpace.Rgba8888: return ColorSpace.Rgba8888;
114 case ImageColorSpace.Bgrx8888: return ColorSpace.Bgrx8888;
116 case ImageColorSpace.NV12: return ColorSpace.NV12;
118 case ImageColorSpace.NV16: return ColorSpace.NV16;
120 case ImageColorSpace.NV21: return ColorSpace.NV21;
122 case ImageColorSpace.NV61: return ColorSpace.NV61;
125 Debug.Fail($"Not supported color space : {value.ToString()}!");
126 throw new NotSupportedException("Implementation does not support the specified value.");
130 internal static class ImageColorSpaceSupport
132 internal static ImageColorSpace ToImageColorSpace(this ColorSpace colorSpace)
134 ValidationUtil.ValidateEnum(typeof(ColorSpace), colorSpace, nameof(colorSpace));
138 case ColorSpace.YV12: return ImageColorSpace.YV12;
140 case ColorSpace.Uyvy: return ImageColorSpace.Uyvy;
142 case ColorSpace.Yuyv: return ImageColorSpace.Yuyv;
144 case ColorSpace.Yuv422:
145 case ColorSpace.Yuv422P: return ImageColorSpace.Yuv422;
147 case ColorSpace.I420: return ImageColorSpace.I420;
149 case ColorSpace.Rgb565: return ImageColorSpace.Rgb565;
151 case ColorSpace.Rgb888: return ImageColorSpace.Rgb888;
153 case ColorSpace.Argb8888: return ImageColorSpace.Argb8888;
155 case ColorSpace.Bgra8888: return ImageColorSpace.Bgra8888;
157 case ColorSpace.Rgba8888: return ImageColorSpace.Rgba8888;
159 case ColorSpace.Bgrx8888: return ImageColorSpace.Bgrx8888;
161 case ColorSpace.NV12: return ImageColorSpace.NV12;
163 case ColorSpace.NV16: return ImageColorSpace.NV16;
165 case ColorSpace.NV21: return ImageColorSpace.NV21;
167 case ColorSpace.NV61: return ImageColorSpace.NV61;
170 throw new NotSupportedException($"The ColorSpace.{colorSpace.ToString()} is not supported.");