qtmobility/plugins/multimedia/directshow/player/directshowmetadatacontrol.cpp
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
child 15 1f895d8a5b2b
equal deleted inserted replaced
11:06b8e2af4411 14:6fbed849b4f4
    52 #ifndef QT_NO_WMSDK
    52 #ifndef QT_NO_WMSDK
    53 namespace
    53 namespace
    54 {
    54 {
    55     struct QWMMetaDataKeyLookup
    55     struct QWMMetaDataKeyLookup
    56     {
    56     {
    57         QtMediaServices::MetaData key;
    57         QtMultimedia::MetaData key;
    58         const wchar_t *token;
    58         const wchar_t *token;
    59     };
    59     };
    60 }
    60 }
    61 
    61 
    62 static const QWMMetaDataKeyLookup qt_wmMetaDataKeys[] =
    62 static const QWMMetaDataKeyLookup qt_wmMetaDataKeys[] =
    63 {
    63 {
    64     { QtMediaServices::Title, L"Title" },
    64     { QtMultimedia::Title, L"Title" },
    65     { QtMediaServices::SubTitle, L"WM/SubTitle" },
    65     { QtMultimedia::SubTitle, L"WM/SubTitle" },
    66     { QtMediaServices::Author, L"Author" },
    66     { QtMultimedia::Author, L"Author" },
    67     { QtMediaServices::Comment, L"Comment" },
    67     { QtMultimedia::Comment, L"Comment" },
    68     { QtMediaServices::Description, L"Description" },
    68     { QtMultimedia::Description, L"Description" },
    69     { QtMediaServices::Category, L"WM/Category" },
    69     { QtMultimedia::Category, L"WM/Category" },
    70     { QtMediaServices::Genre, L"WM/Genre" },
    70     { QtMultimedia::Genre, L"WM/Genre" },
    71     //{ QtMediaServices::Date, 0 },
    71     //{ QtMultimedia::Date, 0 },
    72     { QtMediaServices::Year, L"WM/Year" },
    72     { QtMultimedia::Year, L"WM/Year" },
    73     { QtMediaServices::UserRating, L"UserRating" },
    73     { QtMultimedia::UserRating, L"UserRating" },
    74     //{ QtMediaServices::MetaDatawords, 0 },
    74     //{ QtMultimedia::MetaDatawords, 0 },
    75     { QtMediaServices::Language, L"Language" },
    75     { QtMultimedia::Language, L"Language" },
    76     { QtMediaServices::Publisher, L"WM/Publisher" },
    76     { QtMultimedia::Publisher, L"WM/Publisher" },
    77     { QtMediaServices::Copyright, L"Copyright" },
    77     { QtMultimedia::Copyright, L"Copyright" },
    78     { QtMediaServices::ParentalRating, L"ParentalRating" },
    78     { QtMultimedia::ParentalRating, L"ParentalRating" },
    79     { QtMediaServices::RatingOrganisation, L"RatingOrganisation" },
    79     { QtMultimedia::RatingOrganisation, L"RatingOrganisation" },
    80 
    80 
    81     // Media
    81     // Media
    82     { QtMediaServices::Size, L"FileSize" },
    82     { QtMultimedia::Size, L"FileSize" },
    83     { QtMediaServices::MediaType, L"MediaType" },
    83     { QtMultimedia::MediaType, L"MediaType" },
    84     { QtMediaServices::Duration, L"Duration" },
    84     { QtMultimedia::Duration, L"Duration" },
    85 
    85 
    86     // Audio
    86     // Audio
    87     { QtMediaServices::AudioBitRate, L"AudioBitRate" },
    87     { QtMultimedia::AudioBitRate, L"AudioBitRate" },
    88     { QtMediaServices::AudioCodec, L"AudioCodec" },
    88     { QtMultimedia::AudioCodec, L"AudioCodec" },
    89     { QtMediaServices::ChannelCount, L"ChannelCount" },
    89     { QtMultimedia::ChannelCount, L"ChannelCount" },
    90     { QtMediaServices::SampleRate, L"Frequency" },
    90     { QtMultimedia::SampleRate, L"Frequency" },
    91 
    91 
    92     // Music
    92     // Music
    93     { QtMediaServices::AlbumTitle, L"WM/AlbumTitle" },
    93     { QtMultimedia::AlbumTitle, L"WM/AlbumTitle" },
    94     { QtMediaServices::AlbumArtist, L"WM/AlbumArtist" },
    94     { QtMultimedia::AlbumArtist, L"WM/AlbumArtist" },
    95     { QtMediaServices::ContributingArtist, L"Author" },
    95     { QtMultimedia::ContributingArtist, L"Author" },
    96     { QtMediaServices::Composer, L"WM/Composer" },
    96     { QtMultimedia::Composer, L"WM/Composer" },
    97     { QtMediaServices::Conductor, L"WM/Conductor" },
    97     { QtMultimedia::Conductor, L"WM/Conductor" },
    98     { QtMediaServices::Lyrics, L"WM/Lyrics" },
    98     { QtMultimedia::Lyrics, L"WM/Lyrics" },
    99     { QtMediaServices::Mood, L"WM/Mood" },
    99     { QtMultimedia::Mood, L"WM/Mood" },
   100     { QtMediaServices::TrackNumber, L"WM/TrackNumber" },
   100     { QtMultimedia::TrackNumber, L"WM/TrackNumber" },
   101     //{ QtMediaServices::TrackCount, 0 },
   101     //{ QtMultimedia::TrackCount, 0 },
   102     //{ QtMediaServices::CoverArtUriSmall, 0 },
   102     //{ QtMultimedia::CoverArtUriSmall, 0 },
   103     //{ QtMediaServices::CoverArtUriLarge, 0 },
   103     //{ QtMultimedia::CoverArtUriLarge, 0 },
   104 
   104 
   105     // Image/Video
   105     // Image/Video
   106     //{ QtMediaServices::Resolution, 0 },
   106     //{ QtMultimedia::Resolution, 0 },
   107     //{ QtMediaServices::PixelAspectRatio, 0 },
   107     //{ QtMultimedia::PixelAspectRatio, 0 },
   108 
   108 
   109     // Video
   109     // Video
   110     //{ QtMediaServices::FrameRate, 0 },
   110     //{ QtMultimedia::FrameRate, 0 },
   111     { QtMediaServices::VideoBitRate, L"VideoBitRate" },
   111     { QtMultimedia::VideoBitRate, L"VideoBitRate" },
   112     { QtMediaServices::VideoCodec, L"VideoCodec" },
   112     { QtMultimedia::VideoCodec, L"VideoCodec" },
   113 
   113 
   114     //{ QtMediaServices::PosterUri, 0 },
   114     //{ QtMultimedia::PosterUri, 0 },
   115 
   115 
   116     // Movie
   116     // Movie
   117     { QtMediaServices::ChapterNumber, L"ChapterNumber" },
   117     { QtMultimedia::ChapterNumber, L"ChapterNumber" },
   118     { QtMediaServices::Director, L"WM/Director" },
   118     { QtMultimedia::Director, L"WM/Director" },
   119     { QtMediaServices::LeadPerformer, L"LeadPerformer" },
   119     { QtMultimedia::LeadPerformer, L"LeadPerformer" },
   120     { QtMediaServices::Writer, L"WM/Writer" },
   120     { QtMultimedia::Writer, L"WM/Writer" },
   121 
   121 
   122     // Photos
   122     // Photos
   123     { QtMediaServices::CameraManufacturer, L"CameraManufacturer" },
   123     { QtMultimedia::CameraManufacturer, L"CameraManufacturer" },
   124     { QtMediaServices::CameraModel, L"CameraModel" },
   124     { QtMultimedia::CameraModel, L"CameraModel" },
   125     { QtMediaServices::Event, L"Event" },
   125     { QtMultimedia::Event, L"Event" },
   126     { QtMediaServices::Subject, L"Subject" }
   126     { QtMultimedia::Subject, L"Subject" }
   127 };
   127 };
   128 
   128 
   129 static QVariant getValue(IWMHeaderInfo *header, const wchar_t *key)
   129 static QVariant getValue(IWMHeaderInfo *header, const wchar_t *key)
   130 {
   130 {
   131     WORD streamNumber = 0;
   131     WORD streamNumber = 0;
   226     return QVariant();
   226     return QVariant();
   227 }
   227 }
   228 #endif
   228 #endif
   229 
   229 
   230 DirectShowMetaDataControl::DirectShowMetaDataControl(QObject *parent)
   230 DirectShowMetaDataControl::DirectShowMetaDataControl(QObject *parent)
   231     : QMetaDataControl(parent)
   231     : QMetaDataReaderControl(parent)
   232     , m_content(0)
   232     , m_content(0)
   233 #ifndef QT_NO_WMSDK
   233 #ifndef QT_NO_WMSDK
   234     , m_headerInfo(0)
   234     , m_headerInfo(0)
   235 #endif
   235 #endif
   236 {
   236 {
   237 }
   237 }
   238 
   238 
   239 DirectShowMetaDataControl::~DirectShowMetaDataControl()
   239 DirectShowMetaDataControl::~DirectShowMetaDataControl()
   240 {
   240 {
   241 }
       
   242 
       
   243 bool DirectShowMetaDataControl::isWritable() const
       
   244 {
       
   245     return false;
       
   246 }
   241 }
   247 
   242 
   248 bool DirectShowMetaDataControl::isMetaDataAvailable() const
   243 bool DirectShowMetaDataControl::isMetaDataAvailable() const
   249 {
   244 {
   250 #ifndef QT_NO_WMSDK
   245 #ifndef QT_NO_WMSDK
   252 #else
   247 #else
   253     return m_content;
   248     return m_content;
   254 #endif
   249 #endif
   255 }
   250 }
   256 
   251 
   257 QVariant DirectShowMetaDataControl::metaData(QtMediaServices::MetaData key) const
   252 QVariant DirectShowMetaDataControl::metaData(QtMultimedia::MetaData key) const
   258 {
   253 {
   259     QVariant value;
   254     QVariant value;
   260 
   255 
   261 #ifndef QT_NO_WMSDK
   256 #ifndef QT_NO_WMSDK
   262     if (m_headerInfo) {
   257     if (m_headerInfo) {
   272     if (m_content) {
   267     if (m_content) {
   273 #endif
   268 #endif
   274         BSTR string = 0;
   269         BSTR string = 0;
   275 
   270 
   276         switch (key) {
   271         switch (key) {
   277         case QtMediaServices::Author:
   272         case QtMultimedia::Author:
   278             m_content->get_AuthorName(&string);
   273             m_content->get_AuthorName(&string);
   279             break;
   274             break;
   280         case QtMediaServices::Title:
   275         case QtMultimedia::Title:
   281             m_content->get_Title(&string);
   276             m_content->get_Title(&string);
   282             break;
   277             break;
   283         case QtMediaServices::ParentalRating:
   278         case QtMultimedia::ParentalRating:
   284             m_content->get_Rating(&string);
   279             m_content->get_Rating(&string);
   285             break;
   280             break;
   286         case QtMediaServices::Description:
   281         case QtMultimedia::Description:
   287             m_content->get_Description(&string);
   282             m_content->get_Description(&string);
   288             break;
   283             break;
   289         case QtMediaServices::Copyright:
   284         case QtMultimedia::Copyright:
   290             m_content->get_Copyright(&string);
   285             m_content->get_Copyright(&string);
   291             break;
   286             break;
   292         default:
   287         default:
   293             break;
   288             break;
   294         }
   289         }
   300         }
   295         }
   301     }
   296     }
   302     return value;
   297     return value;
   303 }
   298 }
   304 
   299 
   305 void DirectShowMetaDataControl::setMetaData(QtMediaServices::MetaData, const QVariant &)
   300 QList<QtMultimedia::MetaData> DirectShowMetaDataControl::availableMetaData() const
   306 {
   301 {
   307 }
   302     return QList<QtMultimedia::MetaData>();
   308 
       
   309 QList<QtMediaServices::MetaData> DirectShowMetaDataControl::availableMetaData() const
       
   310 {
       
   311     return QList<QtMediaServices::MetaData>();
       
   312 }
   303 }
   313 
   304 
   314 QVariant DirectShowMetaDataControl::extendedMetaData(const QString &) const
   305 QVariant DirectShowMetaDataControl::extendedMetaData(const QString &) const
   315 {
   306 {
   316     return QVariant();
   307     return QVariant();
   317 }
       
   318 
       
   319 void DirectShowMetaDataControl::setExtendedMetaData(const QString &, const QVariant &)
       
   320 {
       
   321 }
   308 }
   322 
   309 
   323 QStringList DirectShowMetaDataControl::availableExtendedMetaData() const
   310 QStringList DirectShowMetaDataControl::availableExtendedMetaData() const
   324 {
   311 {
   325     return QStringList();
   312     return QStringList();
   358         emit metaDataAvailableChanged(m_content || m_headerInfo);
   345         emit metaDataAvailableChanged(m_content || m_headerInfo);
   359 #else
   346 #else
   360         emit metaDataAvailableChanged(m_content);
   347         emit metaDataAvailableChanged(m_content);
   361 #endif
   348 #endif
   362     } else {
   349     } else {
   363         QMetaDataControl::customEvent(event);
   350         QMetaDataReaderControl::customEvent(event);
   364     }
   351     }
   365 }
   352 }