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 } |
1797 | 1800 |
1798 virtual void ModifyConfigsHook( | 1801 virtual void ModifyConfigsHook( |
1799 VideoSendStream::Config* send_config, | 1802 VideoSendStream::Config* send_config, |
1800 std::vector<VideoReceiveStream::Config>* receive_configs, | 1803 std::vector<VideoReceiveStream::Config>* receive_configs, |
1801 VideoEncoderConfig* encoder_config) {} | 1804 VideoEncoderConfig* encoder_config) {} |
1802 | 1805 |
1803 virtual void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) = 0; | 1806 virtual void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) = 0; |
1804 | 1807 |
1805 private: | 1808 private: |
1806 const int kVp9PayloadType = 105; | 1809 const int kVp9PayloadType = 105; |
1807 | 1810 |
1808 void ModifyConfigs(VideoSendStream::Config* send_config, | 1811 void ModifyConfigs(VideoSendStream::Config* send_config, |
1809 std::vector<VideoReceiveStream::Config>* receive_configs, | 1812 std::vector<VideoReceiveStream::Config>* receive_configs, |
1810 VideoEncoderConfig* encoder_config) override { | 1813 VideoEncoderConfig* encoder_config) override { |
1811 encoder_config->encoder_specific_settings = &vp9_settings_; | 1814 encoder_config->encoder_specific_settings = &vp9_settings_; |
| 1815 encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen; |
1812 send_config->encoder_settings.encoder = vp9_encoder_.get(); | 1816 send_config->encoder_settings.encoder = vp9_encoder_.get(); |
1813 send_config->encoder_settings.payload_name = "VP9"; | 1817 send_config->encoder_settings.payload_name = "VP9"; |
1814 send_config->encoder_settings.payload_type = kVp9PayloadType; | 1818 send_config->encoder_settings.payload_type = kVp9PayloadType; |
1815 ModifyConfigsHook(send_config, receive_configs, encoder_config); | 1819 ModifyConfigsHook(send_config, receive_configs, encoder_config); |
1816 } | 1820 } |
1817 | 1821 |
1818 void PerformTest() override { | 1822 void PerformTest() override { |
1819 EXPECT_EQ(kEventSignaled, Wait()) | 1823 EXPECT_EQ(kEventSignaled, Wait()) |
1820 << "Test timed out waiting for VP9 packet"; | 1824 << "Test timed out waiting for VP9 packet"; |
1821 } | 1825 } |
(...skipping 28 matching lines...) Expand all Loading... |
1850 } | 1854 } |
1851 | 1855 |
1852 return SEND_PACKET; | 1856 return SEND_PACKET; |
1853 } | 1857 } |
1854 | 1858 |
1855 protected: | 1859 protected: |
1856 rtc::scoped_ptr<VP9Encoder> vp9_encoder_; | 1860 rtc::scoped_ptr<VP9Encoder> vp9_encoder_; |
1857 VideoCodecVP9 vp9_settings_; | 1861 VideoCodecVP9 vp9_settings_; |
1858 }; | 1862 }; |
1859 | 1863 |
1860 TEST_F(VideoSendStreamTest, VP9NoFlexMode) { | 1864 TEST_F(VideoSendStreamTest, DISABLED_VP9FlexMode) { |
1861 class NoFlexibleMode : public VP9HeaderObeserver { | 1865 class FlexibleMode : public VP9HeaderObeserver { |
| 1866 void ModifyConfigsHook( |
| 1867 VideoSendStream::Config* send_config, |
| 1868 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 1869 VideoEncoderConfig* encoder_config) override { |
| 1870 vp9_settings_.flexibleMode = true; |
| 1871 } |
| 1872 |
1862 void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override { | 1873 void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override { |
1863 EXPECT_FALSE(vp9videoHeader->flexible_mode); | 1874 EXPECT_TRUE(vp9videoHeader->flexible_mode); |
1864 observation_complete_->Set(); | 1875 observation_complete_->Set(); |
1865 } | 1876 } |
1866 } test; | 1877 } test; |
1867 | 1878 |
1868 RunBaseTest(&test, FakeNetworkPipe::Config()); | 1879 RunBaseTest(&test, FakeNetworkPipe::Config()); |
1869 } | 1880 } |
1870 | 1881 |
1871 TEST_F(VideoSendStreamTest, DISABLED_VP9FlexMode) { | 1882 TEST_F(VideoSendStreamTest, VP9FlexModeHasPictureId) { |
1872 class FlexibleMode : public VP9HeaderObeserver { | 1883 class FlexibleMode : public VP9HeaderObeserver { |
1873 void ModifyConfigsHook( | 1884 void ModifyConfigsHook( |
1874 VideoSendStream::Config* send_config, | 1885 VideoSendStream::Config* send_config, |
1875 std::vector<VideoReceiveStream::Config>* receive_configs, | 1886 std::vector<VideoReceiveStream::Config>* receive_configs, |
1876 VideoEncoderConfig* encoder_config) override { | 1887 VideoEncoderConfig* encoder_config) override { |
1877 vp9_settings_.flexibleMode = true; | 1888 vp9_settings_.flexibleMode = true; |
1878 } | 1889 } |
1879 | 1890 |
1880 void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override { | 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 { |
1881 EXPECT_TRUE(vp9videoHeader->flexible_mode); | 1910 EXPECT_TRUE(vp9videoHeader->flexible_mode); |
1882 observation_complete_->Set(); | 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 } |
1883 } | 1936 } |
1884 | 1937 |
1885 } test; | 1938 } test; |
1886 | 1939 |
1887 RunBaseTest(&test, FakeNetworkPipe::Config()); | 1940 RunBaseTest(&test, FakeNetworkPipe::Config()); |
1888 } | 1941 } |
1889 | 1942 |
1890 } // namespace webrtc | 1943 } // namespace webrtc |
OLD | NEW |