Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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();
}
Ejemplo n.º 3
0
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();
}
Ejemplo n.º 4
0
bool
GMPDecoderModule::SupportsMimeType(const nsACString& aMimeType)
{
  return SupportsMimeType(aMimeType, PreferredGMP(aMimeType));
}