From 9d20ecf2978e37cb42a46f47180e1bae2a37df8e Mon Sep 17 00:00:00 2001 From: cobalt-github-releaser-bot <95661244+cobalt-github-releaser-bot@users.noreply.github.com> Date: Mon, 26 Jun 2023 16:31:26 -0700 Subject: [PATCH] [nplb] Enable SbMediaSetAudioWriteDurationTests (#633) (#720) b/268744146 (cherry picked from commit 373bee4ed1e7d87447345a338b083ce2cf3bd262) Co-authored-by: Jason <2697724+jasonzhangxx@users.noreply.github.com> --- starboard/nplb/BUILD.gn | 1 + .../media_set_audio_write_duration_test.cc | 60 +++++++++---------- starboard/win/win32/test_filters.py | 3 + 3 files changed, 34 insertions(+), 30 deletions(-) diff --git a/starboard/nplb/BUILD.gn b/starboard/nplb/BUILD.gn index ea357e28c06d..e46312331cfc 100644 --- a/starboard/nplb/BUILD.gn +++ b/starboard/nplb/BUILD.gn @@ -96,6 +96,7 @@ target(gtest_target_type, "nplb") { "media_buffer_test.cc", "media_can_play_mime_and_key_system_test.cc", "media_configuration_test.cc", + "media_set_audio_write_duration_test.cc", "memory_allocate_aligned_test.cc", "memory_allocate_test.cc", "memory_deallocate_aligned_test.cc", diff --git a/starboard/nplb/media_set_audio_write_duration_test.cc b/starboard/nplb/media_set_audio_write_duration_test.cc index af89f56ef556..573dd35346c7 100644 --- a/starboard/nplb/media_set_audio_write_duration_test.cc +++ b/starboard/nplb/media_set_audio_write_duration_test.cc @@ -26,13 +26,11 @@ #include "starboard/testing/fake_graphics_context_provider.h" #include "testing/gtest/include/gtest/gtest.h" -#if SB_API_VERSION < 15 - namespace starboard { namespace nplb { namespace { -using ::shared::starboard::player::video_dmp::VideoDmpReader; +using shared::starboard::player::video_dmp::VideoDmpReader; using ::starboard::testing::FakeGraphicsContextProvider; using ::testing::ValuesIn; @@ -42,8 +40,7 @@ const SbTime kSmallWaitInterval = 10 * kSbTimeMillisecond; class SbMediaSetAudioWriteDurationTest : public ::testing::TestWithParam { public: - SbMediaSetAudioWriteDurationTest() - : dmp_reader_(ResolveTestFileName(GetParam()).c_str()) {} + SbMediaSetAudioWriteDurationTest() : dmp_reader_(GetParam()) {} void TryToWritePendingSample() { { @@ -79,11 +76,11 @@ class SbMediaSetAudioWriteDurationTest pending_decoder_status_ = nullopt; } - CallSbPlayerWriteSamples(player, kSbMediaTypeAudio, dmp_reader_.get(), - index_, 1); + CallSbPlayerWriteSamples(player, kSbMediaTypeAudio, &dmp_reader_, index_, + 1); + last_input_timestamp_ = + dmp_reader_.GetPlayerSampleInfo(kSbMediaTypeAudio, index_).timestamp; ++index_; - - last_input_timestamp_ = player_sample_info.timestamp; } void PlayerStatus(SbPlayer player, SbPlayerState state, int ticket) { @@ -103,27 +100,30 @@ class SbMediaSetAudioWriteDurationTest } SbPlayer CreatePlayer() { - SbMediaAudioSampleInfo audio_sample_info = dmp_reader_.audio_sample_info(); - SbMediaAudioCodec kAudioCodec = dmp_reader_.audio_codec(); - SbDrmSystem kDrmSystem = kSbDrmSystemInvalid; + SbMediaAudioCodec audio_codec = dmp_reader_.audio_codec(); - last_input_timestamp_ = - dmp_reader_.GetPlayerSampleInfo(kSbMediaTypeAudio, 0).timestamp; - first_input_timestamp_ = last_input_timestamp_; + PlayerCreationParam creation_param = CreatePlayerCreationParam( + audio_codec, kSbMediaVideoCodecNone, kSbPlayerOutputModeInvalid); + + SbPlayerCreationParam param = {}; + creation_param.ConvertTo(¶m); - SbPlayerCreationParam creation_param = CreatePlayerCreationParam( - audio_sample_info.codec, kSbMediaVideoCodecNone, - SbPlayerGetPreferredOutputMode(&creation_param)); - creation_param.audio_sample_info = audio_sample_info; + creation_param.output_mode = SbPlayerGetPreferredOutputMode(¶m); EXPECT_NE(creation_param.output_mode, kSbPlayerOutputModeInvalid); - SbPlayer player = SbPlayerCreate( - fake_graphics_context_provider_.window(), &creation_param, + SbPlayer player = CallSbPlayerCreate( + fake_graphics_context_provider_.window(), kSbMediaVideoCodecNone, + audio_codec, kSbDrmSystemInvalid, &dmp_reader_.audio_stream_info(), "", DummyDeallocateSampleFunc, DecoderStatusFunc, PlayerStatusFunc, - DummyErrorFunc, this /* context */, + DummyErrorFunc, this /* context */, creation_param.output_mode, fake_graphics_context_provider_.decoder_target_provider()); EXPECT_TRUE(SbPlayerIsValid(player)); + + last_input_timestamp_ = + dmp_reader_.GetPlayerSampleInfo(kSbMediaTypeAudio, 0).timestamp; + first_input_timestamp_ = last_input_timestamp_; + return player; } @@ -183,7 +183,9 @@ TEST_P(SbMediaSetAudioWriteDurationTest, WriteLimitedInput) { ASSERT_NE(dmp_reader_.audio_codec(), kSbMediaAudioCodecNone); ASSERT_GT(dmp_reader_.number_of_audio_buffers(), 0); +#if SB_API_VERSION < 15 SbMediaSetAudioWriteDuration(kDuration); +#endif // SB_API_VERSION < 15 SbPlayer player = CreatePlayer(); WaitForPlayerState(kSbPlayerStateInitialized); @@ -224,7 +226,9 @@ TEST_P(SbMediaSetAudioWriteDurationTest, WriteContinuedLimitedInput) { ASSERT_NE(dmp_reader_.audio_codec(), kSbMediaAudioCodecNone); ASSERT_GT(dmp_reader_.number_of_audio_buffers(), 0); +#if SB_API_VERSION < 15 SbMediaSetAudioWriteDuration(kDuration); +#endif // SB_API_VERSION < 15 // This directly impacts the runtime of the test. total_duration_ = 15 * kSbTimeSecond; @@ -277,16 +281,14 @@ std::vector GetSupportedTests() { } for (auto filename : kFilenames) { - VideoDmpReader dmp_reader(ResolveTestFileName(filename).c_str()); + VideoDmpReader dmp_reader(filename, VideoDmpReader::kEnableReadOnDemand); SB_DCHECK(dmp_reader.number_of_audio_buffers() > 0); - - const SbMediaAudioSampleInfo* audio_sample_info = - &dmp_reader.audio_sample_info(); - if (SbMediaIsAudioSupported(dmp_reader.audio_codec(), nullptr, - dmp_reader.audio_bitrate())) { + if (SbMediaCanPlayMimeAndKeySystem(dmp_reader.audio_mime_type().c_str(), + "")) { test_params.push_back(filename); } } + SB_DCHECK(!test_params.empty()); return test_params; } @@ -297,5 +299,3 @@ INSTANTIATE_TEST_CASE_P(SbMediaSetAudioWriteDurationTests, } // namespace } // namespace nplb } // namespace starboard - -#endif // SB_API_VERSION < 15 diff --git a/starboard/win/win32/test_filters.py b/starboard/win/win32/test_filters.py index afa9f695f69d..d88faf7316ea 100644 --- a/starboard/win/win32/test_filters.py +++ b/starboard/win/win32/test_filters.py @@ -29,6 +29,9 @@ # performs an optimization that defeats the SB_C_NOINLINE 'noinline' # attribute. 'SbSystemGetStackTest.SunnyDayStackDirection', + + # These tests are failing. Enable them once they're supported. + 'SbMediaSetAudioWriteDurationTests/SbMediaSetAudioWriteDurationTest.WriteContinuedLimitedInput*', 'MultiplePlayerTests/*beneath_the_canopy_137_avc_dmp*', # Failures tracked by b/256160416.