gstxcaminterface.h revision 88192026c67c079ce3bdd1eab8c3456de5617379
179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye/* 21d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * gstxcaminterface.h - gst xcam interface 379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 41d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * Copyright (c) 2014-2015 Intel Corporation 579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 61d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * Licensed under the Apache License, Version 2.0 (the "License"); 71d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * you may not use this file except in compliance with the License. 81d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * You may obtain a copy of the License at 979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 101d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * http://www.apache.org/licenses/LICENSE-2.0 111d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * 121d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * Unless required by applicable law or agreed to in writing, software 131d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * distributed under the License is distributed on an "AS IS" BASIS, 141d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 151d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * See the License for the specific language governing permissions and 161d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * limitations under the License. 1779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 1879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Author: Wind Yuan <feng.yuan@intel.com> 1979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 2079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 2179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye/*! \file gstxcaminterface.h 2279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief Gstreamer XCam 3A interface 2379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 2479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 2579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 2679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye#ifndef GST_XCAM_INTERFACE_H 2779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye#define GST_XCAM_INTERFACE_H 2879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 2979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye#include <gst/gst.h> 3079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye#include <linux/videodev2.h> 31895e1babb6ada2f12f1320767675256d583b4539Juan Zhao#include <base/xcam_3a_types.h> 3279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 3379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 3479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn YeG_BEGIN_DECLS 3579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 3679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye/*! \brief Get GST interface type of XCam 3A interface 3779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 3879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return GType returned by g_type_register_static() 3979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 4079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye#define GST_TYPE_XCAM_3A_IF (gst_xcam_3a_interface_get_type ()) 4179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 4279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye/*! \brief Get GST XCam 3A handle. 4379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * See usage of struct _GstXCam3AInterface. 4479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 4579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return XCam 3A handle of _GstXCam3A * type 4679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 4779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye#define GST_XCAM_3A(obj) \ 4879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_XCAM_3A_IF, GstXCam3A)) 4979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 5079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye/*! \brief Get GST XCam 3A interface 5179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 5279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * See usage of struct _GstXCam3AInterface. 5379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 5479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] Xcam 3A handle 5579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return GstXCam3AInterface* 5679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 5779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye#define GST_XCAM_3A_GET_INTERFACE(inst) \ 5879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GST_TYPE_XCAM_3A_IF, GstXCam3AInterface)) 5979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 6079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Yetypedef struct _GstXCam3A GstXCam3A; 6179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Yetypedef struct _GstXCam3AInterface GstXCam3AInterface; 6279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 6379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye/*! \brief XCam 3A Interface 6479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 6579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Usage: 661d65b456a21418adb5dee8d3b4eeae61fd97304eWind Yuan * - GstXCam3A *xcam = GST_XCAM_3A (xcamsrc); 6779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - GstXCam3AInterface *xcam_interface = GST_XCAM_3A_GET_INTERFACE (xcam); 6879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - ret = xcam_interface->set_exposure_mode(xcam, XCAM_AE_MODE_AUTO); 6979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 7079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Yestruct _GstXCam3AInterface { 7179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye GTypeInterface base; /*!< inherent from GTypeInterface */ 7279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 7379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief Set white balance mode. 7479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * See xcam_3a_set_whitebalance_mode(). 7579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 7679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 7779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] mode white balance mode 7879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * return 0 on success; -1 on error (parameter error) 7979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 8079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_white_balance_mode) (GstXCam3A *xcam, XCamAwbMode mode); 8179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 8279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set AWB speed. 8379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_awb_speed(). 8479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 8579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 8679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] speed AWB speed; speed meaturement will consider later 8779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * return 0 on success; -1 on error 8879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 8979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_awb_speed) (GstXCam3A *xcam, double speed); 9079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 9179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief Set white balance temperature range. 9279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_awb_color_temperature_range(). 9379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 9479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] cct_min 0 < cct_min <= cct_max <= 10000; if 0, disable cct range 9579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] cct_max 0 < cct_min <= cct_max <= 10000; if 0, disable cct range 9679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return 0 on success; -1 on error 9779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 9879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Usage: 9979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 10079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Enable: 10179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 1. set_white_balance_mode(%XCAM_AWB_MODE_MANUAL) 10279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 2. set_wb_color_temperature_range 10379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Disable: 10479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * set_white_balance_mode(%XCAM_AWB_MODE_AUTO) 10579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 10679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 10779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_wb_color_temperature_range) (GstXCam3A *xcam, guint cct_min, guint cct_max); 10879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 10979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief Set manual white balance gain. 11079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_wb_manual_gain(). 11179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 11279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 11379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] gr GR channel 11479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] r R channel 11579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] b B channel 11679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] gb GB channel 11779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 11879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Usage: 11979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 12079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Enable: 12179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 1. need gr, r, b, gb => gain value [0.1~4.0]; 12279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 2. set_white_balance_mode(xcam, XCAM_AWB_MODE_NOT_SET) 12379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Disable: 12479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 1. need set gr=0, r=0, b=0, gb=0; 12579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 2. set_white_balance_mode(xcam, mode); mode != XCAM_AWB_MODE_NOT_SET 12679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 12779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_manual_wb_gain) (GstXCam3A *xcam, double gr, double r, double b, double gb); 12879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 12979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 13079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set exposure mode. 13179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_exposure_mode(). 13279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 13379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 13479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] mode choose from XCAM_AE_MODE_AUTO and XCAM_AE_MODE_MANUAL; others not supported 13579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 13679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_exposure_mode) (GstXCam3A *xcam, XCamAeMode mode); 13779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 13879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set AE metering mode. 13979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_ae_metering_mode(). 14079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 14179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 14279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] mode XCAM_AE_METERING_MODE_AUTO, default 14379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * XCAM_AE_METERING_MODE_SPOT, need set spot window by set_exposure_window 14479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * XCAM_AE_METERING_MODE_CENTER, more weight in center 145fa44236ccc37455d2f0c02e757e2f36eb3c801f8zongwave * XCAM_AE_METERING_MODE_WEIGHTED_WINDOW, weighted multi metering window 14679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 14779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_ae_metering_mode) (GstXCam3A *xcam, XCamAeMeteringMode mode); 14879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 14979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /* \brief set exposure window. 15079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_ae_window(). 15179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 15279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 15379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] window the area to set exposure with. x_end > x_start AND y_end > y_start; only ONE window can be set 154fa44236ccc37455d2f0c02e757e2f36eb3c801f8zongwave * \param[in] count the number of metering window 15579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 15679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Usage 15779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Enable: 15879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * set_ae_metering_mode(@xcam, %XCAM_AE_METERING_MODE_SPOT) 15979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Disable: 16079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * set_ae_metering_mode(@xcam, @mode); #mode != %XCAM_AE_METERING_MODE_SPOT 16179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 162fa44236ccc37455d2f0c02e757e2f36eb3c801f8zongwave gboolean (* set_exposure_window) (GstXCam3A *xcam, XCam3AWindow *window, guint8 count); 16379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 16479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set exposure value offset. 16579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_ae_value_shift(). 16679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 16779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 16879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] ev_offset -4.0 <= ev_offset <= 4.0; default 0.0 16979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 17079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_exposure_value_offset) (GstXCam3A *xcam, double ev_offset); 17179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 17279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set AE speed. 17379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_ae_speed(). 17479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 17579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 17679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] speed AE speed 17779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 17879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_ae_speed) (GstXCam3A *xcam, double speed); 17979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 18079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set exposure flicker mode. 18179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_ae_flicker_mode(). 18279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 18379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 18479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] flicker XCAM_AE_FLICKER_MODE_AUTO, default 18579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * XCAM_AE_FLICKER_MODE_50HZ 18679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * XCAM_AE_FLICKER_MODE_60HZ 18779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * XCAM_AE_FLICKER_MODE_OFF, outside 18879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 18979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (*set_exposure_flicker_mode) (GstXCam3A *xcam, XCamFlickerMode flicker); 19079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 19179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief get exposure flicker mode. 19279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_get_ae_flicker_mode(). 19379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 19479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 19579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return XCamFlickerMode XCAM_AE_FLICKER_MODE_AUTO, default 19679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * XCAM_AE_FLICKER_MODE_50HZ 19779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * XCAM_AE_FLICKER_MODE_60HZ 19879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * XCAM_AE_FLICKER_MODE_OFF, outside 19979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 20079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye XCamFlickerMode (*get_exposure_flicker_mode) (GstXCam3A *xcam); 20179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 20279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief get current exposure time. 20379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_get_current_exposure_time(). 20479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 20579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 20679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return current exposure time in microsecond, if return -1, means xcam is not started 20779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 20879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gint64 (* get_current_exposure_time) (GstXCam3A *xcam); 20979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 21079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief get current analog gain. 21179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_get_current_analog_gain(). 21279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 21379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 21479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return current analog gain as multiplier. If return < 0.0 OR return < 1.0, xcam is not started. 21579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 21679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye double (* get_current_analog_gain) (GstXCam3A *xcam); 21779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 21879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set manual exposure time 21979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 22079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 22179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] time_in_us exposure time 22279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 22379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Usage: 22479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Enable: 22579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * set time_in_us, 0 < time_in_us < 1/fps 22679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Disable: 22779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * time_in_us = 0 22879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 22979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_manual_exposure_time) (GstXCam3A *xcam, gint64 time_in_us); 23079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 23179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set manual analog gain. 23279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_ae_manual_analog_gain(). 23379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 23479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam handle 23579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] gain analog gain 23679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 23779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Usage: 23879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Enable: 23979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * set @gain value, 1.0 < @gain 24079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - Disable: 24179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * set @gain = 0.0 24279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 24379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_manual_analog_gain) (GstXCam3A *xcam, double gain); 24479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 24579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set aperture. 24679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_ae_set_aperture(). 24779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 24879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 24979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] fn AE aperture fn 25079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success 25179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 25279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_aperture) (GstXCam3A *xcam, double fn); 25379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 25479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set max analog gain. 25579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_ae_max_analog_gain(). 25679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 25779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 25879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] max_gain max analog gain 25979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return gboolen 0 on success 26079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 26179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_max_analog_gain) (GstXCam3A *xcam, double max_gain); 26279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 26379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief get max analog gain. 26479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_get_ae_max_analog_gain(). 26579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 26679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 26779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return max_gain max analog gain 26879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 26979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye double (* get_max_analog_gain) (GstXCam3A *xcam); 27079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 27179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 27279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief set AE time range 27379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 27479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 27579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] min_time_in_us min time 27679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] max_time_in_us max time 27779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return XCam3AStatus 0 on success 27879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 27979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_exposure_time_range) (GstXCam3A *xcam, gint64 min_time_in_us, gint64 max_time_in_us); 28079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 28179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 28279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief XCam3A get AE time range. 28379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Range in [0 ~ 1000000/fps] micro-seconds. see xcam_3a_set_ae_time_range(). 28479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 28579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 28679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[out] min_time_in_us min time 28779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[out] max_time_in_us max time 28879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success 28979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 29079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* get_exposure_time_range) (GstXCam3A *xcam, gint64 *min_time_in_us, gint64 *max_time_in_us); 29179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 29279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set DVS. 29379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * digital video stabilization. see xcam_3a_enable_dvs(). 29479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 29579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 29679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] enable enable/disable 29779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success 29879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 29979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_dvs) (GstXCam3A *xcam, gboolean enable); 30079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 30179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set noice reduction level to BNR and YNR. 30279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_noise_reduction_level(). 30379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 30479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 30579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] level control BNR/YNR gain. 0 <= level <= 255; default level: 128 30679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success 30779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 30879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (*set_noise_reduction_level) (GstXCam3A *xcam, guint8 level); 30979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 31079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! \brief set temporal noice reduction level. 31179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_temporal_noise_reduction_level(). 31279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 31379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 31479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] level control TNR gain. 0 <= level <= 255; default level: 128 315f20a1f7cec9ef866920bd2fc33a57b775e04ae7bzongwave * \param[in] mode TNR filter mode 0: disable, 1: YUV mode, 2: RGB mode 31679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success 31779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 318f20a1f7cec9ef866920bd2fc33a57b775e04ae7bzongwave gboolean (*set_temporal_noise_reduction_level) (GstXCam3A *xcam, guint8 level, gint8 mode); 31979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 32079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 32179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief set gamma table. 32279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_set_gamma_table(). 32379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 32479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 32579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] r_table red color gamma table 32679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] g_table green color gamma table 32779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] b_table blue color gamma table 32879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success 32979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 33079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Restriction: 33179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 1. can't co-work with manual brightness and contrast, 33279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 2. table size = 256, and values in [0.0~1.0], e.g 0.0, 1.0/256, 2.0/256 ... 255.0/256 33379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 33479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * Usage: 33579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * - to Disable: 33679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * r_table = NULL && g_table = NULL && b_table=NULL 33779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 33879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_gamma_table) (GstXCam3A *xcam, double *r_table, double *g_table, double *b_table); 33979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 34079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 34179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief enable/disable gbce. 34279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_enable_gbce(). 34379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 34479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 34579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] enable enable/disable, i.e. TRUE to enable GBCE and otherwise disable GBCE. 34679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success 34779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 34879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_gbce) (GstXCam3A *xcam, gboolean enable); 34979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 35079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 35179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief set manual brightness. 35279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_manual_brightness(). 35379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 35479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 35579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] value manual brightness, 0 <= value <= 255; default:128 35679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success */ 35779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_manual_brightness) (GstXCam3A *xcam, guint8 value); 35879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 35979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 36079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief set manual contrast. 36179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_manual_contrast(). 36279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 36379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 36479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] value manual contrast, 0 <= value <= 255; default:128 36579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success */ 36679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_manual_contrast) (GstXCam3A *xcam, guint8 value); 36779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 36879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 36979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief set manual hue. 37079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_manual_hue(). 37179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 37279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 37379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] value manual hue, 0 <= value <= 255; default:128 37479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success */ 37579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_manual_hue) (GstXCam3A *xcam, guint8 value); 37679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 37779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 37879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief set manual saturation. 37979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_manual_saturation(). 38079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 38179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 38279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] value manual saturation, 0 <= value <= 255; default:128 38379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success */ 38479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_manual_saturation) (GstXCam3A *xcam, guint8 value); 38579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 38679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 38779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief set manual sharpness. 38879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_set_manual_sharpness(). 38979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 39079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 39179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] value manual sharpness, 0 <= value <= 255; default:128 39279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success */ 39379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_manual_sharpness) (GstXCam3A *xcam, guint8 value); 39479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 39579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /* IR-cut */ 39679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 39779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \brief enable/disable night mode. 39879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * see xcam_3a_enable_night_mode(). 39979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 40079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in,out] xcam XCam3A handle 40179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \param[in] enable enable/disable, i.e. TRUE to enable night mode and otherwise disable night mode. 40279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return bool 0 on success 40379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 40479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye gboolean (* set_night_mode) (GstXCam3A *xcam, gboolean enable); 40579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 40679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye /*! 407c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \brief set HDR mode. 408c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * 409c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \param[in,out] xcam XCam3A handle 410c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \param[in] mode 0: disable, 1: HDR in RGB color space, 2: HDR in LAB color space 411c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \return bool 0 on success 412c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng */ 413c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng gboolean (* set_hdr_mode) (GstXCam3A *xcam, guint8 mode); 414c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng 415c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng /*! 416c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \brief set denoise mode. 417c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * 418c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \param[in,out] xcam XCam3A handle 41966efecfa6d09dfae2c692fce5fce0afe32ed82adJia Meng * \param[in] mode bit mask to enable/disable denoise functions 42066efecfa6d09dfae2c692fce5fce0afe32ed82adJia Meng * each bit controls a specific denoise function, 0: disable, 1: enable 42166efecfa6d09dfae2c692fce5fce0afe32ed82adJia Meng * bit 0: simple noise reduction 42266efecfa6d09dfae2c692fce5fce0afe32ed82adJia Meng * bit 1: bilateral noise reduction 42366efecfa6d09dfae2c692fce5fce0afe32ed82adJia Meng * bit 2: luminance noise reduction and edge enhancement 42466efecfa6d09dfae2c692fce5fce0afe32ed82adJia Meng * bit 3: bayer noise reduction 42566efecfa6d09dfae2c692fce5fce0afe32ed82adJia Meng * bit 4: advanced bayer noise reduction 426c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \return bool 0 on success 427c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng */ 42866efecfa6d09dfae2c692fce5fce0afe32ed82adJia Meng gboolean (* set_denoise_mode) (GstXCam3A *xcam, guint32 mode); 429c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng 430c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng /*! 431c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \brief set gamma mode. 432c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * 433c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \param[in,out] xcam XCam3A handle 434c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \param[in] enable true: enable, false: disable 435c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng * \return bool 0 on success 436c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng */ 437c66de80bb5484d342c72f85be8f7a2bc6ca75667Jia Meng gboolean (* set_gamma_mode) (GstXCam3A *xcam, gboolean enable); 43836c4b44f4211693e3e1c657857c698f31a817c61Yinhang Liu 43936c4b44f4211693e3e1c657857c698f31a817c61Yinhang Liu /*! 44036c4b44f4211693e3e1c657857c698f31a817c61Yinhang Liu * \brief set dpc mode. 44136c4b44f4211693e3e1c657857c698f31a817c61Yinhang Liu * 44236c4b44f4211693e3e1c657857c698f31a817c61Yinhang Liu * \param[in,out] xcam XCam3A handle 44336c4b44f4211693e3e1c657857c698f31a817c61Yinhang Liu * \param[in] enable true: enable, false: disable 44436c4b44f4211693e3e1c657857c698f31a817c61Yinhang Liu * \return bool 0 on success 44536c4b44f4211693e3e1c657857c698f31a817c61Yinhang Liu */ 44636c4b44f4211693e3e1c657857c698f31a817c61Yinhang Liu gboolean (* set_dpc_mode) (GstXCam3A *xcam, gboolean enable); 447c4f87d19278a28279f3d05be0b77b249a63e12e8Jia Meng 448c4f87d19278a28279f3d05be0b77b249a63e12e8Jia Meng /*! 449c4f87d19278a28279f3d05be0b77b249a63e12e8Jia Meng * \brief set tone mapping mode. 450c4f87d19278a28279f3d05be0b77b249a63e12e8Jia Meng * 451c4f87d19278a28279f3d05be0b77b249a63e12e8Jia Meng * \param[in,out] xcam XCam3A handle 452c4f87d19278a28279f3d05be0b77b249a63e12e8Jia Meng * \param[in] enable true: enable, false: disable 453c4f87d19278a28279f3d05be0b77b249a63e12e8Jia Meng * \return bool 0 on success 454c4f87d19278a28279f3d05be0b77b249a63e12e8Jia Meng */ 455c4f87d19278a28279f3d05be0b77b249a63e12e8Jia Meng gboolean (* set_tonemapping_mode) (GstXCam3A *xcam, gboolean enable); 45688192026c67c079ce3bdd1eab8c3456de5617379Wangfei 45788192026c67c079ce3bdd1eab8c3456de5617379Wangfei /*! 45888192026c67c079ce3bdd1eab8c3456de5617379Wangfei * \brief set retinex mode. 45988192026c67c079ce3bdd1eab8c3456de5617379Wangfei * 46088192026c67c079ce3bdd1eab8c3456de5617379Wangfei * \param[in,out] xcam XCam3A handle 46188192026c67c079ce3bdd1eab8c3456de5617379Wangfei * \param[in] enable true: enable, false: disable 46288192026c67c079ce3bdd1eab8c3456de5617379Wangfei * \return bool 0 on success 46388192026c67c079ce3bdd1eab8c3456de5617379Wangfei */ 46488192026c67c079ce3bdd1eab8c3456de5617379Wangfei gboolean (* set_retinex_mode) (GstXCam3A *xcam, gboolean enable); 46588192026c67c079ce3bdd1eab8c3456de5617379Wangfei 46688192026c67c079ce3bdd1eab8c3456de5617379Wangfei 46779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye}; 46879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 46979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye/*! \brief Get GST interface type of XCam 3A interface. 47079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * will try to register GsXcam3AInterface with 47179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * g_type_register_static() if not done so yet, and in turn return the 47279d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * interface type it returns. 47379d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * 47479d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye * \return GType XCam 3A interface type returned by g_type_register_static() 47579d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye */ 47679d1f1e91dbe4ad784e3e6090975d526e596d97bJohn YeGType 47779d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Yegst_xcam_3a_interface_get_type (void); 47879d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 47979d1f1e91dbe4ad784e3e6090975d526e596d97bJohn YeG_END_DECLS 48079d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye 48179d1f1e91dbe4ad784e3e6090975d526e596d97bJohn Ye#endif /* GST_XCAM_INTERFACE_H */ 482