hw scale user guide
1、功能概述
本文档主要介绍了硬件缩放的功能以及API使用方法。
2、参考代码
参考工程为 DOORBELL工程
参考组件代码在
components/image_codec_unit/src/pipeline/lcd_scale_pipeline.cSCALE驱动代码参考 hw_scale
3、缩放API使用
缩放的使用场景有两种,一种是整帧缩放,对应的解码为整帧解码,一种为按行解码,对应的为按行缩放;
3.1、整帧缩放
整帧缩放对应的代码只需要调用API
bk_err_t lcd_scale_init(void)
bk_err_t lcd_hw_scale(frame_buffer_t *src, frame_buffer_t *dst)
比如:
lcd_info.scale_frame->width = (lcd_info.scale_ppi >> 16);
lcd_info.scale_frame->height = (lcd_info.scale_ppi & 0xFFFF);
lcd_info.scale_frame->fmt = frame->fmt;
lcd_info.scale_frame->length = scale_length;
lcd_hw_scale(frame, lcd_info.scale_frame);
3.1、按行缩放
按行缩放比较复杂,主要涉及的API有:
bk_err_t scale_task_open(lcd_scale_t *lcd_scale)
void bk_jdec_buffer_request_register(pipeline_module_t module, mux_request_callback_t cb, mux_reset_callback_t reset_cb)
bk_err_t bk_scale_encode_request(pipeline_encode_request_t *request, mux_callback_t cb)
比如:
bk_jdec_buffer_request_register(PIPELINE_MOD_SCALE, bk_scale_encode_request, bk_scale_reset_request);
该函数将scale功能注册到解码模块,当行解码完成后,执行行缩放,其中 ``bk_scale_encode_request``是解码后缩放的请求,其两个参数分别为:
- pipeline_encode_request_t *request //请求中携带的图片信息
- mux_callback_t cb // 注册到scale模块,缩放完成后,调用的回调函数
具体的使用方法详见 `components/image_codec_unit/src/pipeline