目录标题
- DSP芯片原理讲解
- MediaCodec编码机制
- MediaCodec解码H264、H265原理,深度解析视频解码流程
- H265硬解码兼容问题
- 参考
DSP芯片原理讲解
帧在码流中的传输顺序和真正的播放顺序是不同的。
视频中的每一帧都有一个pts值,越靠后播放的帧pts值就越大,越先播放的帧,pts越小。也是根据这个pts的值的大小来确定到底要先播放哪一帧后播放哪一帧的。
码流中,首先传输的是I帧,然后传输的是P帧,但是渲染并不一定就是按这个顺序了,因为还存在B帧,如果不存在B帧的视频,就会按照这个顺序先渲染I帧再渲染P帧。
如果有B帧存在,I帧渲染之后,P帧解码之后会存储进DSP芯片中,然后去判断P帧之后的帧的pts,判断后面这一帧的pts与进入DSP的P帧的pts进行比较,如果P帧的pts大于后面这一帧的pts,那么说明后面这一帧要在P帧之前渲染播放,这也就确定了后面这一帧必然是B帧。
假设后面帧的pts都大于DSP中的P帧中的pts,那说明后面这一帧就是P帧或者是I帧了。
pts是什么?pts是编码时候追随每一帧放入的时间戳参数。
MediaCodec编码机制
解码分为硬解和软解。 硬解主要特点是解码速度快,不发热,但是兼容性比较差,因为要依赖具体硬件设备。硬解码主要使用的是MediaCodec。 MediaCodec访问底层的编解码器,也就是访问native层,Android SDK层,framework层。
移动端MediaCodec解码的时候都是交给DSP芯片进行解码的,解码以后再交给GPU或者CPU,
DSP芯片处理的就是压缩数据,也就是码流,DSP芯片进行解码生成对应的YUV数据,然后把YUV数据交给GPU,GPU把原始数据渲染出来显示在屏幕上。
也就是说.h265的数据通过MediaCodec解码,生成原始YUV数据,渲染在srufaceView中就可以展示出来了。
软解码,解码速度比较慢,发热,但是兼容性较好。
MediaCodec解码H264、H265原理,深度解析视频解码流程
一个视频文件,每一个I帧之前都是sps和pps的数据。一个视频文件,它的sps是相同的pps也是相同的。不同的视频文件肯定就是不同的。
H265硬解码兼容问题
参考
关于H264、H265中的帧内压缩和帧间压缩
【H2645】H.264的宏块和H.265的编码树单元总结
h264和h265的区别