diff --git a/interfaces/inner_api/native/audio_sink.h b/interfaces/inner_api/native/audio_sink.h index 2293ed249897c7a9de89ada4307bda95f1dff20a..53ae5cd0396079e0384a02645916d13633ebefaf 100644 --- a/interfaces/inner_api/native/audio_sink.h +++ b/interfaces/inner_api/native/audio_sink.h @@ -306,6 +306,7 @@ private: int64_t GetLastReportedClockTime() const; int64_t GetLastBufferPTS() const; int64_t GetBufferDuration() const; + int64_t GetCurrentRenderPts() const; int64_t CalculateAudioLatency(); void UpdateReportTime(int64_t nowClockTime); void UpdateLastBufferPTS(int64_t bufferOffset, float speed); diff --git a/interfaces/inner_api/native/media_sync_manager.h b/interfaces/inner_api/native/media_sync_manager.h index 40e027d6d3467f711e155a742eb24ffc66fb1243..a8f967e7d0a0d69fa041bd890fd83509ffb47b16 100644 --- a/interfaces/inner_api/native/media_sync_manager.h +++ b/interfaces/inner_api/native/media_sync_manager.h @@ -62,6 +62,9 @@ public: void SetMediaStartPts(int64_t startPts) override; void SetLastAudioBufferDuration(int64_t durationUs) override; void SetLastVideoBufferPts(int64_t bufferPts) override; + void SetAudioRenderPts(int64_t audioRenderPts) override; + void SetHasAudio(bool hasAudio) override; + void SetAudioEos(bool isEos) override; Status SetPlaybackRate(float rate) override; void SetInitialVideoFrameRate(double frameRate); @@ -157,6 +160,9 @@ private: int8_t currentRangeEndPriority_ {IMediaSynchronizer::NONE}; int64_t lastVideoBufferAbsPts_ {HST_TIME_NONE}; + int64_t audioRenderPts_ {HST_TIME_NONE}; + bool hasAudio_ {false}; + bool isAudioEos_ {false}; }; } // namespace Pipeline } // namespace Media diff --git a/services/media_engine/modules/sink/audio_sink.cpp b/services/media_engine/modules/sink/audio_sink.cpp index 1a788182024734261fef3e2ca9ae5db51b5f2599..c9d00971c7d7b279b6a81b4fac131573e192a229 100644 --- a/services/media_engine/modules/sink/audio_sink.cpp +++ b/services/media_engine/modules/sink/audio_sink.cpp @@ -41,6 +41,7 @@ constexpr int64_t OVERTIME_WARNING_MS = 50; constexpr int64_t FORMAT_CHANGE_MS = 100; constexpr int64_t BUFFER_CONSUME_MS = 50; constexpr int64_t FIX_DELAY_MS_AUDIO_VIVID = 80; +constexpr int64_t ANCHOR_UPDATE_PERIOD_US_FIRST_STAGE = 20000; } namespace OHOS { @@ -304,6 +305,11 @@ Status AudioSink::Start() return ret; } isEos_ = false; + auto syncCenter = syncCenter_.lock(); + if (syncCenter) { + syncCenter->SetAudioEos(false); + syncCenter->SetAudioRenderPts(HST_TIME_NONE); + } state_ = Pipeline::FilterState::RUNNING; FALSE_RETURN_V_NOLOG(playerEventReceiver_ != nullptr, Status::OK); playerEventReceiver_->OnMemoryUsageEvent({"AUDIO_SINK_BQ", @@ -379,6 +385,11 @@ Status AudioSink::Resume() return ret; } isEos_ = false; + auto syncCenter = syncCenter_.lock(); + if (syncCenter) { + syncCenter->SetAudioEos(false); + syncCenter->SetAudioRenderPts(HST_TIME_NONE); + } state_ = Pipeline::FilterState::RUNNING; AutoLock lock(eosMutex_); if (eosInterruptType_ == EosInterruptState::PAUSE) { @@ -596,6 +607,7 @@ void AudioSink::DrainAndReportEosEvent() isEos_ = true; auto syncCenter = syncCenter_.lock(); if (syncCenter) { + syncCenter->SetAudioEos(true); syncCenter->ReportEos(this); } Event event { @@ -900,6 +912,11 @@ int64_t AudioSink::AudioDataSynchroizer::GetBufferDuration() const return bufferDuration_; } +int64_t AudioSink::AudioDataSynchroizer::GetCurrentRenderPts() const +{ + return currentRenderPTS_; +} + void AudioSink::AudioDataSynchroizer::UpdateReportTime(int64_t nowClockTime) { lastReportedClockTime_ = nowClockTime; @@ -927,9 +944,12 @@ bool AudioSink::IsTimeAnchorNeedUpdate() int64_t nowCt = syncCenter->GetClockTimeNow(); bool needUpdate = forceUpdateTimeAnchorNextTime_ || (lastAnchorClockTime == HST_TIME_NONE) || - (nowCt - lastAnchorClockTime >= ANCHOR_UPDATE_PERIOD_US); + (nowCt - lastAnchorClockTime >= ANCHOR_UPDATE_PERIOD_US) || + (innerSynchroizer_->GetCurrentRenderPts() == 0 && + (nowCt - lastAnchorClockTime >= ANCHOR_UPDATE_PERIOD_US_FIRST_STAGE)); FALSE_RETURN_V_MSG_D(needUpdate, false, "No need to update time anchor this time."); UpdateRenderInfo(); + syncCenter->SetAudioRenderPts(innerSynchroizer_->GetCurrentRenderPts()); int64_t latency = innerSynchroizer_->CalculateAudioLatency(); MEDIA_LOG_DD("Calculate latency = " PUBLIC_LOG_U64, latency); int64_t lastBufferPTS = innerSynchroizer_->GetLastBufferPTS(); @@ -1505,6 +1525,11 @@ void AudioSink::SetSyncCenter(std::shared_ptr syncCe { syncCenter_ = syncCenter; MediaSynchronousSink::Init(); + auto syncCenterPtr = syncCenter_.lock(); + if (syncCenterPtr) { + MEDIA_LOG_I("SetSyncCenter has audio"); + syncCenter->SetHasAudio(true); + } } Status AudioSink::ChangeTrackForFormatChange() diff --git a/services/media_engine/modules/sink/i_media_sync_center.h b/services/media_engine/modules/sink/i_media_sync_center.h index 376c456fe7762b4cbe352075906d24c365cb9c35..9cbfe9704471d1e19a3453879e72ea41a2298dc7 100644 --- a/services/media_engine/modules/sink/i_media_sync_center.h +++ b/services/media_engine/modules/sink/i_media_sync_center.h @@ -114,6 +114,12 @@ struct IMediaSyncCenter { virtual double GetInitialVideoFrameRate() = 0; virtual int64_t GetLastVideoBufferAbsPts() const = 0; + + virtual void SetAudioRenderPts(int64_t audioRenderPts) = 0; + + virtual void SetHasAudio(bool hasAudio) = 0; + + virtual void SetAudioEos(bool isEos) = 0; }; } // namespace Pipeline } // namespace Media diff --git a/services/media_engine/modules/sink/media_sync_manager.cpp b/services/media_engine/modules/sink/media_sync_manager.cpp index 009d1926c0ec2175d747be707d744feedbdfe6e5..1ba628ccdf5ebf9c8f734175c392acfc4dfd46ce 100644 --- a/services/media_engine/modules/sink/media_sync_manager.cpp +++ b/services/media_engine/modules/sink/media_sync_manager.cpp @@ -197,6 +197,9 @@ Status MediaSyncManager::Reset() isFrameAfterSeeked_ = false; lastReportMediaTime_ = HST_TIME_NONE; firstMediaTimeAfterSeek_ = HST_TIME_NONE; + audioRenderPts_ = HST_TIME_NONE; + isAudioEos_ = false; + hasAudio_ = false; return Status::OK; } @@ -359,6 +362,14 @@ int64_t MediaSyncManager::GetMediaTimeNow() for (const auto &func : setMediaTimeFuncs) { FALSE_RETURN_V_NOLOG(func(this, currentMediaTime), currentMediaTime); } + if (hasAudio_ && !isAudioEos_ && (audioRenderPts_ == HST_TIME_NONE || audioRenderPts_ == 0)) { + if (isFrameAfterSeeked_) { + MEDIA_LOG_I("report seekingMediaTime when audio is not render: %{public}" PRId64, seekingMediaTime_); + return seekingMediaTime_; + } + MEDIA_LOG_I("report HST_TIME_NONE when audio is not render"); + return HST_TIME_NONE; + } currentMediaTime = BoundMediaProgress(currentMediaTime); lastReportMediaTime_ = currentMediaTime; MEDIA_LOG_D_SHORT("GetMediaTimeNow currentMediaTime: %{public}" PRId64, currentMediaTime); @@ -490,6 +501,21 @@ int64_t MediaSyncManager::GetLastVideoBufferAbsPts() const MEDIA_LOG_D("GetLastVideoBufferAbsPts" PUBLIC_LOG_D64, lastVideoBufferAbsPts_); return lastVideoBufferAbsPts_; } + +void MediaSyncManager::SetAudioRenderPts(int64_t audioRenderPts) +{ + audioRenderPts_ = audioRenderPts; +} + +void MediaSyncManager::SetHasAudio(bool hasAudio) +{ + hasAudio_ = hasAudio; +} + +void MediaSyncManager::SetAudioEos(bool isEos) +{ + isAudioEos_ = isEos; +} } // namespace Pipeline } // namespace Media } // namespace OHOS \ No newline at end of file diff --git a/test/unittest/media_demuxer_ext_test/mock/media_sync_manager.h b/test/unittest/media_demuxer_ext_test/mock/media_sync_manager.h index 02002e56e9e33233ce7dbe0414a57e9007d659cd..ff0e66ba9be46ebcba581b4403988062eb538a74 100644 --- a/test/unittest/media_demuxer_ext_test/mock/media_sync_manager.h +++ b/test/unittest/media_demuxer_ext_test/mock/media_sync_manager.h @@ -64,6 +64,9 @@ public: MOCK_METHOD(Status, Seek, (int64_t mediaTime, bool isClosest), ()); MOCK_METHOD(Status, Stop, (), ()); MOCK_METHOD(bool, InSeeking, (), ()); + MOCK_METHOD(void, SetAudioRenderPts, (int64_t audioRenderPts), ()); + MOCK_METHOD(void, SetHasAudio, (bool hasAudio), ()); + MOCK_METHOD(void, SetAudioEos, (bool isEos), ()); }; } // namespace Pipeline } // namespace Media diff --git a/test/unittest/media_sink_test/audio_sink_test.cpp b/test/unittest/media_sink_test/audio_sink_test.cpp index 473dccefe6117f308ab2ca9c41cde63727318509..8087b2706d9abec2599ad87da945a6f47c27f207 100644 --- a/test/unittest/media_sink_test/audio_sink_test.cpp +++ b/test/unittest/media_sink_test/audio_sink_test.cpp @@ -19,6 +19,7 @@ #include "filter/filter.h" #include "common/log.h" #include "sink/media_synchronous_sink.h" +#include "media_sync_center_mock.h" namespace { constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_ONLY_PRERELEASE, LOG_DOMAIN_SYSTEM_PLAYER, "AudioSinkTest" }; @@ -1434,6 +1435,105 @@ HWTEST(TestAudioSink, audio_sink_CacheBuffer_003, TestSize.Level1) auto ret = audioSink->CacheBuffer(); ASSERT_TRUE(ret == Status::OK); + +HWTEST(TestAudioSink, IsTimeAnchorNeedUpdate_001, TestSize.Level1) +{ + auto audioSink = AudioSinkCreate(); + ASSERT_TRUE(audioSink != nullptr); + audioSink->SetSyncCenter(nullptr); + + bool result = audioSink->IsTimeAnchorNeedUpdate(); + EXPECT_FALSE(result); +} + +HWTEST(TestAudioSink, IsTimeAnchorNeedUpdate_002, TestSize.Level1) +{ + auto audioSink = AudioSinkCreate(); + ASSERT_TRUE(audioSink != nullptr); + auto mockSyncCenter = std::make_shared(); + audioSink->SetSyncCenter(mockSyncCenter); + audioSink->forceUpdateTimeAnchorNextTime_ = false; + audioSink->innerSynchroizer_->lastReportedClockTime_ = -1; + audioSink->innerSynchroizer_->currentRenderPTS_ = 100; + mockSyncCenter->returnInt64Queue_.push(1); + + bool result = audioSink->IsTimeAnchorNeedUpdate(); + EXPECT_TRUE(result); +} + +HWTEST(TestAudioSink, IsTimeAnchorNeedUpdate_003, TestSize.Level1) +{ + auto audioSink = AudioSinkCreate(); + ASSERT_TRUE(audioSink != nullptr); + auto mockSyncCenter = std::make_shared(); + audioSink->SetSyncCenter(mockSyncCenter); + audioSink->forceUpdateTimeAnchorNextTime_ = false; + audioSink->innerSynchroizer_->lastReportedClockTime_ = 0; + audioSink->innerSynchroizer_->currentRenderPTS_ = 100; + mockSyncCenter->returnInt64Queue_.push(200000); + + bool result = audioSink->IsTimeAnchorNeedUpdate(); + EXPECT_TRUE(result); +} + +HWTEST(TestAudioSink, IsTimeAnchorNeedUpdate_004, TestSize.Level1) +{ + auto audioSink = AudioSinkCreate(); + ASSERT_TRUE(audioSink != nullptr); + auto mockSyncCenter = std::make_shared(); + audioSink->SetSyncCenter(mockSyncCenter); + audioSink->forceUpdateTimeAnchorNextTime_ = false; + audioSink->innerSynchroizer_->lastReportedClockTime_ = 0; + audioSink->innerSynchroizer_->currentRenderPTS_ = 0; + mockSyncCenter->returnInt64Queue_.push(20000); + + bool result = audioSink->IsTimeAnchorNeedUpdate(); + EXPECT_TRUE(result); +} + +HWTEST(TestAudioSink, IsTimeAnchorNeedUpdate_005, TestSize.Level1) +{ + auto audioSink = AudioSinkCreate(); + ASSERT_TRUE(audioSink != nullptr); + auto mockSyncCenter = std::make_shared(); + audioSink->SetSyncCenter(mockSyncCenter); + audioSink->forceUpdateTimeAnchorNextTime_ = false; + audioSink->innerSynchroizer_->lastReportedClockTime_ = 0; + audioSink->innerSynchroizer_->currentRenderPTS_ = 100; + mockSyncCenter->returnInt64Queue_.push(100000); + + bool result = audioSink->IsTimeAnchorNeedUpdate(); + EXPECT_FALSE(result); +} + +HWTEST(TestAudioSink, IsTimeAnchorNeedUpdate_006, TestSize.Level1) +{ + auto audioSink = AudioSinkCreate(); + ASSERT_TRUE(audioSink != nullptr); + auto mockSyncCenter = std::make_shared(); + audioSink->SetSyncCenter(mockSyncCenter); + audioSink->forceUpdateTimeAnchorNextTime_ = false; + audioSink->innerSynchroizer_->lastReportedClockTime_ = 0; + audioSink->innerSynchroizer_->currentRenderPTS_ = 0; + mockSyncCenter->returnInt64Queue_.push(10000); + + bool result = audioSink->IsTimeAnchorNeedUpdate(); + EXPECT_FALSE(result); +} + +HWTEST(TestAudioSink, IsTimeAnchorNeedUpdate_007, TestSize.Level1) +{ + auto audioSink = AudioSinkCreate(); + ASSERT_TRUE(audioSink != nullptr); + auto mockSyncCenter = std::make_shared(); + audioSink->SetSyncCenter(mockSyncCenter); + audioSink->forceUpdateTimeAnchorNextTime_ = true; + audioSink->innerSynchroizer_->lastReportedClockTime_ = 0; + audioSink->innerSynchroizer_->currentRenderPTS_ = 100; + mockSyncCenter->returnInt64Queue_.push(1); + + bool result = audioSink->IsTimeAnchorNeedUpdate(); + EXPECT_TRUE(result); } } // namespace Test } // namespace Media diff --git a/test/unittest/media_sink_test/mock/include/media_sync_center_mock.h b/test/unittest/media_sink_test/mock/include/media_sync_center_mock.h index aba22d24973180ce1a69a96e0f25fdb4b41119a0..94e71d6b4dbcd90852522c1dab013e6199b10466 100644 --- a/test/unittest/media_sink_test/mock/include/media_sync_center_mock.h +++ b/test/unittest/media_sink_test/mock/include/media_sync_center_mock.h @@ -43,6 +43,9 @@ public: void SetMediaStartPts(int64_t startPts) override; int64_t GetMediaStartPts() override; void SetLastVideoBufferPts(int64_t bufferPts) override; + void SetAudioRenderPts(int64_t audioRenderPts) override; + void SetHasAudio(bool hasAudio) override; + void SetAudioEos(bool isEos) override; public: bool returnBool_{false}; std::queue returnInt64Queue_{}; diff --git a/test/unittest/media_sink_test/mock/src/media_sync_center_mock.cpp b/test/unittest/media_sink_test/mock/src/media_sync_center_mock.cpp index ad5d0a6041111e0867a61e68d05c97911b6e7078..e978855c5aeffd40b29a228ede06ee3f5062a3ca 100644 --- a/test/unittest/media_sink_test/mock/src/media_sync_center_mock.cpp +++ b/test/unittest/media_sink_test/mock/src/media_sync_center_mock.cpp @@ -143,6 +143,21 @@ void MockMediaSyncCenter::SetLastVideoBufferPts(int64_t bufferPts) (void)bufferPts; setLastVideoBufferPtsTimes_++; } + +void MockMediaSyncCenter::SetAudioRenderPts(int64_t audioRenderPts) +{ + (void)audioRenderPts; +} + +void MockMediaSyncCenter::SetHasAudio(bool hasAudio) +{ + (void)hasAudio; +} + +void MockMediaSyncCenter::SetAudioEos(bool isEos) +{ + (void)isEos; +} } // namespace Test } // namespace Media } // namespace OHOS \ No newline at end of file diff --git a/test/unittest/media_sink_test/sync_manager_test.cpp b/test/unittest/media_sink_test/sync_manager_test.cpp index 9668d0c6ddc47e939b2e5788a619b2cbd9a269b9..85563136a18795a18249be718b5eae5ceee3946b 100644 --- a/test/unittest/media_sink_test/sync_manager_test.cpp +++ b/test/unittest/media_sink_test/sync_manager_test.cpp @@ -515,6 +515,7 @@ HWTEST_F(TestSyncManager, GetMediaTimeNow_001, TestSize.Level0) HWTEST_F(TestSyncManager, GetMediaTimeNow_002, TestSize.Level0) { MediaSyncManager mediaSyncManager; + mediaSyncManager.audioRenderPts_ = 100; mediaSyncManager.isSeeking_ = false; mediaSyncManager.lastReportMediaTime_ = 100; mediaSyncManager.pausedMediaTime_ = 120; @@ -545,6 +546,7 @@ HWTEST_F(TestSyncManager, GetMediaTimeNow_004, TestSize.Level0) { MediaSyncManager mediaSyncManager; int64_t lastReportMediaTime_ = 110; + mediaSyncManager.audioRenderPts_ = 100; mediaSyncManager.isSeeking_ = false; mediaSyncManager.clockState_ = MediaSyncManager::State::RESUMED; mediaSyncManager.lastReportMediaTime_ = lastReportMediaTime_; @@ -566,6 +568,7 @@ HWTEST_F(TestSyncManager, GetMediaTimeNow_005, TestSize.Level0) { MediaSyncManager mediaSyncManager; int64_t lastReportMediaTime_ = 110; + mediaSyncManager.audioRenderPts_ = 100; mediaSyncManager.isSeeking_ = false; mediaSyncManager.clockState_ = MediaSyncManager::State::RESUMED; mediaSyncManager.lastReportMediaTime_ = lastReportMediaTime_; @@ -587,6 +590,7 @@ HWTEST_F(TestSyncManager, GetMediaTimeNow_006, TestSize.Level0) { MediaSyncManager mediaSyncManager; int64_t lastReportMediaTime_ = 110; + mediaSyncManager.audioRenderPts_ = 100; mediaSyncManager.isSeeking_ = false; mediaSyncManager.clockState_ = MediaSyncManager::State::RESUMED; mediaSyncManager.lastReportMediaTime_ = lastReportMediaTime_; @@ -605,6 +609,7 @@ HWTEST_F(TestSyncManager, GetMediaTimeNow_006, TestSize.Level0) HWTEST_F(TestSyncManager, GetMediaTimeNow_007, TestSize.Level0) { + syncManager_->audioRenderPts_ = 100; syncManager_->isSeeking_ = false; syncManager_->clockState_ = MediaSyncManager::State::PAUSED; syncManager_->pausedMediaTime_ = 50; @@ -617,6 +622,7 @@ HWTEST_F(TestSyncManager, GetMediaTimeNow_007, TestSize.Level0) HWTEST_F(TestSyncManager, GetMediaTimeNow_008, TestSize.Level0) { + syncManager_->audioRenderPts_ = 100; syncManager_->isSeeking_ = false; syncManager_->clockState_ = MediaSyncManager::State::PAUSED; syncManager_->pausedMediaTime_ = 100; @@ -626,6 +632,28 @@ HWTEST_F(TestSyncManager, GetMediaTimeNow_008, TestSize.Level0) EXPECT_EQ(syncManager_->GetMediaTimeNow(), 50); } +HWTEST_F(TestSyncManager, GetMediaTimeNow_009, TestSize.Level0) +{ + syncManager_->isSeeking_ = false; + syncManager_->clockState_ = MediaSyncManager::State::PAUSED; + syncManager_->pausedMediaTime_ = 100; + syncManager_->firstMediaTimeAfterSeek_ = 150; + syncManager_->currentAnchorMediaTime_ = 50; + syncManager_->audioRenderPts_ = HST_TIME_NONE; + EXPECT_EQ(syncManager_->GetMediaTimeNow(), HST_TIME_NONE); +} + +HWTEST_F(TestSyncManager, GetMediaTimeNow_010, TestSize.Level0) +{ + syncManager_->isSeeking_ = false; + syncManager_->clockState_ = MediaSyncManager::State::PAUSED; + syncManager_->pausedMediaTime_ = 100; + syncManager_->firstMediaTimeAfterSeek_ = 150; + syncManager_->currentAnchorMediaTime_ = 50; + syncManager_->audioRenderPts_ = 0; + EXPECT_EQ(syncManager_->GetMediaTimeNow(), HST_TIME_NONE); +} + HWTEST_F(TestSyncManager, SetLastAudioBufferDuration_001, TestSize.Level0) { syncManager_->SetLastAudioBufferDuration(50); diff --git a/test/unittest/media_synchronous_sink_unittest/mock/media_sync_manager.h b/test/unittest/media_synchronous_sink_unittest/mock/media_sync_manager.h index 85720019f55cdb62714e89a8079cf87fd0f91f8b..109653e3a4f440a88adb2bceba2f5aac25181d88 100644 --- a/test/unittest/media_synchronous_sink_unittest/mock/media_sync_manager.h +++ b/test/unittest/media_synchronous_sink_unittest/mock/media_sync_manager.h @@ -64,6 +64,9 @@ public: MOCK_METHOD(Status, Seek, (int64_t mediaTime, bool isClosest), ()); MOCK_METHOD(Status, Stop, (), ()); MOCK_METHOD(bool, InSeeking, (), ()); + MOCK_METHOD(void, SetAudioRenderPts, (int64_t audioRenderPts), ()); + MOCK_METHOD(void, SetHasAudio, (bool hasAudio), ()); + MOCK_METHOD(void, SetAudioEos, (bool isEos), ()); std::atomic isFrameAfterSeeked_ {false}; }; } // namespace Pipeline diff --git a/test/unittest/sei_parser_filter_unittest/sei_parser_filter_unittest.h b/test/unittest/sei_parser_filter_unittest/sei_parser_filter_unittest.h index 08a4574afbd78db5e02b85378ed5b55bc3e6cc3a..159a351d3474d2478f489f29138e93268d99c0cc 100644 --- a/test/unittest/sei_parser_filter_unittest/sei_parser_filter_unittest.h +++ b/test/unittest/sei_parser_filter_unittest/sei_parser_filter_unittest.h @@ -123,6 +123,9 @@ public: MOCK_METHOD(void, SetLastVideoBufferAbsPts, (int64_t lastVideoBufferAbsPts), (override)); MOCK_METHOD(double, GetInitialVideoFrameRate, (), (override)); MOCK_METHOD(int64_t, GetLastVideoBufferAbsPts, (), (const, override)); + MOCK_METHOD(void, SetAudioRenderPts, (int64_t audioRenderPts), (override)); + MOCK_METHOD(void, SetHasAudio, (bool hasAudio), (override)); + MOCK_METHOD(void, SetAudioEos, (bool isEos), (override)); }; class MockEventReceiver : public EventReceiver { diff --git a/test/unittest/sei_parser_helper_unittest/mock/media_sync_manager.h b/test/unittest/sei_parser_helper_unittest/mock/media_sync_manager.h index e4e623c5968f6670d32a1258e5234cb8d678151c..373bbc5c31c62f06c882a3e8a1cf89dfcaae9b33 100644 --- a/test/unittest/sei_parser_helper_unittest/mock/media_sync_manager.h +++ b/test/unittest/sei_parser_helper_unittest/mock/media_sync_manager.h @@ -60,6 +60,9 @@ public: MOCK_METHOD(Status, Reset, (), (override)); MOCK_METHOD(void, SetLastVideoBufferAbsPts, (int64_t lastVideoBufferAbsPts), (override)); MOCK_METHOD(int64_t, GetLastVideoBufferAbsPts, (), (const, override)); + MOCK_METHOD(void, SetAudioRenderPts, (int64_t audioRenderPts), (override)); + MOCK_METHOD(void, SetHasAudio, (bool hasAudio), (override)); + MOCK_METHOD(void, SetAudioEos, (bool isEos), (override)); MOCK_METHOD(Status, Pause, (), ()); MOCK_METHOD(Status, Resume, (), ()); MOCK_METHOD(Status, Seek, (int64_t mediaTime, bool isClosest), ()); diff --git a/test/unittest/subtitle_sink_unittest/mock/media_sync_manager.h b/test/unittest/subtitle_sink_unittest/mock/media_sync_manager.h index ba6fdcc6bae0f156682842afa559a5a95ad7f77d..211c33300a3cd42f7429a16b4a2a67607e351ad9 100644 --- a/test/unittest/subtitle_sink_unittest/mock/media_sync_manager.h +++ b/test/unittest/subtitle_sink_unittest/mock/media_sync_manager.h @@ -64,6 +64,9 @@ public: MOCK_METHOD(Status, Seek, (int64_t mediaTime, bool isClosest), ()); MOCK_METHOD(Status, Stop, (), ()); MOCK_METHOD(bool, InSeeking, (), ()); + MOCK_METHOD(void, SetAudioRenderPts, (int64_t audioRenderPts), ()); + MOCK_METHOD(void, SetHasAudio, (bool hasAudio), ()); + MOCK_METHOD(void, SetAudioEos, (bool isEos), ()); std::atomic isFrameAfterSeeked_ {false}; }; } // namespace Pipeline diff --git a/test/unittest/video_sink_unittest/mock/media_sync_manager.h b/test/unittest/video_sink_unittest/mock/media_sync_manager.h index 16143644dda5ecd936a5642ec5c8e80fd3e3aa0c..642717156a804b9d99ddaa3c5e4b7ed904bfa014 100644 --- a/test/unittest/video_sink_unittest/mock/media_sync_manager.h +++ b/test/unittest/video_sink_unittest/mock/media_sync_manager.h @@ -64,6 +64,9 @@ public: MOCK_METHOD(Status, Seek, (int64_t mediaTime, bool isClosest), ()); MOCK_METHOD(Status, Stop, (), ()); MOCK_METHOD(bool, InSeeking, (), ()); + MOCK_METHOD(void, SetAudioRenderPts, (int64_t audioRenderPts), ()); + MOCK_METHOD(void, SetHasAudio, (bool hasAudio), ()); + MOCK_METHOD(void, SetAudioEos, (bool isEos), ()); }; } // namespace Pipeline } // namespace Media