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

Side by Side Diff: media/base/android/media_source_player_unittest.cc

Issue 2158923004: Convert media constants to constexpr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months 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 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_source_player.h" 5 #include "media/base/android/media_source_player.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 480
481 // Wait for the decode job to finish so we can process the seek request. 481 // Wait for the decode job to finish so we can process the seek request.
482 WaitForDecodeDone(is_audio, !is_audio); 482 WaitForDecodeDone(is_audio, !is_audio);
483 483
484 // Verify that the seek is requested. 484 // Verify that the seek is requested.
485 EXPECT_EQ(original_num_seeks + 1, demuxer_->num_seek_requests()); 485 EXPECT_EQ(original_num_seeks + 1, demuxer_->num_seek_requests());
486 486
487 // Send back the seek done notification. This should trigger the player to 487 // Send back the seek done notification. This should trigger the player to
488 // call OnReadFromDemuxer() again. 488 // call OnReadFromDemuxer() again.
489 EXPECT_EQ(original_num_data_requests, demuxer_->num_data_requests()); 489 EXPECT_EQ(original_num_data_requests, demuxer_->num_data_requests());
490 player_.OnDemuxerSeekDone(kNoTimestamp()); 490 player_.OnDemuxerSeekDone(kNoTimestamp);
491 EXPECT_EQ(original_num_data_requests + 1, demuxer_->num_data_requests()); 491 EXPECT_EQ(original_num_data_requests + 1, demuxer_->num_data_requests());
492 492
493 // No other seek should have been requested. 493 // No other seek should have been requested.
494 EXPECT_EQ(original_num_seeks + 1, demuxer_->num_seek_requests()); 494 EXPECT_EQ(original_num_seeks + 1, demuxer_->num_seek_requests());
495 } 495 }
496 496
497 // Preroll the decoder job to |target_timestamp|. The first access unit 497 // Preroll the decoder job to |target_timestamp|. The first access unit
498 // to decode will have a timestamp equal to |start_timestamp|. 498 // to decode will have a timestamp equal to |start_timestamp|.
499 // |is_clock_manager| indicates whether the decoder serves as the clock 499 // |is_clock_manager| indicates whether the decoder serves as the clock
500 // manager for the player. 500 // manager for the player.
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 EXPECT_EQ(original_num_data_requests, demuxer_->num_data_requests()); 761 EXPECT_EQ(original_num_data_requests, demuxer_->num_data_requests());
762 } 762 }
763 763
764 void VerifyCompletedPlaybackResumesOnSeekPlusStart(bool have_audio, 764 void VerifyCompletedPlaybackResumesOnSeekPlusStart(bool have_audio,
765 bool have_video) { 765 bool have_video) {
766 DCHECK(have_audio || have_video); 766 DCHECK(have_audio || have_video);
767 767
768 EXPECT_TRUE(manager_.playback_completed()); 768 EXPECT_TRUE(manager_.playback_completed());
769 769
770 player_.SeekTo(base::TimeDelta()); 770 player_.SeekTo(base::TimeDelta());
771 player_.OnDemuxerSeekDone(kNoTimestamp()); 771 player_.OnDemuxerSeekDone(kNoTimestamp);
772 Resume(have_audio, have_video); 772 Resume(have_audio, have_video);
773 } 773 }
774 774
775 // Starts the appropriate decoder jobs according to |have_audio| and 775 // Starts the appropriate decoder jobs according to |have_audio| and
776 // |have_video|. Then starts seek during decode of EOS or non-EOS according to 776 // |have_video|. Then starts seek during decode of EOS or non-EOS according to
777 // |eos_audio| and |eos_video|. Simulates seek completion and verifies that 777 // |eos_audio| and |eos_video|. Simulates seek completion and verifies that
778 // playback never completed. |eos_{audio,video}| is ignored if the 778 // playback never completed. |eos_{audio,video}| is ignored if the
779 // corresponding |have_{audio,video}| is false. 779 // corresponding |have_{audio,video}| is false.
780 void VerifySeekDuringEOSDecodePreventsPlaybackCompletion(bool have_audio, 780 void VerifySeekDuringEOSDecodePreventsPlaybackCompletion(bool have_audio,
781 bool have_video, 781 bool have_video,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 player_.OnDemuxerDataAvailable(CreateEOSAck(false)); 814 player_.OnDemuxerDataAvailable(CreateEOSAck(false));
815 else 815 else
816 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForVideo(false)); 816 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForVideo(false));
817 } 817 }
818 818
819 player_.SeekTo(base::TimeDelta()); 819 player_.SeekTo(base::TimeDelta());
820 EXPECT_EQ(0, demuxer_->num_seek_requests()); 820 EXPECT_EQ(0, demuxer_->num_seek_requests());
821 WaitForDecodeDone(have_audio, have_video); 821 WaitForDecodeDone(have_audio, have_video);
822 EXPECT_EQ(1, demuxer_->num_seek_requests()); 822 EXPECT_EQ(1, demuxer_->num_seek_requests());
823 823
824 player_.OnDemuxerSeekDone(kNoTimestamp()); 824 player_.OnDemuxerSeekDone(kNoTimestamp);
825 EXPECT_FALSE(manager_.playback_completed()); 825 EXPECT_FALSE(manager_.playback_completed());
826 } 826 }
827 827
828 base::TimeTicks StartTimeTicks() { 828 base::TimeTicks StartTimeTicks() {
829 return player_.start_time_ticks_; 829 return player_.start_time_ticks_;
830 } 830 }
831 831
832 bool IsRequestingDemuxerData(bool is_audio) { 832 bool IsRequestingDemuxerData(bool is_audio) {
833 return GetMediaDecoderJob(is_audio)->is_requesting_demuxer_data_; 833 return GetMediaDecoderJob(is_audio)->is_requesting_demuxer_data_;
834 } 834 }
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 // Initiate a seek. Skip requesting element seek of renderer. 954 // Initiate a seek. Skip requesting element seek of renderer.
955 // Instead behave as if the renderer has asked us to seek. 955 // Instead behave as if the renderer has asked us to seek.
956 player_.SeekTo(base::TimeDelta()); 956 player_.SeekTo(base::TimeDelta());
957 EXPECT_EQ(1, demuxer_->num_seek_requests()); 957 EXPECT_EQ(1, demuxer_->num_seek_requests());
958 958
959 CreateNextTextureAndSetVideoSurface(); 959 CreateNextTextureAndSetVideoSurface();
960 EXPECT_EQ(1, demuxer_->num_seek_requests()); 960 EXPECT_EQ(1, demuxer_->num_seek_requests());
961 player_.Start(); 961 player_.Start();
962 962
963 // Send the seek done notification. The player should start requesting data. 963 // Send the seek done notification. The player should start requesting data.
964 player_.OnDemuxerSeekDone(kNoTimestamp()); 964 player_.OnDemuxerSeekDone(kNoTimestamp);
965 EXPECT_FALSE(GetMediaCodecBridge(false)); 965 EXPECT_FALSE(GetMediaCodecBridge(false));
966 EXPECT_EQ(1, demuxer_->num_data_requests()); 966 EXPECT_EQ(1, demuxer_->num_data_requests());
967 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForVideo(false)); 967 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForVideo(false));
968 EXPECT_TRUE(GetMediaCodecBridge(false)); 968 EXPECT_TRUE(GetMediaCodecBridge(false));
969 969
970 // Reconfirm exactly 1 seek request has been made of demuxer, and that it 970 // Reconfirm exactly 1 seek request has been made of demuxer, and that it
971 // was not a browser seek request. 971 // was not a browser seek request.
972 EXPECT_EQ(1, demuxer_->num_seek_requests()); 972 EXPECT_EQ(1, demuxer_->num_seek_requests());
973 EXPECT_EQ(0, demuxer_->num_browser_seek_requests()); 973 EXPECT_EQ(0, demuxer_->num_browser_seek_requests());
974 WaitForVideoDecodeDone(); 974 WaitForVideoDecodeDone();
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1084 1084
1085 // Initiate a seek. Skip requesting element seek of renderer. 1085 // Initiate a seek. Skip requesting element seek of renderer.
1086 // Instead behave as if the renderer has asked us to seek. 1086 // Instead behave as if the renderer has asked us to seek.
1087 player_.SeekTo(base::TimeDelta()); 1087 player_.SeekTo(base::TimeDelta());
1088 EXPECT_EQ(1, demuxer_->num_seek_requests()); 1088 EXPECT_EQ(1, demuxer_->num_seek_requests());
1089 1089
1090 player_.Start(); 1090 player_.Start();
1091 EXPECT_EQ(0, demuxer_->num_data_requests()); 1091 EXPECT_EQ(0, demuxer_->num_data_requests());
1092 1092
1093 // Sending back the seek done notification. 1093 // Sending back the seek done notification.
1094 player_.OnDemuxerSeekDone(kNoTimestamp()); 1094 player_.OnDemuxerSeekDone(kNoTimestamp);
1095 EXPECT_FALSE(GetMediaCodecBridge(true)); 1095 EXPECT_FALSE(GetMediaCodecBridge(true));
1096 EXPECT_EQ(1, demuxer_->num_data_requests()); 1096 EXPECT_EQ(1, demuxer_->num_data_requests());
1097 1097
1098 // Reconfirm exactly 1 seek request has been made of demuxer. 1098 // Reconfirm exactly 1 seek request has been made of demuxer.
1099 EXPECT_EQ(1, demuxer_->num_seek_requests()); 1099 EXPECT_EQ(1, demuxer_->num_seek_requests());
1100 1100
1101 // Decoder is created after data is received. 1101 // Decoder is created after data is received.
1102 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForAudio(0)); 1102 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForAudio(0));
1103 EXPECT_TRUE(GetMediaCodecBridge(true)); 1103 EXPECT_TRUE(GetMediaCodecBridge(true));
1104 } 1104 }
1105 1105
1106 TEST_F(MediaSourcePlayerTest, VideoOnlyStartAfterSeekFinish) { 1106 TEST_F(MediaSourcePlayerTest, VideoOnlyStartAfterSeekFinish) {
1107 // crbug.com/604602 and crbug.com/597836 1107 // crbug.com/604602 and crbug.com/597836
1108 SKIP_TEST_IF_VP8_DECODER_IS_NOT_SUPPORTED(); 1108 SKIP_TEST_IF_VP8_DECODER_IS_NOT_SUPPORTED();
1109 1109
1110 // Test video decoder job will not start until pending seek event is handled. 1110 // Test video decoder job will not start until pending seek event is handled.
1111 CreateNextTextureAndSetVideoSurface(); 1111 CreateNextTextureAndSetVideoSurface();
1112 DemuxerConfigs configs = CreateVideoDemuxerConfigs(false); 1112 DemuxerConfigs configs = CreateVideoDemuxerConfigs(false);
1113 player_.OnDemuxerConfigsAvailable(configs); 1113 player_.OnDemuxerConfigsAvailable(configs);
1114 1114
1115 // Initiate a seek. Skip requesting element seek of renderer. 1115 // Initiate a seek. Skip requesting element seek of renderer.
1116 // Instead behave as if the renderer has asked us to seek. 1116 // Instead behave as if the renderer has asked us to seek.
1117 player_.SeekTo(base::TimeDelta()); 1117 player_.SeekTo(base::TimeDelta());
1118 EXPECT_EQ(1, demuxer_->num_seek_requests()); 1118 EXPECT_EQ(1, demuxer_->num_seek_requests());
1119 1119
1120 player_.Start(); 1120 player_.Start();
1121 EXPECT_EQ(0, demuxer_->num_data_requests()); 1121 EXPECT_EQ(0, demuxer_->num_data_requests());
1122 1122
1123 // Sending back the seek done notification. 1123 // Sending back the seek done notification.
1124 player_.OnDemuxerSeekDone(kNoTimestamp()); 1124 player_.OnDemuxerSeekDone(kNoTimestamp);
1125 EXPECT_FALSE(GetMediaCodecBridge(false)); 1125 EXPECT_FALSE(GetMediaCodecBridge(false));
1126 EXPECT_EQ(1, demuxer_->num_data_requests()); 1126 EXPECT_EQ(1, demuxer_->num_data_requests());
1127 1127
1128 // Reconfirm exactly 1 seek request has been made of demuxer. 1128 // Reconfirm exactly 1 seek request has been made of demuxer.
1129 EXPECT_EQ(1, demuxer_->num_seek_requests()); 1129 EXPECT_EQ(1, demuxer_->num_seek_requests());
1130 1130
1131 // Decoder is created after data is received. 1131 // Decoder is created after data is received.
1132 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForVideo(false)); 1132 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForVideo(false));
1133 EXPECT_TRUE(GetMediaCodecBridge(false)); 1133 EXPECT_TRUE(GetMediaCodecBridge(false));
1134 WaitForVideoDecodeDone(); 1134 WaitForVideoDecodeDone();
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
1496 // still has no video codec configured, and has not requested any 1496 // still has no video codec configured, and has not requested any
1497 // further data since the surface change event became pending in 1497 // further data since the surface change event became pending in
1498 // BrowserSeekPlayer(). 1498 // BrowserSeekPlayer().
1499 EXPECT_EQ(1, demuxer_->num_seek_requests()); 1499 EXPECT_EQ(1, demuxer_->num_seek_requests());
1500 player_.OnDemuxerSeekDone(base::TimeDelta()); 1500 player_.OnDemuxerSeekDone(base::TimeDelta());
1501 EXPECT_EQ(2, demuxer_->num_seek_requests()); 1501 EXPECT_EQ(2, demuxer_->num_seek_requests());
1502 EXPECT_EQ(1, demuxer_->num_browser_seek_requests()); 1502 EXPECT_EQ(1, demuxer_->num_browser_seek_requests());
1503 1503
1504 // Simulate regular seek is done and confirm player requests more data for 1504 // Simulate regular seek is done and confirm player requests more data for
1505 // new video codec. 1505 // new video codec.
1506 player_.OnDemuxerSeekDone(kNoTimestamp()); 1506 player_.OnDemuxerSeekDone(kNoTimestamp);
1507 EXPECT_FALSE(GetMediaCodecBridge(false)); 1507 EXPECT_FALSE(GetMediaCodecBridge(false));
1508 EXPECT_EQ(3, demuxer_->num_data_requests()); 1508 EXPECT_EQ(3, demuxer_->num_data_requests());
1509 EXPECT_EQ(2, demuxer_->num_seek_requests()); 1509 EXPECT_EQ(2, demuxer_->num_seek_requests());
1510 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForVideo(false)); 1510 player_.OnDemuxerDataAvailable(CreateReadFromDemuxerAckForVideo(false));
1511 EXPECT_TRUE(GetMediaCodecBridge(false)); 1511 EXPECT_TRUE(GetMediaCodecBridge(false));
1512 WaitForVideoDecodeDone(); 1512 WaitForVideoDecodeDone();
1513 } 1513 }
1514 1514
1515 TEST_F(MediaSourcePlayerTest, BrowserSeek_InitialReleaseAndStart) { 1515 TEST_F(MediaSourcePlayerTest, BrowserSeek_InitialReleaseAndStart) {
1516 // crbug.com/604602 and crbug.com/597836 1516 // crbug.com/604602 and crbug.com/597836
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1749 1749
1750 // Initiate a seek. 1750 // Initiate a seek.
1751 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(100); 1751 base::TimeDelta seek_position = base::TimeDelta::FromMilliseconds(100);
1752 player_.SeekTo(seek_position); 1752 player_.SeekTo(seek_position);
1753 player_.OnDemuxerDataAvailable(CreateAbortedAck(true)); 1753 player_.OnDemuxerDataAvailable(CreateAbortedAck(true));
1754 player_.OnDemuxerDataAvailable(CreateAbortedAck(false)); 1754 player_.OnDemuxerDataAvailable(CreateAbortedAck(false));
1755 WaitForDecodeDone(true, true); 1755 WaitForDecodeDone(true, true);
1756 1756
1757 // Verify that the seek is requested. 1757 // Verify that the seek is requested.
1758 EXPECT_EQ(1, demuxer_->num_seek_requests()); 1758 EXPECT_EQ(1, demuxer_->num_seek_requests());
1759 player_.OnDemuxerSeekDone(kNoTimestamp()); 1759 player_.OnDemuxerSeekDone(kNoTimestamp);
1760 EXPECT_EQ(4, demuxer_->num_data_requests()); 1760 EXPECT_EQ(4, demuxer_->num_data_requests());
1761 EXPECT_EQ(player_.GetCurrentTime().InMillisecondsF(), 100.0); 1761 EXPECT_EQ(player_.GetCurrentTime().InMillisecondsF(), 100.0);
1762 EXPECT_EQ(GetPrerollTimestamp().InMillisecondsF(), 100.0); 1762 EXPECT_EQ(GetPrerollTimestamp().InMillisecondsF(), 100.0);
1763 1763
1764 // Send both audio and video data to finish prefetching. 1764 // Send both audio and video data to finish prefetching.
1765 base::TimeDelta seek_ack_position = base::TimeDelta::FromMilliseconds(70); 1765 base::TimeDelta seek_ack_position = base::TimeDelta::FromMilliseconds(70);
1766 DemuxerData audio_data = CreateReadFromDemuxerAckForAudio(0); 1766 DemuxerData audio_data = CreateReadFromDemuxerAckForAudio(0);
1767 audio_data.access_units[0].timestamp = seek_ack_position; 1767 audio_data.access_units[0].timestamp = seek_ack_position;
1768 DemuxerData video_data = CreateReadFromDemuxerAckForVideo(false); 1768 DemuxerData video_data = CreateReadFromDemuxerAckForVideo(false);
1769 video_data.access_units[0].timestamp = seek_ack_position; 1769 video_data.access_units[0].timestamp = seek_ack_position;
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
1975 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 1975 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
1976 1976
1977 // Test if a decoder is being drained while receiving a seek request, draining 1977 // Test if a decoder is being drained while receiving a seek request, draining
1978 // is canceled. 1978 // is canceled.
1979 SendConfigChangeToDecoder(true, false, 0, false); 1979 SendConfigChangeToDecoder(true, false, 0, false);
1980 EXPECT_TRUE(IsDrainingDecoder(true)); 1980 EXPECT_TRUE(IsDrainingDecoder(true));
1981 1981
1982 player_.SeekTo(base::TimeDelta::FromMilliseconds(100)); 1982 player_.SeekTo(base::TimeDelta::FromMilliseconds(100));
1983 WaitForAudioDecodeDone(); 1983 WaitForAudioDecodeDone();
1984 EXPECT_FALSE(IsDrainingDecoder(true)); 1984 EXPECT_FALSE(IsDrainingDecoder(true));
1985 player_.OnDemuxerSeekDone(kNoTimestamp()); 1985 player_.OnDemuxerSeekDone(kNoTimestamp);
1986 1986
1987 EXPECT_EQ(1, demuxer_->num_seek_requests()); 1987 EXPECT_EQ(1, demuxer_->num_seek_requests());
1988 EXPECT_EQ(4, demuxer_->num_data_requests()); 1988 EXPECT_EQ(4, demuxer_->num_data_requests());
1989 } 1989 }
1990 1990
1991 TEST_F(MediaSourcePlayerTest, DecoderDrainInterruptedByRelease) { 1991 TEST_F(MediaSourcePlayerTest, DecoderDrainInterruptedByRelease) {
1992 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 1992 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
1993 1993
1994 // Test if a decoder is being drained while receiving a release request, 1994 // Test if a decoder is being drained while receiving a release request,
1995 // draining is canceled. 1995 // draining is canceled.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
2111 // has not yet been sent, then the seek request is sent after Release(). Also, 2111 // has not yet been sent, then the seek request is sent after Release(). Also,
2112 // test if OnDemuxerSeekDone() occurs prior to next Start(), then the player 2112 // test if OnDemuxerSeekDone() occurs prior to next Start(), then the player
2113 // will resume correct post-seek preroll upon Start(). 2113 // will resume correct post-seek preroll upon Start().
2114 StartAudioDecoderJobAndSeekToWhileDecoding( 2114 StartAudioDecoderJobAndSeekToWhileDecoding(
2115 base::TimeDelta::FromMilliseconds(100)); 2115 base::TimeDelta::FromMilliseconds(100));
2116 ReleasePlayer(); 2116 ReleasePlayer();
2117 EXPECT_EQ(0, demuxer_->num_seek_requests()); 2117 EXPECT_EQ(0, demuxer_->num_seek_requests());
2118 WaitForAudioDecodeDone(); 2118 WaitForAudioDecodeDone();
2119 EXPECT_EQ(1, demuxer_->num_seek_requests()); 2119 EXPECT_EQ(1, demuxer_->num_seek_requests());
2120 2120
2121 player_.OnDemuxerSeekDone(kNoTimestamp()); 2121 player_.OnDemuxerSeekDone(kNoTimestamp);
2122 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF()); 2122 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF());
2123 EXPECT_FALSE(GetMediaCodecBridge(true)); 2123 EXPECT_FALSE(GetMediaCodecBridge(true));
2124 EXPECT_FALSE(player_.IsPlaying()); 2124 EXPECT_FALSE(player_.IsPlaying());
2125 2125
2126 // Player should begin prefetch and resume preroll upon Start(). 2126 // Player should begin prefetch and resume preroll upon Start().
2127 EXPECT_EQ(2, demuxer_->num_data_requests()); 2127 EXPECT_EQ(2, demuxer_->num_data_requests());
2128 Resume(true, false); 2128 Resume(true, false);
2129 EXPECT_TRUE(IsPrerolling(true)); 2129 EXPECT_TRUE(IsPrerolling(true));
2130 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF()); 2130 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF());
2131 2131
(...skipping 14 matching lines...) Expand all
2146 ReleasePlayer(); 2146 ReleasePlayer();
2147 EXPECT_EQ(0, demuxer_->num_seek_requests()); 2147 EXPECT_EQ(0, demuxer_->num_seek_requests());
2148 2148
2149 // Player should not prefetch upon Start() nor create the media codec bridge, 2149 // Player should not prefetch upon Start() nor create the media codec bridge,
2150 // due to awaiting DemuxerSeekDone. 2150 // due to awaiting DemuxerSeekDone.
2151 EXPECT_EQ(2, demuxer_->num_data_requests()); 2151 EXPECT_EQ(2, demuxer_->num_data_requests());
2152 Resume(false, false); 2152 Resume(false, false);
2153 2153
2154 WaitForAudioDecodeDone(); 2154 WaitForAudioDecodeDone();
2155 EXPECT_EQ(1, demuxer_->num_seek_requests()); 2155 EXPECT_EQ(1, demuxer_->num_seek_requests());
2156 player_.OnDemuxerSeekDone(kNoTimestamp()); 2156 player_.OnDemuxerSeekDone(kNoTimestamp);
2157 EXPECT_TRUE(GetMediaDecoderJob(true)); 2157 EXPECT_TRUE(GetMediaDecoderJob(true));
2158 EXPECT_TRUE(IsPrerolling(true)); 2158 EXPECT_TRUE(IsPrerolling(true));
2159 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF()); 2159 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF());
2160 EXPECT_EQ(3, demuxer_->num_data_requests()); 2160 EXPECT_EQ(3, demuxer_->num_data_requests());
2161 2161
2162 // No further seek should have been requested since Release(), above. 2162 // No further seek should have been requested since Release(), above.
2163 EXPECT_EQ(1, demuxer_->num_seek_requests()); 2163 EXPECT_EQ(1, demuxer_->num_seek_requests());
2164 } 2164 }
2165 2165
2166 TEST_F(MediaSourcePlayerTest, SeekToThenDemuxerSeekThenReleaseThenSeekDone) { 2166 TEST_F(MediaSourcePlayerTest, SeekToThenDemuxerSeekThenReleaseThenSeekDone) {
2167 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 2167 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
2168 2168
2169 // Test if Release() occurs after a SeekTo()'s subsequent DemuxerSeek IPC 2169 // Test if Release() occurs after a SeekTo()'s subsequent DemuxerSeek IPC
2170 // request and OnDemuxerSeekDone() arrives prior to the next Start(), then the 2170 // request and OnDemuxerSeekDone() arrives prior to the next Start(), then the
2171 // player will resume correct post-seek preroll upon Start(). 2171 // player will resume correct post-seek preroll upon Start().
2172 StartAudioDecoderJobAndSeekToWhileDecoding( 2172 StartAudioDecoderJobAndSeekToWhileDecoding(
2173 base::TimeDelta::FromMilliseconds(100)); 2173 base::TimeDelta::FromMilliseconds(100));
2174 WaitForAudioDecodeDone(); 2174 WaitForAudioDecodeDone();
2175 EXPECT_EQ(1, demuxer_->num_seek_requests()); 2175 EXPECT_EQ(1, demuxer_->num_seek_requests());
2176 2176
2177 ReleasePlayer(); 2177 ReleasePlayer();
2178 player_.OnDemuxerSeekDone(kNoTimestamp()); 2178 player_.OnDemuxerSeekDone(kNoTimestamp);
2179 EXPECT_FALSE(player_.IsPlaying()); 2179 EXPECT_FALSE(player_.IsPlaying());
2180 EXPECT_FALSE(GetMediaCodecBridge(true)); 2180 EXPECT_FALSE(GetMediaCodecBridge(true));
2181 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF()); 2181 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF());
2182 2182
2183 // Player should begin prefetch and resume preroll upon Start(). 2183 // Player should begin prefetch and resume preroll upon Start().
2184 EXPECT_EQ(2, demuxer_->num_data_requests()); 2184 EXPECT_EQ(2, demuxer_->num_data_requests());
2185 Resume(true, false); 2185 Resume(true, false);
2186 EXPECT_TRUE(IsPrerolling(true)); 2186 EXPECT_TRUE(IsPrerolling(true));
2187 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF()); 2187 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF());
2188 2188
(...skipping 10 matching lines...) Expand all
2199 // correct post-seek preroll after) OnDemuxerSeekDone(). 2199 // correct post-seek preroll after) OnDemuxerSeekDone().
2200 StartAudioDecoderJobAndSeekToWhileDecoding( 2200 StartAudioDecoderJobAndSeekToWhileDecoding(
2201 base::TimeDelta::FromMilliseconds(100)); 2201 base::TimeDelta::FromMilliseconds(100));
2202 WaitForAudioDecodeDone(); 2202 WaitForAudioDecodeDone();
2203 EXPECT_EQ(1, demuxer_->num_seek_requests()); 2203 EXPECT_EQ(1, demuxer_->num_seek_requests());
2204 2204
2205 ReleasePlayer(); 2205 ReleasePlayer();
2206 EXPECT_EQ(2, demuxer_->num_data_requests()); 2206 EXPECT_EQ(2, demuxer_->num_data_requests());
2207 Resume(false, false); 2207 Resume(false, false);
2208 2208
2209 player_.OnDemuxerSeekDone(kNoTimestamp()); 2209 player_.OnDemuxerSeekDone(kNoTimestamp);
2210 EXPECT_FALSE(GetMediaCodecBridge(true)); 2210 EXPECT_FALSE(GetMediaCodecBridge(true));
2211 EXPECT_TRUE(IsPrerolling(true)); 2211 EXPECT_TRUE(IsPrerolling(true));
2212 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF()); 2212 EXPECT_EQ(100.0, GetPrerollTimestamp().InMillisecondsF());
2213 EXPECT_EQ(3, demuxer_->num_data_requests()); 2213 EXPECT_EQ(3, demuxer_->num_data_requests());
2214 2214
2215 // No further seek should have been requested since before Release(), above. 2215 // No further seek should have been requested since before Release(), above.
2216 EXPECT_EQ(1, demuxer_->num_seek_requests()); 2216 EXPECT_EQ(1, demuxer_->num_seek_requests());
2217 } 2217 }
2218 2218
2219 TEST_F(MediaSourcePlayerTest, ConfigChangedThenReleaseThenStart) { 2219 TEST_F(MediaSourcePlayerTest, ConfigChangedThenReleaseThenStart) {
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
2418 2418
2419 EXPECT_EQ(demuxer_->num_data_requests(), 0); 2419 EXPECT_EQ(demuxer_->num_data_requests(), 0);
2420 player_.OnDemuxerConfigsAvailable(CreateDemuxerConfigs(true, true)); 2420 player_.OnDemuxerConfigsAvailable(CreateDemuxerConfigs(true, true));
2421 2421
2422 manager_.set_allow_play(true); 2422 manager_.set_allow_play(true);
2423 player_.Start(); 2423 player_.Start();
2424 EXPECT_TRUE(player_.IsPlaying()); 2424 EXPECT_TRUE(player_.IsPlaying());
2425 } 2425 }
2426 2426
2427 } // namespace media 2427 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698