文章目录
应用流程
外部主动获取输入和输出buffer
解码的调用流程,以android原生的一个bin来说明
android 原生代码位置: frameworks/av/cmds/stagefright/codec.cpp
frameworks/av/cmds/stagefright/SimplePlayer.cpp
编译出来的是codec的bin,使用bin播放mp4, 可以使用如下的命令进行调试。
screenrecord /sdcard/test.mp4
codec -pSR /sdcard/test.mp4
-
prepare: 跟编码同样的流程
createByType: 根据MIME创建解码器。
configure:配置视频宽高、fromat信息到解码器。
start:启动解码器进行解码。
获取输入和输出的buffer 队列:先dequeue有效的输入buffer,然后将extract到的csd数据放入到这块buffer 中, 将这块buffer在queue到codec中(作用是 将解码所需要的额外的数据 给到解码器,类似于ffmpeg中的extradata)。 -
start: dequeue所有可用的input 和output buffer。然后解析封装读取数据 将数据拷贝到dequeue出来的input buffer 中, 拷贝完成后 queue到解码器&