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

Unified Diff: media/base/android/media_source_player_unittest.cc

Issue 50433007: Allow simultaneous audio and video config change (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address acolwell's comment from PS2 Created 7 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 side-by-side diff with in-line comments
Download patch
Index: media/base/android/media_source_player_unittest.cc
diff --git a/media/base/android/media_source_player_unittest.cc b/media/base/android/media_source_player_unittest.cc
index 8b33f13899d2e6466a3e7c8f256d272bef3570b2..d24a8b36839e2e743e3170f54d3621223ad7634b 100644
--- a/media/base/android/media_source_player_unittest.cc
+++ b/media/base/android/media_source_player_unittest.cc
@@ -1272,6 +1272,45 @@ TEST_F(MediaSourcePlayerTest, PrerollContinuesAcrossConfigChange) {
EXPECT_FALSE(IsPrerolling(true));
}
+TEST_F(MediaSourcePlayerTest, SimultaneousAudioVideoConfigChange) {
+ SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
+
+ // Test that the player allows simultaneous audio and video config change,
+ // such as might occur during OnPrefetchDone() if next access unit for both
+ // audio and video jobs is |kConfigChanged|.
+ Start(CreateAudioVideoDemuxerConfigs());
+ CreateNextTextureAndSetVideoSurface();
+ MediaDecoderJob* first_audio_job = GetMediaDecoderJob(true);
+ MediaDecoderJob* first_video_job = GetMediaDecoderJob(false);
+ EXPECT_TRUE(first_audio_job && first_video_job);
+
+ // Simulate audio |kConfigChanged| prefetched as standalone access unit.
+ player_.OnDemuxerDataAvailable(
+ CreateReadFromDemuxerAckWithConfigChanged(true, 0));
+ EXPECT_EQ(0, demuxer_->num_config_requests()); // No OnPrefetchDone() yet.
+
+ // Simulate video |kConfigChanged| prefetched as standalone access unit.
+ player_.OnDemuxerDataAvailable(
+ CreateReadFromDemuxerAckWithConfigChanged(false, 0));
+ EXPECT_EQ(1, demuxer_->num_config_requests()); // OnPrefetchDone() occurred.
+ EXPECT_EQ(2, demuxer_->num_data_requests());
+
+ // No job re-creation should occur until the requested configs arrive.
+ EXPECT_EQ(first_audio_job, GetMediaDecoderJob(true));
+ EXPECT_EQ(first_video_job, GetMediaDecoderJob(false));
+
+ player_.OnDemuxerConfigsAvailable(CreateAudioVideoDemuxerConfigs());
+ EXPECT_EQ(4, demuxer_->num_data_requests());
+ MediaDecoderJob* second_audio_job = GetMediaDecoderJob(true);
+ MediaDecoderJob* second_video_job = GetMediaDecoderJob(false);
+ EXPECT_NE(first_audio_job, second_audio_job);
+ EXPECT_NE(first_video_job, second_video_job);
+ EXPECT_TRUE(second_audio_job && second_video_job);
+
+ // Confirm no further demuxer configs requested.
+ EXPECT_EQ(1, demuxer_->num_config_requests());
+}
+
TEST_F(MediaSourcePlayerTest, DemuxerConfigRequestedIfInPrefetchUnit0) {
SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
« media/base/android/media_source_player.cc ('K') | « media/base/android/media_source_player.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698