mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-22 09:41:07 +00:00
exiftag: handle GST_TAG_CAPTURING_LIGHT_SOURCE tag
This exif tag allows to specify the different light conditions when taking a picture. This tag is defined in: https://exiftool.org/TagNames/EXIF.html#LightSource Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5571>
This commit is contained in:
parent
b5e119bbcc
commit
0d85cdafd5
7 changed files with 295 additions and 0 deletions
|
@ -151,6 +151,35 @@ The allowed values are:
|
||||||
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/tag/tag.h"/>
|
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/tag/tag.h"/>
|
||||||
<type name="utf8" c:type="gchar*"/>
|
<type name="utf8" c:type="gchar*"/>
|
||||||
</constant>
|
</constant>
|
||||||
|
<constant name="TAG_CAPTURING_LIGHT_SOURCE" value="capturing-light-source" c:type="GST_TAG_CAPTURING_LIGHT_SOURCE" version="1.26">
|
||||||
|
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/tag/tag.h">Light source used when capturing an image. (string)
|
||||||
|
|
||||||
|
The allowed values are:
|
||||||
|
"unknown"
|
||||||
|
"daylight"
|
||||||
|
"fluorescent"
|
||||||
|
"tungsten"
|
||||||
|
"flash"
|
||||||
|
"fine-weather"
|
||||||
|
"cloudy-weather"
|
||||||
|
"shade"
|
||||||
|
"daylight-fluorescent"
|
||||||
|
"day-white-fluorescent"
|
||||||
|
"cool-white-fluorescent"
|
||||||
|
"white-fluorescent"
|
||||||
|
"warm-white-fluorescent"
|
||||||
|
"standard-light-A"
|
||||||
|
"standard-light-B"
|
||||||
|
"standard-light-C"
|
||||||
|
"D55"
|
||||||
|
"D65"
|
||||||
|
"D75"
|
||||||
|
"D50"
|
||||||
|
"iso-studio-tungsten"
|
||||||
|
"other"</doc>
|
||||||
|
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/tag/tag.h"/>
|
||||||
|
<type name="utf8" c:type="gchar*"/>
|
||||||
|
</constant>
|
||||||
<constant name="TAG_CAPTURING_METERING_MODE" value="capturing-metering-mode" c:type="GST_TAG_CAPTURING_METERING_MODE">
|
<constant name="TAG_CAPTURING_METERING_MODE" value="capturing-metering-mode" c:type="GST_TAG_CAPTURING_METERING_MODE">
|
||||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/tag/tag.h">Defines the way a camera determines the exposure. (string)
|
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/tag/tag.h">Defines the way a camera determines the exposure. (string)
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,63 @@ end:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gint
|
||||||
|
__exif_tag_capture_light_source_to_exif_value (const gchar * str)
|
||||||
|
{
|
||||||
|
if (str == NULL) {
|
||||||
|
GST_WARNING ("Invalid light source: NULL");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (str, "unknown") == 0)
|
||||||
|
return 0;
|
||||||
|
else if (strcmp (str, "daylight") == 0)
|
||||||
|
return 1;
|
||||||
|
else if (strcmp (str, "flourescent") == 0)
|
||||||
|
return 2;
|
||||||
|
else if (strcmp (str, "tungsten") == 0)
|
||||||
|
return 3;
|
||||||
|
else if (strcmp (str, "flash") == 0)
|
||||||
|
return 4;
|
||||||
|
else if (strcmp (str, "fine-weather") == 0)
|
||||||
|
return 9;
|
||||||
|
else if (strcmp (str, "cloudy-weather") == 0)
|
||||||
|
return 10;
|
||||||
|
else if (strcmp (str, "shade") == 0)
|
||||||
|
return 11;
|
||||||
|
else if (strcmp (str, "daylight-fluorescent") == 0)
|
||||||
|
return 12;
|
||||||
|
else if (strcmp (str, "day-white-fluorescent") == 0)
|
||||||
|
return 13;
|
||||||
|
else if (strcmp (str, "cool-white-fluorescent") == 0)
|
||||||
|
return 14;
|
||||||
|
else if (strcmp (str, "white-fluorescent") == 0)
|
||||||
|
return 15;
|
||||||
|
else if (strcmp (str, "warm-white-fluorescent") == 0)
|
||||||
|
return 16;
|
||||||
|
else if (strcmp (str, "standard-light-A") == 0)
|
||||||
|
return 17;
|
||||||
|
else if (strcmp (str, "standard-light-B") == 0)
|
||||||
|
return 18;
|
||||||
|
else if (strcmp (str, "standard-light-C") == 0)
|
||||||
|
return 19;
|
||||||
|
else if (strcmp (str, "D55") == 0)
|
||||||
|
return 20;
|
||||||
|
else if (strcmp (str, "D65") == 0)
|
||||||
|
return 21;
|
||||||
|
else if (strcmp (str, "D75") == 0)
|
||||||
|
return 22;
|
||||||
|
else if (strcmp (str, "D50") == 0)
|
||||||
|
return 23;
|
||||||
|
else if (strcmp (str, "iso-studio-tungsten") == 0)
|
||||||
|
return 24;
|
||||||
|
else if (strcmp (str, "other") == 0)
|
||||||
|
return 255;
|
||||||
|
|
||||||
|
GST_WARNING ("Invalid light source: %s", str);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
__exif_tag_capture_contrast_to_exif_value (const gchar * str)
|
__exif_tag_capture_contrast_to_exif_value (const gchar * str)
|
||||||
{
|
{
|
||||||
|
@ -347,6 +404,8 @@ GST_COMPARE_GST_STRING_TAG_TO_EXIF_SHORT_FUNC (GST_TAG_CAPTURING_EXPOSURE_MODE,
|
||||||
capture_exposure_mode);
|
capture_exposure_mode);
|
||||||
GST_COMPARE_GST_STRING_TAG_TO_EXIF_SHORT_FUNC (GST_TAG_CAPTURING_WHITE_BALANCE,
|
GST_COMPARE_GST_STRING_TAG_TO_EXIF_SHORT_FUNC (GST_TAG_CAPTURING_WHITE_BALANCE,
|
||||||
capture_white_balance);
|
capture_white_balance);
|
||||||
|
GST_COMPARE_GST_STRING_TAG_TO_EXIF_SHORT_FUNC (GST_TAG_CAPTURING_LIGHT_SOURCE,
|
||||||
|
capture_light_source);
|
||||||
GST_COMPARE_GST_STRING_TAG_TO_EXIF_SHORT_FUNC (GST_TAG_CAPTURING_CONTRAST,
|
GST_COMPARE_GST_STRING_TAG_TO_EXIF_SHORT_FUNC (GST_TAG_CAPTURING_CONTRAST,
|
||||||
capture_contrast);
|
capture_contrast);
|
||||||
GST_COMPARE_GST_STRING_TAG_TO_EXIF_SHORT_FUNC
|
GST_COMPARE_GST_STRING_TAG_TO_EXIF_SHORT_FUNC
|
||||||
|
@ -631,6 +690,8 @@ static const GstExifTagMatch tag_map[] = {
|
||||||
compare_capture_exposure_mode},
|
compare_capture_exposure_mode},
|
||||||
{GST_TAG_CAPTURING_WHITE_BALANCE, EXIF_TAG_WHITE_BALANCE, EXIF_TYPE_SHORT,
|
{GST_TAG_CAPTURING_WHITE_BALANCE, EXIF_TAG_WHITE_BALANCE, EXIF_TYPE_SHORT,
|
||||||
compare_capture_white_balance},
|
compare_capture_white_balance},
|
||||||
|
{GST_TAG_CAPTURING_LIGHT_SOURCE, EXIF_TAG_LIGHT_SOURCE, EXIF_TYPE_SHORT,
|
||||||
|
compare_capture_light_source},
|
||||||
{GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO, EXIF_TAG_DIGITAL_ZOOM_RATIO,
|
{GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO, EXIF_TAG_DIGITAL_ZOOM_RATIO,
|
||||||
EXIF_TYPE_RATIONAL, NULL},
|
EXIF_TYPE_RATIONAL, NULL},
|
||||||
{GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE, EXIF_TAG_SCENE_CAPTURE_TYPE,
|
{GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE, EXIF_TAG_SCENE_CAPTURE_TYPE,
|
||||||
|
@ -1145,6 +1206,55 @@ GST_START_TEST (test_jifmux_tags)
|
||||||
generate_jif_file_with_tags (WHITE_BALANCE_TAG ("manual"), tmpfile);
|
generate_jif_file_with_tags (WHITE_BALANCE_TAG ("manual"), tmpfile);
|
||||||
libexif_check_tags (WHITE_BALANCE_TAG ("manual"), tmpfile);
|
libexif_check_tags (WHITE_BALANCE_TAG ("manual"), tmpfile);
|
||||||
|
|
||||||
|
#define LIGHT_SOURCE_TAG(t) "taglist," GST_TAG_CAPTURING_LIGHT_SOURCE "=" t
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("unknown"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("unknown"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("daylight"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("daylight"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("flourescent"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("flourescent"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("tungsten"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("tungsten"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("flash"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("flash"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("fine-weather"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("fine-weather"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("cloudy-weather"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("cloudy-weather"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("shade"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("shade"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("daylight-fluorescent"),
|
||||||
|
tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("daylight-fluorescent"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("day-white-fluorescent"),
|
||||||
|
tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("day-white-fluorescent"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("cool-white-fluorescent"),
|
||||||
|
tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("cool-white-fluorescent"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("white-fluorescent"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("white-fluorescent"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("warm-white-fluorescent"),
|
||||||
|
tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("warm-white-fluorescent"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("standard-light-A"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("standard-light-A"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("standard-light-B"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("standard-light-B"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("standard-light-C"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("standard-light-C"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("D55"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("D55"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("D65"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("D65"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("D75"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("D75"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("iso-studio-tungsten"),
|
||||||
|
tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("iso-studio-tungsten"), tmpfile);
|
||||||
|
generate_jif_file_with_tags (LIGHT_SOURCE_TAG ("other"), tmpfile);
|
||||||
|
libexif_check_tags (LIGHT_SOURCE_TAG ("other"), tmpfile);
|
||||||
|
|
||||||
#define GAIN_ADJUSTMENT_TAG(t) "taglist," GST_TAG_CAPTURING_GAIN_ADJUSTMENT "=" t
|
#define GAIN_ADJUSTMENT_TAG(t) "taglist," GST_TAG_CAPTURING_GAIN_ADJUSTMENT "=" t
|
||||||
generate_jif_file_with_tags (GAIN_ADJUSTMENT_TAG ("none"), tmpfile);
|
generate_jif_file_with_tags (GAIN_ADJUSTMENT_TAG ("none"), tmpfile);
|
||||||
libexif_check_tags (GAIN_ADJUSTMENT_TAG ("none"), tmpfile);
|
libexif_check_tags (GAIN_ADJUSTMENT_TAG ("none"), tmpfile);
|
||||||
|
|
|
@ -279,6 +279,7 @@ EXIF_SERIALIZATION_DESERIALIZATION_FUNC (shutter_speed);
|
||||||
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (source);
|
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (source);
|
||||||
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (speed);
|
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (speed);
|
||||||
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (white_balance);
|
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (white_balance);
|
||||||
|
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (light_source);
|
||||||
|
|
||||||
EXIF_DESERIALIZATION_FUNC (resolution);
|
EXIF_DESERIALIZATION_FUNC (resolution);
|
||||||
EXIF_DESERIALIZATION_FUNC (add_to_pending_tags);
|
EXIF_DESERIALIZATION_FUNC (add_to_pending_tags);
|
||||||
|
@ -330,6 +331,7 @@ EXIF_DESERIALIZATION_FUNC (add_to_pending_tags);
|
||||||
#define EXIF_TAG_SCENE_TYPE 0xA301
|
#define EXIF_TAG_SCENE_TYPE 0xA301
|
||||||
#define EXIF_TAG_EXPOSURE_MODE 0xA402
|
#define EXIF_TAG_EXPOSURE_MODE 0xA402
|
||||||
#define EXIF_TAG_WHITE_BALANCE 0xA403
|
#define EXIF_TAG_WHITE_BALANCE 0xA403
|
||||||
|
#define EXIF_TAG_LIGHT_SOURCE 0x9208
|
||||||
#define EXIF_TAG_DIGITAL_ZOOM_RATIO 0xA404
|
#define EXIF_TAG_DIGITAL_ZOOM_RATIO 0xA404
|
||||||
#define EXIF_TAG_FOCAL_LENGTH_IN_35_MM_FILM 0xa405
|
#define EXIF_TAG_FOCAL_LENGTH_IN_35_MM_FILM 0xa405
|
||||||
#define EXIF_TAG_SCENE_CAPTURE_TYPE 0xA406
|
#define EXIF_TAG_SCENE_CAPTURE_TYPE 0xA406
|
||||||
|
@ -429,6 +431,8 @@ static const GstExifTagMatch tag_map_exif[] = {
|
||||||
0, serialize_exposure_mode, deserialize_exposure_mode},
|
0, serialize_exposure_mode, deserialize_exposure_mode},
|
||||||
{GST_TAG_CAPTURING_WHITE_BALANCE, EXIF_TAG_WHITE_BALANCE, EXIF_TYPE_SHORT,
|
{GST_TAG_CAPTURING_WHITE_BALANCE, EXIF_TAG_WHITE_BALANCE, EXIF_TYPE_SHORT,
|
||||||
0, serialize_white_balance, deserialize_white_balance},
|
0, serialize_white_balance, deserialize_white_balance},
|
||||||
|
{GST_TAG_CAPTURING_LIGHT_SOURCE, EXIF_TAG_LIGHT_SOURCE, EXIF_TYPE_SHORT,
|
||||||
|
0, serialize_light_source, deserialize_light_source},
|
||||||
{GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO, EXIF_TAG_DIGITAL_ZOOM_RATIO,
|
{GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO, EXIF_TAG_DIGITAL_ZOOM_RATIO,
|
||||||
EXIF_TYPE_RATIONAL, 0, NULL,
|
EXIF_TYPE_RATIONAL, 0, NULL,
|
||||||
NULL},
|
NULL},
|
||||||
|
@ -2125,6 +2129,8 @@ EXIF_SERIALIZATION_DESERIALIZATION_MAP_STRING_TO_INT_FUNC (source,
|
||||||
capturing_source);
|
capturing_source);
|
||||||
EXIF_SERIALIZATION_DESERIALIZATION_MAP_STRING_TO_INT_FUNC (white_balance,
|
EXIF_SERIALIZATION_DESERIALIZATION_MAP_STRING_TO_INT_FUNC (white_balance,
|
||||||
capturing_white_balance);
|
capturing_white_balance);
|
||||||
|
EXIF_SERIALIZATION_DESERIALIZATION_MAP_STRING_TO_INT_FUNC (light_source,
|
||||||
|
capturing_light_source);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
serialize_geo_coordinate (GstExifWriter * writer, const GstTagList * taglist,
|
serialize_geo_coordinate (GstExifWriter * writer, const GstTagList * taglist,
|
||||||
|
|
|
@ -280,6 +280,115 @@ __exif_tag_capturing_white_balance_from_exif_value (gint value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gint
|
||||||
|
__exif_tag_capturing_light_source_to_exif_value (const gchar * str)
|
||||||
|
{
|
||||||
|
if (str == NULL) {
|
||||||
|
GST_WARNING ("Invalid light source: NULL");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (str, "unknown") == 0)
|
||||||
|
return 0;
|
||||||
|
else if (strcmp (str, "daylight") == 0)
|
||||||
|
return 1;
|
||||||
|
else if (strcmp (str, "flourescent") == 0)
|
||||||
|
return 2;
|
||||||
|
else if (strcmp (str, "tungsten") == 0)
|
||||||
|
return 3;
|
||||||
|
else if (strcmp (str, "flash") == 0)
|
||||||
|
return 4;
|
||||||
|
else if (strcmp (str, "fine-weather") == 0)
|
||||||
|
return 9;
|
||||||
|
else if (strcmp (str, "cloudy-weather") == 0)
|
||||||
|
return 10;
|
||||||
|
else if (strcmp (str, "shade") == 0)
|
||||||
|
return 11;
|
||||||
|
else if (strcmp (str, "daylight-fluorescent") == 0)
|
||||||
|
return 12;
|
||||||
|
else if (strcmp (str, "day-white-fluorescent") == 0)
|
||||||
|
return 13;
|
||||||
|
else if (strcmp (str, "cool-white-fluorescent") == 0)
|
||||||
|
return 14;
|
||||||
|
else if (strcmp (str, "white-fluorescent") == 0)
|
||||||
|
return 15;
|
||||||
|
else if (strcmp (str, "warm-white-fluorescent") == 0)
|
||||||
|
return 16;
|
||||||
|
else if (strcmp (str, "standard-light-A") == 0)
|
||||||
|
return 17;
|
||||||
|
else if (strcmp (str, "standard-light-B") == 0)
|
||||||
|
return 18;
|
||||||
|
else if (strcmp (str, "standard-light-C") == 0)
|
||||||
|
return 19;
|
||||||
|
else if (strcmp (str, "D55") == 0)
|
||||||
|
return 20;
|
||||||
|
else if (strcmp (str, "D65") == 0)
|
||||||
|
return 21;
|
||||||
|
else if (strcmp (str, "D75") == 0)
|
||||||
|
return 22;
|
||||||
|
else if (strcmp (str, "D50") == 0)
|
||||||
|
return 23;
|
||||||
|
else if (strcmp (str, "iso-studio-tungsten") == 0)
|
||||||
|
return 24;
|
||||||
|
else if (strcmp (str, "other") == 0)
|
||||||
|
return 255;
|
||||||
|
|
||||||
|
GST_WARNING ("Invalid light source: %s", str);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const gchar *
|
||||||
|
__exif_tag_capturing_light_source_from_exif_value (gint value)
|
||||||
|
{
|
||||||
|
switch (value) {
|
||||||
|
case 0:
|
||||||
|
return "unknown";
|
||||||
|
case 1:
|
||||||
|
return "daylight";
|
||||||
|
case 2:
|
||||||
|
return "flourescent";
|
||||||
|
case 4:
|
||||||
|
return "flash";
|
||||||
|
case 9:
|
||||||
|
return "fine-weather";
|
||||||
|
case 10:
|
||||||
|
return "cloudy-weather";
|
||||||
|
case 11:
|
||||||
|
return "shade";
|
||||||
|
case 12:
|
||||||
|
return "daylight-fluorescent";
|
||||||
|
case 13:
|
||||||
|
return "day-white-fluorescent";
|
||||||
|
case 14:
|
||||||
|
return "cool-white-fluorescent";
|
||||||
|
case 15:
|
||||||
|
return "white-fluorescent";
|
||||||
|
case 16:
|
||||||
|
return "warm-white-fluorescent";
|
||||||
|
case 17:
|
||||||
|
return "standard-light-A";
|
||||||
|
case 18:
|
||||||
|
return "standard-light-B";
|
||||||
|
case 19:
|
||||||
|
return "standard-light-C";
|
||||||
|
case 20:
|
||||||
|
return "D55";
|
||||||
|
case 21:
|
||||||
|
return "D65";
|
||||||
|
case 22:
|
||||||
|
return "D75";
|
||||||
|
case 23:
|
||||||
|
return "D50";
|
||||||
|
case 24:
|
||||||
|
return "iso-studio-tungsten";
|
||||||
|
case 255:
|
||||||
|
return "other";
|
||||||
|
default:
|
||||||
|
GST_WARNING ("Invalid light source type: %d", value);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
__exif_tag_capturing_contrast_sharpness_to_exif_value (const gchar * str,
|
__exif_tag_capturing_contrast_sharpness_to_exif_value (const gchar * str,
|
||||||
const gchar * tag_name)
|
const gchar * tag_name)
|
||||||
|
|
|
@ -53,6 +53,9 @@ const gchar * __exif_tag_capturing_gain_adjustment_from_exif_value (gint value);
|
||||||
gint __exif_tag_capturing_white_balance_to_exif_value (const gchar * str);
|
gint __exif_tag_capturing_white_balance_to_exif_value (const gchar * str);
|
||||||
const gchar * __exif_tag_capturing_white_balance_from_exif_value (gint value);
|
const gchar * __exif_tag_capturing_white_balance_from_exif_value (gint value);
|
||||||
|
|
||||||
|
int __exif_tag_capturing_light_source_to_exif_value (const gchar * str);
|
||||||
|
const gchar * __exif_tag_capturing_light_source_from_exif_value (gint value);
|
||||||
|
|
||||||
gint __exif_tag_capturing_contrast_to_exif_value (const gchar * str);
|
gint __exif_tag_capturing_contrast_to_exif_value (const gchar * str);
|
||||||
const gchar * __exif_tag_capturing_contrast_from_exif_value (gint value);
|
const gchar * __exif_tag_capturing_contrast_from_exif_value (gint value);
|
||||||
|
|
||||||
|
|
|
@ -296,6 +296,39 @@ G_BEGIN_DECLS
|
||||||
*/
|
*/
|
||||||
#define GST_TAG_CAPTURING_WHITE_BALANCE "capturing-white-balance"
|
#define GST_TAG_CAPTURING_WHITE_BALANCE "capturing-white-balance"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GST_TAG_CAPTURING_LIGHT_SOURCE:
|
||||||
|
*
|
||||||
|
* Light source used when capturing an image. (string)
|
||||||
|
*
|
||||||
|
* The allowed values are:
|
||||||
|
* "unknown"
|
||||||
|
* "daylight"
|
||||||
|
* "fluorescent"
|
||||||
|
* "tungsten"
|
||||||
|
* "flash"
|
||||||
|
* "fine-weather"
|
||||||
|
* "cloudy-weather"
|
||||||
|
* "shade"
|
||||||
|
* "daylight-fluorescent"
|
||||||
|
* "day-white-fluorescent"
|
||||||
|
* "cool-white-fluorescent"
|
||||||
|
* "white-fluorescent"
|
||||||
|
* "warm-white-fluorescent"
|
||||||
|
* "standard-light-A"
|
||||||
|
* "standard-light-B"
|
||||||
|
* "standard-light-C"
|
||||||
|
* "D55"
|
||||||
|
* "D65"
|
||||||
|
* "D75"
|
||||||
|
* "D50"
|
||||||
|
* "iso-studio-tungsten"
|
||||||
|
* "other"
|
||||||
|
*
|
||||||
|
* Since: 1.26
|
||||||
|
*/
|
||||||
|
#define GST_TAG_CAPTURING_LIGHT_SOURCE "capturing-light-source"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GST_TAG_CAPTURING_CONTRAST:
|
* GST_TAG_CAPTURING_CONTRAST:
|
||||||
*
|
*
|
||||||
|
|
|
@ -165,6 +165,11 @@ gst_tag_register_tags_internal (gpointer unused)
|
||||||
G_TYPE_STRING, _("capturing white balance"),
|
G_TYPE_STRING, _("capturing white balance"),
|
||||||
_("The white balance mode set when capturing an image"), NULL);
|
_("The white balance mode set when capturing an image"), NULL);
|
||||||
|
|
||||||
|
gst_tag_register_static (GST_TAG_CAPTURING_LIGHT_SOURCE, GST_TAG_FLAG_META,
|
||||||
|
G_TYPE_STRING, _("capturing light source"),
|
||||||
|
_("The light source indicates the kind of light when capturing an"
|
||||||
|
"image"), NULL);
|
||||||
|
|
||||||
gst_tag_register_static (GST_TAG_CAPTURING_CONTRAST, GST_TAG_FLAG_META,
|
gst_tag_register_static (GST_TAG_CAPTURING_CONTRAST, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING, _("capturing contrast"),
|
G_TYPE_STRING, _("capturing contrast"),
|
||||||
_("The direction of contrast processing applied "
|
_("The direction of contrast processing applied "
|
||||||
|
|
Loading…
Reference in a new issue