b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

stagefright框架_stagefright是什么_感染stagefright怎么办(4)

电脑杂谈  发布时间:2017-05-31 00:02:39  来源:网络整理

 mVideoRenderer(对解码好的视频进行格式转换,android使用的格式为RGB565)

 mISuce(重绘图层)

 mQueue(event事件队列)

4.2》stagefright运行时的Audio部分抽象流程如下:

 设置mUri的路径

 启动mQueue,创建一个线程来运行 threadEntry(命名为TimedEventQueue,这个线程就是event调度器)

 打开mUri所指定的文件的头部,则会根据类型选择不同的分离器(如MPEG4Extractor)

 使用 MPEG4Extractor对MP4进行音视频轨道的分离,并返回MPEG4Source类型的视频轨道给mVideoTrack

 根据 mVideoTrack中的编码类型来选择,avc的编码类型会选择CDecoder,并返回给mVideoSource,并设置mVideoSource中的mSource为mVideoTrack

 插入onVideoEvent到Queue中,开始解码播放

 通过mVideoSource对象来读取解析好的视频buffer

如果解析好的buffer还没到时间戳同步的时刻,则推迟到下一作

 mVideoRenderer为空,则进行初始化(如果不使用 OMX会将mVideoRenderer设置为AwesomeLocalRenderer)

 通过mVideoRenderer对象将解析好的视频buffer转换成RGB565格式,并发给display模块进行图像绘制

 将onVideoEvent重新插入event调度器来循环

4.3》数据由源到最终解码后的流程如下:

URI,FD

DataSource

MediaExtractor

|

mVideoTrack mAudioTrack//音视频数据流

mVideoSource mAudioSource//音视频

| |

mVideoBuffer mAudioPlayer

说明:

 设置DataSource,数据源可以两种URI和FD。URI可以,rtsp://等。FD是一个本地文件描述符,能过FD,可以找到对应的文件。

 由DataSource生成MediaExtractor。通过sp<MediaExtractor> extractor =

MediaExtractor::Create(dataSource);来实现。

MediaExtractor::Create(dataSource)会根据不同的数据内容创建不同的数据读取对象。

 通过调用setVideoSource由MediaExtractor分解生成音频数据流(mAudioTrack)和视频数据流(mVideoTrack)。

onPrepareAsyncEvent()如果DataSource是URL的话,根据地址获取数据,并开始缓冲,直到获取到mVideoTrack和

mAudioTrack。mVideoTrack和mAudioTrack通过调用initVideoDecoder()和

initAudioDecoder()来生成

mVideoSource和mAudioSource这两个音视频。然后调用postBufferingEvent_l()提交事件开启缓冲。

数据缓冲的执行函数是onBufferingUpdate()。缓冲区有足够的数据可以播放时,调用play_l()开始播放。play_l()中关键是

调用了postVideoEvent_l(),提交了


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-50196-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...