Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(440)

Side by Side Diff: webrtc/video/video_send_stream_tests.cc

Issue 1328113004: Work on flexible mode and screen sharing. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Comments Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698