Add tests for Vp9 temporal layers to VideoSendStreamTest

Including config via scalability mode.

Bug: webrtc:11607
Change-Id: I6c6737614d7c121b0a428584f41535ea8abc5866
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/264831
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37165}
diff --git a/video/BUILD.gn b/video/BUILD.gn
index 9267d1f..74eb3bb 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -994,6 +994,7 @@
       "//third_party/abseil-cpp/absl/algorithm:container",
       "//third_party/abseil-cpp/absl/functional:bind_front",
       "//third_party/abseil-cpp/absl/memory",
+      "//third_party/abseil-cpp/absl/strings",
       "//third_party/abseil-cpp/absl/types:optional",
       "//third_party/abseil-cpp/absl/types:variant",
     ]
diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc
index 18b448a..7101ace 100644
--- a/video/video_send_stream_tests.cc
+++ b/video/video_send_stream_tests.cc
@@ -12,6 +12,7 @@
 #include <vector>
 
 #include "absl/algorithm/container.h"
+#include "absl/strings/match.h"
 #include "api/sequence_checker.h"
 #include "api/task_queue/default_task_queue_factory.h"
 #include "api/task_queue/task_queue_base.h"
@@ -4029,7 +4030,11 @@
               payload_name_, /*max_qp=*/56, /*is_screenshare=*/false,
               /*conference_mode=*/false);
       encoder_config->max_bitrate_bps = kMaxBitrateBps;
-
+      if (absl::EqualsIgnoreCase(payload_name_, "VP9")) {
+        encoder_config->encoder_specific_settings = rtc::make_ref_counted<
+            VideoEncoderConfig::Vp9EncoderSpecificSettings>(
+            VideoEncoder::GetDefaultVp9Settings());
+      }
       if (scalability_mode_.empty()) {
         for (size_t i = 0; i < num_temporal_layers_.size(); ++i) {
           VideoStream& stream = encoder_config->simulcast_layers[i];
@@ -4073,6 +4078,9 @@
       if (const auto* vp8_header = absl::get_if<RTPVideoHeaderVP8>(
               &parsed_payload->video_header.video_type_header)) {
         parsed.temporal_idx = vp8_header->temporalIdx;
+      } else if (const auto* vp9_header = absl::get_if<RTPVideoHeaderVP9>(
+                     &parsed_payload->video_header.video_type_header)) {
+        parsed.temporal_idx = vp9_header->temporal_idx;
       } else {
         RTC_DCHECK_NOTREACHED();
       }
@@ -4238,4 +4246,13 @@
                      {ScalabilityMode::kL1T2, ScalabilityMode::kL1T2});
 }
 
+TEST_F(VideoSendStreamTest, TestTemporalLayersVp9) {
+  test::FunctionVideoEncoderFactory encoder_factory(
+      []() { return VP9Encoder::Create(); });
+
+  TestTemporalLayers(&encoder_factory, "VP9",
+                     /*num_temporal_layers=*/{2},
+                     /*scalability_mode=*/{});
+}
+
 }  // namespace webrtc