脂膜炎是什么病| 上焦火吃什么药最有效| 胸膜增厚吃什么药| 什么孩子该看心理医生| 主动脉壁钙化是什么意思| 孤是什么意思| 合肥以前叫什么| 月经期同房有什么危害| 凤毛麟角是什么生肖| 栓塞是什么意思| 鲤鱼旗的含义是什么| 浅笑嫣然是什么意思| 什么洗发水最好| 插班生是什么意思| 网球肘吃什么药| 中国是什么人种| 海啸是什么| 盐酸氟桂利嗪胶囊治什么病| 栎字五行属什么| 霉菌有什么症状| 刘亦菲是什么星座| 羊肉汤放什么调料| 1103是什么星座| 强直性脊柱炎看什么科| 什么街道| 小孩手足口病吃什么食物好| 什么蔬菜含维生素c最多| 凝血酸是什么| 带状疱疹可以吃什么水果| 召力念什么| 老做梦是什么原因| 痛心疾首的疾什么意思| 疤痕体质是什么原因| 什么官许愿| dce是什么溶剂| 奥利司他排油是什么油| 为什么第一次进不去| 阴阳两虚吃什么药| 2021年属什么| 痛包是什么| 五月二十日是什么日子| 肺炎吃什么| 白鱼是什么鱼| 太平天国失败的根本原因是什么| 头晕吃什么食物好| 右手臂酸痛是什么前兆| 烫伤擦什么药| 马蜂蛰了用什么药| 什么水果助消化| 什么首什么胸| 父亲节什么时候| 柠檬和什么一起泡减肥| 梦见牛肉有什么征兆| 六月八日是什么星座| 查验是什么意思| 肉瘤是什么样子图片| 移动电源和充电宝有什么区别| 嘴边起水泡是什么原因| 一岁宝宝能吃什么水果| 形同陌路什么意思| 免疫固定电泳查什么的| 角加斗读什么| 突然血糖高是什么原因引起的| 什么是小奶狗| 乙醇是什么东西| 发烧怕冷是什么原因| 狼毒是什么| 纳肛是什么意思| mice是什么意思| aqua是什么牌子| 下眼皮跳是什么原因| 猫能吃什么人吃的东西| 葡萄补什么| 处女女和什么星座最配| 女人长期做俯卧撑有什么效果| 血热吃什么| 风湿性关节炎什么症状| 什么东西掉进水里不会湿| 花生不能和什么一起吃| 欧阳修是什么居士| 感冒什么症状| e3是什么意思| b是什么单位| 肉桂是什么东西| 为什么有的人皮肤黑| 胃酸烧心吃什么食物| 全身检查挂什么科| 舌头起泡是什么原因| 飞蓬草有什么功效| 长期腹泻是什么病| 什么材质可以放微波炉加热| 什么是功能性子宫出血| 单抗主要治疗什么| 三点水念什么| 看脖子挂什么科| 狗拉肚子吃什么药| 一级护理是什么意思| 观音成道日是什么意思| 血糖有点高吃什么食物好| 西元前是什么意思| 1944年属什么生肖| 牛建读什么| 李商隐号什么| 桑葚和枸杞泡水喝有什么好处| 精华液是干什么的| 牙龈发黑是什么原因| 85年属于什么生肖| 什么人不能吃南瓜| 火烈鸟吃什么| 2002年属什么生肖| 孩子脾虚内热大便干吃什么药| 胰岛素抵抗是什么| 霉菌孢子是什么意思| 鹅肉不能和什么一起吃| 晚上睡觉老做梦是什么原因| 走马观花的走什么意思| 蟾蜍是什么| 大便青黑色是什么原因| 南京市徽为什么是貔貅| 额头窄适合什么发型| 安坦又叫什么药| 什么屎不臭答案| 前置胎盘需要注意什么| 运动后出汗多是什么原因| 六畜兴旺是什么意思| 4月18号是什么星座| 套话是什么意思| v店是什么| 蜘蛛属于什么| 顺手牵羊是什么生肖| 是对什么| 鸡蛋饼用什么面粉| 软开是什么| 犯规是什么意思| 效劳是什么意思| 后羿是一个什么样的人| 牙齿痛挂什么科| 谋杀是什么意思| 贝壳吃什么| 全脂牛奶是什么意思| 粉碎性骨折是什么意思| 吃什么东西能减肥| 心气虚吃什么药| 蒲公英什么功效| 十恶大败是什么意思| 玟字五行属什么| %是什么意思| 看中医挂什么科| 小孩老是咬手指甲是什么原因| 垂直同步有什么用| 崖柏是什么| 怀孕子宫前位和后位有什么区别| 胰腺是什么病| 什么越来越什么什么越来越什么| 稽留流产什么意思| 女人骨质疏松吃什么最好| 肠道长息肉是什么原因造成的| 中医学是什么| 月经期适合吃什么食物| 67岁属什么生肖| 肾精亏虚吃什么药| 什么是继发性高血压| 什么事情只能用一只手去做| 腰肌劳损是什么意思| 九九重阳节是什么意思| rosa是什么意思| 荨麻疹要用什么药| 咬指甲是什么心理疾病| 宫颈口出血是什么原因| 月经期不能吃什么| 小腿肚酸胀是什么原因| 为什么心里老是想着死| 翻来覆去是什么意思| 中医考证需要什么条件| 蛇鼠一窝是什么意思| 螺旋幽门杆菌吃什么药治疗好| 重庆什么时候解放的| 叶子为什么是绿色的| 梦见偷鸡是什么预兆| 红斑狼疮的症状是什么| 裂隙灯能查出什么眼病| 离苦得乐什么意思| sherpa是什么面料| 有骨气是什么意思| 身上长红疙瘩很痒是什么原因| 梦见捡鸡蛋是什么预兆| 梦见出国了是什么意思| 西安机场叫什么名字| 阴道炎用什么洗液| 麻蛇是什么蛇| 儿童肠胃炎吃什么药| 茯苓是什么| 三叶香是什么菜| 身上起火疖子什么原因| 什么军官可以随身配枪| 淋巴细胞百分比偏低是什么意思| 舌苔黄腻吃什么中成药| 纳囊是什么妇科病| 虎口是什么穴位| 头皮真菌感染用什么药| 辟谷什么意思| 脸上长痘痘用什么药膏效果好| 怀孕白细胞高是什么原因| 肝腹水是什么病| 靶子是什么意思| 皮肤发白一块一块的是什么病| 火烧云是什么意思| 原生家庭是什么意思| 来袭是什么意思| 乌龟死了有什么预兆| 高铁与动车有什么区别| 摧枯拉朽是什么意思| 柿子什么时候成熟| 嗜酸性粒细胞偏低是什么原因| 穆字五行属什么| 甲沟炎什么症状| 有什么副作用| 高丽棒子是什么意思| 梦见自己洗衣服是什么意思| 纳音什么意思| 潜血阴性是什么意思| 空调输入功率是什么意思| 三个水读什么| 应无所住而生其心是什么意思| 极有家是什么意思| 闭麦是什么意思| 什么水果上火| 眩晕是怎么回事是什么原因引起| 11月9日是什么日子| 骨折吃什么水果好| 盆浴是什么意思| 气血虚吃什么| 乳头变大是什么原因| 蛋糕用什么奶油好| 为什么拉的屎是黑色的| 一路向北是什么意思| 胎盘长什么样子图片| 补钙最好的食物是什么| sinoer是什么牌子| 撸猫是什么意思| 香榧是什么东西| 嘴碎什么意思| 肚子饱胀是什么原因| 小孩肠胃感冒吃什么药比较好| 滥竽充数的充是什么意思| 沾花惹草是什么生肖| 农历六月十二是什么日子| 黄鼠狼是什么科| 割包皮属于什么科室| 什么是疤痕增生| 肝肾不足证是什么意思| 子宫内膜增厚是什么原因| 死鱼眼是什么样子的| 天丝是什么成分| 炖牛肉放什么佐料| 身份证尾号代表什么| 放炮是什么意思| 3月29日是什么星座| 痔疮什么东西不能吃| 五月十一是什么星座| 小兔子吃什么| 手指为什么会脱皮| zoom是什么| 摩羯座男生喜欢什么样的女生| 百度

把相声说进茶馆 让艺术重焕生机

百度 6月5日是世界环境日。

Welcome to Chromium Media! This directory primarily contains a collection of components related to media capture and playback. Feel free to reach out to the media-dev@chromium.org mailing list with questions.

As a top level component this may be depended on by almost every other Chromium component except base/. Certain components may not work properly in sandboxed processes.

Directory Breakdown

  • audio/ - Code for audio input and output. Includes platform specific output and input implementations. Due to use of platform APIs, can not normally be used from within a sandboxed process.

  • base/ - Contains miscellaneous enums, utility classes, and shuttling primitives used throughout media/ and beyond; i.e. AudioBus, AudioCodec, and VideoFrame just to name a few. Can be used in any process.

  • blink/ - Code for interfacing with the Blink rendering engine for MediaStreams as well as <video> and <audio> playback. Used only in the same process as Blink; typically the render process.

  • capture/ - Contains content (as in the content layer) capturing and platform specific video capture implementations.

  • cast/ - Contains the tab casting implementation; not to be confused with the Chromecast code which lives in the top-level cast/ directory.

  • cdm/ - Contains code related to the Content Decryption Module (CDM) used for playback of content via Encrypted Media Extensions (EME).

  • device_monitors/ - Contains code for monitoring device changes; e.g. webcam and microphone plugin and unplug events.

  • ffmpeg/ - Contains binding code and helper methods necessary to use the ffmpeg library located in //third_party/ffmpeg.

  • filters/ - Contains data sources, decoders, demuxers, parsers, and rendering algorithms used for media playback.

  • formats/ - Contains parsers used by Media Source Extensions (MSE).

  • gpu/ - Contains the platform hardware encoder and decoder implementations.

  • midi/ - Contains the WebMIDI API implementation.

  • mojo/ - Contains mojo services for media. Typically used for providing out of process media functionality to a sandboxed process.

  • muxers/ - Code for muxing content for the Media Recorder API.

  • remoting/ - Code for transmitting muxed packets to a remote endpoint for playback.

  • renderers/ - Code for rendering audio and video to an output sink.

  • test/ - Code and data for testing the media playback pipeline.

  • tools/ - Standalone media test tools.

  • video/ - Abstract hardware video decoder interfaces and tooling.

Capture

TODO(miu, chfemer): Fill in this section.

mojo

See media/mojo documentation.

MIDI

TODO(toyoshim): Fill in this section.

Playback

Media playback encompasses a large swatch of technologies, so by necessity this will provide only a brief outline. Inside this directory you'll find components for media demuxing, software and hardware video decode, audio output, as well as audio and video rendering.

Specifically under the playback heading, media/ contains the implementations of components required for HTML media elements and extensions:

The following diagram provides a simplified overview of the media playback pipeline.

Media Pipeline Overview

As a case study we'll consider the playback of a video through the <video> tag.

<video> (and <audio>) starts in blink::HTMLMediaElement in third_party/WebKit/ and reaches media/blink in media::WebMediaPlayerImpl after a brief hop through content::MediaFactory. Each blink::HTMLMediaElement owns a media::WebMediaPlayerImpl for handling things like play, pause, seeks, and volume changes (among other things).

media::WebMediaPlayerImpl handles or delegates media loading over the network as well as demuxer and pipeline initialization. media::WebMediaPlayerImpl owns a media::PipelineController which manages the coordination of a media::DataSource, media::Demuxer, and media::Renderer during playback.

During a normal playback, the media::Demuxer owned by WebMediaPlayerImpl may be either media::FFmpegDemuxer or media::ChunkDemuxer. The ffmpeg variant is used for standard src= playback where WebMediaPlayerImpl is responsible for loading bytes over the network. media::ChunkDemuxer is used with Media Source Extensions (MSE), where JavaScript code provides the muxed bytes.

The media::Renderer is typically media::RendererImpl which owns and coordinates media::AudioRenderer and media::VideoRenderer instances. Each of these in turn own a set of media::AudioDecoder and media::VideoDecoder implementations. Each issues an async read to a media::DemuxerStream exposed by the media::Demuxer which is routed to the right decoder by media::DecoderStream. Decoding is again async, so decoded frames are delivered at some later time to each renderer.

The media/ library contains hardware decoder implementations in media/gpu for all supported Chromium platforms, as well as software decoding implementations in media/filters backed by FFmpeg and libvpx. Decoders are attempted in the order provided via the media::RendererFactory; the first one which reports success will be used for playback (typically the hardware decoder for video).

Each renderer manages timing and rendering of audio and video via the event- driven media::AudioRendererSink and media::VideoRendererSink interfaces respectively. These interfaces both accept a callback that they will issue periodically when new audio or video frames are required.

On the audio side, again in the normal case, the media::AudioRendererSink is driven via a base::SyncSocket and shared memory segment owned by the browser process. This socket is ticked periodically by a platform level implementation of media::AudioOutputStream within media/audio.

On the video side, the media::VideoRendererSink is driven by async callbacks issued by the compositor to media::VideoFrameCompositor. The media::VideoRenderer will talk to the media::AudioRenderer through a media::TimeSource for coordinating audio and video sync.

With that we‘ve covered the basic flow of a typical playback. When debugging issues, it’s helpful to review the internal logs at chrome://media-internals. The internals page contains information about active media::WebMediaPlayerImpl, media::AudioInputController, media::AudioOutputController, and media::AudioOutputStream instances.

Logging

Media playback typically involves multiple threads, in many cases even multiple processes. Media operations are often asynchronous running in a sandbox. These make attaching a debugger (e.g. GDB) sometimes less efficient than other mechanisms like logging.

DVLOG

In media we use DVLOG() a lot. It makes filename-based filtering super easy. Within one file, not all logs are created equal. To make log filtering more convenient, use appropriate log levels. Here are some general recommendations:

  • DVLOG(1): Once per playback events or other important events, e.g. construction/destruction, initialization, playback start/end, suspend/resume, any error conditions.
  • DVLOG(2): Recurring events per playback, e.g. seek/reset/flush, config change.
  • DVLOG(3): Frequent events, e.g. demuxer read, audio/video buffer decrypt or decode, audio/video frame rendering.

MediaLog

MediaLog will send logs to about://media-internals, which is easily accessible by developers (including web developes), testers and even users to get detailed information about a playback instance. For guidance on how to use MediaLog, see media/base/media_log.h.

MediaLog messages should be concise and free of implementation details. Error messages should provide clues as to how to fix them, usually by precisely describing the circumstances that led to the error. Use properties, rather than messages, to record metadata and state changes.

黑脸代表什么 青岛为什么叫青岛 富豪是什么意思 花花世界是什么生肖 手指甲凹凸不平是什么原因
小青柑是什么茶类 沉香对人体有什么好处 尿道炎用什么药治疗最好 供血不足吃什么药 奶粉罐可以做什么手工
马虎眼什么意思 渗透压偏高是什么原因 阳瘘的最佳治疗方法是什么 通字五行属什么 老鼠爱吃什么
冲床工是做什么的 做梦流产了是什么意思 青团是什么节日吃的 什么叫心悸 春天开的花都有什么花
彻夜难眠什么意思hcv9jop1ns3r.cn 晚上睡觉脚抽搐是什么原因hcv8jop8ns6r.cn 盐茶是什么茶hcv8jop7ns0r.cn 郭字五行属什么aiwuzhiyu.com 扁平苔藓是什么病hcv9jop5ns6r.cn
美国现在是什么时间hcv8jop2ns3r.cn 为什么不能送手表hcv8jop0ns7r.cn 什么是客单价xianpinbao.com 肩膀发麻是什么原因hcv9jop1ns3r.cn 囊胚和冻胚有什么区别jasonfriends.com
卵巢保养吃什么好hcv7jop7ns0r.cn 血糖高的人能吃什么水果hcv8jop9ns5r.cn 梗塞灶是什么意思hkuteam.com 做梦丢钱了什么征兆hcv7jop5ns0r.cn 肾不好有什么症状hcv7jop6ns8r.cn
老是打哈欠是什么原因hcv9jop6ns4r.cn 咳嗽消炎药吃什么好hcv8jop4ns3r.cn pb是什么意思hcv7jop9ns6r.cn 粉红粉红的什么填空hcv8jop2ns2r.cn 十月十号是什么星座hcv9jop2ns5r.cn
百度