}
}
+media::DecoderSelectionPolicy GetDecoderSelectionPolicy(
+ const ElementaryMediaStreamTrackConfig* config) {
+ EMSS_LOG_ASSERT(config);
+ return config->hasDecodingModeNonNull()
+ ? V8DecodingModeToDecoderSelectionPolicy(
+ config->decodingModeNonNull().AsEnum())
+ : media::DecoderSelectionPolicy::kDefault;
+}
+
std::tuple<MediaStreamComponent*,
std::shared_ptr<WebElementaryMediaTrackMsAudioSink>>
CreateMsAudioComponent() {
constexpr auto kIsHwDecoding = false;
std::vector<bool> decoding_modes_to_check;
- if (config->hasDecodingModeNonNull()) {
- const auto decoding_mode_enum = config->decodingModeNonNull().AsEnum();
- if (decoding_mode_enum == V8DecodingMode::Enum::kHardware ||
- decoding_mode_enum == V8DecodingMode::Enum::kHardwareWithFallback) {
- decoding_modes_to_check.push_back(kIsHwDecoding);
- }
- if (decoding_mode_enum == V8DecodingMode::Enum::kSoftware ||
- decoding_mode_enum == V8DecodingMode::Enum::kHardwareWithFallback) {
- decoding_modes_to_check.push_back(kIsSwDecoding);
- }
+ const auto decoder_selection_policy = GetDecoderSelectionPolicy(config);
+
+ if (decoder_selection_policy == media::DecoderSelectionPolicy::kHardware ||
+ decoder_selection_policy ==
+ media::DecoderSelectionPolicy::kHardwareWithFallback) {
+ decoding_modes_to_check.push_back(kIsHwDecoding);
+ }
+ if (decoder_selection_policy == media::DecoderSelectionPolicy::kSoftware ||
+ decoder_selection_policy ==
+ media::DecoderSelectionPolicy::kHardwareWithFallback) {
+ decoding_modes_to_check.push_back(kIsSwDecoding);
}
- ConfigVerificationResult result;
+ ConfigVerificationResult result = ConfigVerificationResult::kUnknown;
for (const auto decoding_mode : decoding_modes_to_check) {
result =
VerifyVideoCodecParameters(framerate, resolution, codec, profile,
return {};
})();
- const auto decoder_selection_policy =
- config->hasDecodingModeNonNull()
- ? V8DecodingModeToDecoderSelectionPolicy(
- config->decodingModeNonNull().AsEnum())
- : media::DecoderSelectionPolicy::kDefault;
+ const auto decoder_selection_policy = GetDecoderSelectionPolicy(config);
const auto encryption_scheme =
config->hasEncryptionModeNonNull()
? EncryptionModeAsEnum(config->encryptionModeNonNull().AsEnum())
return {};
})();
- const auto decoder_selection_policy =
- config->hasDecodingModeNonNull()
- ? V8DecodingModeToDecoderSelectionPolicy(
- config->decodingModeNonNull().AsEnum())
- : media::DecoderSelectionPolicy::kDefault;
+ const auto decoder_selection_policy = GetDecoderSelectionPolicy(config);
auto encryption_scheme =
config->hasEncryptionModeNonNull()