hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*
 * Copyright (c) 2019-2022 Rockchip Eletronics Co., Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
#include "rk_aiq_user_api_agamma.h"
 
#include "algo_handlers/RkAiqAgammaHandle.h"
#include "uAPI2/rk_aiq_user_api2_agamma.h"
 
RKAIQ_BEGIN_DECLARE
 
 
#ifdef RK_SIMULATOR_HW
#define CHECK_USER_API_ENABLE
#endif
 
void
GammaTransferSetData(rk_aiq_gamma_attrib_V2_t* DegammaV2, rk_aiq_gamma_attrib_t *DegammaV1)
{
    /*
        //op mode
        DegammaV2->mode = DegammaV1->mode;
 
        //st manual
        memcpy(&DegammaV2->stManual, &DegammaV1->stManual, sizeof(Adegamma_api_manual_t));
 
        //set tool
 
        DegammaV2->stTool.GammaTuningPara.Gamma_en = DegammaV1->stTool.gamma_en ? true : false;
        DegammaV2->stTool.GammaTuningPara.Gamma_out_offset = DegammaV1->stTool.gamma_out_offset;
        if(DegammaV1->stTool.gamma_out_segnum == 0)
            DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum = GAMMATYPE_LOG;
        else
            DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum = GAMMATYPE_EQU;
        int mode = DegammaV1->Scene_mode;
        if(mode == 0)
            for(int i = 0; i < 45; i++)
                DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_normal[i] + 0.5);
        else if(mode == 1)
            for(int i = 0; i < 45; i++)
                DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_hdr[i] + 0.5);
        else if(mode == 3)
            for(int i = 0; i < 45; i++)
                DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_night[i] + 0.5);
        else
            for(int i = 0; i < 45; i++)
                DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_normal[i] + 0.5);
                */
}
 
void
GammaTransferGetData(rk_aiq_gamma_attrib_V2_t* DegammaV2, rk_aiq_gamma_attrib_t *DegammaV1)
{
    /*
    //op mode
    DegammaV1->mode = DegammaV2->mode;
 
    //st manual
    memcpy(&DegammaV1->stManual, &DegammaV2->stManual, sizeof(Adegamma_api_manual_t));
 
    //mode
    DegammaV1->Scene_mode = 0;
 
    //set tool
    DegammaV1->stTool.gamma_en = DegammaV2->stTool.GammaTuningPara.Gamma_en ? 1 : 0;
    DegammaV1->stTool.gamma_out_offset = DegammaV2->stTool.GammaTuningPara.Gamma_out_offset;
    if(DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum == GAMMATYPE_LOG)
        DegammaV1->stTool.gamma_out_segnum = 0;
    else if(DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum == GAMMATYPE_EQU)
        DegammaV1->stTool.gamma_out_segnum = 1;
    for(int i = 0; i < 45; i++) {
        DegammaV1->stTool.curve_normal[i] = (float)(DegammaV2->stTool.GammaTuningPara.Gamma_curve[i]);
        DegammaV1->stTool.curve_hdr[i] = (float)(DegammaV2->stTool.GammaTuningPara.Gamma_curve[i]);
        DegammaV1->stTool.curve_night[i] = (float)(DegammaV2->stTool.GammaTuningPara.Gamma_curve[i]);
    }
    */
}
 
XCamReturn
rk_aiq_user_api_agamma_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_gamma_attrib_t attr)
{
    rk_aiq_gamma_attrib_V2_t gammaAttr;
    memset(&gammaAttr, 0, sizeof(rk_aiq_gamma_attrib_V2_t));
 
    GammaTransferSetData(&gammaAttr, &attr);
 
    XCamReturn ret_gamma = rk_aiq_user_api2_agamma_SetAttrib(sys_ctx, gammaAttr);
 
    return ret_gamma;
}
 
XCamReturn
rk_aiq_user_api_agamma_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_gamma_attrib_t *attr)
{
    rk_aiq_gamma_attrib_V2_t gammaAttr;
    memset(&gammaAttr, 0, sizeof(rk_aiq_gamma_attrib_V2_t));
 
    GammaTransferGetData(&gammaAttr, attr);
 
    XCamReturn ret_gamma = rk_aiq_user_api2_agamma_GetAttrib(sys_ctx, &gammaAttr);
 
    return ret_gamma;
}
 
RKAIQ_END_DECLARE