aboutsummaryrefslogtreecommitdiff
path: root/media/engine/internal_encoder_factory.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/engine/internal_encoder_factory.cc')
-rw-r--r--media/engine/internal_encoder_factory.cc32
1 files changed, 4 insertions, 28 deletions
diff --git a/media/engine/internal_encoder_factory.cc b/media/engine/internal_encoder_factory.cc
index 4243f52481..7b5fc24e0a 100644
--- a/media/engine/internal_encoder_factory.cc
+++ b/media/engine/internal_encoder_factory.cc
@@ -38,32 +38,6 @@ using Factory =
webrtc::LibaomAv1EncoderTemplateAdapter,
#endif
webrtc::LibvpxVp9EncoderTemplateAdapter>;
-
-absl::optional<SdpVideoFormat> MatchOriginalFormat(
- const SdpVideoFormat& format) {
- const auto supported_formats = Factory().GetSupportedFormats();
-
- absl::optional<SdpVideoFormat> res;
- int best_parameter_match = 0;
- for (const auto& supported_format : supported_formats) {
- if (absl::EqualsIgnoreCase(supported_format.name, format.name)) {
- int matching_parameters = 0;
- for (const auto& kv : supported_format.parameters) {
- auto it = format.parameters.find(kv.first);
- if (it != format.parameters.end() && it->second == kv.second) {
- matching_parameters += 1;
- }
- }
-
- if (!res || matching_parameters > best_parameter_match) {
- res = supported_format;
- best_parameter_match = matching_parameters;
- }
- }
- }
-
- return res;
-}
} // namespace
std::vector<SdpVideoFormat> InternalEncoderFactory::GetSupportedFormats()
@@ -73,7 +47,8 @@ std::vector<SdpVideoFormat> InternalEncoderFactory::GetSupportedFormats()
std::unique_ptr<VideoEncoder> InternalEncoderFactory::CreateVideoEncoder(
const SdpVideoFormat& format) {
- auto original_format = MatchOriginalFormat(format);
+ auto original_format =
+ FuzzyMatchSdpVideoFormat(Factory().GetSupportedFormats(), format);
return original_format ? Factory().CreateVideoEncoder(*original_format)
: nullptr;
}
@@ -81,7 +56,8 @@ std::unique_ptr<VideoEncoder> InternalEncoderFactory::CreateVideoEncoder(
VideoEncoderFactory::CodecSupport InternalEncoderFactory::QueryCodecSupport(
const SdpVideoFormat& format,
absl::optional<std::string> scalability_mode) const {
- auto original_format = MatchOriginalFormat(format);
+ auto original_format =
+ FuzzyMatchSdpVideoFormat(Factory().GetSupportedFormats(), format);
return original_format
? Factory().QueryCodecSupport(*original_format, scalability_mode)
: VideoEncoderFactory::CodecSupport{.is_supported = false};