xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos/a3dlut/rk_aiq_uapi_a3dlut_int.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "rk_aiq_uapi_a3dlut_int.h"
2 #include "a3dlut/rk_aiq_types_a3dlut_algo_prvt.h"
3 XCamReturn
rk_aiq_uapi_a3dlut_SetAttrib(RkAiqAlgoContext * ctx,const rk_aiq_lut3d_attrib_t * attr,bool need_sync)4 rk_aiq_uapi_a3dlut_SetAttrib(RkAiqAlgoContext *ctx,
5                              const rk_aiq_lut3d_attrib_t* attr,
6                              bool need_sync)
7 {
8 
9     alut3d_context_t* alut3d_context = (alut3d_context_t*)ctx->a3dlut_para;
10     alut3d_context->swinfo.invarMode = attr->mode & alut3d_context->mCurAtt.mode;
11     alut3d_context->mCurAtt = *attr;
12     alut3d_context->updateAtt = true;
13 
14     return XCAM_RETURN_NO_ERROR;
15 }
16 
17 XCamReturn
rk_aiq_uapi_a3dlut_GetAttrib(const RkAiqAlgoContext * ctx,rk_aiq_lut3d_attrib_t * attr)18 rk_aiq_uapi_a3dlut_GetAttrib(const RkAiqAlgoContext *ctx,
19                              rk_aiq_lut3d_attrib_t *attr)
20 {
21 
22     alut3d_context_t* alut3d_context = (alut3d_context_t*)ctx->a3dlut_para;
23 
24     //TODO: use stManual as current params
25     memcpy(alut3d_context->mCurAtt.stManual.look_up_table_r, alut3d_context->lut3d_hw_conf.tbl.look_up_table_r,
26            sizeof(alut3d_context->mCurAtt.stManual.look_up_table_r));
27     memcpy(alut3d_context->mCurAtt.stManual.look_up_table_g, alut3d_context->lut3d_hw_conf.tbl.look_up_table_g,
28             sizeof(alut3d_context->mCurAtt.stManual.look_up_table_g));
29     memcpy(alut3d_context->mCurAtt.stManual.look_up_table_b, alut3d_context->lut3d_hw_conf.tbl.look_up_table_b,
30            sizeof(alut3d_context->mCurAtt.stManual.look_up_table_b));
31 
32     memcpy(attr, &alut3d_context->mCurAtt, sizeof(rk_aiq_lut3d_attrib_t));
33 
34     return XCAM_RETURN_NO_ERROR;
35 }
36 
37 XCamReturn
rk_aiq_uapi_a3dlut_Query3dlutInfo(const RkAiqAlgoContext * ctx,rk_aiq_lut3d_querry_info_t * lut3d_querry_info)38 rk_aiq_uapi_a3dlut_Query3dlutInfo(const RkAiqAlgoContext *ctx,
39                                   rk_aiq_lut3d_querry_info_t *lut3d_querry_info )
40 {
41 
42     alut3d_context_t* alut3d_context = (alut3d_context_t*)ctx->a3dlut_para;
43     memcpy(lut3d_querry_info->look_up_table_b, alut3d_context->lut3d_hw_conf.tbl.look_up_table_b,
44            sizeof(lut3d_querry_info->look_up_table_b));
45     memcpy(lut3d_querry_info->look_up_table_g, alut3d_context->lut3d_hw_conf.tbl.look_up_table_g,
46            sizeof(lut3d_querry_info->look_up_table_g));
47     memcpy(lut3d_querry_info->look_up_table_r, alut3d_context->lut3d_hw_conf.tbl.look_up_table_r,
48            sizeof(lut3d_querry_info->look_up_table_r));
49     lut3d_querry_info->lut3d_en = alut3d_context->lut3d_hw_conf.enable;
50 
51     lut3d_querry_info->alpha = 1;
52     memset(lut3d_querry_info->name, 0x0, sizeof(lut3d_querry_info->name));
53     if (lut3d_querry_info->lut3d_en && alut3d_context->mCurAtt.mode == RK_AIQ_LUT3D_MODE_AUTO){
54         lut3d_querry_info->alpha = alut3d_context->restinfo.alpha;
55         strcpy(lut3d_querry_info->name, alut3d_context->restinfo.pLutProfile->name);
56     }
57 
58 
59     return XCAM_RETURN_NO_ERROR;
60 }
61 
62 
63