diff --git a/media/audio/ohos/ohos_audio_output_stream.cc b/media/audio/ohos/ohos_audio_output_stream.cc index 19c9f8562da9684b81349235c327de228286a1ae..8f54c8d326336a7001645247efc0ed784ca4ab7a 100644 --- a/media/audio/ohos/ohos_audio_output_stream.cc +++ b/media/audio/ohos/ohos_audio_output_stream.cc @@ -304,6 +304,7 @@ void OHOSAudioOutputStream::Start(AudioSourceCallback* callback) { active_buffer_index_ = (active_buffer_index_ + 1) % kMaxNumOfBuffersInQueue; if (callback_) { DCHECK(!timer_.IsRunning()); + FlushData(); PumpSamples(); } } @@ -321,7 +322,7 @@ void OHOSAudioOutputStream::Stop() { LOG(DEBUG) << "OHOSAudioOutputStream::Stop cannot continue."; return; } - if (!audio_renderer_->Stop()) { + if (!audio_renderer_->Pause()) { ReportError(); } } @@ -514,7 +515,7 @@ void OHOSAudioOutputStream::PumpSamples() { base::BindOnce(&content::MediaSessionImpl::Suspend, weakMediaSession_, content::MediaSession::SuspendType::kSystem)); } else { - LOG(INFO) << "MediaSession is suspended"; + LOG(DEBUG) << "MediaSession is suspended"; isSuspended_ = true; } } else { @@ -613,4 +614,21 @@ void OHOSAudioOutputStream::ReleaseAudioBuffer() { } } } + +void OHOSAudioOutputStream::FlushData() { + base::TimeTicks now = base::TimeTicks::Now(); + base::TimeDelta delay; + uint64_t latency = 0; + if (!audio_renderer_) { + LOG(INFO) << "OHOSAudioOutputStream::FlushData !audio_renderer_"; + return; + } + audio_renderer_->GetLatency(latency); + delay = base::Microseconds(latency); + if (!callback_) { + LOG(INFO) << "OHOSAudioOutputStream::FlushData !callback_"; + return; + } + callback_->OnMoreData(delay, now, {}, audio_bus_.get()); +} } // namespace media diff --git a/media/audio/ohos/ohos_audio_output_stream.h b/media/audio/ohos/ohos_audio_output_stream.h index edea891ba378bad34d86226cdfd53988183782ae..be63b21dd003c444e55d7b9321bfeaee00b42698 100644 --- a/media/audio/ohos/ohos_audio_output_stream.h +++ b/media/audio/ohos/ohos_audio_output_stream.h @@ -115,6 +115,7 @@ class OHOSAudioOutputStream : public AudioOutputStream { bool GetInterruptMode(); void SetInterruptMode(bool audioExclusive); bool GetAudioExclusive(); + void FlushData(); private: ~OHOSAudioOutputStream() override; diff --git a/ohos_nweb/browser/performance_manager/policies/background_task_policy.cc b/ohos_nweb/browser/performance_manager/policies/background_task_policy.cc index 2ae99e304db648dece2f38c006f0b1ec7a4c0a6a..24c4893803d7ee5d85894e2b47439015b32238d9 100644 --- a/ohos_nweb/browser/performance_manager/policies/background_task_policy.cc +++ b/ohos_nweb/browser/performance_manager/policies/background_task_policy.cc @@ -209,6 +209,12 @@ void BackgroundTaskPolicy::OnIsAudibleChanged(const PageNode* page_node) { } void BackgroundTaskPolicy::MaybeChangeBackgroundTask(const PageNode* page_node) { + LOG(INFO) << "BackgroundTaskPolicy::MaybeChangeBackgroundTask " + << " page_node=" << page_node + << " visible_page_num_: " << visible_page_num_ + << " media_playing_num_: " << media_playing_num_ + << " audio_state_num_: " << audio_state_num_ + << " is_request_background_task_: " << is_request_background_task_; RequestBackgroundTaskReason reason = RequestBackgroundTaskReason::NO_CHANGE_BG_TASK; if (is_request_background_task_ &&