/* * Copyright (c) 2019 Rockchip Corporation * * 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 "config.h" #include "rk_aiq_user_api_imgproc.h" #include "rk_aiq_user_api_sysctl.h" #include "../protocol/rk_aiq_uapi_imgproc_ptl.h" /* #define RKAIQ_IMGPROC_CHECK_RET(ret, format, ...) \ if (ret) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; \ LOGE(format, ##__VA_ARGS__); \ return 0;; \ } */ /* ***************************** * * Desc: set exposure control mode * Argument: * mode: auto: auto exposure * manual: manual exposure ***************************** */ XCamReturn rk_aiq_uapi_setExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t attr; memcpy(&attr, &mode, sizeof(opMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setExpMode); } XCamReturn rk_aiq_uapi_getExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getExpMode); } /* ***************************** * * Desc: set auto exposure mode * Argument: * mode: * ***************************** */ XCamReturn rk_aiq_uapi_setAeMode(const rk_aiq_sys_ctx_t* ctx, aeMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; aeMode_t attr; memcpy(&attr, &mode, sizeof(aeMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setAeMode); } XCamReturn rk_aiq_uapi_getAeMode(const rk_aiq_sys_ctx_t* ctx, aeMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; aeMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getAeMode); } /* ***************************** * * Desc: set exposure parameter * Argument: * auto exposure mode: * exposure gain will be adjust between [gain->min, gain->max]; * manual exposure mode: * gain->min == gain->max * ***************************** */ XCamReturn rk_aiq_uapi_setExpGainRange(const rk_aiq_sys_ctx_t* ctx, paRange_t *gain) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; paRange_t *attr = gain; CLIENT_CALL_SET_AIQ_P(rk_aiq_uapi_setExpGainRange); } XCamReturn rk_aiq_uapi_getExpGainRange(const rk_aiq_sys_ctx_t* ctx, paRange_t *gain) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; paRange_t *attr = gain; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getExpGainRange); } /* ***************************** * * Desc: set exposure parameter * Argument: * auto exposure mode: * exposure time will be adjust between [time->min, time->max]; * manual exposure mode: * exposure time will be set gain->min == gain->max; * ***************************** */ XCamReturn rk_aiq_uapi_setExpTimeRange(const rk_aiq_sys_ctx_t* ctx, paRange_t *time) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; paRange_t *attr = time; CLIENT_CALL_SET_AIQ_P(rk_aiq_uapi_setExpGainRange); } XCamReturn rk_aiq_uapi_getExpTimeRange(const rk_aiq_sys_ctx_t* ctx, paRange_t *time) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; paRange_t *attr = time; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getExpTimeRange); } /* ********************************************************** * Auto exposure advanced features ********************************************************** */ /* ***************************** * * Desc: blacklight compensation * Argument: * on: 1 on * 0 off * rect: blacklight compensation area * ***************************** */ XCamReturn rk_aiq_uapi_setBLCMode(const rk_aiq_sys_ctx_t* ctx, bool on, aeMeasAreaType_t areaType) { DBG("enter %s, line=%d\n",__FUNCTION__,__LINE__); rk_aiq_uapi_setBLCMode_t para; para.sys_ctx = ctx; para.on = on; memcpy(¶.areaType, (void*)&areaType, sizeof(para.areaType)); call_fun_ipc_call((char *)__func__, ¶, sizeof(para), 1); return para.returnvalue; } /* ***************************** * * Desc: highlight compensation * Argument: * on: 1 on * 0 off * rect: blacklight compensation area * ***************************** */ XCamReturn rk_aiq_uapi_setHLCMode(const rk_aiq_sys_ctx_t* ctx, bool on) { DBG("enter %s, line=%d\n",__FUNCTION__,__LINE__); rk_aiq_uapi_setBLCMode_t para; para.sys_ctx = ctx; para.on = on; call_fun_ipc_call((char *)__func__, ¶, sizeof(para), 1); return 0;; } /* ***************************** * * Desc: set lowlight exposure mode * Argument: * mode: * auto: auto lowlight mode * manual: manual lowlight mode * ***************************** */ XCamReturn rk_aiq_uapi_setLExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t attr; memcpy(&attr, &mode, sizeof(opMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setLExpMode); } XCamReturn rk_aiq_uapi_getLExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getLExpMode); } /* ***************************** * * Desc: set manual lowlight exposure time ratio * Argument: * ratio: [1.0, 128.0] * ***************************** */ XCamReturn rk_aiq_uapi_setMLExp(const rk_aiq_sys_ctx_t* ctx, unsigned int ratio) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; unsigned int level = ratio; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setMLExp); } XCamReturn rk_aiq_uapi_getMLExp(const rk_aiq_sys_ctx_t* ctx, unsigned int* ratio) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; unsigned int* level = ratio; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getMLExp); } /* ***************************** * * Desc: set power line frequence * Argument: * freq * ***************************** */ XCamReturn rk_aiq_uapi_setAntiFlickerMode(const rk_aiq_sys_ctx_t* ctx, antiFlickerMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; antiFlickerMode_t attr; memcpy(&attr, &mode, sizeof(antiFlickerMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setAntiFlickerMode); } XCamReturn rk_aiq_uapi_getAntiFlickerMode(const rk_aiq_sys_ctx_t* ctx, antiFlickerMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; antiFlickerMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getAntiFlickerMode); } XCamReturn rk_aiq_uapi_setExpPwrLineFreqMode(const rk_aiq_sys_ctx_t* ctx, expPwrLineFreq_t freq) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; expPwrLineFreq_t attr; memcpy(&attr, &freq, sizeof(expPwrLineFreq_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setExpPwrLineFreqMode); } XCamReturn rk_aiq_uapi_getExpPwrLineFreqMode(const rk_aiq_sys_ctx_t* ctx, expPwrLineFreq_t *freq) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; expPwrLineFreq_t *attr = freq; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getExpPwrLineFreqMode); } /* ***************************** * * Desc: set day night switch mode * Argument: * mode * ***************************** */ XCamReturn rk_aiq_uapi_setDayNSwMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t attr; memcpy(&attr, &mode, sizeof(opMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setDayNSwMode); } XCamReturn rk_aiq_uapi_getDayNSwMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getDayNSwMode); } /* ***************************** * * Desc: set manual day night scene * this function is active for DayNSw is manual mode * Argument: * scene * ***************************** */ XCamReturn rk_aiq_uapi_setMDNScene(const rk_aiq_sys_ctx_t* ctx, dayNightScene_t scene) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; dayNightScene_t attr; memcpy(&attr, &scene, sizeof(dayNightScene_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setMDNScene); } XCamReturn rk_aiq_uapi_getMDNScene(const rk_aiq_sys_ctx_t* ctx, dayNightScene_t *scene) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; dayNightScene_t *attr = scene; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getMDNScene); } /* ***************************** * * Desc: set auto day night switch sensitivity * this function is active for DayNSw is auto mode * Argument: * level: [1, 3] * ***************************** */ XCamReturn rk_aiq_uapi_setADNSens(const rk_aiq_sys_ctx_t* ctx, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setADNSens); } XCamReturn rk_aiq_uapi_getADNSens(const rk_aiq_sys_ctx_t* ctx, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getADNSens); } /* ***************************** * * Desc: set fill light mode * Argument: * mode * ***************************** */ XCamReturn rk_aiq_uapi_setFLightMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t attr; memcpy(&attr, &mode, sizeof(opMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setFLightMode); } XCamReturn rk_aiq_uapi_getFLightMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getFLightMode); } /* ***************************** * * Desc: set maual fill light mode * Argument: * on: 1: on * 0: off * ***************************** */ XCamReturn rk_aiq_uapi_setMFLight(const rk_aiq_sys_ctx_t* ctx, bool on) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; bool level = on; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setMFLight); } XCamReturn rk_aiq_uapi_getMFLight(const rk_aiq_sys_ctx_t* ctx, bool *on) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; bool *level = on; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getMFLight); } /* ********************************************************** * White balance & Color ********************************************************** */ /* ***************************** * * Desc: set white balance mode * Argument: * mode: auto: auto white balance * manual: manual white balance ***************************** */ XCamReturn rk_aiq_uapi_setWBMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t attr; memcpy(&attr, &mode, sizeof(opMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setWBMode); } XCamReturn rk_aiq_uapi_getWBMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getWBMode); } /* ***************************** * * Desc: lock/unlock auto white balance * Argument: * * ***************************** */ XCamReturn rk_aiq_uapi_lockAWB(const rk_aiq_sys_ctx_t* ctx) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; XCamReturn ret = XCAM_RETURN_NO_ERROR; return 0;; } XCamReturn rk_aiq_uapi_unlockAWB(const rk_aiq_sys_ctx_t* ctx) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; XCamReturn ret = XCAM_RETURN_NO_ERROR; return 0;; } /* ***************************** * * Desc: set auto white balance mode * Argument: * * ***************************** */ XCamReturn rk_aiq_uapi_setAWBRange(const rk_aiq_sys_ctx_t* ctx, awbRange_t range) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; awbRange_t attr; memcpy(&attr, &range, sizeof(awbRange_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setAWBRange); } XCamReturn rk_aiq_uapi_getAWBRange(const rk_aiq_sys_ctx_t* ctx, awbRange_t *range) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; awbRange_t *attr = range; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getAWBRange); } /* ***************************** * * Desc: set manual white balance scene mode * Argument: * ct_scene: * ***************************** */ XCamReturn rk_aiq_uapi_setMWBScene(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_scene_t scene) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; rk_aiq_wb_scene_t attr; memcpy(&attr, &scene, sizeof(scene)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setMWBScene); } XCamReturn rk_aiq_uapi_getMWBScene(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_scene_t *scene) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; rk_aiq_wb_scene_t *attr = scene; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getMWBScene); } /* ***************************** * * Desc: set manual white balance r/b gain * Argument: * ct_scene: * ***************************** */ XCamReturn rk_aiq_uapi_setMWBGain(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_gain_t *gain) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; rk_aiq_wb_gain_t *attr = gain; CLIENT_CALL_SET_AIQ_P(rk_aiq_uapi_setAWBRange); } XCamReturn rk_aiq_uapi_getMWBGain(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_gain_t *gain) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; rk_aiq_wb_gain_t *attr = gain; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getMWBScene); } /* ***************************** * * Desc: set manual white balance color temperature * Argument: * ct: color temperature value [2800, 7500]K * ***************************** */ XCamReturn rk_aiq_uapi_setMWBCT(const rk_aiq_sys_ctx_t* ctx, unsigned int ct) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; unsigned int attr = &ct; CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setMWBCT); } XCamReturn rk_aiq_uapi_getMWBCT(const rk_aiq_sys_ctx_t* ctx, unsigned int *ct) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; unsigned int *attr = ct; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getMWBCT); } /* ***************************** * * Desc: set color supperssion level * Argument: * level: [0, 100] * ***************************** */ XCamReturn rk_aiq_uapi_setCrSuppsn(const rk_aiq_sys_ctx_t* ctx, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setCrSuppsn); } XCamReturn rk_aiq_uapi_getCrSuppsn(const rk_aiq_sys_ctx_t* ctx, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_setCrSuppsn); } /* ********************************************************** * Focus & Zoom ********************************************************** */ /* ***************************** * * Desc: set focus mode * Argument: * mode: auto: auto focus * manual: manual focus * semi-auto: semi-auto focus ***************************** */ XCamReturn rk_aiq_uapi_setFocusMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t attr; memcpy(&attr, &mode, sizeof(opMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setFocusMode); } XCamReturn rk_aiq_uapi_getFocusMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getFocusMode); } /* ***************************** * * Desc: set minimum focus distance * Argument: * disrance: unint is cm ***************************** */ XCamReturn rk_aiq_uapi_setMinFocusDis(const rk_aiq_sys_ctx_t* ctx, unsigned int distance) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; unsigned int level = distance; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setMinFocusDis); } XCamReturn rk_aiq_uapi_getMinFocusDis(const rk_aiq_sys_ctx_t* ctx, unsigned int *distance) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; unsigned int *level = distance; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getMinFocusDis); } /* ***************************** * * Desc: set optical zoom range * Argument: * range: [1.0, 100.0] * ***************************** */ XCamReturn rk_aiq_uapi_setOpZoomRange(const rk_aiq_sys_ctx_t* ctx, paRange_t *range) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; paRange_t *attr = range; CLIENT_CALL_SET_AIQ_P(rk_aiq_uapi_setOpZoomRange); } XCamReturn rk_aiq_uapi_getOpZoomRange(const rk_aiq_sys_ctx_t* ctx, paRange_t *range) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; paRange_t *attr = range; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getOpZoomRange); } /* ***************************** * * Desc: set optical zoom speed * Argument: * level: [1, 10] * ***************************** */ XCamReturn rk_aiq_uapi_setOpZoomSpeed(const rk_aiq_sys_ctx_t* ctx, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setOpZoomSpeed); } XCamReturn rk_aiq_uapi_getOpZoomSpeed(const rk_aiq_sys_ctx_t* ctx, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getOpZoomSpeed); } /* ********************************************************** * HDR ********************************************************** */ /* ***************************** * * Desc: set hdr mode * Argument: * mode: * auto: auto hdr mode * manual:manual hdr mode * ***************************** */ XCamReturn rk_aiq_uapi_setHDRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t attr; memcpy(&attr, &mode, sizeof(opMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setHDRMode); } XCamReturn rk_aiq_uapi_getHDRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getHDRMode); } /* ***************************** * * Desc: set manual hdr strength * this function is active for HDR is manual mode * Argument: * on: 1: on * 0: off * level: [0, 10] * ***************************** */ XCamReturn rk_aiq_uapi_setMHDRStrth(const rk_aiq_sys_ctx_t* ctx, bool on, unsigned int level) { DBG("enter %s, line=%d\n",__FUNCTION__,__LINE__); rk_aiq_uapi_setMHDRStrth_t para; para.sys_ctx = ctx; para.on = on; para.level = level; call_fun_ipc_call((char *)__func__, ¶, sizeof(para), 1); return 0;; } XCamReturn rk_aiq_uapi_getMHDRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on, unsigned int *level) { DBG("enter %s,line=%d\n",__FUNCTION__,__LINE__); if (level == NULL) { return -1; } rk_aiq_uapi_getMHDRStrth_t para; para.sys_ctx = ctx; call_fun_ipc_call((char *)__func__, ¶, sizeof(para), 1); *level = para.level; *on = para.on; return para.returnvalue; } /* ********************************************************** * Noise reduction ********************************************************** */ /* ***************************** * * Desc: set noise reduction mode * Argument: * mode: * auto: auto noise reduction * manual:manual noise reduction * ***************************** */ XCamReturn rk_aiq_uapi_setNRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t attr; memcpy(&attr, &mode, sizeof(opMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setNRMode); } XCamReturn rk_aiq_uapi_getNRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getNRMode); } /* ***************************** * * Desc: set auto noise reduction strength * Argument: * level: [0, 10] * ***************************** */ XCamReturn rk_aiq_uapi_setANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setANRStrth); } XCamReturn rk_aiq_uapi_getANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getANRStrth); } /* ***************************** * * Desc: set manual spatial noise reduction strength * this function is active for NR is manual mode * Argument: * on: 1:on * 0: off * level: [0, 10] * ***************************** */ XCamReturn rk_aiq_uapi_setMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setMSpaNRStrth); } XCamReturn rk_aiq_uapi_getMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getMSpaNRStrth); } /* ***************************** * * Desc: set manual time noise reduction strength * this function is active for NR is manual mode * Argument: * level: [0, 10] * ***************************** */ XCamReturn rk_aiq_uapi_setMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setMTNRStrth); } XCamReturn rk_aiq_uapi_getMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getMTNRStrth); } /* ********************************************************** * Dehazer ********************************************************** */ /* ***************************** * * Desc: set dehaze mode * Argument: * mode: * auto: auto dehaze * manual:manual dehaze * ***************************** */ XCamReturn rk_aiq_uapi_setDhzMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t attr; memcpy(&attr, &mode, sizeof(opMode_t)); CLIENT_CALL_SET_AIQ(rk_aiq_uapi_setDhzMode); } XCamReturn rk_aiq_uapi_getDhzMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; opMode_t *attr = mode; CLIENT_CALL_GET_AIQ(rk_aiq_uapi_getDhzMode); } /* ***************************** * * Desc: set manual dehaze strength * this function is active for dehaze is manual mode * Argument: * level: [0, 10] * ***************************** */ XCamReturn rk_aiq_uapi_setMDhzStrth(const rk_aiq_sys_ctx_t* ctx, bool on, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setMDhzStrth); return 0;; } XCamReturn rk_aiq_uapi_getMDhzStrth(const rk_aiq_sys_ctx_t* ctx, bool *on, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_getMDhzStrth); } /* ********************************************************** * Image adjust ********************************************************** */ /* ***************************** * * Desc: Adjust image contrast level * Argument: * level: contrast level, [0, 100] ***************************** */ XCamReturn rk_aiq_uapi_setContrast(const rk_aiq_sys_ctx_t* ctx, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setContrast); } XCamReturn rk_aiq_uapi_getContrast(const rk_aiq_sys_ctx_t* ctx, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getContrast); } /* ***************************** * * Desc: Adjust image brightness level * Argument: * level: contrast level, [0, 100] ***************************** */ XCamReturn rk_aiq_uapi_setBrightness(const rk_aiq_sys_ctx_t* ctx, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setBrightness); } XCamReturn rk_aiq_uapi_getBrightness(const rk_aiq_sys_ctx_t* ctx, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getBrightness); } /* ***************************** * * Desc: Adjust image saturation level * Argument: * level: contrast level, [0, 100] ***************************** */ XCamReturn rk_aiq_uapi_setSaturation(const rk_aiq_sys_ctx_t* ctx, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setSaturation); } XCamReturn rk_aiq_uapi_getSaturation(const rk_aiq_sys_ctx_t* ctx, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getSaturation); } /* ***************************** * * Desc: Adjust image sharpness level * Argument: * level: contrast level, [0, 100] ***************************** */ XCamReturn rk_aiq_uapi_setSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setSharpness); } XCamReturn rk_aiq_uapi_getSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getSharpness); } /* ***************************** * * Desc: Adjust image hue level * Argument: * level: hue level, [0, 100] ***************************** */ XCamReturn rk_aiq_uapi_setHue(const rk_aiq_sys_ctx_t* ctx, unsigned int level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_SET_AIQ_EXT(rk_aiq_uapi_setHue); } XCamReturn rk_aiq_uapi_getHue(const rk_aiq_sys_ctx_t* ctx, unsigned int *level) { const rk_aiq_sys_ctx_t* sys_ctx = ctx; CLIENT_CALL_GET_AIQ_EXT(rk_aiq_uapi_getHue); }