A311D芯片集成了硬件模块来实现图片的color space转换和resize操作。可以实现多路并发地处理,最大处理路数取决于内存DMA buffer的大小(在kernel中配置)。目前板子配置的DMA buffer大小为256MB。
按照下面的步骤来实现你的图片color space的转换和resize操作:
1)请参考文章:开发环境准备
2)请参照代码树/pic_convert/src 下的color_space.example来实现color space转换的功能
参考代码如下:
#include "amlpic.h"
PicSetting_t pic_color_space;
AMLPIC_HANDLE_t colorSpaceHandle;
pic_color_space.op = PIC_OP_FORMAT_CONVERT;
/*the decoded video frame from hardware decoder is PIC_FORMAT_NV12*/
pic_color_space.config_t.fmt_con.src_format = <PicFormat_t定义的图片像素格式>;
pic_color_space.config_t.fmt_con.dest_format = <PicFormat_t定义的图片像素格式>;
pic_color_space.config_t.fmt_con.width = <图片的宽度>;
pic_color_space.config_t.fmt_con.height = <图片的高度>;
//在开始图片转换前初始化
colorSpaceHandle = amlPicInit(&pic_color_space);
while (一帧一帧图片数据输入) {
//amlpic.h的注释来调用处理函数
amlPicProc();
}
//所有图片处理完成后,释放colorSpaceHandle
amlPicRelease(colorSpaceHandle);
3)请参照代码树/pic_convert/src 下的pic_resize.example来实现resize图片大小的功能
参考代码如下:
#include "amlpic.h"
PicSetting_t pic_scale;
AMLPIC_HANDLE_t picScaleHandle;
pic_scale.op = PIC_OP_SCALE;
pic_scale.config_t.pic_scl.format = <PicFormat_t定义的图片像素格式>;
pic_scale.config_t.pic_scl.src_width = <原始的图片宽度>;
pic_scale.config_t.pic_scl.src_height = <原始的图片高度>;
pic_scale.config_t.pic_scl.dest_width = <resize之后的图片宽度>;
pic_scale.config_t.pic_scl.dest_height = <resize之后的图片高度>;
//在开始图片resize前初始化
picScaleHandle = amlPicInit(&pic_scale);
while (一帧一帧图片数据输入) {
//amlpic.h的注释来调用处理函数
amlPicProc();
}
//所有图片处理完成后,释放picScaleHandle
amlPicRelease(picScaleHandle);
4)参照Makefile.example改写Makefile文件后,编译代码。scp到板子侧来运行。