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

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

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

&node)。最后,把IOMX封装进一个OMXCodec:

sp<OMXCodec> codec = new OMXCodec(

omx, node, quirks,

createEncoder, mime, componentName,

source);

这样就得到了OMXCodec。

AwesomePlayer中得到这个OMXCodec后,首先调用mVideoSource->start()进行初始化。 OMXCodec初始化主要是做两件事:

 向OpenMAX发送开始命令。mOMX->sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle)

 调用allocateBuffers()分配两个缓冲区,存放在Vector<BufferInfo> mPortBuffers[2]中,分别用于输入和输出。

AwesomePlayer开始播放后,通过mVideoSource->read(&mVideoBuffer,

&options)读取数据。mVideoSource->read(&mVideoBuffer,

&options)具体是调用OMXCodec.read来读取数据。而OMXCodec.read主要分两步来实现数据的读取:

 通过调用drainInputBuffers()对mPortBuffers[kPortIndexInput]进行填充,这一步完成 parse。由OpenMAX从数据源把demux后的数据读取到输入缓冲区,作为OpenMAX的输入。

 通过fillOutputBuffers()对mPortBuffers[kPortIndexOutput]进行填充,这一步完成 decode。由OpenMAX对输入缓冲区中的数据进行解码,然后把解码后可以显示的视频数据输出到输出缓冲区。

AwesomePlayer通过mVideoRenderer->render(mVideoBuffer)对经过parse和decode

处理的数据进行渲染。一个mVideoRenderer其实就是一个包装了IOMXRenderer的AwesomeRemoteRenderer:

mVideoRenderer = new AwesomeRemoteRenderer(

mClient.intece()->createRenderer(

mISuce, component,

(OMX_COLOR_FORMATTYPE)format,

decodedWidth, decodedHeight,

mVideoWidth, mVideoHeight,

rotationDegrees));

4、 StageFright处理流程

Audioplayer

为AwesomePlayer的成员,audioplayer通过callback来驱动数据的获取,awesomeplayer则是通过

videoevent来驱动。二者有个共性,就是数据的获取都抽象成mSource->Read()来完成,且read内部把parser和dec

绑在一起。Stagefright

同步部分,audio完全是callback驱动数据流,video部分在onVideoEvent里会获取audio的时间戳,是传统的时间戳

做同步。

4.1》AwesomePlayer的Video主要有以下几个成员:

 mVideoSource(解码视频)

 mVideoTrack(从多媒体文件中读取视频数据)


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

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

    • 田壮仕
      田壮仕

      我们才知道美舰闯哪个礁

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