From d0ac492e3023545adad8008a3ebcac2a297dc783 Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Sun, 24 Jul 2016 00:23:10 +0900 Subject: GStreamer: support date time type in metadata Change-Id: Ica57abfc0a60b401be88662483d35699d4f76321 Reviewed-by: Yoann Lopes --- src/gsttools/qgstutils.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/gsttools') diff --git a/src/gsttools/qgstutils.cpp b/src/gsttools/qgstutils.cpp index b5299f151..831ba9691 100644 --- a/src/gsttools/qgstutils.cpp +++ b/src/gsttools/qgstutils.cpp @@ -40,6 +40,7 @@ #include "qgstutils_p.h" #include +#include #include #include #include @@ -123,6 +124,24 @@ static void addTagToMap(const GstTagList *list, if (!map->contains("year")) map->insert("year", year); } +#if GST_CHECK_VERSION(1,0,0) + } else if (G_VALUE_TYPE(&val) == GST_TYPE_DATE_TIME) { + const GstDateTime *dateTime = (const GstDateTime *)g_value_get_boxed(&val); + int year = gst_date_time_has_year(dateTime) ? gst_date_time_get_year(dateTime) : 0; + int month = gst_date_time_has_month(dateTime) ? gst_date_time_get_month(dateTime) : 0; + int day = gst_date_time_has_day(dateTime) ? gst_date_time_get_day(dateTime) : 0; + if (gst_date_time_has_time(dateTime)) { + int hour = gst_date_time_get_hour(dateTime); + int minute = gst_date_time_get_minute(dateTime); + int second = gst_date_time_get_second(dateTime); + float tz = gst_date_time_get_time_zone_offset(dateTime); + map->insert(QByteArray(tag), QDateTime(QDate(year,month,day), QTime(hour, minute, second), QTimeZone(tz * 60 * 60))); + } else if (year > 0 && month > 0 && day > 0) { + map->insert(QByteArray(tag), QDate(year,month,day)); + } + if (!map->contains("year") && year > 0) + map->insert("year", year); +#endif } else if (G_VALUE_TYPE(&val) == GST_TYPE_FRACTION) { int nom = gst_value_get_fraction_numerator(&val); int denom = gst_value_get_fraction_denominator(&val); -- cgit v1.2.3