| Index: media/test/pipeline_integration_test.cc
|
| diff --git a/media/test/pipeline_integration_test.cc b/media/test/pipeline_integration_test.cc
|
| index 2cd26bd8431ad268ee157359f97459347b75dfd3..1445aaca8a8f91592964e37a764f5a4917bdb368 100644
|
| --- a/media/test/pipeline_integration_test.cc
|
| +++ b/media/test/pipeline_integration_test.cc
|
| @@ -944,6 +944,83 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackHashed) {
|
| EXPECT_TRUE(demuxer_->GetTimelineOffset().is_null());
|
| }
|
|
|
| +TEST_F(PipelineIntegrationTest, PlaybackWithAudioTrackDisabledThenEnabled) {
|
| + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240.webm", kHashed));
|
| +
|
| + // Disable audio.
|
| + std::vector<MediaTrack::Id> empty;
|
| + pipeline_->OnEnabledAudioTracksChanged(empty);
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + // Seek to flush the pipeline and ensure there's no prerolled audio data.
|
| + ASSERT_TRUE(Seek(base::TimeDelta()));
|
| +
|
| + Play();
|
| + const base::TimeDelta k500ms = base::TimeDelta::FromMilliseconds(500);
|
| + ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(k500ms));
|
| + Pause();
|
| +
|
| + // Verify that no audio has been played, since we disabled audio tracks.
|
| + EXPECT_HASH_EQ(kNullAudioHash, GetAudioHash());
|
| +
|
| + // Re-enable audio.
|
| + std::vector<MediaTrack::Id> audioTrackId;
|
| + audioTrackId.push_back("2");
|
| + pipeline_->OnEnabledAudioTracksChanged(audioTrackId);
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + // Restart playback from 500ms position.
|
| + ASSERT_TRUE(Seek(k500ms));
|
| + Play();
|
| + ASSERT_TRUE(WaitUntilOnEnded());
|
| +
|
| + // Verify that audio has been playing after being enabled.
|
| + EXPECT_HASH_EQ("-1.53,0.21,1.23,1.56,-0.34,-0.94,", GetAudioHash());
|
| +}
|
| +
|
| +TEST_F(PipelineIntegrationTest, PlaybackWithVideoTrackDisabledThenEnabled) {
|
| + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240.webm", kHashed));
|
| +
|
| + // Disable video.
|
| + std::vector<MediaTrack::Id> empty;
|
| + pipeline_->OnSelectedVideoTrackChanged(empty);
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + // Seek to flush the pipeline and ensure there's no prerolled video data.
|
| + ASSERT_TRUE(Seek(base::TimeDelta()));
|
| +
|
| + // Reset the video hash in case some of the prerolled video frames have been
|
| + // hashed already.
|
| + ResetVideoHash();
|
| +
|
| + Play();
|
| + const base::TimeDelta k500ms = base::TimeDelta::FromMilliseconds(500);
|
| + ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(k500ms));
|
| + Pause();
|
| +
|
| + // Verify that no video has been rendered, since we disabled video tracks.
|
| + EXPECT_HASH_EQ(kNullVideoHash, GetVideoHash());
|
| +
|
| + // Re-enable video.
|
| + std::vector<MediaTrack::Id> videoTrackId;
|
| + videoTrackId.push_back("1");
|
| + pipeline_->OnSelectedVideoTrackChanged(videoTrackId);
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + // Seek to flush video pipeline and reset the video hash again to clear state
|
| + // if some prerolled frames got hashed after enabling video.
|
| + ASSERT_TRUE(Seek(base::TimeDelta()));
|
| + ResetVideoHash();
|
| +
|
| + // Restart playback from 500ms position.
|
| + ASSERT_TRUE(Seek(k500ms));
|
| + Play();
|
| + ASSERT_TRUE(WaitUntilOnEnded());
|
| +
|
| + // Verify that video has been rendered after being enabled.
|
| + EXPECT_HASH_EQ("fd59357dfd9c144ab4fb8181b2de32c3", GetVideoHash());
|
| +}
|
| +
|
| TEST_F(PipelineIntegrationTest,
|
| MAYBE_CLOCKLESS(BasicPlaybackOpusOggTrimmingHashed)) {
|
| ASSERT_EQ(PIPELINE_OK,
|
|
|