OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 #include <algorithm> // max | 10 #include <algorithm> // max |
(...skipping 1775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1786 } test; | 1786 } test; |
1787 | 1787 |
1788 RunBaseTest(&test, FakeNetworkPipe::Config()); | 1788 RunBaseTest(&test, FakeNetworkPipe::Config()); |
1789 } | 1789 } |
1790 | 1790 |
1791 class VP9HeaderObeserver : public test::SendTest { | 1791 class VP9HeaderObeserver : public test::SendTest { |
1792 public: | 1792 public: |
1793 VP9HeaderObeserver() | 1793 VP9HeaderObeserver() |
1794 : SendTest(VideoSendStreamTest::kDefaultTimeoutMs), | 1794 : SendTest(VideoSendStreamTest::kDefaultTimeoutMs), |
1795 vp9_encoder_(VP9Encoder::Create()), | 1795 vp9_encoder_(VP9Encoder::Create()), |
1796 vp9_settings_(VideoEncoder::GetDefaultVp9Settings()) { | 1796 vp9_settings_(VideoEncoder::GetDefaultVp9Settings()) {} |
1797 vp9_settings_.numberOfTemporalLayers = 1; | |
1798 vp9_settings_.numberOfSpatialLayers = 2; | |
1799 } | |
1800 | 1797 |
1801 virtual void ModifyConfigsHook( | 1798 virtual void ModifyConfigsHook( |
1802 VideoSendStream::Config* send_config, | 1799 VideoSendStream::Config* send_config, |
1803 std::vector<VideoReceiveStream::Config>* receive_configs, | 1800 std::vector<VideoReceiveStream::Config>* receive_configs, |
1804 VideoEncoderConfig* encoder_config) {} | 1801 VideoEncoderConfig* encoder_config) {} |
1805 | 1802 |
1806 virtual void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) = 0; | 1803 virtual void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) = 0; |
1807 | 1804 |
1808 private: | 1805 private: |
1809 const int kVp9PayloadType = 105; | 1806 const int kVp9PayloadType = 105; |
1810 | 1807 |
1811 void ModifyConfigs(VideoSendStream::Config* send_config, | 1808 void ModifyConfigs(VideoSendStream::Config* send_config, |
1812 std::vector<VideoReceiveStream::Config>* receive_configs, | 1809 std::vector<VideoReceiveStream::Config>* receive_configs, |
1813 VideoEncoderConfig* encoder_config) override { | 1810 VideoEncoderConfig* encoder_config) override { |
1814 encoder_config->encoder_specific_settings = &vp9_settings_; | 1811 encoder_config->encoder_specific_settings = &vp9_settings_; |
1815 encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen; | |
1816 send_config->encoder_settings.encoder = vp9_encoder_.get(); | 1812 send_config->encoder_settings.encoder = vp9_encoder_.get(); |
1817 send_config->encoder_settings.payload_name = "VP9"; | 1813 send_config->encoder_settings.payload_name = "VP9"; |
1818 send_config->encoder_settings.payload_type = kVp9PayloadType; | 1814 send_config->encoder_settings.payload_type = kVp9PayloadType; |
1819 ModifyConfigsHook(send_config, receive_configs, encoder_config); | 1815 ModifyConfigsHook(send_config, receive_configs, encoder_config); |
1820 } | 1816 } |
1821 | 1817 |
1822 void PerformTest() override { | 1818 void PerformTest() override { |
1823 EXPECT_EQ(kEventSignaled, Wait()) | 1819 EXPECT_EQ(kEventSignaled, Wait()) |
1824 << "Test timed out waiting for VP9 packet"; | 1820 << "Test timed out waiting for VP9 packet"; |
1825 } | 1821 } |
(...skipping 28 matching lines...) Expand all Loading... |
1854 } | 1850 } |
1855 | 1851 |
1856 return SEND_PACKET; | 1852 return SEND_PACKET; |
1857 } | 1853 } |
1858 | 1854 |
1859 protected: | 1855 protected: |
1860 rtc::scoped_ptr<VP9Encoder> vp9_encoder_; | 1856 rtc::scoped_ptr<VP9Encoder> vp9_encoder_; |
1861 VideoCodecVP9 vp9_settings_; | 1857 VideoCodecVP9 vp9_settings_; |
1862 }; | 1858 }; |
1863 | 1859 |
| 1860 TEST_F(VideoSendStreamTest, VP9NoFlexMode) { |
| 1861 class NoFlexibleMode : public VP9HeaderObeserver { |
| 1862 void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override { |
| 1863 EXPECT_FALSE(vp9videoHeader->flexible_mode); |
| 1864 observation_complete_->Set(); |
| 1865 } |
| 1866 } test; |
| 1867 |
| 1868 RunBaseTest(&test, FakeNetworkPipe::Config()); |
| 1869 } |
| 1870 |
1864 TEST_F(VideoSendStreamTest, DISABLED_VP9FlexMode) { | 1871 TEST_F(VideoSendStreamTest, DISABLED_VP9FlexMode) { |
1865 class FlexibleMode : public VP9HeaderObeserver { | 1872 class FlexibleMode : public VP9HeaderObeserver { |
1866 void ModifyConfigsHook( | 1873 void ModifyConfigsHook( |
1867 VideoSendStream::Config* send_config, | 1874 VideoSendStream::Config* send_config, |
1868 std::vector<VideoReceiveStream::Config>* receive_configs, | 1875 std::vector<VideoReceiveStream::Config>* receive_configs, |
1869 VideoEncoderConfig* encoder_config) override { | 1876 VideoEncoderConfig* encoder_config) override { |
1870 vp9_settings_.flexibleMode = true; | 1877 vp9_settings_.flexibleMode = true; |
1871 } | 1878 } |
1872 | 1879 |
1873 void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override { | 1880 void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override { |
1874 EXPECT_TRUE(vp9videoHeader->flexible_mode); | 1881 EXPECT_TRUE(vp9videoHeader->flexible_mode); |
1875 observation_complete_->Set(); | 1882 observation_complete_->Set(); |
1876 } | 1883 } |
1877 } test; | |
1878 | |
1879 RunBaseTest(&test, FakeNetworkPipe::Config()); | |
1880 } | |
1881 | |
1882 TEST_F(VideoSendStreamTest, VP9FlexModeHasPictureId) { | |
1883 class FlexibleMode : public VP9HeaderObeserver { | |
1884 void ModifyConfigsHook( | |
1885 VideoSendStream::Config* send_config, | |
1886 std::vector<VideoReceiveStream::Config>* receive_configs, | |
1887 VideoEncoderConfig* encoder_config) override { | |
1888 vp9_settings_.flexibleMode = true; | |
1889 } | |
1890 | |
1891 void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override { | |
1892 EXPECT_NE(vp9videoHeader->picture_id, kNoPictureId); | |
1893 observation_complete_->Set(); | |
1894 } | |
1895 } test; | |
1896 | |
1897 RunBaseTest(&test, FakeNetworkPipe::Config()); | |
1898 } | |
1899 | |
1900 TEST_F(VideoSendStreamTest, VP9FlexModeRefCount) { | |
1901 class FlexibleMode : public VP9HeaderObeserver { | |
1902 void ModifyConfigsHook( | |
1903 VideoSendStream::Config* send_config, | |
1904 std::vector<VideoReceiveStream::Config>* receive_configs, | |
1905 VideoEncoderConfig* encoder_config) override { | |
1906 vp9_settings_.flexibleMode = true; | |
1907 } | |
1908 | |
1909 void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override { | |
1910 EXPECT_TRUE(vp9videoHeader->flexible_mode); | |
1911 if (vp9videoHeader->inter_pic_predicted) { | |
1912 EXPECT_GT(vp9videoHeader->num_ref_pics, 0u); | |
1913 observation_complete_->Set(); | |
1914 } | |
1915 } | |
1916 } test; | |
1917 | |
1918 RunBaseTest(&test, FakeNetworkPipe::Config()); | |
1919 } | |
1920 | |
1921 TEST_F(VideoSendStreamTest, VP9FlexModeRefs) { | |
1922 class FlexibleMode : public VP9HeaderObeserver { | |
1923 void ModifyConfigsHook( | |
1924 VideoSendStream::Config* send_config, | |
1925 std::vector<VideoReceiveStream::Config>* receive_configs, | |
1926 VideoEncoderConfig* encoder_config) override { | |
1927 vp9_settings_.flexibleMode = true; | |
1928 } | |
1929 | |
1930 void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override { | |
1931 EXPECT_TRUE(vp9videoHeader->flexible_mode); | |
1932 if (vp9videoHeader->inter_pic_predicted) { | |
1933 EXPECT_GT(vp9videoHeader->num_ref_pics, 0u); | |
1934 observation_complete_->Set(); | |
1935 } | |
1936 } | |
1937 | 1884 |
1938 } test; | 1885 } test; |
1939 | 1886 |
1940 RunBaseTest(&test, FakeNetworkPipe::Config()); | 1887 RunBaseTest(&test, FakeNetworkPipe::Config()); |
1941 } | 1888 } |
1942 | 1889 |
1943 } // namespace webrtc | 1890 } // namespace webrtc |
OLD | NEW |