summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames McDonnell <jmcdonnell@blackberry.com>2018-06-27 15:57:04 -0400
committerJames McDonnell <jmcdonnell@blackberry.com>2018-10-01 14:10:36 +0000
commit6b0bbfadf483c5eaca90a4737399fa98ef0d9347 (patch)
treeeb82c5331a406705fc6babafa79e245cabd7c38b
parent6ed348b476938c9401f1f9bb751f3a0f2f4ac310 (diff)
Retrieve some information from the track metadata if available
Later versions of the QNX 7.0.0 Multimedia component replace the top level audio/video metadata with track specific audio/video metadata. Change-Id: Ic88f23f8db9c06594da649d9e8fc4faf30acf1a0 Reviewed-by: Rafael Roquetto <rafael@roquetto.com>
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp79
1 files changed, 61 insertions, 18 deletions
diff --git a/src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp b/src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp
index 50b45382c..a8b92c267 100644
--- a/src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp
+++ b/src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp
@@ -42,6 +42,8 @@
#include <QtCore/qfile.h>
#include <QtCore/qstringlist.h>
+#include <mm/renderer/events.h>
+#include <sys/neutrino.h>
#include <sys/strm.h>
static const char *strm_string_getx(const strm_string_t *sstr, const char *defaultValue)
@@ -49,6 +51,13 @@ static const char *strm_string_getx(const strm_string_t *sstr, const char *defau
return sstr ? strm_string_get(sstr) : defaultValue;
}
+#if _NTO_VERSION < 700
+static strm_dict_t *mmr_metadata_split(strm_dict_t const *, const char *, unsigned)
+{
+ return nullptr;
+}
+#endif
+
QT_BEGIN_NAMESPACE
MmRendererMetaData::MmRendererMetaData()
@@ -72,6 +81,12 @@ static const char * mediaTypeKey = "md_title_mediatype";
static const char * pixelWidthKey = "md_video_pixel_width";
static const char * pixelHeightKey = "md_video_pixel_height";
static const char * seekableKey = "md_title_seekable";
+static const char * trackSampleKey = "sample_rate";
+static const char * trackBitRateKey = "bitrate";
+static const char * trackWidthKey = "width";
+static const char * trackHeightKey = "height";
+static const char * trackPixelWidthKey = "pixel_width";
+static const char * trackPixelHeightKey = "pixel_height";
static const int mediaTypeAudioFlag = 4;
static const int mediaTypeVideoFlag = 2;
@@ -88,21 +103,9 @@ bool MmRendererMetaData::update(const strm_dict_t *dict)
value = strm_dict_find_rstr(dict, durationKey);
m_duration = QByteArray(strm_string_getx(value, "0")).toLongLong();
- value = strm_dict_find_rstr(dict, widthKey);
- m_width = QByteArray(strm_string_getx(value, "0")).toInt();
-
- value = strm_dict_find_rstr(dict, heightKey);
- m_height = QByteArray(strm_string_getx(value, "0")).toInt();
-
value = strm_dict_find_rstr(dict, mediaTypeKey);
m_mediaType = QByteArray(strm_string_getx(value, "-1")).toInt();
- value = strm_dict_find_rstr(dict, pixelWidthKey);
- m_pixelWidth = QByteArray(strm_string_getx(value, "1")).toFloat();
-
- value = strm_dict_find_rstr(dict, pixelHeightKey);
- m_pixelHeight = QByteArray(strm_string_getx(value, "1")).toFloat();
-
value = strm_dict_find_rstr(dict, titleKey);
m_title = QString::fromLatin1(QByteArray(strm_string_getx(value, nullptr)));
@@ -121,18 +124,58 @@ bool MmRendererMetaData::update(const strm_dict_t *dict)
value = strm_dict_find_rstr(dict, yearKey);
m_year = QByteArray(strm_string_getx(value, "0")).toInt();
- value = strm_dict_find_rstr(dict, bitRateKey);
- m_audioBitRate = QByteArray(strm_string_getx(value, "0")).toInt();
-
- value = strm_dict_find_rstr(dict, sampleKey);
- m_sampleRate = QByteArray(strm_string_getx(value, "0")).toInt();
-
value = strm_dict_find_rstr(dict, albumKey);
m_album = QString::fromLatin1(QByteArray(strm_string_getx(value, nullptr)));
value = strm_dict_find_rstr(dict, trackKey);
m_track = QByteArray(strm_string_getx(value, "0")).toInt();
+ strm_dict_t *at = mmr_metadata_split(dict, "audio", 0);
+ if (at) {
+ value = strm_dict_find_rstr(at, trackSampleKey);
+ m_sampleRate = QByteArray(strm_string_getx(value, "0")).toInt();
+
+ value = strm_dict_find_rstr(at, trackBitRateKey);
+ m_audioBitRate = QByteArray(strm_string_getx(value, "0")).toInt();
+
+ strm_dict_destroy(at);
+ } else {
+ value = strm_dict_find_rstr(dict, sampleKey);
+ m_sampleRate = QByteArray(strm_string_getx(value, "0")).toInt();
+
+ value = strm_dict_find_rstr(dict, bitRateKey);
+ m_audioBitRate = QByteArray(strm_string_getx(value, "0")).toInt();
+ }
+
+ strm_dict_t *vt = mmr_metadata_split(dict, "video", 0);
+ if (vt) {
+ value = strm_dict_find_rstr(vt, trackWidthKey);
+ m_width = QByteArray(strm_string_getx(value, "0")).toInt();
+
+ value = strm_dict_find_rstr(vt, trackHeightKey);
+ m_height = QByteArray(strm_string_getx(value, "0")).toInt();
+
+ value = strm_dict_find_rstr(vt, trackPixelWidthKey);
+ m_pixelWidth = QByteArray(strm_string_getx(value, "1")).toFloat();
+
+ value = strm_dict_find_rstr(vt, trackPixelHeightKey);
+ m_pixelHeight = QByteArray(strm_string_getx(value, "1")).toFloat();
+
+ strm_dict_destroy(vt);
+ } else {
+ value = strm_dict_find_rstr(dict, widthKey);
+ m_width = QByteArray(strm_string_getx(value, "0")).toInt();
+
+ value = strm_dict_find_rstr(dict, heightKey);
+ m_height = QByteArray(strm_string_getx(value, "0")).toInt();
+
+ value = strm_dict_find_rstr(dict, pixelWidthKey);
+ m_pixelWidth = QByteArray(strm_string_getx(value, "1")).toFloat();
+
+ value = strm_dict_find_rstr(dict, pixelHeightKey);
+ m_pixelHeight = QByteArray(strm_string_getx(value, "1")).toFloat();
+ }
+
return true;
}