From: Thiago Santos Date: Fri, 8 Oct 2010 18:14:22 +0000 (-0300) Subject: tag: Adds GST_TAG_CAPTURING_SHARPNESS X-Git-Tag: 1.19.3~511^2~7911 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f67e7aacf33c6f0b3dc689ef585285cb5ad48c7a;p=platform%2Fupstream%2Fgstreamer.git 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 --- diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt index 44b2ec7..0bfc589 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 2c8dd39..7673332 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 0b5567d..6085ddd 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 4004753..57a71fe 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 5130ff6..35b10c1 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 35b0aa1..7e28cf0 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 0eb13de..565a02d 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);