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
--- 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(