diff options
Diffstat (limited to 'src/gsttools')
-rw-r--r-- | src/gsttools/gsttools.pro | 4 | ||||
-rw-r--r-- | src/gsttools/qgstutils.cpp | 35 |
2 files changed, 37 insertions, 2 deletions
diff --git a/src/gsttools/gsttools.pro b/src/gsttools/gsttools.pro index a5c1d9493..216189d9a 100644 --- a/src/gsttools/gsttools.pro +++ b/src/gsttools/gsttools.pro @@ -95,7 +95,7 @@ equals(GST_VERSION,"0.10") { maemo6 { PKGCONFIG_PRIVATE += qmsystem2 - contains(QT_CONFIG, opengles2):qtHaveModule(widgets) { + qtConfig(opengles2):qtHaveModule(widgets) { PRIVATE_HEADERS += qgstreamergltexturerenderer_p.h SOURCES += qgstreamergltexturerenderer.cpp QT += opengl @@ -113,7 +113,7 @@ equals(GST_VERSION,"0.10") { } mir: { - contains(QT_CONFIG, opengles2):qtHaveModule(widgets) { + qtConfig(opengles2):qtHaveModule(widgets) { PRIVATE_HEADERS += qgstreamermirtexturerenderer_p.h SOURCES += qgstreamermirtexturerenderer.cpp QT += opengl quick diff --git a/src/gsttools/qgstutils.cpp b/src/gsttools/qgstutils.cpp index b5299f151..a2b35073c 100644 --- a/src/gsttools/qgstutils.cpp +++ b/src/gsttools/qgstutils.cpp @@ -40,6 +40,7 @@ #include "qgstutils_p.h" #include <QtCore/qdatetime.h> +#include <QtCore/qtimezone.h> #include <QtCore/qdir.h> #include <QtCore/qbytearray.h> #include <QtCore/qvariant.h> @@ -123,6 +124,40 @@ 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); + } else if (G_VALUE_TYPE(&val) == GST_TYPE_SAMPLE) { + GstSample *sample = (GstSample *)g_value_get_boxed(&val); + GstCaps* caps = gst_sample_get_caps(sample); + if (caps && !gst_caps_is_empty(caps)) { + GstStructure *structure = gst_caps_get_structure(caps, 0); + const gchar *name = gst_structure_get_name(structure); + if (QByteArray(name).startsWith("image/")) { + GstBuffer *buffer = gst_sample_get_buffer(sample); + if (buffer) { + GstMapInfo info; + gst_buffer_map(buffer, &info, GST_MAP_READ); + map->insert(QByteArray(tag), QImage::fromData(info.data, info.size, name)); + gst_buffer_unmap(buffer, &info); + } + } + } +#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); |