From 2a02790f30c4ff70f3b3b3001766df25e212c384 Mon Sep 17 00:00:00 2001 From: wxkkk Date: Mon, 18 Aug 2025 21:00:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0UT=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wxkkk --- .../test/unittest/include/player_mock.h | 2 + .../player/test/unittest/src/player_mock.cpp | 12 +++++ .../test/unittest/src/player_unit_test.cpp | 46 +++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/frameworks/native/player/test/unittest/include/player_mock.h b/frameworks/native/player/test/unittest/include/player_mock.h index 2fcaa6bcc..9e6b676d0 100644 --- a/frameworks/native/player/test/unittest/include/player_mock.h +++ b/frameworks/native/player/test/unittest/include/player_mock.h @@ -179,6 +179,8 @@ public: int32_t EnableReportMediaProgress(bool enable); void ReleaseClientListener(); int32_t EnableReportAudioInterrupt(bool enable); + int32_t SetSeiMessageCbStatus(bool status, const std::vector &payloadTypes); + int32_t SetStartFrameRateOptEnabled(bool enabled); private: void SeekPrepare(int32_t &mseconds, PlayerSeekMode &mode); std::shared_ptr player_ = nullptr; diff --git a/frameworks/native/player/test/unittest/src/player_mock.cpp b/frameworks/native/player/test/unittest/src/player_mock.cpp index 7e4706446..51fa69edd 100644 --- a/frameworks/native/player/test/unittest/src/player_mock.cpp +++ b/frameworks/native/player/test/unittest/src/player_mock.cpp @@ -855,5 +855,17 @@ void PlayerMock::ReleaseClientListener() UNITTEST_CHECK_AND_RETURN_LOG(player_ != nullptr, "player_ == nullptr"); player_->ReleaseClientListener(); } + +int32_t PlayerMock::SetSeiMessageCbStatus(bool status, const std::vector &payloadTypes) +{ + UNITTEST_CHECK_AND_RETURN_RET_LOG(player_ != nullptr, -1, "player_ == nullptr"); + return player_->SetSeiMessageCbStatus(status, payloadTypes); +} + +int32_t PlayerMock::SetStartFrameRateOptEnabled(bool enabled) +{ + UNITTEST_CHECK_AND_RETURN_RET_LOG(player_ != nullptr, -1, "player_ == nullptr"); + return player_->SetStartFrameRateOptEnabled(enabled); +} } // namespace Media } // namespace OHOS diff --git a/frameworks/native/player/test/unittest/src/player_unit_test.cpp b/frameworks/native/player/test/unittest/src/player_unit_test.cpp index e8a75c839..d8608a7a2 100644 --- a/frameworks/native/player/test/unittest/src/player_unit_test.cpp +++ b/frameworks/native/player/test/unittest/src/player_unit_test.cpp @@ -4741,5 +4741,51 @@ HWTEST_F(PlayerUnitTest, Player_EnableReportMediaProgress_004, TestSize.Level0) ASSERT_EQ(MSERR_OK, player_->EnableReportMediaProgress(true)); EXPECT_EQ(MSERR_OK, player_->Play()); } + +/** + * @tc.name : Test SetSeiMessageCbStatus before/during playing + * @tc.number: Player_SetSeiMessageCbStatus_001 + * @tc.desc : SetSeiMessageCbStatus before prepare + */ +HWTEST_F(PlayerUnitTest, Player_SetSeiMessageCbStatus_001, TestSize.Level0) +{ + std::vector payloadTypes = {5, 6}; + ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(true, payloadTypes)); +} + +/** + * @tc.name : Test SetSeiMessageCbStatus before/during playing + * @tc.number: Player_SetSeiMessageCbStatus_002 + * @tc.desc : SetSeiMessageCbStatus during playing + */ +HWTEST_F(PlayerUnitTest, Player_SetSeiMessageCbStatus_002, TestSize.Level0) +{ + std::vector payloadTypes = {1, 2, 3}; + ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + sptr videoSurface = player_->GetVideoSurface(); + ASSERT_NE(nullptr, videoSurface); + EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); + EXPECT_EQ(MSERR_OK, player_->Prepare()); + EXPECT_EQ(MSERR_OK, player_->Play()); + ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(true, payloadTypes)); + ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(false, payloadTypes)); + EXPECT_EQ(MSERR_OK, player_->Stop()); +} + +/** + * @tc.name : Test EnableReportAudioInterrupt API + * @tc.number: Player_EnableReportAudioInterrupt_001 + * @tc.desc : EnableReportAudioInterrupt before playing + */ +HWTEST_F(PlayerUnitTest, Player_EnableReportAudioInterrupt_001, TestSize.Level0) +{ + ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + sptr videoSurface = player_->GetVideoSurface(); + ASSERT_NE(nullptr, videoSurface); + EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); + EXPECT_EQ(MSERR_OK, player_->Prepare()); + ASSERT_EQ(MSERR_OK, player_->EnableReportAudioInterrupt(true)); +} } // namespace Media } // namespace OHOS -- Gitee From 06318b15a35d82a4138e34763197de238591b7a3 Mon Sep 17 00:00:00 2001 From: wxkkk Date: Mon, 18 Aug 2025 22:17:27 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0UT=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wxkkk --- .../test/unittest/src/player_unit_test.cpp | 215 ++++++++++++++++-- 1 file changed, 201 insertions(+), 14 deletions(-) diff --git a/frameworks/native/player/test/unittest/src/player_unit_test.cpp b/frameworks/native/player/test/unittest/src/player_unit_test.cpp index d8608a7a2..3e731492f 100644 --- a/frameworks/native/player/test/unittest/src/player_unit_test.cpp +++ b/frameworks/native/player/test/unittest/src/player_unit_test.cpp @@ -4742,50 +4742,237 @@ HWTEST_F(PlayerUnitTest, Player_EnableReportMediaProgress_004, TestSize.Level0) EXPECT_EQ(MSERR_OK, player_->Play()); } + /** - * @tc.name : Test SetSeiMessageCbStatus before/during playing + * @tc.name : Test SetSeiMessageCbStatus API - Basic functionality * @tc.number: Player_SetSeiMessageCbStatus_001 - * @tc.desc : SetSeiMessageCbStatus before prepare + * @tc.desc : Test SetSeiMessageCbStatus basic enable/disable functionality */ HWTEST_F(PlayerUnitTest, Player_SetSeiMessageCbStatus_001, TestSize.Level0) { - std::vector payloadTypes = {5, 6}; + std::vector payloadTypes = {1, 2, 3, 4, 5}; ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + + // Test enable SEI message callback ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(true, payloadTypes)); + + // Test disable SEI message callback + ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(false, payloadTypes)); + + // Test enable again with different payload types + std::vector newPayloadTypes = {6, 7, 8}; + ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(true, newPayloadTypes)); } /** - * @tc.name : Test SetSeiMessageCbStatus before/during playing + * @tc.name : Test SetSeiMessageCbStatus API - Empty payload types * @tc.number: Player_SetSeiMessageCbStatus_002 - * @tc.desc : SetSeiMessageCbStatus during playing + * @tc.desc : Test SetSeiMessageCbStatus with empty payload types vector */ -HWTEST_F(PlayerUnitTest, Player_SetSeiMessageCbStatus_002, TestSize.Level0) +HWTEST_F(PlayerUnitTest, Player_SetSeiMessageCbStatus_002, TestSize.Level1) { - std::vector payloadTypes = {1, 2, 3}; + std::vector emptyPayloadTypes = {}; ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + + // Test with empty payload types + ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(true, emptyPayloadTypes)); + ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(false, emptyPayloadTypes)); + sptr videoSurface = player_->GetVideoSurface(); ASSERT_NE(nullptr, videoSurface); EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); EXPECT_EQ(MSERR_OK, player_->Prepare()); EXPECT_EQ(MSERR_OK, player_->Play()); - ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(true, payloadTypes)); - ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(false, payloadTypes)); + sleep(PLAYING_TIME_2_SEC); + EXPECT_EQ(MSERR_OK, player_->Stop()); +} + +/** + * @tc.name : Test SetSeiMessageCbStatus API - Large payload types + * @tc.number: Player_SetSeiMessageCbStatus_003 + * @tc.desc : Test SetSeiMessageCbStatus with large number of payload types + */ +HWTEST_F(PlayerUnitTest, Player_SetSeiMessageCbStatus_003, TestSize.Level1) +{ + std::vector largePayloadTypes = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; + ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + + // Test with large number of payload types + ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(true, largePayloadTypes)); + ASSERT_EQ(MSERR_OK, player_->SetSeiMessageCbStatus(false, largePayloadTypes)); + + sptr videoSurface = player_->GetVideoSurface(); + ASSERT_NE(nullptr, videoSurface); + EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); + EXPECT_EQ(MSERR_OK, player_->Prepare()); + EXPECT_EQ(MSERR_OK, player_->Play()); + sleep(PLAYING_TIME_2_SEC); + EXPECT_EQ(MSERR_OK, player_->Stop()); +} + +/** + * @tc.name : Test SetSuperResolution API - Basic functionality + * @tc.number: Player_SetSuperResolution_005 + * @tc.desc : Test SetSuperResolution basic enable/disable functionality + */ +HWTEST_F(PlayerUnitTest, Player_SetSuperResolution_005, TestSize.Level0) +{ + AVPlayStrategy playbackStrategy = { + .enableSuperResolution = true + }; + ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy)); + + // Test enable super resolution + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(true)); + + // Test disable super resolution + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(false)); + + // Test enable again + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(true)); + + sptr videoSurface = player_->GetVideoSurface(); + ASSERT_NE(nullptr, videoSurface); + EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); + EXPECT_EQ(MSERR_OK, player_->Prepare()); + EXPECT_EQ(MSERR_OK, player_->Play()); + sleep(PLAYING_TIME_2_SEC); EXPECT_EQ(MSERR_OK, player_->Stop()); } /** - * @tc.name : Test EnableReportAudioInterrupt API - * @tc.number: Player_EnableReportAudioInterrupt_001 - * @tc.desc : EnableReportAudioInterrupt before playing + * @tc.name : Test SetSuperResolution API - Multiple enable/disable cycles + * @tc.number: Player_SetSuperResolution_006 + * @tc.desc : Test SetSuperResolution with multiple enable/disable cycles */ -HWTEST_F(PlayerUnitTest, Player_EnableReportAudioInterrupt_001, TestSize.Level0) +HWTEST_F(PlayerUnitTest, Player_SetSuperResolution_006, TestSize.Level1) { + AVPlayStrategy playbackStrategy = { + .enableSuperResolution = true + }; ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy)); + + // Multiple enable/disable cycles + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(true)); + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(false)); + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(true)); + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(false)); + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(true)); + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(false)); + ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(true)); + sptr videoSurface = player_->GetVideoSurface(); ASSERT_NE(nullptr, videoSurface); EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); EXPECT_EQ(MSERR_OK, player_->Prepare()); - ASSERT_EQ(MSERR_OK, player_->EnableReportAudioInterrupt(true)); + EXPECT_EQ(MSERR_OK, player_->Play()); + sleep(PLAYING_TIME_2_SEC); + EXPECT_EQ(MSERR_OK, player_->Stop()); +} + +/** + * @tc.name : Test SetSuperResolution API - Without super resolution enabled + * @tc.number: Player_SetSuperResolution_007 + * @tc.desc : Test SetSuperResolution when super resolution is not enabled in strategy + */ +HWTEST_F(PlayerUnitTest, Player_SetSuperResolution_007, TestSize.Level1) +{ + ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + + // Should fail when super resolution is not enabled in strategy + ASSERT_EQ(MSERR_SUPER_RESOLUTION_NOT_ENABLED, player_->SetSuperResolution(true)); + ASSERT_EQ(MSERR_SUPER_RESOLUTION_NOT_ENABLED, player_->SetSuperResolution(false)); + + sptr videoSurface = player_->GetVideoSurface(); + ASSERT_NE(nullptr, videoSurface); + EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); + EXPECT_EQ(MSERR_OK, player_->Prepare()); + EXPECT_EQ(MSERR_OK, player_->Play()); + sleep(PLAYING_TIME_2_SEC); + EXPECT_EQ(MSERR_OK, player_->Stop()); +} + +/** + * @tc.name : Test SetVideoWindowSize API - Basic functionality + * @tc.number: Player_SetVideoWindowSize_001 + * @tc.desc : Test SetVideoWindowSize basic functionality with common resolutions + */ +HWTEST_F(PlayerUnitTest, Player_SetVideoWindowSize_001, TestSize.Level0) +{ + AVPlayStrategy playbackStrategy = { + .enableSuperResolution = true + }; + ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy)); + + // Test common resolutions + ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(1920, 1080)); // Full HD + ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(1280, 720)); // HD + ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(800, 600)); // SVGA + + sptr videoSurface = player_->GetVideoSurface(); + ASSERT_NE(nullptr, videoSurface); + EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); + EXPECT_EQ(MSERR_OK, player_->Prepare()); + EXPECT_EQ(MSERR_OK, player_->Play()); + sleep(PLAYING_TIME_2_SEC); + EXPECT_EQ(MSERR_OK, player_->Stop()); +} + +/** + * @tc.name : Test SetVideoWindowSize API - Extreme resolutions + * @tc.number: Player_SetVideoWindowSize_002 + * @tc.desc : Test SetVideoWindowSize with extreme resolution values + */ +HWTEST_F(PlayerUnitTest, Player_SetVideoWindowSize_002, TestSize.Level1) +{ + AVPlayStrategy playbackStrategy = { + .enableSuperResolution = true + }; + ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy)); + + // Test extreme resolutions + ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(3840, 2160)); // 4K + ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(320, 240)); // QVGA + ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(160, 120)); // QQVGA + + sptr videoSurface = player_->GetVideoSurface(); + ASSERT_NE(nullptr, videoSurface); + EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); + EXPECT_EQ(MSERR_OK, player_->Prepare()); + EXPECT_EQ(MSERR_OK, player_->Play()); + sleep(PLAYING_TIME_2_SEC); + EXPECT_EQ(MSERR_OK, player_->Stop()); +} + +/** + * @tc.name : Test SetVideoWindowSize API - Non-standard aspect ratios + * @tc.number: Player_SetVideoWindowSize_003 + * @tc.desc : Test SetVideoWindowSize with non-standard aspect ratios + */ +HWTEST_F(PlayerUnitTest, Player_SetVideoWindowSize_003, TestSize.Level1) +{ + AVPlayStrategy playbackStrategy = { + .enableSuperResolution = true + }; + ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1)); + ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy)); + + // Test non-standard aspect ratios + ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(1920, 1440)); // 4:3 + ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(1440, 1080)); // 4:3 + ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(960, 720)); // 4:3 + + sptr videoSurface = player_->GetVideoSurface(); + ASSERT_NE(nullptr, videoSurface); + EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface)); + EXPECT_EQ(MSERR_OK, player_->Prepare()); + EXPECT_EQ(MSERR_OK, player_->Play()); + sleep(PLAYING_TIME_2_SEC); + EXPECT_EQ(MSERR_OK, player_->Stop()); } } // namespace Media } // namespace OHOS -- Gitee