Android ACodec学习
来源:互联网 发布:photoshop cs4 mac 编辑:程序博客网 时间:2024/05/16 09:50
ACodec如何创建input/output口buffer-allocateBuffersOnPort(OMX_U32 portIndex)
首先通过omx component获取对应codec的buffersize/buffernum
mOMX->allocateBuffer //ACodec创建的是普通的buffer,用于secure playback input/output&usingMetadataOnEncoderOutput
mOMX->allocateBufferWithBackup //ACodec创建的是shared memory, mQuicks & requiresAllocateBufferBit
mOMX->userBuffer
output口如果mNativeWindow不为空:
1.mNativeWindow->dequeueBuffer() //通过SurfaceFlinger拿buffer,如果是播放在osd层,则拿到的是真实的gpu buffer, 如果是播放在hw层,则拿到的是虚拟地址,需要mmap到hw上
2.mOMX->useGraphicBuffer() //将拿到的buffer信息送给omx component
enum PortMode {
KEEP_BUFFERS,
RESUBMIT_BUFFERS,
FREE_BUFFERS,
}
Android ACodec会根据当前处于哪个state来决定buffer如何处理。
KEEP_BUFFERS:当ACodec处于BaseState或者收到OnInputBufferFilled消息但是buffer里面没有填有效数据的时候,ACodec握有的buffer不会送到OMX Component.
RESUBMIT_BUFFERS:当ACodec处于ExecutingState或者处于OutputPortSettingChangedState但是当前是input口buffer时,ACodec将握有的buffer送给OMX Component
FREE_BUFFERS:当ACodec处于OutputPortSettingChangedState并且当前是output口buffer时,ACodec将握有的buffer free
ACodec只有BaseState/ExecutingState/OutputPortSettingChangedState重写了getPortMode,所以PortMode变化只会出现在上述描述的情形。
- Android ACodec学习
- Android ACodec消息机制一
- UNDERSTANDING ANDROID STAGEFRIGHT INTERNALS (IV) – TWO CLIENT ACCESS PARADIGMS: ACODEC AND OMXCODEC
- MediaCodec, ACodec, OMX, DecoderDataLoop
- ACodec和OMXCodec的比较
- MediaCodec与ACodec通知分析
- E/ACodec: [OMX.qcom.video.decoder.avc] ERROR(0x80001009)
- 1. OpenMAX系列 —— ACodec和OMX的联系
- MEDIACODEC在JNI层下的H264,H265视频硬解码实现(ACODEC )
- android学习
- Android学习
- android 学习
- Android学习
- android 学习
- 学习android
- android学习
- Android学习
- android学习
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- label中省略号的位置
- iOS Failed to find matching arch for 64-bit Mach-O input file
- TortoiseSVN:由于目标计算机积极拒绝,无法连接
- 码工之心
- Android ACodec学习
- 彻底理解position与anchorPoint
- ZOJ 2112 Dynamic Rankings [树状数组套主席树]
- ubuntu批量改文件名
- 加人CSDN
- linux下C语言实现静态IP地址,网关的设置
- python metaclass __new__ __init__ ___call__
- PHP笔试题
- tomcat部署项目如何去掉项目名称