summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>2010-10-08 15:14:22 -0300
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2010-10-16 00:31:07 +0100
commitf67e7aacf33c6f0b3dc689ef585285cb5ad48c7a (patch)
treef09e176ebf254aafc882f13da15514ff8ea659f6
parentf396a37fc5df015ebedf143bdad8342ec79bfd11 (diff)
tag: Adds GST_TAG_CAPTURING_SHARPNESS
Adds new tag for tagging sharpness processing used when capturing an image. Also maps it in the exif tags. Tests included. API: GST_TAG_CAPTURING_SHARPNESS https://bugzilla.gnome.org/show_bug.cgi?id=631773
-rw-r--r--docs/libs/gst-plugins-base-libs-sections.txt1
-rw-r--r--gst-libs/gst/tag/gstexiftag.c6
-rw-r--r--gst-libs/gst/tag/gsttageditingprivate.c42
-rw-r--r--gst-libs/gst/tag/gsttageditingprivate.h3
-rw-r--r--gst-libs/gst/tag/tag.h14
-rw-r--r--gst-libs/gst/tag/tags.c5
-rw-r--r--tests/check/libs/tag.c10
7 files changed, 75 insertions, 6 deletions
diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt
index 44b2ec74d..0bfc5896b 100644
--- a/docs/libs/gst-plugins-base-libs-sections.txt
+++ b/docs/libs/gst-plugins-base-libs-sections.txt
@@ -1666,6 +1666,7 @@ GST_TAG_CAPTURING_GAIN_ADJUSTMENT
GST_TAG_CAPTURING_WHITE_BALANCE
GST_TAG_CAPTURING_CONTRAST
GST_TAG_CAPTURING_SATURATION
+GST_TAG_CAPTURING_SHARPNESS
GST_TAG_CAPTURING_FLASH_FIRED
GST_TAG_CAPTURING_FLASH_MODE
GST_TAG_IMAGE_HORIZONTAL_PPI
diff --git a/gst-libs/gst/tag/gstexiftag.c b/gst-libs/gst/tag/gstexiftag.c
index 2c8dd397b..7673332b9 100644
--- a/gst-libs/gst/tag/gstexiftag.c
+++ b/gst-libs/gst/tag/gstexiftag.c
@@ -238,6 +238,7 @@ EXIF_SERIALIZATION_DESERIALIZATION_FUNC (orientation);
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (saturation);
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (scene_capture_type);
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (sensitivity_type);
+EXIF_SERIALIZATION_DESERIALIZATION_FUNC (sharpness);
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (shutter_speed);
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (speed);
EXIF_SERIALIZATION_DESERIALIZATION_FUNC (white_balance);
@@ -293,6 +294,7 @@ EXIF_DESERIALIZATION_FUNC (add_to_pending_tags);
#define EXIF_TAG_GAIN_CONTROL 0xA407
#define EXIF_TAG_CONTRAST 0xA408
#define EXIF_TAG_SATURATION 0xA409
+#define EXIF_TAG_SHARPNESS 0xA40A
/* IFD pointer tags */
#define EXIF_IFD_TAG 0x8769
@@ -390,6 +392,8 @@ static const GstExifTagMatch tag_map_exif[] = {
serialize_contrast, deserialize_contrast},
{GST_TAG_CAPTURING_SATURATION, EXIF_TAG_SATURATION, EXIF_TYPE_SHORT, 0,
serialize_saturation, deserialize_saturation},
+ {GST_TAG_CAPTURING_SHARPNESS, EXIF_TAG_SHARPNESS, EXIF_TYPE_SHORT, 0,
+ serialize_sharpness, deserialize_sharpness},
{NULL, 0, 0, 0, NULL, NULL}
};
@@ -1761,6 +1765,8 @@ EXIF_SERIALIZATION_DESERIALIZATION_MAP_STRING_TO_INT_FUNC (saturation,
capturing_saturation);
EXIF_SERIALIZATION_DESERIALIZATION_MAP_STRING_TO_INT_FUNC (scene_capture_type,
capturing_scene_capture_type);
+EXIF_SERIALIZATION_DESERIALIZATION_MAP_STRING_TO_INT_FUNC (sharpness,
+ capturing_sharpness);
EXIF_SERIALIZATION_DESERIALIZATION_MAP_STRING_TO_INT_FUNC (white_balance,
capturing_white_balance);
diff --git a/gst-libs/gst/tag/gsttageditingprivate.c b/gst-libs/gst/tag/gsttageditingprivate.c
index 0b5567db9..6085dddaa 100644
--- a/gst-libs/gst/tag/gsttageditingprivate.c
+++ b/gst-libs/gst/tag/gsttageditingprivate.c
@@ -277,8 +277,9 @@ __exif_tag_capturing_white_balance_from_exif_value (gint value)
}
}
-gint
-__exif_tag_capturing_contrast_to_exif_value (const gchar * str)
+static gint
+__exif_tag_capturing_contrast_sharpness_to_exif_value (const gchar * str,
+ const gchar * tag_name)
{
if (str == NULL)
goto end;
@@ -291,12 +292,13 @@ __exif_tag_capturing_contrast_to_exif_value (const gchar * str)
return 2;
end:
- GST_WARNING ("Invalid contrast type: %s", str);
+ GST_WARNING ("Invalid %s type: %s", tag_name, str);
return -1;
}
-const gchar *
-__exif_tag_capturing_contrast_from_exif_value (gint value)
+static const gchar *
+__exif_tag_capturing_contrast_sharpness_from_exif_value (gint value,
+ const gchar * tag_name)
{
switch (value) {
case 0:
@@ -306,12 +308,26 @@ __exif_tag_capturing_contrast_from_exif_value (gint value)
case 2:
return "hard";
default:
- GST_WARNING ("Invalid contrast type: %d", value);
+ GST_WARNING ("Invalid %s type: %d", tag_name, value);
return NULL;
}
}
gint
+__exif_tag_capturing_contrast_to_exif_value (const gchar * str)
+{
+ return __exif_tag_capturing_contrast_sharpness_to_exif_value (str,
+ "contrast");
+}
+
+const gchar *
+__exif_tag_capturing_contrast_from_exif_value (gint value)
+{
+ return __exif_tag_capturing_contrast_sharpness_from_exif_value (value,
+ "contrast");
+}
+
+gint
__exif_tag_capturing_saturation_to_exif_value (const gchar * str)
{
if (str == NULL)
@@ -344,3 +360,17 @@ __exif_tag_capturing_saturation_from_exif_value (gint value)
return NULL;
}
}
+
+gint
+__exif_tag_capturing_sharpness_to_exif_value (const gchar * str)
+{
+ return __exif_tag_capturing_contrast_sharpness_to_exif_value (str,
+ "sharpness");
+}
+
+const gchar *
+__exif_tag_capturing_sharpness_from_exif_value (gint value)
+{
+ return __exif_tag_capturing_contrast_sharpness_from_exif_value (value,
+ "sharpness");
+}
diff --git a/gst-libs/gst/tag/gsttageditingprivate.h b/gst-libs/gst/tag/gsttageditingprivate.h
index 4004753b9..57a71fec6 100644
--- a/gst-libs/gst/tag/gsttageditingprivate.h
+++ b/gst-libs/gst/tag/gsttageditingprivate.h
@@ -59,6 +59,9 @@ const gchar * __exif_tag_capturing_contrast_from_exif_value (gint value);
gint __exif_tag_capturing_saturation_to_exif_value (const gchar * str);
const gchar * __exif_tag_capturing_saturation_from_exif_value (gint value);
+gint __exif_tag_capturing_sharpness_to_exif_value (const gchar * str);
+const gchar * __exif_tag_capturing_sharpness_from_exif_value (gint value);
+
G_END_DECLS
#endif /* __GST_TAG_EDIT_PRIVATE_H__ */
diff --git a/gst-libs/gst/tag/tag.h b/gst-libs/gst/tag/tag.h
index 5130ff6b4..35b10c1bb 100644
--- a/gst-libs/gst/tag/tag.h
+++ b/gst-libs/gst/tag/tag.h
@@ -281,6 +281,20 @@ G_BEGIN_DECLS
#define GST_TAG_CAPTURING_SATURATION "capturing-saturation"
/**
+ * GST_TAG_CAPTURING_SHARPNESS:
+ *
+ * Direction of sharpness processing applied when capturing an image. (string)
+ *
+ * The allowed values are:
+ * "normal"
+ * "soft"
+ * "hard"
+ *
+ * Since: 0.10.31
+ */
+#define GST_TAG_CAPTURING_SHARPNESS "capturing-sharpness"
+
+/**
* GST_TAG_CAPTURING_FLASH_FIRED:
*
* If flash was fired during the capture of an image. (boolean)
diff --git a/gst-libs/gst/tag/tags.c b/gst-libs/gst/tag/tags.c
index 35b0aa14f..7e28cf08e 100644
--- a/gst-libs/gst/tag/tags.c
+++ b/gst-libs/gst/tag/tags.c
@@ -155,6 +155,11 @@ gst_tag_register_tags_internal (gpointer unused)
_("The direction of saturation processing applied when "
"capturing an image"), NULL);
+ gst_tag_register (GST_TAG_CAPTURING_SHARPNESS, GST_TAG_FLAG_META,
+ G_TYPE_STRING, _("capturing sharpness"),
+ _("The direction of sharpness processing applied "
+ "when capturing an image"), NULL);
+
gst_tag_register (GST_TAG_CAPTURING_FLASH_FIRED, GST_TAG_FLAG_META,
G_TYPE_BOOLEAN, _("capturing flash fired"),
_("If the flash fired while capturing and image"), NULL);
diff --git a/tests/check/libs/tag.c b/tests/check/libs/tag.c
index 0eb13de39..565a02d8a 100644
--- a/tests/check/libs/tag.c
+++ b/tests/check/libs/tag.c
@@ -1384,6 +1384,16 @@ GST_START_TEST (test_exif_tags_serialization_deserialization)
g_value_set_static_string (&value, "high-saturation");
do_simple_exif_tag_serialization_deserialization
(GST_TAG_CAPTURING_SATURATION, &value);
+
+ g_value_set_static_string (&value, "normal");
+ do_simple_exif_tag_serialization_deserialization (GST_TAG_CAPTURING_SHARPNESS,
+ &value);
+ g_value_set_static_string (&value, "hard");
+ do_simple_exif_tag_serialization_deserialization (GST_TAG_CAPTURING_SHARPNESS,
+ &value);
+ g_value_set_static_string (&value, "soft");
+ do_simple_exif_tag_serialization_deserialization (GST_TAG_CAPTURING_SHARPNESS,
+ &value);
g_value_unset (&value);
g_value_init (&value, G_TYPE_DOUBLE);