Changed metadata keys type from enum to QString.
This allows to combine metaData and extendedMetaData and simplify metadata handling on both backend and application sides. Change-Id: I136eedc86c215be3485db101c43069ca7c82101b Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
382ba7d4f4
commit
8ff5b88b27
@@ -65,7 +65,7 @@ bool MFMetaDataControl::isMetaDataAvailable() const
|
||||
return m_content || m_metaData;
|
||||
}
|
||||
|
||||
QVariant MFMetaDataControl::metaData(QtMultimedia::MetaData key) const
|
||||
QVariant MFMetaDataControl::metaData(const QString &key) const
|
||||
{
|
||||
QVariant value;
|
||||
if (!isMetaDataAvailable())
|
||||
@@ -113,38 +113,11 @@ QVariant MFMetaDataControl::convertValue(const PROPVARIANT& var) const
|
||||
return value;
|
||||
}
|
||||
|
||||
QList<QtMultimedia::MetaData> MFMetaDataControl::availableMetaData() const
|
||||
QStringList MFMetaDataControl::availableMetaData() const
|
||||
{
|
||||
return m_availableMetaDatas;
|
||||
}
|
||||
|
||||
QVariant MFMetaDataControl::extendedMetaData(const QString &key) const
|
||||
{
|
||||
QVariant value;
|
||||
HRESULT hr = S_FALSE;
|
||||
PROPVARIANT var;
|
||||
PropVariantInit(&var);
|
||||
if (m_content) {
|
||||
int index = m_extendedMetaDatas.indexOf(key);
|
||||
if (index >= 0) {
|
||||
hr = m_content->GetValue(m_extendedKeys[index], &var);
|
||||
}
|
||||
} else if (m_metaData) {
|
||||
hr = m_metaData->GetProperty(key.utf16(), &var);
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
value = convertValue(var);
|
||||
|
||||
PropVariantClear(&var);
|
||||
return value;
|
||||
}
|
||||
|
||||
QStringList MFMetaDataControl::availableExtendedMetaData() const
|
||||
{
|
||||
return m_extendedMetaDatas;
|
||||
}
|
||||
|
||||
void MFMetaDataControl::updateSource(IMFPresentationDescriptor* sourcePD, IMFMediaSource* mediaSource)
|
||||
{
|
||||
if (m_metaData) {
|
||||
@@ -173,15 +146,15 @@ void MFMetaDataControl::updateSource(IMFPresentationDescriptor* sourcePD, IMFMed
|
||||
continue;
|
||||
bool common = true;
|
||||
if (key == PKEY_Author) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::Author);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::Author);
|
||||
} else if (key == PKEY_Title) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::Title);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::Title);
|
||||
} else if (key == PKEY_ParentalRating) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::ParentalRating);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::ParentalRating);
|
||||
} else if (key == PKEY_Comment) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::Description);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::Description);
|
||||
} else if (key == PKEY_Copyright) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::Copyright);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::Copyright);
|
||||
//TODO: add more common keys
|
||||
} else {
|
||||
common = false;
|
||||
@@ -211,24 +184,21 @@ void MFMetaDataControl::updateSource(IMFPresentationDescriptor* sourcePD, IMFMed
|
||||
#ifdef DEBUG_MEDIAFOUNDATION
|
||||
qDebug() << "metadata: " << QString::fromUtf16(sName);
|
||||
#endif
|
||||
bool common = true;
|
||||
if (wcscmp(sName, L"Author") == 0) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::Author);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::Author);
|
||||
} else if (wcscmp(sName, L"Title") == 0) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::Title);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::Title);
|
||||
} else if (wcscmp(sName, L"Rating") == 0) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::ParentalRating);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::ParentalRating);
|
||||
} else if (wcscmp(sName, L"Description") == 0) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::Description);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::Description);
|
||||
} else if (wcscmp(sName, L"Copyright") == 0) {
|
||||
m_availableMetaDatas.push_back(QtMultimedia::Copyright);
|
||||
m_availableMetaDatas.push_back(QtMultimedia::MetaData::Copyright);
|
||||
//TODO: add more common keys
|
||||
} else {
|
||||
common = false;
|
||||
m_extendedMetaDatas.push_back(QString::fromUtf16(sName));
|
||||
m_availableMetaDatas.push_back(QString::fromUtf16(sName));
|
||||
}
|
||||
if (common)
|
||||
m_commonNames.push_back(QString::fromUtf16(sName));
|
||||
m_commonNames.push_back(QString::fromUtf16(sName));
|
||||
}
|
||||
}
|
||||
PropVariantClear(&varNames);
|
||||
|
||||
@@ -56,11 +56,8 @@ public:
|
||||
|
||||
bool isMetaDataAvailable() const;
|
||||
|
||||
QVariant metaData(QtMultimedia::MetaData key) const;
|
||||
QList<QtMultimedia::MetaData> availableMetaData() const;
|
||||
|
||||
QVariant extendedMetaData(const QString &key) const;
|
||||
QStringList availableExtendedMetaData() const;
|
||||
QVariant metaData(const QString &key) const;
|
||||
QStringList availableMetaData() const;
|
||||
|
||||
void updateSource(IMFPresentationDescriptor* sourcePD, IMFMediaSource* mediaSource);
|
||||
|
||||
@@ -69,12 +66,9 @@ private:
|
||||
IPropertyStore *m_content; //for Windows7
|
||||
IMFMetadata *m_metaData; //for Vista
|
||||
|
||||
QList<QtMultimedia::MetaData> m_availableMetaDatas;
|
||||
QStringList m_availableMetaDatas;
|
||||
QList<PROPERTYKEY> m_commonKeys; //for Windows7
|
||||
QStringList m_commonNames; //for Vista
|
||||
|
||||
QStringList m_extendedMetaDatas;
|
||||
QList<PROPERTYKEY> m_extendedKeys; //for Windows7
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user