123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558 |
- #include <stdio.h>
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include "csi_dsp_api.h"
- #include "csi_dsp_task_defs.h"
- #include "csi_dsp_post_process_defs.h"
- #include "CppUTest/TestHarness.h"
- #include "CppUTest/CommandLineTestRunner.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "video_mem.h"
- #ifdef __cplusplus
- }
- #endif
- TEST_GROUP(DspViEnhanceProcessTest)
- {
- void setup()
- {
- instance = csi_dsp_create_instance(0);
- if(!instance)
- {
- FAIL_TEST("create fail\n");
- }
- if( VMEM_create(&mem_allocor) <0)
- {
- FAIL_TEST("open mem_alloc_fd fail\n");
- }
- }
- void teardown()
- {
- // csi_dsp_destroy_task(task);
- csi_dsp_delete_instance(instance);
- VMEM_destroy(mem_allocor);
- }
- int reqDmaBuffer(VmemParams *params)
- {
- if(VMEM_allocate(mem_allocor, params))
- {
- return -1;
- }
- printf("%s,alloct dma buf @ phy:%lx\n",__FUNCTION__,params->phy_address);
- if(VMEM_export(mem_allocor,params))
- {
- return -1;
- }
- printf("%s,export dma buf @fd:%x\n",__FUNCTION__,params->fd);
- return 0;
- }
- int releaseDmaBuffer(VmemParams *params)
- {
- VMEM_free(mem_allocor, params);
- }
- void *instance;
- void *mem_allocor;
- // void *task;
- };
- TEST(DspViEnhanceProcessTest,Isp2Dsp2RyProcessTestBasic)
- {
- void *vi_task= csi_dsp_create_task(instance,CSI_DSP_TASK_HW_TO_HW);
- if(!vi_task)
- {
- FAIL_TEST("task create fail\n");
- }
- if(csi_dsp_create_reporter(instance))
- {
- FAIL_TEST("reporter create fail\n");
- }
- struct csi_dsp_task_fe_para config_params;
- if(csi_dsp_task_get_frontend(vi_task,&config_params))
- {
- FAIL_TEST("get isp config fail\n");
- }
- config_params.frontend_type = CSI_DSP_FE_TYPE_ISP;
- config_params.task_id = -1;
- config_params.isp_param.id=0;
- config_params.isp_param.hor=640;
- config_params.isp_param.ver=480;
- config_params.isp_param.data_fmt=CSI_DSP_IMG_FMT_RAW12_ALGIN;
- config_params.isp_param.line_in_entry=640*2;
- config_params.isp_param.line_stride=640*2;
- config_params.isp_param.buffer_size=640*2*16*2;
- config_params.isp_param.buffer_addr=0xb0000000;
- if(csi_dsp_task_config_frontend(vi_task,&config_params))
- {
- FAIL_TEST("isp config fail\n");
- }
- struct csi_dsp_task_be_para post_config;
- if(csi_dsp_task_get_backend(vi_task,&post_config))
- {
- FAIL_TEST("get post-isp config fail\n");
- }
-
- post_config.backend_type = CSI_DSP_BE_TYPE_POST_ISP;
- post_config.task_id = -1;
- post_config.post_isp_param.id=0;
- post_config.post_isp_param.hor=640;
- post_config.post_isp_param.ver=480;
- post_config.post_isp_param.data_fmt=CSI_DSP_IMG_FMT_RAW12_ALGIN;
- post_config.post_isp_param.line_in_entry=640*2;
- post_config.post_isp_param.line_stride=640*2;
- post_config.post_isp_param.buffer_size=640*2*16*2;
- post_config.post_isp_param.buffer_addr=0xb0000000;
- if(csi_dsp_task_config_backend(vi_task,&post_config))
- {
- FAIL_TEST("post-isp config fail\n");
- }
- struct csi_dsp_algo_config_par alog_config={
- .algo_id=0,
- .sett_ptr =NULL,
- .sett_length =0,
- };
- if(csi_dsp_task_config_algo(vi_task,&alog_config))
- {
- FAIL_TEST("algo kernel config fail\n");
- }
- if(csi_dsp_task_register_cb(vi_task,NULL,NULL,32))
- {
- FAIL_TEST("algo kernel start fail\n");
- }
- if(csi_dsp_task_start(vi_task))
- {
- FAIL_TEST("task start fail\n");
- }
- if(csi_dsp_task_stop(vi_task))
- {
- FAIL_TEST("task stop fail\n");
- }
- if(csi_dsp_ps_task_unregister_cb(vi_task))
- {
- FAIL_TEST("unregister_cb fail\n");
- }
- if(csi_dsp_destroy_reporter(instance))
- {
- FAIL_TEST("reporter destroy fail\n");
- }
- csi_dsp_destroy_task(vi_task);
- }
- TEST(DspViEnhanceProcessTest,Isp2Dsp2RyProcessTestWithPorperty)
- {
- void *vi_task= csi_dsp_create_task(instance,CSI_DSP_TASK_HW_TO_HW);
- if(!vi_task)
- {
- FAIL_TEST("task create fail\n");
- }
- if(csi_dsp_create_reporter(instance))
- {
- FAIL_TEST("reporter create fail\n");
- }
- struct csi_dsp_task_fe_para config_params;
-
- config_params.frontend_type = CSI_DSP_FE_TYPE_ISP;
- config_params.task_id = -1;
- config_params.isp_param.id=0;
- config_params.isp_param.hor=640;
- config_params.isp_param.ver=480;
- config_params.isp_param.data_fmt=CSI_DSP_IMG_FMT_RAW12_ALGIN;
- config_params.isp_param.line_in_entry=640*2;
- config_params.isp_param.line_stride=640*2;
- config_params.isp_param.buffer_size=640*2*16*2;
- config_params.isp_param.buffer_addr=0xb0000000;
- if(csi_dsp_task_config_frontend(vi_task,&config_params))
- {
- FAIL_TEST("isp config fail\n");
- }
- struct csi_dsp_task_be_para post_config;
- post_config.backend_type = CSI_DSP_BE_TYPE_POST_ISP;
- post_config.task_id = -1;
- post_config.post_isp_param.id=0;
- post_config.post_isp_param.hor=640;
- post_config.post_isp_param.ver=480;
- post_config.post_isp_param.data_fmt=CSI_DSP_IMG_FMT_RAW12_ALGIN;
- post_config.post_isp_param.line_in_entry=640*2;
- post_config.post_isp_param.line_stride=640*2;
- post_config.post_isp_param.buffer_size=640*2*16*2;
- post_config.post_isp_param.buffer_addr=0xb0000000;
- if(csi_dsp_task_config_backend(vi_task,&post_config))
- {
- FAIL_TEST("post-isp config fail\n");
- }
- struct algo_property{
- uint32_t width;
- uint32_t height;
- };
- struct algo_property sett {
- .width = 640,
- .height = 480,
- };
- struct csi_dsp_algo_config_par alog_config={
- .algo_id=0,
- .sett_ptr =(uint64_t)&sett,
- .sett_length =sizeof(struct algo_property),
- };
- if(csi_dsp_task_config_algo(vi_task,&alog_config))
- {
- FAIL_TEST("algo kernel config fail\n");
- }
- if(csi_dsp_task_register_cb(vi_task,NULL,NULL,32))
- {
- FAIL_TEST("register_cb fail\n");
- }
- if(csi_dsp_task_start(vi_task))
- {
- FAIL_TEST("task start fail\n");
- }
- if(csi_dsp_task_stop(vi_task))
- {
- FAIL_TEST("task stop fail\n");
- }
- if(csi_dsp_ps_task_unregister_cb(vi_task))
- {
- FAIL_TEST("unregister_cb fail\n");
- }
- if(csi_dsp_destroy_reporter(instance))
- {
- FAIL_TEST("reporter destroy fail\n");
- }
- csi_dsp_destroy_task(vi_task);
- }
- TEST(DspViEnhanceProcessTest,Isp2Dsp2RyProcessMini)
- {
- void *vi_task= csi_dsp_create_task(instance,CSI_DSP_TASK_HW_TO_HW);
- if(!vi_task)
- {
- FAIL_TEST("task create fail\n");
- }
- if(csi_dsp_create_reporter(instance))
- {
- FAIL_TEST("reporter create fail\n");
- }
- struct algo_property{
- uint32_t width;
- uint32_t height;
- };
- struct algo_property sett {
- .width = 1280,
- .height = 960,
- };
- struct csi_dsp_algo_config_par alog_config={
- .algo_id=0,
- .sett_ptr =(uint64_t)&sett,
- .sett_length =sizeof(struct algo_property),
- };
- if(csi_dsp_task_config_algo(vi_task,&alog_config))
- {
- FAIL_TEST("algo kernel config fail\n");
- }
- if(csi_dsp_task_register_cb(vi_task,NULL,NULL,32))
- {
- FAIL_TEST("register_cb fail\n");
- }
- if(csi_dsp_ps_task_unregister_cb(vi_task))
- {
- FAIL_TEST("unregister_cb fail\n");
- }
- if(csi_dsp_destroy_reporter(instance))
- {
- FAIL_TEST("reporter destroy fail\n");
- }
- csi_dsp_destroy_task(vi_task);
- }
- TEST(DspViEnhanceProcessTest,Vipre2Dsp2CpuProcessTestWithDmaBuf)
- {
- void *vi_task= csi_dsp_create_task(instance,CSI_DSP_TASK_HW_TO_SW);
- if(!vi_task)
- {
- FAIL_TEST("task create fail\n");
- }
- if(csi_dsp_create_reporter(instance))
- {
- FAIL_TEST("reporter create fail\n");
- }
- struct csi_dsp_task_fe_para config_params;
-
- config_params.frontend_type = CSI_DSP_FE_TYPE_VIPRE;
- config_params.task_id = -1;
- config_params.vipre_param.act_channel= 1;
- config_params.vipre_param.hor=640;
- config_params.vipre_param.ver=480;
- config_params.vipre_param.data_fmt=CSI_DSP_IMG_FMT_RAW12_ALGIN;
- config_params.vipre_param.line_num=0;
- config_params.vipre_param.line_stride=640*2;
- config_params.vipre_param.buffer_size=640*2*16*2;
- config_params.vipre_param.buffer_num =1;
- config_params.vipre_param.buffer_addr[0]=0xb0000000;
- if(csi_dsp_task_config_frontend(vi_task,&config_params))
- {
- FAIL_TEST("vipre config fail\n");
- }
- int i,j;
- struct csi_dsp_task_be_para * host_config;
- VmemParams params;
- host_config = (struct csi_dsp_task_be_para *)malloc(sizeof(struct csi_dsp_task_be_para)+3*sizeof(struct csi_dsp_buffer));
- int width = 640;
- int stride = 640;
- int height = 1280;
- host_config->backend_type = CSI_DSP_BE_TYPE_HOST;
- host_config->task_id = -1;
- host_config->sw_param.num_buf = 3;
- for(int i=0;i<host_config->sw_param.num_buf ;i++)
- {
-
- host_config->sw_param.bufs[i].buf_id = i;
- host_config->sw_param.bufs[i].dir = CSI_DSP_BUFFER_OUT;
- host_config->sw_param.bufs[i].type = CSI_DSP_BUF_TYPE_DMA_BUF_IMPORT;
- host_config->sw_param.bufs[i].plane_count = 1;
- host_config->sw_param.bufs[i].width =width;
- host_config->sw_param.bufs[i].height =height;
- for(j=0;j<host_config->sw_param.bufs[i].plane_count;j++)
- {
- params.size = stride*height;
- params.flags = VMEM_FLAG_CONTIGUOUS;
- if(reqDmaBuffer(¶ms))
- {
- FAIL_TEST("req dma buf fail\n");
- }
-
- host_config->sw_param.bufs[i].planes[j].stride= stride;
- host_config->sw_param.bufs[i].planes[j].size= params.size;
- host_config->sw_param.bufs[i].planes[j].fd = params.fd;
- }
- if(csi_dsp_task_create_buffer(vi_task,&host_config->sw_param.bufs[i]))
- {
- FAIL_TEST("create buf fail\n");
- }
- }
- if(csi_dsp_task_config_backend(vi_task,host_config))
- {
- free(host_config);
- FAIL_TEST("post-isp config fail\n");
- }
- struct csi_dsp_algo_config_par alog_config={
- .algo_id=0,
- .sett_ptr =NULL,
- .sett_length =0,
- };
- if(csi_dsp_task_config_algo(vi_task,&alog_config))
- {
- FAIL_TEST("algo kernel config fail\n");
- }
- if(csi_dsp_task_register_cb(vi_task,NULL,NULL,32))
- {
- FAIL_TEST("algo kernel start fail\n");
- }
- if(csi_dsp_task_start(vi_task))
- {
- FAIL_TEST("task start fail\n");
- }
- if(csi_dsp_task_stop(vi_task))
- {
- FAIL_TEST("task stop fail\n");
- }
- for(int i=0;i<host_config->sw_param.num_buf;i++)
- {
- if(csi_dsp_task_free_buffer(vi_task,&host_config->sw_param.bufs[i]))
- {
- FAIL_TEST("Dma buffer free fail\n");
- }
- params.phy_address = host_config->sw_param.bufs[i].planes[0].buf_phy;
- releaseDmaBuffer(¶ms);
- }
- free(host_config);
- if(csi_dsp_ps_task_unregister_cb(vi_task))
- {
- FAIL_TEST("unregister_cb fail\n");
- }
- if(csi_dsp_destroy_reporter(instance))
- {
- FAIL_TEST("reporter destroy fail\n");
- }
- csi_dsp_destroy_task(vi_task);
- }
- // int main(int argc, char *argv[])
- // {
- // printf("Dsp Post Process Test Start !\n");
- // void *instance = csi_dsp_create_instance(0);
- // if(!instance)
- // {
- // printf("create fail\n");
- // return -1;
- // }
- // void *task= csi_dsp_create_task(instance,CSI_DSP_TASK_SW_TO_SW);
- // if(!task)
- // {
- // printf("task create fail\n");
- // return -1;
- // }
- // struct csi_dsp_algo_config_par alog_config={
- // .algo_id=0,
- // };
- // if(csi_dsp_task_config_algo(task,&alog_config))
- // {
- // printf("algo kernel config fail\n");
- // return -1;
- // }
- // struct csi_sw_task_req* req=NULL;
- // req =csi_dsp_task_create_request(task);
- // if(req==NULL)
- // {
- // printf("req create fail\n");
- // return -1;
- // }
- // struct csi_dsp_buffer buf1 =
- // {
- // .buf_id = 0,
- // .dir = CSI_DSP_BUFFER_IN,
- // .type = CSI_DSP_BUF_ALLOC_DRV,
- // .plane_count = 1,
- // .width =640,
- // .height =480,
- // .planes[0].stride= 640,
- // .planes[0].size= 604*480,
- // };
- // if(csi_dsp_request_add_buffer(req,&buf1))
- // {
- // printf("%s,add buffer:%d\n",__FUNCTION__,buf1.buf_id);
- // csi_dsp_task_release_request(req);
- // return -1;
- // }
- // int i=0;
- // for(i=0;i<buf1.planes[0].size/4;i++)
- // {
- // ((int *)(buf1.planes[0].buf_vir))[i]=rand();
- // }
- // struct csi_dsp_buffer buf2 =
- // {
- // .buf_id = 1,
- // .dir = CSI_DSP_BUFFER_OUT,
- // .type = CSI_DSP_BUF_ALLOC_DRV,
- // .plane_count = 1,
- // .width =640,
- // .height =480,
- // .planes[0].stride= 640,
- // .planes[0].size= 604*480,
- // };
- // if(csi_dsp_request_add_buffer(req,&buf2))
- // {
- // printf("%s,add buffer:%d\n",__FUNCTION__,buf1.buf_id);
- // csi_dsp_task_release_request(req);
- // return -1;
- // }
- // if(csi_dsp_request_enqueue(req))
- // {
- // printf("%s,req enqueu fail:%d\n",__FUNCTION__);
- // csi_dsp_task_release_request(req);
- // return -1;
- // }
- // req = csi_dsp_request_dequeue(task);
- // if(req==NULL && req->status != CSI_DSP_SW_REQ_DONE)
- // {
- // printf("%s,req dequeue fail:%d\n",__FUNCTION__);
- // return -1;
- // }
- // if(memcmp((void*)buf1.planes[0].buf_vir,(void *)buf2.planes[0].buf_vir,buf1.planes[0].size))
- // {
- // printf("%s,cmp fail\n",__FUNCTION__);
- // csi_dsp_task_release_request(req);
- // csi_dsp_destroy_task(task);
- // csi_dsp_delete_instance(instance);
- // return -1;
- // }
- // csi_dsp_task_release_request(req);
- // csi_dsp_destroy_task(task);
- // csi_dsp_delete_instance(instance);
- // printf("%s,Test Pass!\n",__FUNCTION__);
- // return 0;
- // }
|