text: /*
   *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
   *
   *  Use of this source code is governed by a BSD-style license
   *  that can be found in the LICENSE file in the root of the source
   *  tree. An additional intellectual property rights grant can be found
   *  in the file PATENTS.  All contributing project authors may
   *  be found in the AUTHORS file in the root of the source tree.
   */
  
  #include <memory>
  
  #include "absl/memory/memory.h"
  #include "api/test/create_simulcast_test_fixture.h"
  #include "api/test/simulcast_test_fixture.h"
  #include "api/test/video/function_video_decoder_factory.h"
  #include "api/test/video/function_video_encoder_factory.h"
  #include "modules/video_coding/codecs/vp8/include/vp8.h"
  #include "test/gtest.h"
  
  namespace webrtc {
  namespace test {
  
  namespace {
  std::unique_ptr<SimulcastTestFixture> CreateSpecificSimulcastTestFixture() {
    std::unique_ptr<VideoEncoderFactory> encoder_factory =
        absl::make_unique<FunctionVideoEncoderFactory>(
            []() { return VP8Encoder::Create(); });
    std::unique_ptr<VideoDecoderFactory> decoder_factory =
        absl::make_unique<FunctionVideoDecoderFactory>(
            []() { return VP8Decoder::Create(); });
    return CreateSimulcastTestFixture(std::move(encoder_factory),
                                      std::move(decoder_factory),
                                      SdpVideoFormat("VP8"));
  }
  }  // namespace
  
  TEST(LibvpxVp8SimulcastTest, TestKeyFrameRequestsOnAllStreams) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestKeyFrameRequestsOnAllStreams();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestPaddingAllStreams) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestPaddingAllStreams();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestPaddingTwoStreams) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestPaddingTwoStreams();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestPaddingTwoStreamsOneMaxedOut) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestPaddingTwoStreamsOneMaxedOut();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestPaddingOneStream) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestPaddingOneStream();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestPaddingOneStreamTwoMaxedOut) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestPaddingOneStreamTwoMaxedOut();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestSendAllStreams) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestSendAllStreams();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestDisablingStreams) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestDisablingStreams();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestActiveStreams) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestActiveStreams();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestSwitchingToOneStream) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestSwitchingToOneStream();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestSwitchingToOneOddStream) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestSwitchingToOneOddStream();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestSwitchingToOneSmallStream) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestSwitchingToOneSmallStream();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestSpatioTemporalLayers333PatternEncoder) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestSpatioTemporalLayers333PatternEncoder();
  }
  
  TEST(LibvpxVp8SimulcastTest, TestStrideEncodeDecode) {
    auto fixture = CreateSpecificSimulcastTestFixture();
    fixture->TestStrideEncodeDecode();
  }
  
  }  // namespace test
  }  // namespace webrtc
  