| 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 1886 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1897 protected: | 1897 protected: |
| 1898 bool ContinuousPictureId(const RTPVideoHeaderVP9& vp9) const { | 1898 bool ContinuousPictureId(const RTPVideoHeaderVP9& vp9) const { |
| 1899 if (last_vp9_.picture_id > vp9.picture_id) { | 1899 if (last_vp9_.picture_id > vp9.picture_id) { |
| 1900 return vp9.picture_id == 0; // Wrap. | 1900 return vp9.picture_id == 0; // Wrap. |
| 1901 } else { | 1901 } else { |
| 1902 return vp9.picture_id == last_vp9_.picture_id + 1; | 1902 return vp9.picture_id == last_vp9_.picture_id + 1; |
| 1903 } | 1903 } |
| 1904 } | 1904 } |
| 1905 | 1905 |
| 1906 void VerifySpatialIdxWithinFrame(const RTPVideoHeaderVP9& vp9) const { | 1906 void VerifySpatialIdxWithinFrame(const RTPVideoHeaderVP9& vp9) const { |
| 1907 if (frames_sent_ == 0) | |
| 1908 return; | |
| 1909 | |
| 1910 bool new_layer = vp9.spatial_idx != last_vp9_.spatial_idx; | 1907 bool new_layer = vp9.spatial_idx != last_vp9_.spatial_idx; |
| 1911 EXPECT_EQ(new_layer, vp9.beginning_of_frame); | 1908 EXPECT_EQ(new_layer, vp9.beginning_of_frame); |
| 1912 EXPECT_EQ(new_layer, last_vp9_.end_of_frame); | 1909 EXPECT_EQ(new_layer, last_vp9_.end_of_frame); |
| 1913 EXPECT_EQ(new_layer ? last_vp9_.spatial_idx + 1 : last_vp9_.spatial_idx, | 1910 EXPECT_EQ(new_layer ? last_vp9_.spatial_idx + 1 : last_vp9_.spatial_idx, |
| 1914 vp9.spatial_idx); | 1911 vp9.spatial_idx); |
| 1915 } | 1912 } |
| 1916 | 1913 |
| 1917 void VerifyFixedTemporalLayerStructure(const RTPVideoHeaderVP9& vp9, | 1914 void VerifyFixedTemporalLayerStructure(const RTPVideoHeaderVP9& vp9, |
| 1918 uint8_t num_layers) const { | 1915 uint8_t num_layers) const { |
| 1919 switch (num_layers) { | 1916 switch (num_layers) { |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2153 vp9_settings_.keyFrameInterval = kKeyFrameInterval; | 2150 vp9_settings_.keyFrameInterval = kKeyFrameInterval; |
| 2154 vp9_settings_.numberOfTemporalLayers = num_temporal_layers_; | 2151 vp9_settings_.numberOfTemporalLayers = num_temporal_layers_; |
| 2155 vp9_settings_.numberOfSpatialLayers = num_spatial_layers_; | 2152 vp9_settings_.numberOfSpatialLayers = num_spatial_layers_; |
| 2156 } | 2153 } |
| 2157 | 2154 |
| 2158 void InspectHeader(const RTPVideoHeaderVP9& vp9) override { | 2155 void InspectHeader(const RTPVideoHeaderVP9& vp9) override { |
| 2159 bool ss_data_expected = !vp9.inter_pic_predicted && | 2156 bool ss_data_expected = !vp9.inter_pic_predicted && |
| 2160 vp9.beginning_of_frame && vp9.spatial_idx == 0; | 2157 vp9.beginning_of_frame && vp9.spatial_idx == 0; |
| 2161 EXPECT_EQ(ss_data_expected, vp9.ss_data_available); | 2158 EXPECT_EQ(ss_data_expected, vp9.ss_data_available); |
| 2162 EXPECT_EQ(vp9.spatial_idx > 0, vp9.inter_layer_predicted); // D | 2159 EXPECT_EQ(vp9.spatial_idx > 0, vp9.inter_layer_predicted); // D |
| 2160 EXPECT_EQ(!vp9.inter_pic_predicted, |
| 2161 frames_sent_ % kKeyFrameInterval == 0); |
| 2163 | 2162 |
| 2164 if (IsNewPictureId(vp9)) { | 2163 if (IsNewPictureId(vp9)) { |
| 2165 EXPECT_EQ(0, vp9.spatial_idx); | 2164 EXPECT_EQ(0, vp9.spatial_idx); |
| 2166 EXPECT_EQ(num_spatial_layers_ - 1, last_vp9_.spatial_idx); | 2165 EXPECT_EQ(num_spatial_layers_ - 1, last_vp9_.spatial_idx); |
| 2167 } | 2166 } |
| 2168 | 2167 |
| 2169 VerifyFixedTemporalLayerStructure(vp9, | 2168 VerifyFixedTemporalLayerStructure(vp9, |
| 2170 l_field_ ? num_temporal_layers_ : 0); | 2169 l_field_ ? num_temporal_layers_ : 0); |
| 2171 | 2170 |
| 2172 if (frames_sent_ > kNumFramesToSend) | 2171 if (frames_sent_ > kNumFramesToSend) |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2199 EXPECT_GT(vp9_header.num_ref_pics, 0u); | 2198 EXPECT_GT(vp9_header.num_ref_pics, 0u); |
| 2200 observation_complete_.Set(); | 2199 observation_complete_.Set(); |
| 2201 } | 2200 } |
| 2202 } | 2201 } |
| 2203 } test; | 2202 } test; |
| 2204 | 2203 |
| 2205 RunBaseTest(&test, FakeNetworkPipe::Config()); | 2204 RunBaseTest(&test, FakeNetworkPipe::Config()); |
| 2206 } | 2205 } |
| 2207 | 2206 |
| 2208 } // namespace webrtc | 2207 } // namespace webrtc |
| OLD | NEW |