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