077ef70b0c
* arch: cxd56xx: Add size limitation for I2C SCU xfer This is a fw restriction, unroll loop because it can be transfer up to 16 bytes. * arch: cxd56xx: Fix lack of leave_critical_section add the missing leave_critical_section * arch: cxd56xx: Remove unnecessary file this header is duplicate and we can remove it * arch: cxd56xx: Cosmetic change remove space after function * arch: cxd56xx: update topreg registers the topreg registers are updated to match the cxd5602 HW * arch: cxd56xx: Add voltage setting for low battery notification Add voltage setting for low battery notification * arch: cxd56xx: Improve perfomance of SD card Improve a problem that the clock of SD Host Controller is lower than the expected value in SDR25 transfer mode. * arch: cxd56xx: Cosmetic changes cleanup to comply with coding standard * boards: cxd56xx: Cosmetic changes updates to comply with coding standard * boards: cxd56xx: Fix SD card cannot mount issue SD card cannot mount when connecting and disconnecting three times or more due to wrong state of parameter 'initialized'. This change enables to skip swtching initialized state when mount failed.
152 lines
5.0 KiB
C
152 lines
5.0 KiB
C
/***************************************************************************
|
|
* boards/arm/cxd56xx/spresense/include/cxd56_imageproc.h
|
|
*
|
|
* Copyright 2018 Sony Semiconductor Solutions Corporation
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
* 3. Neither the name of Sony Corporation nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifndef __BOARDS_ARM_CXD56XX_SPRESENSE_INCLUDE_CXD56_IMAGEPROC_H
|
|
#define __BOARDS_ARM_CXD56XX_SPRESENSE_INCLUDE_CXD56_IMAGEPROC_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
/* Structure of rectangle coordinates from left top point to
|
|
* right buttom point.
|
|
*/
|
|
|
|
struct imageproc_rect_s
|
|
{
|
|
uint16_t x1; /* X coordinate of left top point */
|
|
uint16_t y1; /* Y coordinate of left top point */
|
|
uint16_t x2; /* X coordinate of rignt bottom point */
|
|
uint16_t y2; /* Y coordinate of rignt bottom point */
|
|
};
|
|
typedef struct imageproc_rect_s imageproc_rect_t;
|
|
|
|
/* Initialize imageproc library
|
|
*/
|
|
|
|
void imageproc_initialize(void);
|
|
|
|
/* Finalize imageproc library
|
|
*/
|
|
|
|
void imageproc_finalize(void);
|
|
|
|
/* Convert color format (YUV to RGB)
|
|
*
|
|
* TODO: need more description here
|
|
*
|
|
* [in,out] ibuf: image
|
|
* [in] hsize: Horizontal size
|
|
* [in] vsize: Vertical size
|
|
*/
|
|
|
|
void imageproc_convert_yuv2rgb(uint8_t * ibuf, uint32_t hsize,
|
|
uint32_t vsize);
|
|
|
|
/* Convert color format (YUV to grayscale)
|
|
*
|
|
* TODO: need more description here
|
|
*
|
|
* [in] ibuf: Input image
|
|
* [out] obuf: Output buffer
|
|
* [in] hsize: Horizontal size
|
|
* [in] vsize: Vertical size
|
|
*/
|
|
|
|
void imageproc_convert_yuv2gray(uint8_t * ibuf, uint8_t * obuf,
|
|
size_t hsize, size_t vsize);
|
|
|
|
/* Resize image
|
|
*
|
|
* Resize image specified by ibuf to ohsize, ovsize. Processed
|
|
* image will be stored to obuf.
|
|
*
|
|
* For ohsize and ovsize, specify output size calculated by multiply
|
|
* in range 1/2^n to 2^n (n=0..5) against ihsize and ivsize.
|
|
*
|
|
* This function can be processing for YUV422 color format.
|
|
* So all of specified sizes must be multiple of 2.
|
|
*
|
|
* And there is limitation about output size below.
|
|
*
|
|
* * Shrink
|
|
* + Horizontal size least 12 pixels
|
|
* + Vertical size least 12 pixels
|
|
* * Enlarge
|
|
* + Horizontal size up to 768 pixels
|
|
* + Vertical size up to 1024 pixels
|
|
*
|
|
* [in] ibuf: Input image
|
|
* [in] ihsize: Input horizontal size
|
|
* [in] ivsize: Input vertical size
|
|
* [out] obuf: Output buffer
|
|
* [in] ohsize: Output horizontal size
|
|
* [in] ovsize: Output vertical size
|
|
* [in] bpp: Bits per pixel (16 or 8)
|
|
*
|
|
* return 0 on success, otherwise error code.
|
|
*/
|
|
|
|
int imageproc_resize(uint8_t * ibuf, uint16_t ihsize, uint16_t ivsize,
|
|
uint8_t * obuf, uint16_t ohsize, uint16_t ovsize,
|
|
int bpp);
|
|
|
|
/* Clip and Resize image
|
|
*
|
|
* [in] ibuf: Input image
|
|
* [in] ihsize: Input horizontal size
|
|
* [in] ivsize: Input vertical size
|
|
* [out] obuf: Output buffer
|
|
* [in] ohsize: Output horizontal size
|
|
* [in] ovsize: Output vertical size
|
|
* [in] bpp: Bits per pixel (16 or 8)
|
|
* [in] clip_rect: Clipping rectangle on input image.
|
|
*
|
|
* return 0 on success, otherwise error code.
|
|
*/
|
|
|
|
int imageproc_clip_and_resize(uint8_t * ibuf, uint16_t ihsize,
|
|
uint16_t ivsize, uint8_t * obuf,
|
|
uint16_t ohsize, uint16_t ovsize, int bpp,
|
|
imageproc_rect_t * clip_rect);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __BOARDS_ARM_CXD56XX_SPRESENSE_INCLUDE_CXD56_IMAGEPROC_H */
|