| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/base/android/media_codec_player.h" | 5 #include "media/base/android/media_codec_player.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 931 // Configuration should propagate through the player and to the manager. | 931 // Configuration should propagate through the player and to the manager. |
| 932 EXPECT_TRUE( | 932 EXPECT_TRUE( |
| 933 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsMetadataChanged, | 933 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsMetadataChanged, |
| 934 base::Unretained(&manager_)))); | 934 base::Unretained(&manager_)))); |
| 935 | 935 |
| 936 EXPECT_EQ(duration, manager_.media_metadata_.duration); | 936 EXPECT_EQ(duration, manager_.media_metadata_.duration); |
| 937 EXPECT_EQ(320, manager_.media_metadata_.width); | 937 EXPECT_EQ(320, manager_.media_metadata_.width); |
| 938 EXPECT_EQ(240, manager_.media_metadata_.height); | 938 EXPECT_EQ(240, manager_.media_metadata_.height); |
| 939 } | 939 } |
| 940 | 940 |
| 941 TEST_F(MediaCodecPlayerTest, AudioPlayTillCompletion) { | 941 TEST_F(MediaCodecPlayerTest, DISABLED_AudioPlayTillCompletion) { |
| 942 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 942 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 943 | 943 |
| 944 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1000); | 944 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1000); |
| 945 base::TimeDelta timeout = base::TimeDelta::FromMilliseconds(2000); | 945 base::TimeDelta timeout = base::TimeDelta::FromMilliseconds(2000); |
| 946 | 946 |
| 947 demuxer_->SetAudioFactory( | 947 demuxer_->SetAudioFactory( |
| 948 scoped_ptr<AudioFactory>(new AudioFactory(duration))); | 948 scoped_ptr<AudioFactory>(new AudioFactory(duration))); |
| 949 | 949 |
| 950 CreatePlayer(); | 950 CreatePlayer(); |
| 951 | 951 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1046 player_->Start(); | 1046 player_->Start(); |
| 1047 | 1047 |
| 1048 // Playback should not start. | 1048 // Playback should not start. |
| 1049 EXPECT_FALSE( | 1049 EXPECT_FALSE( |
| 1050 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackStarted, | 1050 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackStarted, |
| 1051 base::Unretained(&manager_)), | 1051 base::Unretained(&manager_)), |
| 1052 start_timeout)); | 1052 start_timeout)); |
| 1053 } | 1053 } |
| 1054 | 1054 |
| 1055 // http://crbug.com/518900 | 1055 // http://crbug.com/518900 |
| 1056 TEST_F(MediaCodecPlayerTest, AudioSeekAfterStop) { | 1056 TEST_F(MediaCodecPlayerTest, DISABLED_AudioSeekAfterStop) { |
| 1057 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1057 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1058 | 1058 |
| 1059 // Play for 300 ms, then Pause, then Seek to beginning. The playback should | 1059 // Play for 300 ms, then Pause, then Seek to beginning. The playback should |
| 1060 // start from the beginning. | 1060 // start from the beginning. |
| 1061 | 1061 |
| 1062 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); | 1062 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); |
| 1063 | 1063 |
| 1064 demuxer_->SetAudioFactory( | 1064 demuxer_->SetAudioFactory( |
| 1065 scoped_ptr<AudioFactory>(new AudioFactory(duration))); | 1065 scoped_ptr<AudioFactory>(new AudioFactory(duration))); |
| 1066 | 1066 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1105 base::Unretained(&manager_)))); | 1105 base::Unretained(&manager_)))); |
| 1106 | 1106 |
| 1107 // Make sure we started from the beginninig | 1107 // Make sure we started from the beginninig |
| 1108 EXPECT_GT(base::TimeDelta::FromMilliseconds(40), manager_.pts_stat_.min()); | 1108 EXPECT_GT(base::TimeDelta::FromMilliseconds(40), manager_.pts_stat_.min()); |
| 1109 | 1109 |
| 1110 // The player should have reported the seek completion to the manager. | 1110 // The player should have reported the seek completion to the manager. |
| 1111 EXPECT_TRUE(WaitForCondition(base::Bind( | 1111 EXPECT_TRUE(WaitForCondition(base::Bind( |
| 1112 &MockMediaPlayerManager::IsSeekCompleted, base::Unretained(&manager_)))); | 1112 &MockMediaPlayerManager::IsSeekCompleted, base::Unretained(&manager_)))); |
| 1113 } | 1113 } |
| 1114 | 1114 |
| 1115 TEST_F(MediaCodecPlayerTest, AudioSeekThenPlay) { | 1115 TEST_F(MediaCodecPlayerTest, DISABLED_AudioSeekThenPlay) { |
| 1116 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1116 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1117 | 1117 |
| 1118 // Issue Seek command immediately followed by Start. The playback should | 1118 // Issue Seek command immediately followed by Start. The playback should |
| 1119 // start at the seek position. | 1119 // start at the seek position. |
| 1120 | 1120 |
| 1121 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); | 1121 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); |
| 1122 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(500); | 1122 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(500); |
| 1123 | 1123 |
| 1124 demuxer_->SetAudioFactory( | 1124 demuxer_->SetAudioFactory( |
| 1125 scoped_ptr<AudioFactory>(new AudioFactory(duration))); | 1125 scoped_ptr<AudioFactory>(new AudioFactory(duration))); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1139 base::Unretained(&manager_)))); | 1139 base::Unretained(&manager_)))); |
| 1140 | 1140 |
| 1141 // The playback should start at |seek_position| | 1141 // The playback should start at |seek_position| |
| 1142 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); | 1142 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); |
| 1143 | 1143 |
| 1144 // The player should have reported the seek completion to the manager. | 1144 // The player should have reported the seek completion to the manager. |
| 1145 EXPECT_TRUE(WaitForCondition(base::Bind( | 1145 EXPECT_TRUE(WaitForCondition(base::Bind( |
| 1146 &MockMediaPlayerManager::IsSeekCompleted, base::Unretained(&manager_)))); | 1146 &MockMediaPlayerManager::IsSeekCompleted, base::Unretained(&manager_)))); |
| 1147 } | 1147 } |
| 1148 | 1148 |
| 1149 TEST_F(MediaCodecPlayerTest, AudioSeekThenPlayThenConfig) { | 1149 TEST_F(MediaCodecPlayerTest, DISABLED_AudioSeekThenPlayThenConfig) { |
| 1150 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1150 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1151 | 1151 |
| 1152 // Issue Seek command immediately followed by Start but without prior demuxer | 1152 // Issue Seek command immediately followed by Start but without prior demuxer |
| 1153 // configuration. Start should wait for configuration. After it has been | 1153 // configuration. Start should wait for configuration. After it has been |
| 1154 // posted the playback should start at the seek position. | 1154 // posted the playback should start at the seek position. |
| 1155 | 1155 |
| 1156 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); | 1156 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); |
| 1157 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(500); | 1157 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(500); |
| 1158 | 1158 |
| 1159 demuxer_->SetAudioFactory( | 1159 demuxer_->SetAudioFactory( |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1179 | 1179 |
| 1180 // The playback should start at |seek_position| | 1180 // The playback should start at |seek_position| |
| 1181 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); | 1181 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); |
| 1182 | 1182 |
| 1183 // The player should have reported the seek completion to the manager. | 1183 // The player should have reported the seek completion to the manager. |
| 1184 EXPECT_TRUE(WaitForCondition(base::Bind( | 1184 EXPECT_TRUE(WaitForCondition(base::Bind( |
| 1185 &MockMediaPlayerManager::IsSeekCompleted, base::Unretained(&manager_)))); | 1185 &MockMediaPlayerManager::IsSeekCompleted, base::Unretained(&manager_)))); |
| 1186 } | 1186 } |
| 1187 | 1187 |
| 1188 // http://crbug.com/518900 | 1188 // http://crbug.com/518900 |
| 1189 TEST_F(MediaCodecPlayerTest, AudioSeekWhilePlaying) { | 1189 TEST_F(MediaCodecPlayerTest, DISABLED_AudioSeekWhilePlaying) { |
| 1190 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1190 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1191 | 1191 |
| 1192 // Play for 300 ms, then issue several Seek commands in the row. | 1192 // Play for 300 ms, then issue several Seek commands in the row. |
| 1193 // The playback should continue at the last seek position. | 1193 // The playback should continue at the last seek position. |
| 1194 | 1194 |
| 1195 // To test this condition without analyzing the reported time details | 1195 // To test this condition without analyzing the reported time details |
| 1196 // and without introducing dependency on implementation I make a long (10s) | 1196 // and without introducing dependency on implementation I make a long (10s) |
| 1197 // duration and test that the playback resumes after big time jump (5s) in a | 1197 // duration and test that the playback resumes after big time jump (5s) in a |
| 1198 // short period of time (200 ms). | 1198 // short period of time (200 ms). |
| 1199 base::TimeDelta duration = base::TimeDelta::FromSeconds(10); | 1199 base::TimeDelta duration = base::TimeDelta::FromSeconds(10); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1258 base::Unretained(demuxer_)))); | 1258 base::Unretained(demuxer_)))); |
| 1259 | 1259 |
| 1260 // Playback should continue with a new surface. Wait till completion. | 1260 // Playback should continue with a new surface. Wait till completion. |
| 1261 EXPECT_TRUE( | 1261 EXPECT_TRUE( |
| 1262 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackCompleted, | 1262 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackCompleted, |
| 1263 base::Unretained(&manager_)), | 1263 base::Unretained(&manager_)), |
| 1264 timeout)); | 1264 timeout)); |
| 1265 EXPECT_LE(duration, manager_.pts_stat_.max()); | 1265 EXPECT_LE(duration, manager_.pts_stat_.max()); |
| 1266 } | 1266 } |
| 1267 | 1267 |
| 1268 TEST_F(MediaCodecPlayerTest, VideoRemoveAndSetSurface) { | 1268 TEST_F(MediaCodecPlayerTest, DISABLED_VideoRemoveAndSetSurface) { |
| 1269 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1269 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1270 | 1270 |
| 1271 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1000); | 1271 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1000); |
| 1272 | 1272 |
| 1273 ASSERT_TRUE(StartVideoPlayback(duration, "VideoRemoveAndSetSurface")); | 1273 ASSERT_TRUE(StartVideoPlayback(duration, "VideoRemoveAndSetSurface")); |
| 1274 | 1274 |
| 1275 // Wait for some time and check statistics. | 1275 // Wait for some time and check statistics. |
| 1276 WaitForDelay(base::TimeDelta::FromMilliseconds(200)); | 1276 WaitForDelay(base::TimeDelta::FromMilliseconds(200)); |
| 1277 | 1277 |
| 1278 // Make sure we played at least 100 ms. | 1278 // Make sure we played at least 100 ms. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1308 EXPECT_TRUE( | 1308 EXPECT_TRUE( |
| 1309 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackStarted, | 1309 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackStarted, |
| 1310 base::Unretained(&manager_)), | 1310 base::Unretained(&manager_)), |
| 1311 reconfigure_timeout)); | 1311 reconfigure_timeout)); |
| 1312 | 1312 |
| 1313 // Timestamps should not go back. | 1313 // Timestamps should not go back. |
| 1314 EXPECT_LE(max_pts_before_removal, manager_.pts_stat_.max()); | 1314 EXPECT_LE(max_pts_before_removal, manager_.pts_stat_.max()); |
| 1315 } | 1315 } |
| 1316 | 1316 |
| 1317 // http://crbug.com/518900 | 1317 // http://crbug.com/518900 |
| 1318 TEST_F(MediaCodecPlayerTest, VideoReleaseAndStart) { | 1318 TEST_F(MediaCodecPlayerTest, DISABLED_VideoReleaseAndStart) { |
| 1319 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1319 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1320 | 1320 |
| 1321 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1000); | 1321 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1000); |
| 1322 | 1322 |
| 1323 ASSERT_TRUE(StartVideoPlayback(duration, "VideoReleaseAndStart")); | 1323 ASSERT_TRUE(StartVideoPlayback(duration, "VideoReleaseAndStart")); |
| 1324 | 1324 |
| 1325 // Wait for some time and check statistics. | 1325 // Wait for some time and check statistics. |
| 1326 WaitForDelay(base::TimeDelta::FromMilliseconds(200)); | 1326 WaitForDelay(base::TimeDelta::FromMilliseconds(200)); |
| 1327 | 1327 |
| 1328 // Make sure we played at least 100 ms. | 1328 // Make sure we played at least 100 ms. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1356 base::TimeDelta reconfigure_timeout = base::TimeDelta::FromMilliseconds(800); | 1356 base::TimeDelta reconfigure_timeout = base::TimeDelta::FromMilliseconds(800); |
| 1357 EXPECT_TRUE( | 1357 EXPECT_TRUE( |
| 1358 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackStarted, | 1358 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackStarted, |
| 1359 base::Unretained(&manager_)), | 1359 base::Unretained(&manager_)), |
| 1360 reconfigure_timeout)); | 1360 reconfigure_timeout)); |
| 1361 | 1361 |
| 1362 // Timestamps should not go back. | 1362 // Timestamps should not go back. |
| 1363 EXPECT_LE(max_pts_before_backgrounding, manager_.pts_stat_.max()); | 1363 EXPECT_LE(max_pts_before_backgrounding, manager_.pts_stat_.max()); |
| 1364 } | 1364 } |
| 1365 | 1365 |
| 1366 TEST_F(MediaCodecPlayerTest, VideoSeekAndRelease) { | 1366 TEST_F(MediaCodecPlayerTest, DISABLED_VideoSeekAndRelease) { |
| 1367 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1367 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1368 | 1368 |
| 1369 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); | 1369 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); |
| 1370 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); | 1370 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); |
| 1371 | 1371 |
| 1372 ASSERT_TRUE(StartVideoPlayback(duration, "VideoSeekAndRelease")); | 1372 ASSERT_TRUE(StartVideoPlayback(duration, "VideoSeekAndRelease")); |
| 1373 | 1373 |
| 1374 // Wait for some time and check statistics. | 1374 // Wait for some time and check statistics. |
| 1375 WaitForDelay(base::TimeDelta::FromMilliseconds(200)); | 1375 WaitForDelay(base::TimeDelta::FromMilliseconds(200)); |
| 1376 | 1376 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1519 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackCompleted, | 1519 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackCompleted, |
| 1520 base::Unretained(&manager_)))); | 1520 base::Unretained(&manager_)))); |
| 1521 | 1521 |
| 1522 // The first pts should be equal than seek position even if video frames | 1522 // The first pts should be equal than seek position even if video frames |
| 1523 // started 100 ms eralier than the seek request. | 1523 // started 100 ms eralier than the seek request. |
| 1524 EXPECT_EQ(seek_position, manager_.pts_stat_.min()); | 1524 EXPECT_EQ(seek_position, manager_.pts_stat_.min()); |
| 1525 | 1525 |
| 1526 EXPECT_EQ(6, manager_.pts_stat_.num_values()); | 1526 EXPECT_EQ(6, manager_.pts_stat_.num_values()); |
| 1527 } | 1527 } |
| 1528 | 1528 |
| 1529 TEST_F(MediaCodecPlayerTest, AVPrerollAudioWaitsForVideo) { | 1529 TEST_F(MediaCodecPlayerTest, DISABLED_AVPrerollAudioWaitsForVideo) { |
| 1530 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1530 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1531 | 1531 |
| 1532 // Test that during prerolling neither audio nor video plays and that both | 1532 // Test that during prerolling neither audio nor video plays and that both |
| 1533 // resume simultaneously after preroll is finished. In other words, test | 1533 // resume simultaneously after preroll is finished. In other words, test |
| 1534 // that preroll works. | 1534 // that preroll works. |
| 1535 // We put the video into the long preroll and intercept the time when first | 1535 // We put the video into the long preroll and intercept the time when first |
| 1536 // rendering happens in each stream. The moment of rendering is approximated | 1536 // rendering happens in each stream. The moment of rendering is approximated |
| 1537 // with a decoder PTS that is delivered by a test-only callback. | 1537 // with a decoder PTS that is delivered by a test-only callback. |
| 1538 | 1538 |
| 1539 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); | 1539 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1570 EXPECT_TRUE(AlmostEqual(manager_.FirstFramePTS(DemuxerStream::AUDIO), | 1570 EXPECT_TRUE(AlmostEqual(manager_.FirstFramePTS(DemuxerStream::AUDIO), |
| 1571 manager_.FirstFramePTS(DemuxerStream::VIDEO), 25)); | 1571 manager_.FirstFramePTS(DemuxerStream::VIDEO), 25)); |
| 1572 | 1572 |
| 1573 EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), | 1573 EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), |
| 1574 manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); | 1574 manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); |
| 1575 | 1575 |
| 1576 // The playback should start at |seek_position| | 1576 // The playback should start at |seek_position| |
| 1577 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); | 1577 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); |
| 1578 } | 1578 } |
| 1579 | 1579 |
| 1580 TEST_F(MediaCodecPlayerTest, AVPrerollReleaseAndRestart) { | 1580 TEST_F(MediaCodecPlayerTest, DISABLED_AVPrerollReleaseAndRestart) { |
| 1581 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1581 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1582 | 1582 |
| 1583 // Test that player will resume prerolling if prerolling is interrupted by | 1583 // Test that player will resume prerolling if prerolling is interrupted by |
| 1584 // Release() and Start(). | 1584 // Release() and Start(). |
| 1585 | 1585 |
| 1586 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); | 1586 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(2000); |
| 1587 | 1587 |
| 1588 // Set significant preroll interval. 500 ms means 25 frames, at 10 ms | 1588 // Set significant preroll interval. 500 ms means 25 frames, at 10 ms |
| 1589 // per frame it would take 250 ms to preroll. | 1589 // per frame it would take 250 ms to preroll. |
| 1590 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); | 1590 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1644 manager_.FirstFramePTS(DemuxerStream::VIDEO), 50)); | 1644 manager_.FirstFramePTS(DemuxerStream::VIDEO), 50)); |
| 1645 | 1645 |
| 1646 EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), | 1646 EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), |
| 1647 manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); | 1647 manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); |
| 1648 | 1648 |
| 1649 // The playback should start at |seek_position|, but Release() might discard | 1649 // The playback should start at |seek_position|, but Release() might discard |
| 1650 // the first audio frame. | 1650 // the first audio frame. |
| 1651 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 50)); | 1651 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 50)); |
| 1652 } | 1652 } |
| 1653 | 1653 |
| 1654 TEST_F(MediaCodecPlayerTest, AVPrerollStopAndRestart) { | 1654 TEST_F(MediaCodecPlayerTest, DISABLED_AVPrerollStopAndRestart) { |
| 1655 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1655 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1656 | 1656 |
| 1657 // Test that if Pause() happens during the preroll phase, | 1657 // Test that if Pause() happens during the preroll phase, |
| 1658 // we continue to do preroll after restart. | 1658 // we continue to do preroll after restart. |
| 1659 | 1659 |
| 1660 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); | 1660 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); |
| 1661 | 1661 |
| 1662 // Set significant preroll interval. 500 ms means 25 frames, at 10 ms | 1662 // Set significant preroll interval. 500 ms means 25 frames, at 10 ms |
| 1663 // per frame it would take 250 ms to preroll. | 1663 // per frame it would take 250 ms to preroll. |
| 1664 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); | 1664 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1736 EXPECT_TRUE(AlmostEqual(manager_.FirstFramePTS(DemuxerStream::AUDIO), | 1736 EXPECT_TRUE(AlmostEqual(manager_.FirstFramePTS(DemuxerStream::AUDIO), |
| 1737 manager_.FirstFramePTS(DemuxerStream::VIDEO), 25)); | 1737 manager_.FirstFramePTS(DemuxerStream::VIDEO), 25)); |
| 1738 | 1738 |
| 1739 EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), | 1739 EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), |
| 1740 manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); | 1740 manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); |
| 1741 | 1741 |
| 1742 // The playback should start at |seek_position| | 1742 // The playback should start at |seek_position| |
| 1743 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); | 1743 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); |
| 1744 } | 1744 } |
| 1745 | 1745 |
| 1746 TEST_F(MediaCodecPlayerTest, AVPrerollVideoEndsWhilePrerolling) { | 1746 TEST_F(MediaCodecPlayerTest, DISABLED_AVPrerollVideoEndsWhilePrerolling) { |
| 1747 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1747 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1748 | 1748 |
| 1749 // Test that when one stream ends in the preroll phase and another is not | 1749 // Test that when one stream ends in the preroll phase and another is not |
| 1750 // the preroll finishes and playback continues after it. | 1750 // the preroll finishes and playback continues after it. |
| 1751 | 1751 |
| 1752 // http://crbug.com/526755 | 1752 // http://crbug.com/526755 |
| 1753 // TODO(timav): remove these logs after verifying that the bug is fixed. | 1753 // TODO(timav): remove these logs after verifying that the bug is fixed. |
| 1754 DVLOG(0) << "AVPrerollVideoEndsWhilePrerolling: begin"; | 1754 DVLOG(0) << "AVPrerollVideoEndsWhilePrerolling: begin"; |
| 1755 | 1755 |
| 1756 base::TimeDelta audio_duration = base::TimeDelta::FromMilliseconds(1100); | 1756 base::TimeDelta audio_duration = base::TimeDelta::FromMilliseconds(1100); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1821 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackCompleted, | 1821 WaitForCondition(base::Bind(&MockMediaPlayerManager::IsPlaybackCompleted, |
| 1822 base::Unretained(&manager_)))); | 1822 base::Unretained(&manager_)))); |
| 1823 | 1823 |
| 1824 // There should not be any video frames. | 1824 // There should not be any video frames. |
| 1825 EXPECT_FALSE(manager_.HasFirstFrame(DemuxerStream::VIDEO)); | 1825 EXPECT_FALSE(manager_.HasFirstFrame(DemuxerStream::VIDEO)); |
| 1826 | 1826 |
| 1827 // http://crbug.com/526755 | 1827 // http://crbug.com/526755 |
| 1828 DVLOG(0) << "AVPrerollVideoEndsWhilePrerolling: end"; | 1828 DVLOG(0) << "AVPrerollVideoEndsWhilePrerolling: end"; |
| 1829 } | 1829 } |
| 1830 | 1830 |
| 1831 TEST_F(MediaCodecPlayerTest, VideoConfigChangeWhilePlaying) { | 1831 TEST_F(MediaCodecPlayerTest, DISABLED_VideoConfigChangeWhilePlaying) { |
| 1832 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1832 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1833 | 1833 |
| 1834 // Test that video only playback continues after video config change. | 1834 // Test that video only playback continues after video config change. |
| 1835 | 1835 |
| 1836 // Initialize video playback | 1836 // Initialize video playback |
| 1837 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); | 1837 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); |
| 1838 base::TimeDelta config_change_position = | 1838 base::TimeDelta config_change_position = |
| 1839 base::TimeDelta::FromMilliseconds(1000); | 1839 base::TimeDelta::FromMilliseconds(1000); |
| 1840 | 1840 |
| 1841 base::TimeDelta start_timeout = base::TimeDelta::FromMilliseconds(2000); | 1841 base::TimeDelta start_timeout = base::TimeDelta::FromMilliseconds(2000); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1938 | 1938 |
| 1939 // Check that we did not miss audio frames. We expect one postponed frames | 1939 // Check that we did not miss audio frames. We expect one postponed frames |
| 1940 // that are not reported. | 1940 // that are not reported. |
| 1941 // For Nexus 4 KitKat the AAC decoder seems to swallow the first frame | 1941 // For Nexus 4 KitKat the AAC decoder seems to swallow the first frame |
| 1942 // but reports the last pts twice, maybe it just shifts the reported PTS. | 1942 // but reports the last pts twice, maybe it just shifts the reported PTS. |
| 1943 int expected_audio_frames = GetFrameCount(duration, kAudioFramePeriod, 0) - 1; | 1943 int expected_audio_frames = GetFrameCount(duration, kAudioFramePeriod, 0) - 1; |
| 1944 EXPECT_EQ(expected_audio_frames, | 1944 EXPECT_EQ(expected_audio_frames, |
| 1945 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); | 1945 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); |
| 1946 } | 1946 } |
| 1947 | 1947 |
| 1948 TEST_F(MediaCodecPlayerTest, AVAudioConfigChangeWhilePlaying) { | 1948 TEST_F(MediaCodecPlayerTest, DISABLED_AVAudioConfigChangeWhilePlaying) { |
| 1949 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1949 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1950 | 1950 |
| 1951 // Test that A/V playback continues after audio config change. | 1951 // Test that A/V playback continues after audio config change. |
| 1952 | 1952 |
| 1953 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); | 1953 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); |
| 1954 base::TimeDelta config_change_position = | 1954 base::TimeDelta config_change_position = |
| 1955 base::TimeDelta::FromMilliseconds(1000); | 1955 base::TimeDelta::FromMilliseconds(1000); |
| 1956 | 1956 |
| 1957 base::TimeDelta completion_timeout = base::TimeDelta::FromMilliseconds(3000); | 1957 base::TimeDelta completion_timeout = base::TimeDelta::FromMilliseconds(3000); |
| 1958 | 1958 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1982 EXPECT_EQ(expected_video_frames, | 1982 EXPECT_EQ(expected_video_frames, |
| 1983 manager_.render_stat_[DemuxerStream::VIDEO].num_values()); | 1983 manager_.render_stat_[DemuxerStream::VIDEO].num_values()); |
| 1984 | 1984 |
| 1985 // Check that we did not miss audio frames. We expect two postponed frames | 1985 // Check that we did not miss audio frames. We expect two postponed frames |
| 1986 // that are not reported. | 1986 // that are not reported. |
| 1987 int expected_audio_frames = GetFrameCount(duration, kAudioFramePeriod, 1) - 2; | 1987 int expected_audio_frames = GetFrameCount(duration, kAudioFramePeriod, 1) - 2; |
| 1988 EXPECT_EQ(expected_audio_frames, | 1988 EXPECT_EQ(expected_audio_frames, |
| 1989 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); | 1989 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); |
| 1990 } | 1990 } |
| 1991 | 1991 |
| 1992 TEST_F(MediaCodecPlayerTest, AVSimultaneousConfigChange_1) { | 1992 TEST_F(MediaCodecPlayerTest, DISABLED_AVSimultaneousConfigChange_1) { |
| 1993 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 1993 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 1994 | 1994 |
| 1995 // Test that the playback continues if audio and video config changes happen | 1995 // Test that the playback continues if audio and video config changes happen |
| 1996 // at the same time. | 1996 // at the same time. |
| 1997 | 1997 |
| 1998 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); | 1998 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); |
| 1999 base::TimeDelta config_change_audio = base::TimeDelta::FromMilliseconds(1000); | 1999 base::TimeDelta config_change_audio = base::TimeDelta::FromMilliseconds(1000); |
| 2000 base::TimeDelta config_change_video = base::TimeDelta::FromMilliseconds(1000); | 2000 base::TimeDelta config_change_video = base::TimeDelta::FromMilliseconds(1000); |
| 2001 | 2001 |
| 2002 base::TimeDelta completion_timeout = base::TimeDelta::FromMilliseconds(3000); | 2002 base::TimeDelta completion_timeout = base::TimeDelta::FromMilliseconds(3000); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2029 EXPECT_EQ(expected_video_frames, | 2029 EXPECT_EQ(expected_video_frames, |
| 2030 manager_.render_stat_[DemuxerStream::VIDEO].num_values()); | 2030 manager_.render_stat_[DemuxerStream::VIDEO].num_values()); |
| 2031 | 2031 |
| 2032 // Check that we did not miss audio frames. We expect two postponed frames | 2032 // Check that we did not miss audio frames. We expect two postponed frames |
| 2033 // that are not reported. | 2033 // that are not reported. |
| 2034 int expected_audio_frames = GetFrameCount(duration, kAudioFramePeriod, 1) - 2; | 2034 int expected_audio_frames = GetFrameCount(duration, kAudioFramePeriod, 1) - 2; |
| 2035 EXPECT_EQ(expected_audio_frames, | 2035 EXPECT_EQ(expected_audio_frames, |
| 2036 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); | 2036 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); |
| 2037 } | 2037 } |
| 2038 | 2038 |
| 2039 TEST_F(MediaCodecPlayerTest, AVSimultaneousConfigChange_2) { | 2039 TEST_F(MediaCodecPlayerTest, DISABLED_AVSimultaneousConfigChange_2) { |
| 2040 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 2040 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 2041 | 2041 |
| 2042 // Test that the playback continues if audio and video config changes happen | 2042 // Test that the playback continues if audio and video config changes happen |
| 2043 // at the same time. Move audio change moment slightly to make it drained | 2043 // at the same time. Move audio change moment slightly to make it drained |
| 2044 // after video. | 2044 // after video. |
| 2045 | 2045 |
| 2046 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); | 2046 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); |
| 2047 base::TimeDelta config_change_audio = base::TimeDelta::FromMilliseconds(1020); | 2047 base::TimeDelta config_change_audio = base::TimeDelta::FromMilliseconds(1020); |
| 2048 base::TimeDelta config_change_video = base::TimeDelta::FromMilliseconds(1000); | 2048 base::TimeDelta config_change_video = base::TimeDelta::FromMilliseconds(1000); |
| 2049 | 2049 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2077 EXPECT_EQ(expected_video_frames, | 2077 EXPECT_EQ(expected_video_frames, |
| 2078 manager_.render_stat_[DemuxerStream::VIDEO].num_values()); | 2078 manager_.render_stat_[DemuxerStream::VIDEO].num_values()); |
| 2079 | 2079 |
| 2080 // Check that we did not miss audio frames. We expect two postponed frames | 2080 // Check that we did not miss audio frames. We expect two postponed frames |
| 2081 // that are not reported. | 2081 // that are not reported. |
| 2082 int expected_audio_frames = GetFrameCount(duration, kAudioFramePeriod, 1) - 2; | 2082 int expected_audio_frames = GetFrameCount(duration, kAudioFramePeriod, 1) - 2; |
| 2083 EXPECT_EQ(expected_audio_frames, | 2083 EXPECT_EQ(expected_audio_frames, |
| 2084 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); | 2084 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); |
| 2085 } | 2085 } |
| 2086 | 2086 |
| 2087 TEST_F(MediaCodecPlayerTest, AVAudioEndsAcrossVideoConfigChange) { | 2087 TEST_F(MediaCodecPlayerTest, DISABLED_AVAudioEndsAcrossVideoConfigChange) { |
| 2088 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 2088 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 2089 | 2089 |
| 2090 // Test that audio can end while video config change processing. | 2090 // Test that audio can end while video config change processing. |
| 2091 | 2091 |
| 2092 base::TimeDelta audio_duration = base::TimeDelta::FromMilliseconds(1000); | 2092 base::TimeDelta audio_duration = base::TimeDelta::FromMilliseconds(1000); |
| 2093 base::TimeDelta video_duration = base::TimeDelta::FromMilliseconds(1200); | 2093 base::TimeDelta video_duration = base::TimeDelta::FromMilliseconds(1200); |
| 2094 base::TimeDelta config_change_video = base::TimeDelta::FromMilliseconds(1000); | 2094 base::TimeDelta config_change_video = base::TimeDelta::FromMilliseconds(1000); |
| 2095 | 2095 |
| 2096 base::TimeDelta completion_timeout = base::TimeDelta::FromMilliseconds(3000); | 2096 base::TimeDelta completion_timeout = base::TimeDelta::FromMilliseconds(3000); |
| 2097 | 2097 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2166 EXPECT_EQ(1, manager_.num_video_codecs_created()); | 2166 EXPECT_EQ(1, manager_.num_video_codecs_created()); |
| 2167 | 2167 |
| 2168 // Check that we did not miss audio frames. We expect two postponed frames | 2168 // Check that we did not miss audio frames. We expect two postponed frames |
| 2169 // that are not reported. | 2169 // that are not reported. |
| 2170 int expected_audio_frames = | 2170 int expected_audio_frames = |
| 2171 GetFrameCount(audio_duration, kAudioFramePeriod, 1) - 2; | 2171 GetFrameCount(audio_duration, kAudioFramePeriod, 1) - 2; |
| 2172 EXPECT_EQ(expected_audio_frames, | 2172 EXPECT_EQ(expected_audio_frames, |
| 2173 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); | 2173 manager_.render_stat_[DemuxerStream::AUDIO].num_values()); |
| 2174 } | 2174 } |
| 2175 | 2175 |
| 2176 TEST_F(MediaCodecPlayerTest, AVPrerollAcrossVideoConfigChange) { | 2176 TEST_F(MediaCodecPlayerTest, DISABLED_AVPrerollAcrossVideoConfigChange) { |
| 2177 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 2177 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 2178 | 2178 |
| 2179 // Test that preroll continues if interrupted by video config change. | 2179 // Test that preroll continues if interrupted by video config change. |
| 2180 | 2180 |
| 2181 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); | 2181 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); |
| 2182 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); | 2182 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); |
| 2183 base::TimeDelta config_change_position = | 2183 base::TimeDelta config_change_position = |
| 2184 base::TimeDelta::FromMilliseconds(800); | 2184 base::TimeDelta::FromMilliseconds(800); |
| 2185 base::TimeDelta video_preroll_intvl = base::TimeDelta::FromMilliseconds(500); | 2185 base::TimeDelta video_preroll_intvl = base::TimeDelta::FromMilliseconds(500); |
| 2186 base::TimeDelta preroll_timeout = base::TimeDelta::FromMilliseconds(3000); | 2186 base::TimeDelta preroll_timeout = base::TimeDelta::FromMilliseconds(3000); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 2215 EXPECT_TRUE(AlmostEqual(manager_.FirstFramePTS(DemuxerStream::AUDIO), | 2215 EXPECT_TRUE(AlmostEqual(manager_.FirstFramePTS(DemuxerStream::AUDIO), |
| 2216 manager_.FirstFramePTS(DemuxerStream::VIDEO), 25)); | 2216 manager_.FirstFramePTS(DemuxerStream::VIDEO), 25)); |
| 2217 | 2217 |
| 2218 EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), | 2218 EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), |
| 2219 manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); | 2219 manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); |
| 2220 | 2220 |
| 2221 // The playback should start at |seek_position| | 2221 // The playback should start at |seek_position| |
| 2222 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); | 2222 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); |
| 2223 } | 2223 } |
| 2224 | 2224 |
| 2225 TEST_F(MediaCodecPlayerTest, AVPrerollAcrossAudioConfigChange) { | 2225 TEST_F(MediaCodecPlayerTest, DISABLED_AVPrerollAcrossAudioConfigChange) { |
| 2226 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 2226 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 2227 | 2227 |
| 2228 // Test that preroll continues if interrupted by video config change. | 2228 // Test that preroll continues if interrupted by video config change. |
| 2229 | 2229 |
| 2230 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); | 2230 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(1200); |
| 2231 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); | 2231 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(1000); |
| 2232 base::TimeDelta config_change_position = | 2232 base::TimeDelta config_change_position = |
| 2233 base::TimeDelta::FromMilliseconds(800); | 2233 base::TimeDelta::FromMilliseconds(800); |
| 2234 base::TimeDelta audio_preroll_intvl = base::TimeDelta::FromMilliseconds(400); | 2234 base::TimeDelta audio_preroll_intvl = base::TimeDelta::FromMilliseconds(400); |
| 2235 base::TimeDelta preroll_timeout = base::TimeDelta::FromMilliseconds(3000); | 2235 base::TimeDelta preroll_timeout = base::TimeDelta::FromMilliseconds(3000); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2273 // TODO(timav): maybe we should not call the testing callback for | 2273 // TODO(timav): maybe we should not call the testing callback for |
| 2274 // kRenderAfterPreroll for video (for audio we already do not call). | 2274 // kRenderAfterPreroll for video (for audio we already do not call). |
| 2275 // EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), | 2275 // EXPECT_TRUE(AlmostEqual(manager_.FirstFrameTime(DemuxerStream::AUDIO), |
| 2276 // manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); | 2276 // manager_.FirstFrameTime(DemuxerStream::VIDEO), 50)); |
| 2277 | 2277 |
| 2278 // The playback should start at |seek_position| | 2278 // The playback should start at |seek_position| |
| 2279 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); | 2279 EXPECT_TRUE(AlmostEqual(seek_position, manager_.pts_stat_.min(), 25)); |
| 2280 } | 2280 } |
| 2281 | 2281 |
| 2282 } // namespace media | 2282 } // namespace media |
| OLD | NEW |