179 lines
3.7 KiB
C
Executable File
179 lines
3.7 KiB
C
Executable File
|
|
#pragma once
|
|
|
|
#include "driver/lcd_types.h"
|
|
#include <driver/hw_scale_types.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
|
|
/* @brief Overview about this API header
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* @brief hw scale API
|
|
* @{
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
* @brief This API to init scale 0 or 1
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t bk_hw_scale_driver_init(scale_id_t id);
|
|
|
|
/**
|
|
* @brief This API use to deinit scale0/scale1
|
|
* @param scale0/scale1
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t bk_hw_scale_driver_deinit(scale_id_t id);
|
|
|
|
/**
|
|
* @brief This API use to register scale isr
|
|
*
|
|
* @param isr isr_func
|
|
* @param scale params, must config by scale_drv_config_t
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*
|
|
*/
|
|
bk_err_t bk_hw_scale_isr_register(scale_id_t id, hw_scale_isr_t isr, void *param);
|
|
|
|
|
|
/**
|
|
* @brief This API use to unregister scale isr
|
|
*
|
|
* @param scale0/scale1
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t bk_hw_scale_isr_unregister(scale_id_t id);
|
|
|
|
|
|
/**
|
|
* @brief This API use to enable or display scale interrupt
|
|
*
|
|
* @param scale0/scale1
|
|
* 0/1
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t bk_hw_scale_int_enable(scale_id_t id, bool en);
|
|
|
|
|
|
/**
|
|
* @brief This API use to scale a complete frame not by line scale
|
|
*
|
|
* param: scale0/scale1
|
|
* param: scale_drv_config_t
|
|
*
|
|
* Usage example:
|
|
*
|
|
* scale_param->drv_config.src_width = src->width;
|
|
* scale_param->drv_config.dst_width = dst->width;
|
|
* scale_param->drv_config.src_height = src->height;
|
|
* scale_param->drv_config.dst_height = dst->height;
|
|
*
|
|
* scale_param->drv_config.pixel_fmt = src->fmt;
|
|
* scale_param->drv_config.scale_mode = FRAME_SCALE;
|
|
* scale_param->drv_config.frame_complete = scale_frame_cb;
|
|
*
|
|
* scale_param->drv_config.line_cycle = BLOCK_LINE_COUNT;
|
|
* scale_param->drv_config.line_mask = 0x1F;
|
|
* scale_param->drv_config.src_addr = src->frame;
|
|
* scale_param->drv_config.dst_addr = dst->frame;
|
|
*
|
|
* hw_scale_frame(HW_SCALE0, &scale_param->drv_config);
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t hw_scale_frame(scale_id_t id, scale_drv_config_t *scale_drv_config);
|
|
|
|
/**
|
|
* @brief This API use to by line scale
|
|
*
|
|
* param: scale0/scale1
|
|
* param: scale_drv_config_t
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t hw_scale_block_config(scale_id_t id, scale_drv_config_t *scale_drv_config);
|
|
|
|
/**
|
|
* @brief start scale, reference lcd_scale_pipeline.c
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t hw_scale_block_start(scale_id_t id, scale_block_t *src, scale_block_t *dst);
|
|
|
|
/**
|
|
* @brief start scale, reference lcd_scale_pipeline.c
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t hw_scale_dest_block_fill(scale_id_t id, scale_block_t *scale_block);
|
|
|
|
/**
|
|
* @brief start scale, reference lcd_scale_pipeline.c
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t hw_scale_source_block_fill(scale_id_t id, scale_block_t *scale_block);
|
|
|
|
/**
|
|
* @brief stop scale
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
bk_err_t bk_hw_scale_stop(scale_id_t id);
|
|
|
|
/**
|
|
* @brief free 7.5K memcory by API bk_hw_scale_driver_init malloc
|
|
*
|
|
* @return
|
|
* - BK_OK: succeed
|
|
* - others: other errors.
|
|
*/
|
|
|
|
bk_err_t bk_hw_scale_mem_free(scale_id_t id);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|