C++程序  |  238行  |  4.11 KB

/*
 *
 * Copyright 2012 Samsung Electronics S.LSI Co. LTD
 *
 * 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      exynos_rotator.h
 * \brief     header file for exynos_rotator HAL
 * \author    Sunmi Lee (carrotsm.lee@samsung.com)
 * \date      2012/03/05
 *
 * <b>Revision History: </b>
 * - 2012/03/05 : Sunmi Lee (carrotsm.lee@samsung.com) \n
 *   Create
 *
 */

/*!
 * \defgroup exynos_rotator
 * \brief API for rotator
 * \addtogroup Exynos
 */

#ifndef _EXYNOS_ROTATOR_H_
#define _EXYNOS_ROTATOR_H_

#ifdef __cplusplus
extern "C" {
#endif

/*!
 * Create librotator handle
 *
 * \ingroup exynos_rotator
 *
 * \return
 *   librotator handle
 */
void *exynos_rotator_create(void);

/*!
 * Destroy librotator handle
 *
 * \ingroup exynos_rotator
 *
 * \param handle
 *   librotator handle[in]
 */
void exynos_rotator_destroy(
    void *handle);

/*!
 * Set source format.
 *
 * \ingroup exynos_rotator
 *
 * \param handle
 *   librotator 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 v4l2_colorformat
 *   color format[in]
 *
 * \param cacheable
 *   ccacheable[in]
 *
 * \return
 *   error code
 */
int exynos_rotator_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 v4l2_colorformat,
    unsigned int cacheable);

/*!
 * Set destination format.
 *
 * \ingroup exynos_rotator
 *
 * \param handle
 *   librotator 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 v4l2_colorformat
 *   color format[in]
 *
 * \param cacheable
 *   ccacheable[in]
 *
 * \return
 *   error code
 */
int exynos_rotator_set_dst_format(
    void        *handle,
    unsigned int width,
    unsigned int height,
    unsigned int crop_left,
    unsigned int crop_top,
    unsigned int v4l2_colorformat,
    unsigned int cacheable);

/*!
 * Set rotation.
 *
 * \ingroup exynos_rotator
 *
 * \param handle
 *   librotator handle[in]
 *
 * \param rotation
 *   image rotation. It should be multiple of 90[in]
 *
 * \return
 *   error code
 */
int exynos_rotator_set_rotation(
    void *handle,
    int   rotation);

/*!
 * Set source buffer
 *
 * \ingroup exynos_rotator
 *
 * \param handle
 *   librotator handle[in]
 *
 * \param addr
 *   buffer pointer array[in]
 *
 * \return
 *   error code
 */
int exynos_rotator_set_src_addr(
    void *handle,
    void *addr[3]);

/*!
 * Set destination buffer
 *
 * \ingroup exynos_rotator
 *
 * \param handle
 *   librotator handle[in]
 *
 * \param addr
 *   buffer pointer array[in]
 *
 * \return
 *   error code
 */
int exynos_rotator_set_dst_addr(
    void *handle,
    void *addr[3]);

/*!
 * Convert color space with presetup color format
 *
 * \ingroup exynos_rotator
 *
 * \param handle
 *   librotator handle[in]
 *
 * \return
 *   error code
 */
int exynos_rotator_convert(
    void *handle);

/*!
 * api for local path rotator. Not yet support.
 *
 * \ingroup exynos_rotator
 */
int exynos_rotator_connect(
    void *handle,
    void *hw);

/*!
 * api for local path rotator. Not yet support.
 *
 * \ingroup exynos_rotator
 */
int exynos_rotator_disconnect(
    void *handle,
    void *hw);

#ifdef __cplusplus
}
#endif

#endif /*EXYNOS_ROTATORALER_H_*/