Bug 1321051 - Override Supports(TrackInfo) in RemoteDecoderModule - r?jya draft
authorGerald Squelart <gsquelart@mozilla.com>
Wed, 01 Feb 2017 12:18:59 +1100
changeset 468907 46ff2fbeb9a6bdf152527b16cdb6bbcf0a8f3cff
parent 468498 ee975d32deb9eaa5641f45428cd6a4b5b555a8f5
child 544048 4bdec3bb1e80d831c7e60a3542e27b2af951b36b
push id43570
push usergsquelart@mozilla.com
push dateWed, 01 Feb 2017 01:34:54 +0000
reviewersjya
bugs1321051
milestone54.0a1
Bug 1321051 - Override Supports(TrackInfo) in RemoteDecoderModule - r?jya With e10s enabled, RemoteDecoderModule is used as a proxy, but it was not overriding Supports(TrackInfo), meaning that some of the extra information carried in TrackInfo (e.g.: resolution) was lost when falling back to SupportsMimeType(nsACString). So further along, WMFDecoderModule was not able to reject too-high resolutions. Overriding Supports(TrackInfo) to just forward the TrackInfo data is enough to re-enable resolution checks on Windows. MozReview-Commit-ID: 3OsPmILItH7
dom/media/ipc/RemoteVideoDecoder.cpp
dom/media/ipc/RemoteVideoDecoder.h
--- a/dom/media/ipc/RemoteVideoDecoder.cpp
+++ b/dom/media/ipc/RemoteVideoDecoder.cpp
@@ -147,16 +147,23 @@ RemoteDecoderModule::Startup()
 
 bool
 RemoteDecoderModule::SupportsMimeType(const nsACString& aMimeType,
                                       DecoderDoctorDiagnostics* aDiagnostics) const
 {
   return mWrapped->SupportsMimeType(aMimeType, aDiagnostics);
 }
 
+bool
+RemoteDecoderModule::Supports(const TrackInfo& aTrackInfo,
+                              DecoderDoctorDiagnostics* aDiagnostics) const
+{
+  return mWrapped->Supports(aTrackInfo, aDiagnostics);
+}
+
 PlatformDecoderModule::ConversionRequired
 RemoteDecoderModule::DecoderNeedsConversion(const TrackInfo& aConfig) const
 {
   return mWrapped->DecoderNeedsConversion(aConfig);
 }
 
 already_AddRefed<MediaDataDecoder>
 RemoteDecoderModule::CreateVideoDecoder(const CreateDecoderParams& aParams)
--- a/dom/media/ipc/RemoteVideoDecoder.h
+++ b/dom/media/ipc/RemoteVideoDecoder.h
@@ -62,16 +62,18 @@ public:
   explicit RemoteDecoderModule(PlatformDecoderModule* aWrapped)
     : mWrapped(aWrapped)
   {}
 
   nsresult Startup() override;
 
   bool SupportsMimeType(const nsACString& aMimeType,
                         DecoderDoctorDiagnostics* aDiagnostics) const override;
+  bool Supports(const TrackInfo& aTrackInfo,
+                DecoderDoctorDiagnostics* aDiagnostics) const override;
 
   ConversionRequired DecoderNeedsConversion(
     const TrackInfo& aConfig) const override;
 
   already_AddRefed<MediaDataDecoder> CreateVideoDecoder(
     const CreateDecoderParams& aParams) override;
 
   already_AddRefed<MediaDataDecoder> CreateAudioDecoder(