hc
2023-11-22 f743a7adbd6e230d66a6206fa115b59fec2d88eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "rk_aiq_uapi_accm_int.h"
#include "accm/rk_aiq_types_accm_algo_prvt.h"
XCamReturn
rk_aiq_uapi_accm_SetAttrib(RkAiqAlgoContext *ctx,
                           rk_aiq_ccm_attrib_t attr,
                           bool need_sync)
{
 
    accm_context_t* ccm_contex = (accm_context_t*)ctx->accm_para;
    ccm_contex->mNewAtt = attr;
    ccm_contex->updateAtt = true;
    return XCAM_RETURN_NO_ERROR;
}
 
XCamReturn
rk_aiq_uapi_accm_GetAttrib(const RkAiqAlgoContext *ctx,
                           rk_aiq_ccm_attrib_t *attr)
{
 
    accm_context_t* ccm_contex = (accm_context_t*)ctx->accm_para;
 
    memcpy(attr, &ccm_contex->mCurAtt, sizeof(rk_aiq_ccm_attrib_t));
 
    return XCAM_RETURN_NO_ERROR;
}
 
XCamReturn
rk_aiq_uapi_accm_QueryCcmInfo(const RkAiqAlgoContext *ctx,
                              rk_aiq_ccm_querry_info_t *ccm_querry_info )
{
 
    accm_context_t* ccm_contex = (accm_context_t*)ctx->accm_para;
    memcpy(ccm_querry_info->alp_y, ccm_contex->ccmHwConf.alp_y, sizeof(ccm_contex->ccmHwConf.alp_y));
    memcpy(ccm_querry_info->matrix, ccm_contex->ccmHwConf.matrix, sizeof(ccm_contex->ccmHwConf.matrix));
    memcpy(ccm_querry_info->offs, ccm_contex->ccmHwConf.offs, sizeof(ccm_contex->ccmHwConf.offs));
    ccm_querry_info->ccm_en = ccm_contex->ccmHwConf.ccmEnable;
    ccm_querry_info->bound_bit = ccm_contex->ccmHwConf.bound_bit;
    ccm_querry_info->color_inhibition_level = ccm_contex->accmRest.color_inhibition_level;
    ccm_querry_info->color_saturation_level = ccm_contex->accmRest.color_saturation_level;
 
    ccm_querry_info->finalSat = 0;
     memset(ccm_querry_info->illumination, 0x0, sizeof(ccm_querry_info->illumination));
     memset(ccm_querry_info->ccmname1, 0x0, sizeof(ccm_querry_info->ccmname1));
     memset(ccm_querry_info->ccmname2, 0x0, sizeof(ccm_querry_info->ccmname2));
     if (ccm_querry_info->ccm_en && ccm_contex->mCurAtt.mode == RK_AIQ_CCM_MODE_AUTO){
        ccm_querry_info->finalSat = ccm_contex->accmRest.fSaturation;
        strcpy(ccm_querry_info->illumination, ccm_contex->accmRest.pCcmProfile1->illumination);
        strcpy(ccm_querry_info->ccmname1, ccm_contex->accmRest.pCcmProfile1->name);
        if (ccm_contex->accmRest.pCcmProfile2)
            strcpy(ccm_querry_info->ccmname2, ccm_contex->accmRest.pCcmProfile2->name);
        else
            strcpy(ccm_querry_info->ccmname2, ccm_contex->accmRest.pCcmProfile1->name);
    }
 
    return XCAM_RETURN_NO_ERROR;
}