diff options
author | George Hazan <ghazan@miranda.im> | 2022-08-03 21:02:36 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2022-08-03 21:02:36 +0300 |
commit | 5323a782c4e8c42781f22ce2f488962a18f82554 (patch) | |
tree | f71537197b16f0f8fd0d6937f7120d018d220814 /include/gst/interfaces | |
parent | 50acf9d37183f86f6f623aad410003392b0af41f (diff) |
Jabber: initial version of Jingle support
Diffstat (limited to 'include/gst/interfaces')
-rw-r--r-- | include/gst/interfaces/photography-enumtypes.h | 60 | ||||
-rw-r--r-- | include/gst/interfaces/photography-prelude.h | 35 | ||||
-rw-r--r-- | include/gst/interfaces/photography.h | 685 |
3 files changed, 780 insertions, 0 deletions
diff --git a/include/gst/interfaces/photography-enumtypes.h b/include/gst/interfaces/photography-enumtypes.h new file mode 100644 index 0000000000..b4132877b7 --- /dev/null +++ b/include/gst/interfaces/photography-enumtypes.h @@ -0,0 +1,60 @@ + +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ + +#pragma once + + #include <glib-object.h> + #include <gst/interfaces/photography-prelude.h> + + G_BEGIN_DECLS + +/* enumerations from "photography.h" */ + +GST_PHOTOGRAPHY_API +GType gst_photography_noise_reduction_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_NOISE_REDUCTION (gst_photography_noise_reduction_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_white_balance_mode_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_WHITE_BALANCE_MODE (gst_photography_white_balance_mode_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_color_tone_mode_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_COLOR_TONE_MODE (gst_photography_color_tone_mode_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_scene_mode_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_SCENE_MODE (gst_photography_scene_mode_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_flash_mode_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_FLASH_MODE (gst_photography_flash_mode_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_focus_status_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_FOCUS_STATUS (gst_photography_focus_status_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_caps_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_CAPS (gst_photography_caps_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_shake_risk_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_SHAKE_RISK (gst_photography_shake_risk_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_flicker_reduction_mode_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_FLICKER_REDUCTION_MODE (gst_photography_flicker_reduction_mode_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_focus_mode_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_FOCUS_MODE (gst_photography_focus_mode_get_type()) + +GST_PHOTOGRAPHY_API +GType gst_photography_exposure_mode_get_type (void); +#define GST_TYPE_PHOTOGRAPHY_EXPOSURE_MODE (gst_photography_exposure_mode_get_type()) + +G_END_DECLS + +/* Generated data ends here */ + diff --git a/include/gst/interfaces/photography-prelude.h b/include/gst/interfaces/photography-prelude.h new file mode 100644 index 0000000000..dbb7f13f95 --- /dev/null +++ b/include/gst/interfaces/photography-prelude.h @@ -0,0 +1,35 @@ +/* GStreamer Photography Library + * Copyright (C) 2018 GStreamer developers + * + * photography-prelude.h: prelude include header for gst-photography library + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PHOTOGRAPHY_PRELUDE_H__ +#define __GST_PHOTOGRAPHY_PRELUDE_H__ + +#include <gst/gst.h> + +#ifndef GST_PHOTOGRAPHY_API +# ifdef BUILDING_GST_PHOTOGRAPHY +# define GST_PHOTOGRAPHY_API GST_API_EXPORT /* from config.h */ +# else +# define GST_PHOTOGRAPHY_API GST_API_IMPORT +# endif +#endif + +#endif /* __GST_PHOTOGRAPHY_PRELUDE_H__ */ diff --git a/include/gst/interfaces/photography.h b/include/gst/interfaces/photography.h new file mode 100644 index 0000000000..e9ac9e668b --- /dev/null +++ b/include/gst/interfaces/photography.h @@ -0,0 +1,685 @@ +/* GStreamer + * + * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org> + * + * photography.h: photography interface for digital imaging + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PHOTOGRAPHY_H__ +#define __GST_PHOTOGRAPHY_H__ + +#ifndef GST_USE_UNSTABLE_API +#warning "The GstPhotography interface is unstable API and may change in future." +#warning "You can define GST_USE_UNSTABLE_API to avoid this warning." +#endif + +#include <gst/gst.h> +#include <gst/interfaces/photography-prelude.h> +#include <gst/interfaces/photography-enumtypes.h> + +G_BEGIN_DECLS + +#define GST_TYPE_PHOTOGRAPHY \ + (gst_photography_get_type ()) +#define GST_PHOTOGRAPHY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PHOTOGRAPHY, GstPhotography)) +#define GST_IS_PHOTOGRAPHY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PHOTOGRAPHY)) +#define GST_PHOTOGRAPHY_GET_INTERFACE(inst) \ + (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GST_TYPE_PHOTOGRAPHY, GstPhotographyInterface)) + + +/** + * GST_PHOTOGRAPHY_AUTOFOCUS_DONE: + * + * Name of custom GstMessage that will be posted to #GstBus when autofocusing + * is complete. + * This message contains following fields: + * + * * `status` (#GstPhotographyFocusStatus): Tells if focusing succeeded or failed. + * + * * `focus-window-rows` (#G_TYPE_INT): Tells number of focus matrix rows. + * + * * `focus-window-columns` (#G_TYPE_INT): Tells number of focus matrix columns. + * + * * `focus-window-mask` (#G_TYPE_INT): Bitmask containing rows x columns bits + * which mark the focus points in the focus matrix. Lowest bit (LSB) always + * represents the top-left corner of the focus matrix. This field is only valid + * when focusing status is SUCCESS. + */ +#define GST_PHOTOGRAPHY_AUTOFOCUS_DONE "autofocus-done" + +/** + * GST_PHOTOGRAPHY_SHAKE_RISK: + * + * Name of custom GstMessage that is posted to #GstBus during autofocusing + * process. It is posted if there is change in the risk of captured image + * becoming "shaken" due to camera movement and too long exposure time. + * + * This message contains following fields: + * + * * `status` (#GstPhotographyShakeRisk): Tells risk level of capturing shaken image. + */ +#define GST_PHOTOGRAPHY_SHAKE_RISK "shake-risk" + +/* Maximum white point values used in #GstPhotographySettings */ +#define MAX_WHITE_POINT_VALUES 4 + +/* Interface property names */ +#define GST_PHOTOGRAPHY_PROP_WB_MODE "white-balance-mode" +#define GST_PHOTOGRAPHY_PROP_COLOR_TONE "color-tone-mode" +#define GST_PHOTOGRAPHY_PROP_SCENE_MODE "scene-mode" +#define GST_PHOTOGRAPHY_PROP_FLASH_MODE "flash-mode" +#define GST_PHOTOGRAPHY_PROP_NOISE_REDUCTION "noise-reduction" +#define GST_PHOTOGRAPHY_PROP_FOCUS_STATUS "focus-status" +#define GST_PHOTOGRAPHY_PROP_CAPABILITIES "capabilities" +#define GST_PHOTOGRAPHY_PROP_SHAKE_RISK "shake-risk" +#define GST_PHOTOGRAPHY_PROP_EV_COMP "ev-compensation" +#define GST_PHOTOGRAPHY_PROP_ISO_SPEED "iso-speed" +#define GST_PHOTOGRAPHY_PROP_APERTURE "aperture" +#define GST_PHOTOGRAPHY_PROP_EXPOSURE_TIME "exposure-time" +#define GST_PHOTOGRAPHY_PROP_IMAGE_CAPTURE_SUPPORTED_CAPS \ + "image-capture-supported-caps" +#define GST_PHOTOGRAPHY_PROP_IMAGE_PREVIEW_SUPPORTED_CAPS \ + "image-preview-supported-caps" +#define GST_PHOTOGRAPHY_PROP_FLICKER_MODE "flicker-mode" +#define GST_PHOTOGRAPHY_PROP_FOCUS_MODE "focus-mode" +#define GST_PHOTOGRAPHY_PROP_ZOOM "zoom" +#define GST_PHOTOGRAPHY_PROP_COLOR_TEMPERATURE "color-temperature" +#define GST_PHOTOGRAPHY_PROP_WHITE_POINT "white-point" +#define GST_PHOTOGRAPHY_PROP_ANALOG_GAIN "analog-gain" +#define GST_PHOTOGRAPHY_PROP_EXPOSURE_MODE "exposure-mode" +#define GST_PHOTOGRAPHY_PROP_LENS_FOCUS "lens-focus" +#define GST_PHOTOGRAPHY_PROP_MIN_EXPOSURE_TIME "min-exposure-time" +#define GST_PHOTOGRAPHY_PROP_MAX_EXPOSURE_TIME "max-exposure-time" + +/** + * GstPhotography: + * + * Opaque #GstPhotography data structure. + */ +typedef struct _GstPhotography GstPhotography; + +/** + * GstPhotographyNoiseReduction: + * @GST_PHOTOGRAPHY_NOISE_REDUCTION_BAYER: Adaptive noise reduction on Bayer + * format + * @GST_PHOTOGRAPHY_NOISE_REDUCTION_YCC: reduces the noise on Y and 2-chroma + * images. + * @GST_PHOTOGRAPHY_NOISE_REDUCTION_TEMPORAL: Multi-frame adaptive NR, + * provided for the video mode + * @GST_PHOTOGRAPHY_NOISE_REDUCTION_FIXED: Fixed Pattern Noise refers to noise + * that does not change between frames. The noise is removed from the sensor + * image, by subtracting a previously-captured black image in memory. + * @GST_PHOTOGRAPHY_NOISE_REDUCTION_EXTRA: Extra Noise Reduction. In the case + * of high-ISO capturing, some noise remains after YCC NR. XNR reduces this + * remaining noise. + * + * Noise Reduction features of a photography capture or filter element. + */ +typedef enum +{ + GST_PHOTOGRAPHY_NOISE_REDUCTION_BAYER = (1 << 0), + GST_PHOTOGRAPHY_NOISE_REDUCTION_YCC = (1 << 1), + GST_PHOTOGRAPHY_NOISE_REDUCTION_TEMPORAL = (1 << 2), + GST_PHOTOGRAPHY_NOISE_REDUCTION_FIXED = (1 << 3), + GST_PHOTOGRAPHY_NOISE_REDUCTION_EXTRA = (1 << 4) +} GstPhotographyNoiseReduction; + +/** + * GstPhotographyWhiteBalanceMode: + * @GST_PHOTOGRAPHY_WB_MODE_AUTO: Choose white balance mode automatically + * @GST_PHOTOGRAPHY_WB_MODE_DAYLIGHT: Mode for daylight conditions + * @GST_PHOTOGRAPHY_WB_MODE_CLOUDY: Mode for cloudy conditions + * @GST_PHOTOGRAPHY_WB_MODE_SUNSET: Mode for sunset conditions + * @GST_PHOTOGRAPHY_WB_MODE_TUNGSTEN: Mode for tungsten lighting + * @GST_PHOTOGRAPHY_WB_MODE_FLUORESCENT: Mode for fluorescent lighting + * @GST_PHOTOGRAPHY_WB_MODE_MANUAL: Disable automatic white balance adjustment + * and keep current values. + * @GST_PHOTOGRAPHY_WB_MODE_WARM_FLUORESCENT: Mode for warm fluorescent lighting (Since: 1.2) + * @GST_PHOTOGRAPHY_WB_MODE_SHADE: Mode for shade lighting (Since: 1.2) + * + * Modes for white balance control. + */ +typedef enum +{ + GST_PHOTOGRAPHY_WB_MODE_AUTO = 0, + GST_PHOTOGRAPHY_WB_MODE_DAYLIGHT, + GST_PHOTOGRAPHY_WB_MODE_CLOUDY, + GST_PHOTOGRAPHY_WB_MODE_SUNSET, + GST_PHOTOGRAPHY_WB_MODE_TUNGSTEN, + GST_PHOTOGRAPHY_WB_MODE_FLUORESCENT, + GST_PHOTOGRAPHY_WB_MODE_MANUAL, + GST_PHOTOGRAPHY_WB_MODE_WARM_FLUORESCENT, + GST_PHOTOGRAPHY_WB_MODE_SHADE +} GstPhotographyWhiteBalanceMode; + +/** + * GstPhotographyColorToneMode: + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_NORMAL: No effects + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_SEPIA: Sepia + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEGATIVE: Negative + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRAYSCALE: Grayscale + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_NATURAL: Natural + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_VIVID: Vivid + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_COLORSWAP: Colorswap + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_SOLARIZE: Solarize + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_OUT_OF_FOCUS: Out of focus + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKY_BLUE: Sky blue + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRASS_GREEN: Grass green + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKIN_WHITEN: Skin whiten + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_POSTERIZE: Posterize (Since: 1.2) + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_WHITEBOARD: Whiteboard (Since: 1.2) + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_BLACKBOARD: Blackboard (Since: 1.2) + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_AQUA: Aqua (Since: 1.2) + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_EMBOSS: Emboss (Since: 1.18) + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKETCH: Sketch (Since: 1.18) + * @GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEON: Neon (Since: 1.18) + * + * + * Modes for special color effects. + */ +typedef enum +{ + GST_PHOTOGRAPHY_COLOR_TONE_MODE_NORMAL = 0, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_SEPIA, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEGATIVE, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRAYSCALE, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_NATURAL, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_VIVID, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_COLORSWAP, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_SOLARIZE, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_OUT_OF_FOCUS, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKY_BLUE, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRASS_GREEN, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKIN_WHITEN, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_POSTERIZE, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_WHITEBOARD, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_BLACKBOARD, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_AQUA, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_EMBOSS, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKETCH, + GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEON +} GstPhotographyColorToneMode; + +/** + * GstPhotographySceneMode: + * @GST_PHOTOGRAPHY_SCENE_MODE_MANUAL: Set individual options manually + * @GST_PHOTOGRAPHY_SCENE_MODE_CLOSEUP: Mode for close objects + * @GST_PHOTOGRAPHY_SCENE_MODE_PORTRAIT: Mode for portraits + * @GST_PHOTOGRAPHY_SCENE_MODE_LANDSCAPE: Mode for landscapes + * @GST_PHOTOGRAPHY_SCENE_MODE_SPORT: Mode for scene with fast motion + * @GST_PHOTOGRAPHY_SCENE_MODE_NIGHT: Mode for night conditions + * @GST_PHOTOGRAPHY_SCENE_MODE_AUTO: Choose scene mode automatically + * @GST_PHOTOGRAPHY_SCENE_MODE_ACTION: Take photos of fast moving + * objects (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_NIGHT_PORTRAIT: Take people pictures + * at night (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_THEATRE: Take photos in a theater (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_BEACH: Take pictures on the beach (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_SNOW: Take pictures on the snow (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_SUNSET: Take sunset photos (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_STEADY_PHOTO: Avoid blurry pictures + * (for example, due to hand shake) (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_FIREWORKS: For shooting firework + * displays (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_PARTY: Take indoor low-light shot (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT: Capture the naturally warm color + * of scenes lit by candles (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_BARCODE: Applications are looking for + * a barcode (Since: 1.2) + * @GST_PHOTOGRAPHY_SCENE_MODE_BACKLIGHT: Backlit photos (Since: 1.18) + * @GST_PHOTOGRAPHY_SCENE_MODE_FLOWERS: For shooting flowers (Since: 1.18) + * @GST_PHOTOGRAPHY_SCENE_MODE_AR: Specific for Augmented Reality (Since: 1.18) + * @GST_PHOTOGRAPHY_SCENE_MODE_HDR: High Dynamic Range photography (Since: 1.18) + * + * Each mode contains preset #GstPhotography options in order to produce + * good capturing result in certain scene. + */ +typedef enum +{ + GST_PHOTOGRAPHY_SCENE_MODE_MANUAL = 0, + GST_PHOTOGRAPHY_SCENE_MODE_CLOSEUP, + GST_PHOTOGRAPHY_SCENE_MODE_PORTRAIT, + GST_PHOTOGRAPHY_SCENE_MODE_LANDSCAPE, + GST_PHOTOGRAPHY_SCENE_MODE_SPORT, + GST_PHOTOGRAPHY_SCENE_MODE_NIGHT, + GST_PHOTOGRAPHY_SCENE_MODE_AUTO, + GST_PHOTOGRAPHY_SCENE_MODE_ACTION, + GST_PHOTOGRAPHY_SCENE_MODE_NIGHT_PORTRAIT, + GST_PHOTOGRAPHY_SCENE_MODE_THEATRE, + GST_PHOTOGRAPHY_SCENE_MODE_BEACH, + GST_PHOTOGRAPHY_SCENE_MODE_SNOW, + GST_PHOTOGRAPHY_SCENE_MODE_SUNSET, + GST_PHOTOGRAPHY_SCENE_MODE_STEADY_PHOTO, + GST_PHOTOGRAPHY_SCENE_MODE_FIREWORKS, + GST_PHOTOGRAPHY_SCENE_MODE_PARTY, + GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT, + GST_PHOTOGRAPHY_SCENE_MODE_BARCODE, + GST_PHOTOGRAPHY_SCENE_MODE_BACKLIGHT, + GST_PHOTOGRAPHY_SCENE_MODE_FLOWERS, + GST_PHOTOGRAPHY_SCENE_MODE_AR, + GST_PHOTOGRAPHY_SCENE_MODE_HDR +} GstPhotographySceneMode; + +/** + * GstPhotographyFlashMode: + * @GST_PHOTOGRAPHY_FLASH_MODE_AUTO: Fire flash automatically according to + * lighting conditions. + * @GST_PHOTOGRAPHY_FLASH_MODE_OFF: Never fire flash + * @GST_PHOTOGRAPHY_FLASH_MODE_ON: Always fire flash + * @GST_PHOTOGRAPHY_FLASH_MODE_FILL_IN: Fill in flash + * @GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE: Flash mode for reducing chance of + * capturing red eyes + * + * Modes for flash control. + */ +typedef enum +{ + GST_PHOTOGRAPHY_FLASH_MODE_AUTO = 0, + GST_PHOTOGRAPHY_FLASH_MODE_OFF, + GST_PHOTOGRAPHY_FLASH_MODE_ON, + GST_PHOTOGRAPHY_FLASH_MODE_FILL_IN, + GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE +} GstPhotographyFlashMode; + +/** + * GstPhotographyFocusStatus: + * @GST_PHOTOGRAPHY_FOCUS_STATUS_NONE: No status available + * @GST_PHOTOGRAPHY_FOCUS_STATUS_RUNNING: Focusing is ongoing + * @GST_PHOTOGRAPHY_FOCUS_STATUS_FAIL: Focusing failed + * @GST_PHOTOGRAPHY_FOCUS_STATUS_SUCCESS: Focusing succeeded + * + * Status of the focusing operation, used in #GST_PHOTOGRAPHY_AUTOFOCUS_DONE + * message. + */ +typedef enum +{ + GST_PHOTOGRAPHY_FOCUS_STATUS_NONE = 0, + GST_PHOTOGRAPHY_FOCUS_STATUS_RUNNING, + GST_PHOTOGRAPHY_FOCUS_STATUS_FAIL, + GST_PHOTOGRAPHY_FOCUS_STATUS_SUCCESS +} GstPhotographyFocusStatus; + +/** + * GstPhotographyCaps: + * + * Bitmask that indicates which #GstPhotography interface features an instance + * supports. + */ +typedef enum +{ + GST_PHOTOGRAPHY_CAPS_NONE = (0 << 0), + GST_PHOTOGRAPHY_CAPS_EV_COMP = (1 << 0), + GST_PHOTOGRAPHY_CAPS_ISO_SPEED = (1 << 1), + GST_PHOTOGRAPHY_CAPS_WB_MODE = (1 << 2), + GST_PHOTOGRAPHY_CAPS_TONE = (1 << 3), + GST_PHOTOGRAPHY_CAPS_SCENE = (1 << 4), + GST_PHOTOGRAPHY_CAPS_FLASH = (1 << 5), + GST_PHOTOGRAPHY_CAPS_ZOOM = (1 << 6), + GST_PHOTOGRAPHY_CAPS_FOCUS = (1 << 7), + GST_PHOTOGRAPHY_CAPS_APERTURE = (1 << 8), + GST_PHOTOGRAPHY_CAPS_EXPOSURE = (1 << 9), + GST_PHOTOGRAPHY_CAPS_SHAKE = (1 << 10), + GST_PHOTOGRAPHY_CAPS_WHITE_BALANCE = (1 << 11), + GST_PHOTOGRAPHY_CAPS_NOISE_REDUCTION = (1 << 12), + GST_PHOTOGRAPHY_CAPS_FLICKER_REDUCTION = (1 << 13), + GST_PHOTOGRAPHY_CAPS_ALL = (~0) +} GstPhotographyCaps; + +/** + * GstPhotographyShakeRisk: + * @GST_PHOTOGRAPHY_SHAKE_RISK_LOW: Low risk + * @GST_PHOTOGRAPHY_SHAKE_RISK_MEDIUM: Medium risk + * @GST_PHOTOGRAPHY_SHAKE_RISK_HIGH: High risk + * + * Risk level of captured image becoming "shaken" due to camera movement and + * too long exposure time. Used in #GST_PHOTOGRAPHY_SHAKE_RISK #GstMessage. + */ +typedef enum +{ + GST_PHOTOGRAPHY_SHAKE_RISK_LOW = 0, + GST_PHOTOGRAPHY_SHAKE_RISK_MEDIUM, + GST_PHOTOGRAPHY_SHAKE_RISK_HIGH, +} GstPhotographyShakeRisk; + +/** + * GstPhotographyFlickerReductionMode: + * @GST_PHOTOGRAPHY_FLICKER_REDUCTION_OFF: Disable flicker reduction + * @GST_PHOTOGRAPHY_FLICKER_REDUCTION_50HZ: 50Hz flicker reduction + * @GST_PHOTOGRAPHY_FLICKER_REDUCTION_60HZ: 60Hz flicker reduction + * @GST_PHOTOGRAPHY_FLICKER_REDUCTION_AUTO: Choose mode automatically + * + * Reduce flicker in video caused by light source fluctuation. + */ +typedef enum +{ + GST_PHOTOGRAPHY_FLICKER_REDUCTION_OFF = 0, + GST_PHOTOGRAPHY_FLICKER_REDUCTION_50HZ, + GST_PHOTOGRAPHY_FLICKER_REDUCTION_60HZ, + GST_PHOTOGRAPHY_FLICKER_REDUCTION_AUTO, +} GstPhotographyFlickerReductionMode; + +/** + * GstPhotographyFocusMode: + * @GST_PHOTOGRAPHY_FOCUS_MODE_AUTO: Choose focus mode automatically + * @GST_PHOTOGRAPHY_FOCUS_MODE_MACRO: Mode for focusing objects close to lens + * @GST_PHOTOGRAPHY_FOCUS_MODE_PORTRAIT: Mode for portraits + * @GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY: Mode for landscapes and far away objects + * @GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL: Mode for maximum depth of field, keeping + * focus acceptable both in infinify and as close objects as possible + * @GST_PHOTOGRAPHY_FOCUS_MODE_EXTENDED: Extended focus mode + * @GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL: Continuous autofocus mode + * @GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED: Extended continuous + * autofocus mode + * @GST_PHOTOGRAPHY_FOCUS_MODE_MANUAL: Disable automatic focusing + * and keep current value. #GstPhotography:lens-focus property can + * be used to change focus manually. + * + * Choose mode for focusing algorithm. + */ +typedef enum { + GST_PHOTOGRAPHY_FOCUS_MODE_AUTO = 0, + GST_PHOTOGRAPHY_FOCUS_MODE_MACRO, + GST_PHOTOGRAPHY_FOCUS_MODE_PORTRAIT, + GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY, + GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL, + GST_PHOTOGRAPHY_FOCUS_MODE_EXTENDED, + GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL, + GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED, + GST_PHOTOGRAPHY_FOCUS_MODE_MANUAL +} GstPhotographyFocusMode; + +/** + * GstPhotographyExposureMode: + * @GST_PHOTOGRAPHY_EXPOSURE_MODE_AUTO: Adjust exposure automatically + * @GST_PHOTOGRAPHY_EXPOSURE_MODE_MANUAL: Disable automatic exposure adjustment + * and keep current values. + * + */ +typedef enum { + GST_PHOTOGRAPHY_EXPOSURE_MODE_AUTO = 0, + GST_PHOTOGRAPHY_EXPOSURE_MODE_MANUAL +} GstPhotographyExposureMode; + +/** + * GstPhotographySettings: + * + * Structure containing all #GstPhotography settings, used to set all + * settings in one call with @gst_photography_set_config(). + */ +typedef struct +{ + GstPhotographyWhiteBalanceMode wb_mode; + GstPhotographyColorToneMode tone_mode; + GstPhotographySceneMode scene_mode; + GstPhotographyFlashMode flash_mode; + guint32 exposure_time; + guint aperture; + gfloat ev_compensation; + guint iso_speed; + gfloat zoom; + GstPhotographyFlickerReductionMode flicker_mode; + GstPhotographyFocusMode focus_mode; + GstPhotographyNoiseReduction noise_reduction; + GstPhotographyExposureMode exposure_mode; + guint color_temperature; + guint white_point[MAX_WHITE_POINT_VALUES]; + gfloat analog_gain; + gfloat lens_focus; + guint min_exposure_time; + guint max_exposure_time; + /* FIXME: add padding? */ +} GstPhotographySettings; + +/** + * GstPhotographyCapturePrepared: + * @data: user data that has been given, when registering the callback + * @configured_caps: #GstCaps defining the configured capture format. + * Ownership of these caps stays in the element. + * + * This callback will be called when the element has finished preparations + * and is ready for image capture. The next buffer that element produces + * will be of @configured_caps format, so this callback allows the application + * to e.g. reconfigure capsfilters in pipeline if any. + */ +typedef void (*GstPhotographyCapturePrepared) (gpointer data, const GstCaps *configured_caps); + +/** + * GstPhotographyInterface: + * @parent: parent interface type. + * @get_ev_compensation: vmethod to get ev exposure compensation value + * @get_iso_speed: vmethod to get iso speed (light sensitivity) value + * @get_aperture: vmethod to get aperture value + * @get_exposure: vmethod to get exposure time value + * @get_white_balance_mode: vmethod to get white balance mode value + * @get_color_tone_mode: vmethod to get color tone mode value + * @get_scene_mode: vmethod to get scene mode value + * @get_flash_mode: vmethod to get flash mode value + * @get_noise_reduction: vmethod to get noise reduction mode value + * @get_zoom: vmethod to get zoom factor value + * @set_ev_compensation: vmethod to set ev exposure compensation value + * @set_iso_speed: vmethod to set iso speed (light sensitivity) value + * @set_aperture: vmethod to set aperture value + * @set_exposure: vmethod to set exposure time value + * @set_white_balance_mode: vmethod to set white balance mode value + * @set_color_tone_mode: vmethod to set color tone mode value + * @set_scene_mode: vmethod to set scene mode value + * @set_flash_mode: vmethod to set flash mode value + * @set_noise_reduction: vmethod to set noise reduction mode value + * @set_zoom: vmethod to set zoom factor value + * @get_capabilities: vmethod to get supported capabilities of the interface + * @prepare_for_capture: vmethod to tell the element to prepare for capturing + * @set_autofocus: vmethod to set autofocus on/off + * @set_config: vmethod to set all configuration parameters at once + * @get_config: vmethod to get all configuration parameters at once + * @get_image_capture_supported_caps: vmethod to get caps describing supported image capture formats + * @set_exposure_mode: vmethod to set exposure mode (Since: 1.18) + * @get_exposure_mode: vmethod to get exposure mode (Since: 1.18) + * @set_analog_gain: vmethod to set analog gain (Since: 1.18) + * @get_analog_gain: vmethod to get analog gain (Since: 1.18) + * @set_lens_focus: vmethod to set lens focus (Since: 1.18) + * @get_lens_focus: vmethod to get lens focus (Since: 1.18) + * @set_color_temperature: vmethod to set color temperature (Since: 1.18) + * @get_color_temperature: vmethod to get color temperature (Since: 1.18) + * @set_min_exposure_time: vmethod to set min exposure time (Since: 1.18) + * @get_min_exposure_time: vmethod to get min exposure time (Since: 1.18) + * @set_max_exposure_time: vmethod to set max exposure time (Since: 1.18) + * @get_max_exposure_time: vmethod to get max exposure time (Since: 1.18) + * + * #GstPhotographyInterface interface. + */ +typedef struct _GstPhotographyInterface +{ + GTypeInterface parent; + + /* virtual functions */ + gboolean (*get_ev_compensation) (GstPhotography * photo, gfloat * ev_comp); + gboolean (*get_iso_speed) (GstPhotography * photo, guint * iso_speed); + gboolean (*get_aperture) (GstPhotography * photo, guint * aperture); + gboolean (*get_exposure) (GstPhotography * photo, guint32 * exposure); + gboolean (*get_white_balance_mode) (GstPhotography * photo, GstPhotographyWhiteBalanceMode * wb_mode); + gboolean (*get_color_tone_mode) (GstPhotography * photo, GstPhotographyColorToneMode * tone_mode); + gboolean (*get_scene_mode) (GstPhotography * photo, GstPhotographySceneMode * scene_mode); + gboolean (*get_flash_mode) (GstPhotography * photo, GstPhotographyFlashMode * flash_mode); + gboolean (*get_zoom) (GstPhotography * photo, gfloat * zoom); + gboolean (*get_flicker_mode) (GstPhotography * photo, GstPhotographyFlickerReductionMode * flicker_mode); + gboolean (*get_focus_mode) (GstPhotography * photo, GstPhotographyFocusMode * focus_mode); + + gboolean (*set_ev_compensation) (GstPhotography * photo, gfloat ev_comp); + gboolean (*set_iso_speed) (GstPhotography * photo, guint iso_speed); + gboolean (*set_aperture) (GstPhotography * photo, guint aperture); + gboolean (*set_exposure) (GstPhotography * photo, guint32 exposure); + gboolean (*set_white_balance_mode) (GstPhotography * photo, GstPhotographyWhiteBalanceMode wb_mode); + gboolean (*set_color_tone_mode) (GstPhotography * photo, GstPhotographyColorToneMode tone_mode); + gboolean (*set_scene_mode) (GstPhotography * photo, GstPhotographySceneMode scene_mode); + gboolean (*set_flash_mode) (GstPhotography * photo, GstPhotographyFlashMode flash_mode); + gboolean (*set_zoom) (GstPhotography * photo, gfloat zoom); + gboolean (*set_flicker_mode) (GstPhotography * photo, GstPhotographyFlickerReductionMode flicker_mode); + gboolean (*set_focus_mode) (GstPhotography * photo, GstPhotographyFocusMode focus_mode); + + GstPhotographyCaps (*get_capabilities) (GstPhotography * photo); + + gboolean (*prepare_for_capture) (GstPhotography * photo, GstPhotographyCapturePrepared func, GstCaps *capture_caps, gpointer user_data); + + void (*set_autofocus) (GstPhotography * photo, gboolean on); + + gboolean (*set_config) (GstPhotography * photo, GstPhotographySettings * config); + gboolean (*get_config) (GstPhotography * photo, GstPhotographySettings * config); + + gboolean (*get_noise_reduction) (GstPhotography * photo, GstPhotographyNoiseReduction * noise_reduction); + gboolean (*set_noise_reduction) (GstPhotography * photo, GstPhotographyNoiseReduction noise_reduction); + + gboolean (*set_exposure_mode) (GstPhotography * photo, GstPhotographyExposureMode exposure_mode); + gboolean (*get_exposure_mode) (GstPhotography * photo, GstPhotographyExposureMode * exposure_mode); + gboolean (*set_analog_gain) (GstPhotography * photo, gfloat analog_gain); + gboolean (*get_analog_gain) (GstPhotography * photo, gfloat * analog_gain); + gboolean (*set_lens_focus) (GstPhotography * photo, gfloat lens_focus); + gboolean (*get_lens_focus) (GstPhotography * photo, gfloat * lens_focus); + gboolean (*set_color_temperature) (GstPhotography * photo, guint color_temperature); + gboolean (*get_color_temperature) (GstPhotography * photo, guint * color_temperature); + gboolean (*set_min_exposure_time) (GstPhotography * photo, guint min_exposure_time); + gboolean (*get_min_exposure_time) (GstPhotography * photo, guint * min_exposure_time); + gboolean (*set_max_exposure_time) (GstPhotography * photo, guint max_exposure_time); + gboolean (*get_max_exposure_time) (GstPhotography * photo, guint * max_exposure_time); + + /* FIXME: remove padding, not needed for interfaces */ + /*< private > */ + gpointer _gst_reserved[GST_PADDING]; +} GstPhotographyInterface; + +GST_PHOTOGRAPHY_API +GType gst_photography_get_type (void); + +/* virtual class function wrappers */ + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_ev_compensation (GstPhotography * photo, + gfloat * ev_comp); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_iso_speed (GstPhotography * photo, + guint * iso_speed); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_aperture (GstPhotography * photo, + guint * aperture); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_exposure (GstPhotography * photo, + guint32 * exposure); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_white_balance_mode (GstPhotography * photo, + GstPhotographyWhiteBalanceMode * wb_mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_color_tone_mode (GstPhotography * photo, + GstPhotographyColorToneMode * tone_mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_scene_mode (GstPhotography * photo, + GstPhotographySceneMode * scene_mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_flash_mode (GstPhotography * photo, + GstPhotographyFlashMode * flash_mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_noise_reduction (GstPhotography * photo, + GstPhotographyNoiseReduction * noise_reduction); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_zoom (GstPhotography * photo, gfloat * zoom); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_flicker_mode (GstPhotography * photo, + GstPhotographyFlickerReductionMode * mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_focus_mode (GstPhotography * photo, + GstPhotographyFocusMode * mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_ev_compensation (GstPhotography * photo, + gfloat ev_comp); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_iso_speed (GstPhotography * photo, + guint iso_speed); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_aperture (GstPhotography * photo, guint aperture); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_exposure (GstPhotography * photo, guint exposure); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_white_balance_mode (GstPhotography * photo, + GstPhotographyWhiteBalanceMode wb_mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_color_tone_mode (GstPhotography * photo, + GstPhotographyColorToneMode tone_mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_scene_mode (GstPhotography * photo, + GstPhotographySceneMode scene_mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_flash_mode (GstPhotography * photo, + GstPhotographyFlashMode flash_mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_noise_reduction (GstPhotography * photo, + GstPhotographyNoiseReduction noise_reduction); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_zoom (GstPhotography * photo, gfloat zoom); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_flicker_mode (GstPhotography * photo, + GstPhotographyFlickerReductionMode mode); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_focus_mode (GstPhotography * photo, + GstPhotographyFocusMode mode); + +GST_PHOTOGRAPHY_API +GstPhotographyCaps gst_photography_get_capabilities (GstPhotography * photo); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_prepare_for_capture (GstPhotography * photo, + GstPhotographyCapturePrepared func, + GstCaps *capture_caps, + gpointer user_data); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_set_config (GstPhotography * photo, + GstPhotographySettings * config); + +GST_PHOTOGRAPHY_API +gboolean gst_photography_get_config (GstPhotography * photo, + GstPhotographySettings * config); + +GST_PHOTOGRAPHY_API +void gst_photography_set_autofocus (GstPhotography * photo, gboolean on); + +G_END_DECLS + +#endif /* __GST_PHOTOGRAPHY_H__ */ |