core里面的通知probe是从content层调用的

 

1, D:\dev\electron9\src\content\renderer\media\inspector_media_event_handler.cc

构造入参有个agent

InspectorMediaEventHandler::InspectorMediaEventHandler(
    blink::MediaInspectorContext* inspector_context)
    : inspector_context_(inspector_context),
      player_id_(inspector_context_->CreatePlayer()) {}

里面调用:inspector_context_->NotifyPlayerEvents(player_id_, events);

2,上面函数实现在:D:\dev\electron9\src\third_party\blink\renderer\core\inspector\inspector_media_context_impl.cc

复制代码
// Convert public version of event to protocol version, and send it.
void MediaInspectorContextImpl::NotifyPlayerEvents(
    WebString playerId,
    InspectorPlayerEvents events) {
  const auto& player_search = players_.find(playerId);
  if (player_search == players_.end())
    DCHECK(false);
  Vector<InspectorPlayerEvent> to_send;
  to_send.ReserveCapacity(events.size());
  for (const auto& event : events) {
    player_search->value->events.emplace_back(event);
    to_send.push_back(event);
  }
  probe::PlayerEventsAdded(GetSupplementable(), playerId, to_send);
}
复制代码

3,发送通知:SendQueuedMediaEvents

 

0,这个最初初始化在D:\dev\electron9\src\third_party\blink\renderer\modules\modules_initializer.cc

html 的element元素构建而来

复制代码
std::unique_ptr<WebMediaPlayer> ModulesInitializer::CreateWebMediaPlayer(
    WebLocalFrameClient* web_frame_client,
    HTMLMediaElement& html_media_element,
    const WebMediaPlayerSource& source,
    WebMediaPlayerClient* media_player_client) const {
  HTMLMediaElementEncryptedMedia& encrypted_media =
      HTMLMediaElementEncryptedMedia::From(html_media_element);
  WebString sink_id(
      HTMLMediaElementAudioOutputDevice::sinkId(html_media_element));
  MediaInspectorContextImpl* context_impl =
      MediaInspectorContextImpl::FromHtmlMediaElement(html_media_element);
  return base::WrapUnique(web_frame_client->CreateMediaPlayer(
      source, media_player_client, context_impl, &encrypted_media,
      encrypted_media.ContentDecryptionModule(), sink_id));
}
复制代码

 

posted @   Bigben  阅读(119)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-04-01 qt打包发布问题 缺失qt动态库
2014-04-01 游戏引擎剖析
点击右上角即可分享
微信分享提示