OMXCodec源码分析---part1

OMXCodec 是awesomeplayer和下层omax组件的桥梁,试着来分析一下

OMXCodec在 initVideoDecoder中来创建   

  mVideoSource = OMXCodec::Create(
            mClient.interface(), mVideoTrack->getFormat(),
            false, // createEncoder
            mVideoTrack,
            NULL, flags, USE_SURFACE_ALLOC ? mNativeWindow : NULL);
 
mClient是omxclient,awesomeplayer利用这个类来实现和omx的连接,google设计OMX也是一个aidl的远程接口,所以说呢,OMX并不是只是给mediaplayer service来用的,是提供了接口供其他应用来使用的。第二个参数是MetaData,利用这个参数来找video的metadata相关参数,第四个是videotrack,就是videoextractor返回的track,flags是取下面的值

{
        kPreferSoftwareCodecs    = 1,
        kIgnoreCodecSpecificData = 2,
        // The client wants to access the output buffer's video
        // data for example for thumbnail extraction.
        kClientNeedsFramebuffer  = 4,
        // Request for software or hardware codecs. If request
        // can not be fullfilled, Create() returns NULL.
        kSoftwareCodecsOnly      = 8,
        kHardwareCodecsOnly      = 16,
        // Store meta data in video buffers
        kStoreMetaDataInVideoBuffers = 32,
        // Only submit one input buffer at one time.
        kOnlySubmitOneInputBufferAtOneTime = 64,
        // Enable GRALLOC_USAGE_PROTECTED for output buffers from native window
        kEnableGrallocUsageProtected = 128,
        // Secure decoding mode
        kUseSecureInputBuffers = 256,
     //RCS Video share
        kIsVsh = 512,
    }

最后一个nativewindows,java层播放视频时候需要setdisplay,surface经过一系列的转换后,就成了anativewindow,后面打算写一个display的博客,再详细的分析这个吧

这样omxcodec就创建好了,返回一个videosource,就是解码好的videotrack


看看create里面做啥了

sp<MediaSource> OMXCodec::Create(
        c
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值