| /* GStreamer JPEG 2000 Sampling |
| * Copyright (C) <2016> Grok Image Compression Inc. |
| * @author Aaron Boxer <boxerab@gmail.com> |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Library General Public |
| * License as published by the Free Software Foundation; either |
| * version 2 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Library General Public License for more details. |
| * |
| * You should have received a copy of the GNU Library General Public |
| * License along with this library; if not, write to the |
| * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, |
| * Boston, MA 02110-1301, USA. |
| */ |
| |
| /** |
| * SECTION:gstjpeg2000sampling |
| * @title: GstJpeg2000Sampling |
| * @short_description: Manage JPEG 2000 sampling and colorspace fields |
| * |
| */ |
| |
| #include "gstjpeg2000sampling.h" |
| |
| /* string values corresponding to GstJPEG2000Sampling enums */ |
| static const gchar *gst_jpeg2000_sampling_strings[] = { |
| "RGB", |
| "BGR", |
| "RGBA", |
| "BGRA", |
| "YCbCr-4:4:4", |
| "YCbCr-4:2:2", |
| "YCbCr-4:2:0", |
| "YCbCr-4:1:0", |
| "GRAYSCALE", |
| "YCbCrA-4:4:4:4", |
| }; |
| |
| /* convert string to GstJPEG2000Sampling enum */ |
| GstJPEG2000Sampling |
| gst_jpeg2000_sampling_from_string (const gchar * sampling_string) |
| { |
| GstJPEG2000Sampling i; |
| if (sampling_string == NULL) |
| return GST_JPEG2000_SAMPLING_NONE; |
| for (i = 0; i < G_N_ELEMENTS (gst_jpeg2000_sampling_strings); ++i) { |
| if (!g_strcmp0 (sampling_string, gst_jpeg2000_sampling_strings[i])) |
| return (i + 1); |
| } |
| return GST_JPEG2000_SAMPLING_NONE; |
| |
| |
| } |
| |
| /* convert GstJPEG2000Sampling enum to string */ |
| const gchar * |
| gst_jpeg2000_sampling_to_string (GstJPEG2000Sampling sampling) |
| { |
| g_return_val_if_fail (sampling > 0 |
| && sampling <= G_N_ELEMENTS (gst_jpeg2000_sampling_strings), NULL); |
| return gst_jpeg2000_sampling_strings[sampling - 1]; |
| } |
| |
| /* check if @sampling is in RGB color space */ |
| gboolean |
| gst_jpeg2000_sampling_is_rgb (GstJPEG2000Sampling sampling) |
| { |
| return sampling == GST_JPEG2000_SAMPLING_RGB || |
| sampling == GST_JPEG2000_SAMPLING_RGBA || |
| sampling == GST_JPEG2000_SAMPLING_BGR |
| || sampling == GST_JPEG2000_SAMPLING_BGRA; |
| } |
| |
| /* check if @sampling is in YUV color space */ |
| gboolean |
| gst_jpeg2000_sampling_is_yuv (GstJPEG2000Sampling sampling) |
| { |
| return sampling == GST_JPEG2000_SAMPLING_YBRA4444_EXT || |
| sampling == GST_JPEG2000_SAMPLING_YBR444 || |
| sampling == GST_JPEG2000_SAMPLING_YBR422 || |
| sampling == GST_JPEG2000_SAMPLING_YBR420 |
| || sampling == GST_JPEG2000_SAMPLING_YBR410; |
| } |
| |
| /* check if @sampling is in GRAYSCALE color space */ |
| gboolean |
| gst_jpeg2000_sampling_is_mono (GstJPEG2000Sampling sampling) |
| { |
| return sampling == GST_JPEG2000_SAMPLING_GRAYSCALE; |
| } |
| |
| /* string values corresponding to GstJPEG2000Colorspace enums */ |
| static const gchar *gst_jpeg2000_colorspace_strings[] = { |
| "sRGB", |
| "sYUV", |
| "GRAY", |
| }; |
| |
| /* convert GstJPEG2000Colorspace enum to string */ |
| GstJPEG2000Colorspace |
| gst_jpeg2000_colorspace_from_string (const gchar * colorspace_string) |
| { |
| GstJPEG2000Colorspace i; |
| |
| g_return_val_if_fail (colorspace_string != NULL, |
| GST_JPEG2000_COLORSPACE_NONE); |
| |
| for (i = 0; i < G_N_ELEMENTS (gst_jpeg2000_colorspace_strings); ++i) { |
| if (!g_strcmp0 (colorspace_string, gst_jpeg2000_colorspace_strings[i])) |
| return (i + 1); |
| } |
| return GST_JPEG2000_COLORSPACE_NONE; |
| } |
| |
| /* convert string to GstJPEG2000Colorspace enum */ |
| const gchar * |
| gst_jpeg2000_colorspace_to_string (GstJPEG2000Colorspace colorspace) |
| { |
| g_return_val_if_fail (colorspace > GST_JPEG2000_COLORSPACE_NONE |
| && colorspace <= G_N_ELEMENTS (gst_jpeg2000_colorspace_strings), NULL); |
| |
| return gst_jpeg2000_colorspace_strings[colorspace - 1]; |
| } |