4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: YoungHun Kim <yh8004.kim@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
22 #ifndef __MM_UTIL_GSTCS_H__
23 #define __MM_UTIL_GSTCS_H__
33 #define IMAGE_FORMAT_LABEL_BUFFER_SIZE 9
37 MM_UTIL_ROTATE_0, /**< Rotation 0 degree - no effect */
38 MM_UTIL_ROTATE_90, /**< Rotation 90 degree */
39 MM_UTIL_ROTATE_180, /**< Rotation 180 degree */
40 MM_UTIL_ROTATE_270, /**< Rotation 270 degree */
41 MM_UTIL_ROTATE_FLIP_HORZ, /**< Flip horizontal */
42 MM_UTIL_ROTATE_FLIP_VERT, /**< Flip vertial */
43 MM_UTIL_ROTATE_NUM /**< Number of rotation types */
44 } mm_util_img_rotate_type_e;
56 /* YUV planar format */
57 MM_UTIL_IMG_FMT_YUV420 = 0x00, /**< YUV420 format - planer */
58 MM_UTIL_IMG_FMT_YUV422, /**< YUV422 format - planer */
59 MM_UTIL_IMG_FMT_I420, /**< YUV420 format - planar */
60 MM_UTIL_IMG_FMT_NV12, /**< NV12 format - planer */
62 /* YUV packed format */
63 MM_UTIL_IMG_FMT_UYVY, /**< UYVY format - YUV packed format */
64 MM_UTIL_IMG_FMT_YUYV, /**< YUYV format - YUV packed format */
67 MM_UTIL_IMG_FMT_RGB565, /**< RGB565 pixel format */
68 MM_UTIL_IMG_FMT_RGB888, /**< RGB888 pixel format */
69 MM_UTIL_IMG_FMT_ARGB8888, /**< ARGB8888 pixel format */
72 MM_UTIL_IMG_FMT_BGRA8888, /**< BGRA8888 pixel format */
73 MM_UTIL_IMG_FMT_RGBA8888, /**< RGBA8888 pixel format */
74 MM_UTIL_IMG_FMT_BGRX8888, /**<BGRX8888 pixel format */
75 /* non-standard format */
76 MM_UTIL_IMG_FMT_NV12_TILED, /**< Customized color format in s5pc110 */
77 MM_UTIL_IMG_FMT_NUM, /**< Number of image formats */
78 } mm_util_img_format_e;
81 * Image Process Info for dlopen
83 typedef struct _imgp_info_s
85 char *input_format_label;
86 mm_util_img_format_e src_format;
87 unsigned int src_width;
88 unsigned int src_height;
89 char *output_format_label;
90 mm_util_img_format_e dst_format;
91 unsigned int dst_width;
92 unsigned int dst_height;
93 unsigned int output_stride;
94 unsigned int output_elevation;
95 mm_util_img_rotate_type_e angle;
100 * @remark colorspace converter I420, nv12 etc <-> RGB888 or ARGB8888 etc
102 * @remark resize if input_width != output_width or input_height != output_height
104 * @remark rotate flip the image
105 * @param _imgp_type_e file [in] convert / resize / rotate
106 * @param input_ file [in] "filename.yuv" or "filename,rgb" etc
107 * @param input_format_lable, output_format_lable [in] I420 or rgb888 etc
108 * @param input_width, input_height, output_width, output_height [in] int value
109 * @param output_stride, output_elevation [in] output_width value or output_height + padding (using round_up function )
111 * @return This function returns gstremer image processor result value
112 * if the resule is -1, then do not execute when the colopsapce converter is not supported
113 * else if the resule is 0, then you can use output_image pointer(char** value)
117 mm_imgp(imgp_info_s* pImgp_info, unsigned char *src, unsigned char *dst, imgp_type_e _imgp_type_e);
123 #endif /*__MM_UTIL_GSTCS_H__*/