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

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

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

haveVideo = true;

} else if (!haveAudio && !strncasecmp(mime, "audio/", 6)) {

setAudioSource(extractor->getTrack(i));

haveAudio = true;

}

2.3》得到的这两个MediaSource,只具有parser功能,没有decode功能。还需要对这两个MediaSource做进一步的包装,获取了两个MediaSource(具有parse和decode功能):

mVideoSource = OMXCodec::Create(

mClient.intece(), mVideoTrack->getFormat(),

false, // createEncoder

mVideoTrack,

NULL, flags);

mAudioSource = OMXCodec::Create(

mClient.intece(), mAudioTrack->getFormat(),

false, // createEncoder

mAudioTrack);

当调用MediaSource.start()方法后,它的内部就会开始从数据源获取数据并解析,等到缓冲区满后便停止。在AwesomePlayer里就可以调用MediaSource的read方法读取解码后的数据。

 对于mVideoSource来说,读取的数据:mVideoSource->read(&mVideoBuffer,

&options)交给显示模块进行渲染,mVideoRenderer->render(mVideoBuffer);

 对mAudioSource来说,用mAudioPlayer对mAudioSource进行封装,然后由mAudioPlayer负责读取数据和播放控制。

3、 StageFright的Decode

经过“数据流的封装”得到的两个MediaSource,其实是两个OMXCodec。AwesomePlayer和mAudioPlayer都是从

MediaSource中得到数据进行播放。AwesomePlayer得到的是最终需要渲染的原始视频数据,而mAudioPlayer读取的是最终需

要播放的原始音频数据。也就是说,从OMXCodec中读到的数据已经是原始数据了。

OMXCodec是怎么把数据源经过parse、decode两步以后转化成原始数据的。从OMXCodec::Create这个构造方法开始,它的参数:

 IOMX &omx指的是一个OMXNodeInstance对象的实例。

 MetaData

&meta这个参数由MediaSource.getFormat获取得到。这个对象的主要成员就是一个

KeyedVector<uint32_t, typed_data>

mItems,里面存放了一些代表MediaSource格式信息的名值对。

 bool createEncoder指明这个OMXCodec是编码还是解码。

 MediaSource &source是一个MediaExtractor。

 char *matchComponentName指定一种Codec用于生成这个OMXCodec。

先使用findMatchingCodecs寻找对应的Codec,找到以后为当前IOMX分配节点并注册事件

器:omx->allocateNode(componentName, observer,


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

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

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