Selaa lähdekoodia

PlayerComponent: add API to return list of installed codecs to web

Technically it's redundant to installedCodecDrivers(), but that function
returns QList<CodecDriver>, which can't be read by web.
Vincent Lang 9 vuotta sitten
vanhempi
commit
c0bd01ed84

+ 8 - 0
src/player/CodecsComponent.cpp

@@ -101,6 +101,14 @@ QString Codecs::plexNameToFF(QString plex)
   return plex;
 }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+QString Codecs::plexNameFromFF(QString ffname)
+{
+  if (ffname == "dts")
+    return "dca";
+  return ffname;
+}
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 static QString codecsRootPath()
 {

+ 2 - 0
src/player/CodecsComponent.h

@@ -119,6 +119,8 @@ public:
 
   static QString plexNameToFF(QString plex);
 
+  static QString plexNameFromFF(QString ffname);
+
   static inline bool sameCodec(const CodecDriver& a, const CodecDriver& b)
   {
     return a.type == b.type && a.format == b.format && a.driver == b.driver;

+ 14 - 0
src/player/PlayerComponent.cpp

@@ -992,6 +992,20 @@ QList<CodecDriver> PlayerComponent::installedCodecDrivers()
   return codecs;
 }
 
+/////////////////////////////////////////////////////////////////////////////////////////
+QStringList PlayerComponent::installedDecoderCodecs()
+{
+  QStringList formats;
+
+  for (auto driver : installedCodecDrivers())
+  {
+    if (driver.type == CodecType::Decoder)
+      formats.append(Codecs::plexNameFromFF(driver.format));
+  }
+
+  return formats;
+}
+
 /////////////////////////////////////////////////////////////////////////////////////////
 PlaybackInfo PlayerComponent::getPlaybackInfo()
 {

+ 4 - 0
src/player/PlayerComponent.h

@@ -104,6 +104,10 @@ public:
   // (checkCodecSupport() handles this specific case to a degree.)
   Q_INVOKABLE virtual QList<CodecDriver> installedCodecDrivers();
 
+  // Return list of codecs supported for decoding. This specifically returns
+  // the format and not decoder implementation (e.g. "h264" not "h264_mmal").
+  Q_INVOKABLE virtual QStringList installedDecoderCodecs();
+
   Q_INVOKABLE void userCommand(QString command);
 
   const mpv::qt::Handle getMpvHandle() const { return m_mpv; }