A311D SOC integrated the dedicated hardware module to proceed the picture resizing and picture color space conversion. It supported multiple channels processing in parallel and the maximum channels depend on the size of configured DMA buffer in kernel.
The libamlpic.so is developed to proceed the required picture conversion in a easy way. Please follow the example code for your development.
The example code are under git repository: a311d/pic_convert
Step 1: To initialize the picture converter
#include "amlpic.h"
PicSetting_t picSetting;
AMLPIC_HANDLE_t picHandle;
AMLPIC_HANDLE_t picScaleHandle;
picSetting.op = PIC_CONVERT_user2user;
picSetting.src.width = <input picture width>;
picSetting.src.height = <input picture height>;
picSetting.src.format = <input picture format with PicFormat_t type>;
picSetting.dest.width = <output picture width>;;
picSetting.dest.height = <output picture height>;
picSetting.dest.format = <output picture format with PicFormat_t type>;
// To initialize the picture converter
picHandle = amlPicInit(&picSetting);
Step 2: To proceed the picture conversions
while (picture data buffer input) {
//See amlpic.h for detail explanations
amlPicProc();
}
Step 3: To release the picture converter after all are done
amlPicRelease(picScaleHandle);