You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
355 lines
6.6 KiB
355 lines
6.6 KiB
/*
|
|
* Copyright (C) 2012 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/*
|
|
* @file csc.h
|
|
*
|
|
* @brief color space convertion abstract header
|
|
*
|
|
* @author Pyoungjae Jung (pjet.jung@samsung.com)
|
|
*
|
|
* @version 1.0
|
|
*
|
|
* @history
|
|
* 2011.12.27 : Create
|
|
*/
|
|
|
|
#ifndef CSC_H
|
|
#define CSC_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum _CSC_ERRORCODE {
|
|
CSC_ErrorNone = 0,
|
|
CSC_Error,
|
|
CSC_ErrorNotInit,
|
|
CSC_ErrorInvalidAddress,
|
|
CSC_ErrorUnsupportFormat,
|
|
CSC_ErrorNotImplemented
|
|
} CSC_ERRORCODE;
|
|
|
|
typedef enum _CSC_METHOD {
|
|
CSC_METHOD_SW = 0,
|
|
CSC_METHOD_HW,
|
|
CSC_METHOD_PREFER_HW
|
|
} CSC_METHOD;
|
|
|
|
/*
|
|
* change hal pixel format to omx pixel format
|
|
*
|
|
* @param hal_format
|
|
* hal pixel format[in]
|
|
*
|
|
* @return
|
|
* omx pixel format
|
|
*/
|
|
unsigned int hal_2_omx_pixel_format(
|
|
unsigned int hal_format);
|
|
|
|
/*
|
|
* change omx pixel format to hal pixel format
|
|
*
|
|
* @param hal_format
|
|
* omx pixel format[in]
|
|
*
|
|
* @return
|
|
* hal pixel format
|
|
*/
|
|
unsigned int omx_2_hal_pixel_format(
|
|
unsigned int omx_format);
|
|
|
|
/*
|
|
* Init CSC handle
|
|
*
|
|
* @return
|
|
* csc handle
|
|
*/
|
|
void *csc_init(
|
|
CSC_METHOD *method);
|
|
|
|
/*
|
|
* Deinit CSC handle
|
|
*
|
|
* @param handle
|
|
* CSC handle[in]
|
|
*
|
|
* @return
|
|
* error code
|
|
*/
|
|
CSC_ERRORCODE csc_deinit(
|
|
void *handle);
|
|
|
|
/*
|
|
* get color space converter method
|
|
*
|
|
* @param handle
|
|
* CSC handle[in]
|
|
*
|
|
* @param method
|
|
* CSC method[out]
|
|
*
|
|
* @return
|
|
* error code
|
|
*/
|
|
CSC_ERRORCODE csc_get_method(
|
|
void *handle,
|
|
CSC_METHOD *method);
|
|
|
|
/*
|
|
* Get source format.
|
|
*
|
|
* @param handle
|
|
* CSC handle[in]
|
|
*
|
|
* @param width
|
|
* address of image width[out]
|
|
*
|
|
* @param height
|
|
* address of image height[out]
|
|
*
|
|
* @param crop_left
|
|
* address of image left crop size[out]
|
|
*
|
|
* @param crop_top
|
|
* address of image top crop size[out]
|
|
*
|
|
* @param crop_width
|
|
* address of cropped image width[out]
|
|
*
|
|
* @param crop_height
|
|
* address of cropped image height[out]
|
|
*
|
|
* @param color_format
|
|
* address of source color format(HAL format)[out]
|
|
*
|
|
* @return
|
|
* error code
|
|
*/
|
|
CSC_ERRORCODE csc_get_src_format(
|
|
void *handle,
|
|
unsigned int *width,
|
|
unsigned int *height,
|
|
unsigned int *crop_left,
|
|
unsigned int *crop_top,
|
|
unsigned int *crop_width,
|
|
unsigned int *crop_height,
|
|
unsigned int *color_format,
|
|
unsigned int *cacheable);
|
|
|
|
/*
|
|
* Set source format.
|
|
* Don't call each converting time.
|
|
* Pls call this function as below.
|
|
* 1. first converting time
|
|
* 2. format is changed
|
|
*
|
|
* @param handle
|
|
* CSC handle[in]
|
|
*
|
|
* @param width
|
|
* image width[in]
|
|
*
|
|
* @param height
|
|
* image height[in]
|
|
*
|
|
* @param crop_left
|
|
* image left crop size[in]
|
|
*
|
|
* @param crop_top
|
|
* image top crop size[in]
|
|
*
|
|
* @param crop_width
|
|
* cropped image width[in]
|
|
*
|
|
* @param crop_height
|
|
* cropped image height[in]
|
|
*
|
|
* @param color_format
|
|
* source color format(HAL format)[in]
|
|
*
|
|
* @return
|
|
* error code
|
|
*/
|
|
CSC_ERRORCODE csc_set_src_format(
|
|
void *handle,
|
|
unsigned int width,
|
|
unsigned int height,
|
|
unsigned int crop_left,
|
|
unsigned int crop_top,
|
|
unsigned int crop_width,
|
|
unsigned int crop_height,
|
|
unsigned int color_format,
|
|
unsigned int cacheable);
|
|
|
|
/*
|
|
* Get destination format.
|
|
*
|
|
* @param handle
|
|
* CSC handle[in]
|
|
*
|
|
* @param width
|
|
* address of image width[out]
|
|
*
|
|
* @param height
|
|
* address of image height[out]
|
|
*
|
|
* @param crop_left
|
|
* address of image left crop size[out]
|
|
*
|
|
* @param crop_top
|
|
* address of image top crop size[out]
|
|
*
|
|
* @param crop_width
|
|
* address of cropped image width[out]
|
|
*
|
|
* @param crop_height
|
|
* address of cropped image height[out]
|
|
*
|
|
* @param color_format
|
|
* address of color format(HAL format)[out]
|
|
*
|
|
* @return
|
|
* error code
|
|
*/
|
|
CSC_ERRORCODE csc_get_dst_format(
|
|
void *handle,
|
|
unsigned int *width,
|
|
unsigned int *height,
|
|
unsigned int *crop_left,
|
|
unsigned int *crop_top,
|
|
unsigned int *crop_width,
|
|
unsigned int *crop_height,
|
|
unsigned int *color_format,
|
|
unsigned int *cacheable);
|
|
|
|
/*
|
|
* Set destination format
|
|
* Don't call each converting time.
|
|
* Pls call this function as below.
|
|
* 1. first converting time
|
|
* 2. format is changed
|
|
*
|
|
* @param handle
|
|
* CSC handle[in]
|
|
*
|
|
* @param width
|
|
* image width[in]
|
|
*
|
|
* @param height
|
|
* image height[in]
|
|
*
|
|
* @param crop_left
|
|
* image left crop size[in]
|
|
*
|
|
* @param crop_top
|
|
* image top crop size[in]
|
|
*
|
|
* @param crop_width
|
|
* cropped image width[in]
|
|
*
|
|
* @param crop_height
|
|
* cropped image height[in]
|
|
*
|
|
* @param color_format
|
|
* destination color format(HAL format)[in]
|
|
*
|
|
* @return
|
|
* error code
|
|
*/
|
|
CSC_ERRORCODE csc_set_dst_format(
|
|
void *handle,
|
|
unsigned int width,
|
|
unsigned int height,
|
|
unsigned int crop_left,
|
|
unsigned int crop_top,
|
|
unsigned int crop_width,
|
|
unsigned int crop_height,
|
|
unsigned int color_format,
|
|
unsigned int cacheable);
|
|
|
|
/*
|
|
* Setup source buffer
|
|
* set_format func should be called before this this func.
|
|
*
|
|
* @param handle
|
|
* CSC handle[in]
|
|
*
|
|
* @param src_buffer
|
|
* source buffer pointer array[in]
|
|
*
|
|
* @param y
|
|
* y or RGB destination pointer[in]
|
|
*
|
|
* @param u
|
|
* u or uv destination pointer[in]
|
|
*
|
|
* @param v
|
|
* v or none destination pointer[in]
|
|
*
|
|
* @return
|
|
* error code
|
|
*/
|
|
CSC_ERRORCODE csc_set_src_buffer(
|
|
void *handle,
|
|
unsigned char *y,
|
|
unsigned char *u,
|
|
unsigned char *v,
|
|
int ion_fd);
|
|
|
|
/*
|
|
* Setup destination buffer
|
|
*
|
|
* @param handle
|
|
* CSC handle[in]
|
|
*
|
|
* @param y
|
|
* y or RGB destination pointer[in]
|
|
*
|
|
* @param u
|
|
* u or uv destination pointer[in]
|
|
*
|
|
* @param v
|
|
* v or none destination pointer[in]
|
|
*
|
|
* @return
|
|
* error code
|
|
*/
|
|
CSC_ERRORCODE csc_set_dst_buffer(
|
|
void *handle,
|
|
unsigned char *y,
|
|
unsigned char *u,
|
|
unsigned char *v,
|
|
int ion_fd);
|
|
|
|
/*
|
|
* Convert color space with presetup color format
|
|
*
|
|
* @param handle
|
|
* CSC handle[in]
|
|
*
|
|
* @return
|
|
* error code
|
|
*/
|
|
CSC_ERRORCODE csc_convert(
|
|
void *handle);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|