bool GMPDecoderModule::SupportsMimeType(const nsACString& aMimeType, DecoderDoctorDiagnostics* aDiagnostics) const { const Maybe<nsCString> preferredGMP = PreferredGMP(aMimeType); bool rv = SupportsMimeType(aMimeType, preferredGMP); if (rv && aDiagnostics && preferredGMP.isSome()) { aDiagnostics->SetGMP(preferredGMP.value()); } return rv; }
already_AddRefed<MediaDataDecoder> GMPDecoderModule::CreateAudioDecoder(const CreateDecoderParams& aParams) { if (!aParams.mConfig.mMimeType.EqualsLiteral("audio/mp4a-latm")) { return nullptr; } if (aParams.mDiagnostics) { const Maybe<nsCString> preferredGMP = PreferredGMP(aParams.mConfig.mMimeType); if (preferredGMP.isSome()) { aParams.mDiagnostics->SetGMP(preferredGMP.value()); } } RefPtr<MediaDataDecoderProxy> wrapper = CreateDecoderWrapper(aParams.mCallback); auto params = GMPAudioDecoderParams(aParams).WithCallback(wrapper); wrapper->SetProxyTarget(new GMPAudioDecoder(params)); return wrapper.forget(); }
already_AddRefed<MediaDataDecoder> GMPDecoderModule::CreateVideoDecoder(const CreateDecoderParams& aParams) { if (!MP4Decoder::IsH264(aParams.mConfig.mMimeType) && !VPXDecoder::IsVP8(aParams.mConfig.mMimeType) && !VPXDecoder::IsVP9(aParams.mConfig.mMimeType)) { return nullptr; } if (aParams.mDiagnostics) { const Maybe<nsCString> preferredGMP = PreferredGMP(aParams.mConfig.mMimeType); if (preferredGMP.isSome()) { aParams.mDiagnostics->SetGMP(preferredGMP.value()); } } RefPtr<MediaDataDecoderProxy> wrapper = CreateDecoderWrapper(aParams.mCallback); auto params = GMPVideoDecoderParams(aParams).WithCallback(wrapper); wrapper->SetProxyTarget(new GMPVideoDecoder(params)); return wrapper.forget(); }
bool GMPDecoderModule::SupportsMimeType(const nsACString& aMimeType) { return SupportsMimeType(aMimeType, PreferredGMP(aMimeType)); }