/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "WMFEncoderModule.h" #include "EncoderConfig.h" #include "WMFMediaDataEncoder.h" using mozilla::media::EncodeSupportSet; namespace mozilla { extern LazyLogModule sPEMLog; static EncodeSupportSet IsSupported(const EncoderConfig& aConfig) { if (CodecToSubtype(aConfig.mCodec) == GUID_NULL) { return EncodeSupportSet{}; } return CanCreateWMFEncoder(aConfig); } EncodeSupportSet WMFEncoderModule::SupportsCodec(CodecType aCodecType) const { gfx::IntSize kDefaultSize(640, 480); EncoderConfig::CodecSpecific kDefaultCodecSpecific = AsVariant(void_t{}); EncoderConfig cfg; cfg.mCodec = aCodecType; cfg.mSize = kDefaultSize; cfg.mCodecSpecific = kDefaultCodecSpecific; cfg.mHardwarePreference = HardwarePreference::None; return IsSupported(cfg); } EncodeSupportSet WMFEncoderModule::Supports( const EncoderConfig& aConfig) const { if (!CanLikelyEncode(aConfig)) { return EncodeSupportSet{}; } if (aConfig.IsAudio()) { return EncodeSupportSet{}; } if (aConfig.mScalabilityMode != ScalabilityMode::None && aConfig.mCodec != CodecType::H264) { return EncodeSupportSet{}; } return IsSupported(aConfig); } already_AddRefed WMFEncoderModule::CreateVideoEncoder( const EncoderConfig& aConfig, const RefPtr& aTaskQueue) const { RefPtr encoder( new WMFMediaDataEncoder(aConfig, aTaskQueue)); return encoder.forget(); } } // namespace mozilla