From d3bc11211d71703a6bdfc55ecda72e55c75c6e55 Mon Sep 17 00:00:00 2001 From: gzweioh Date: Fri, 3 Jan 2025 20:08:56 +0800 Subject: [PATCH] change the way to obtain webcontents Signed-off-by: gzweioh --- media/audio/ohos/ohos_audio_output_stream.cc | 61 ++++++-------------- media/audio/ohos/ohos_audio_output_stream.h | 2 - 2 files changed, 17 insertions(+), 46 deletions(-) diff --git a/media/audio/ohos/ohos_audio_output_stream.cc b/media/audio/ohos/ohos_audio_output_stream.cc index f93ef5b7a2..7b491d6bae 100644 --- a/media/audio/ohos/ohos_audio_output_stream.cc +++ b/media/audio/ohos/ohos_audio_output_stream.cc @@ -176,6 +176,23 @@ OHOSAudioOutputStream::OHOSAudioOutputStream(OHOSAudioManager* manager, parameters_(parameters), audio_bus_(AudioBus::Create(parameters)), isCommunication_(isCommunication) { + content::RenderFrameHost* renderFrameHost = content::RenderFrameHost::FromID( + parameters_.render_process_id(), parameters_.render_frame_id()); + webContent_ = content::WebContents::FromRenderFrameHost(renderFrameHost); + if (!webContent_) { + LOG(ERROR) << "AudioOutputStream get webContent failed."; + } else { + content::MediaSessionImpl* mediaSession = + content::MediaSessionImpl::Get(webContent_); + if (!mediaSession) { + LOG(ERROR) << "AudioOutputStream get mediaSession failed."; + } + weakMediaSession_ = mediaSession->weakMediaSessionFactory_.GetWeakPtr(); + if (!weakMediaSession_) { + LOG(ERROR) << "OHOSAudioOutputStream::OHOSAudioOutputStream " + "weakMediaSession get failed"; + } + } audio_renderer_ = OhosAdapterHelper::GetInstance().CreateAudioRendererAdapter(); sample_format_ = kSampleFormatS16; @@ -186,50 +203,6 @@ OHOSAudioOutputStream::OHOSAudioOutputStream(OHOSAudioManager* manager, audio_data_[i] = nullptr; } main_task_runner_ = content::GetUIThreadTaskRunner({}); - GetMediaSessionFromWebContent(); - if (!weakMediaSession_) { - LOG(ERROR) << __func__ << " weakMediaSession get failed"; - } -} - -void OHOSAudioOutputStream::GetMediaSessionFromWebContent() { - auto GetMediaSessionFunc = - [](AudioParameters parameters, base::WeakPtr* web_contents_out, - base::WeakPtr* media_session_out) { - content::RenderFrameHost* render_frame_host = - content::RenderFrameHost::FromID(parameters.render_process_id(), - parameters.render_frame_id()); - content::WebContents* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - if (!web_contents) { - LOG(ERROR) << __func__ - << ": AudioOutputStream get webContent failed."; - *web_contents_out = nullptr; - return; - } - *web_contents_out = web_contents->GetWeakPtr(); - content::MediaSessionImpl* media_session = - content::MediaSessionImpl::Get(web_contents); - if (!media_session) { - LOG(ERROR) << "AudioOutputStream get mediaSession failed."; - *media_session_out = nullptr; - return; - } - *media_session_out = - media_session->weakMediaSessionFactory_.GetWeakPtr(); - }; - if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { - if (!main_task_runner_) { - LOG(ERROR) << __func__ << ":, main_tast_runner_ is nullptr"; - return; - } - main_task_runner_->PostTask( - FROM_HERE, base::BindOnce(GetMediaSessionFunc, parameters_, - base::Unretained(&webContent_), - base::Unretained(&weakMediaSession_))); - } else { - GetMediaSessionFunc(parameters_, &webContent_, &weakMediaSession_); - } } OHOSAudioOutputStream::~OHOSAudioOutputStream() { diff --git a/media/audio/ohos/ohos_audio_output_stream.h b/media/audio/ohos/ohos_audio_output_stream.h index 81a32606a3..48b256f3fa 100644 --- a/media/audio/ohos/ohos_audio_output_stream.h +++ b/media/audio/ohos/ohos_audio_output_stream.h @@ -150,8 +150,6 @@ class OHOSAudioOutputStream : public AudioOutputStream { void Prepare(base::WeakPtr weakMediaSession); - void GetMediaSessionFromWebContent(); - raw_ptr manager_; AudioParameters parameters_; -- Gitee