有意思的硬件编解码问题

平台: 高通8625Q

软件系统:android 4.1.2

概述:由于项目需要,使用mediacodec的cpp接口 完成视频的H264编解码功能,camrea数据处理后传给mediacodec encoder;

mediacodec decoder解码出的数据在c层通过opengl的接口绘制到glsurface上去。另外,由于使用的是手机,所以屏幕ui是竖屏。

问题现象:解码乍一看显示正常,但是挥挥手,快速的动一下,就发现屏幕上很多色点,甚至有横向的杂线。

分析:最先怀疑是编码器或者解码器配置的问题,但是检查了一下,没发现哪里配置不对,后来用ffmpeg软件解码器来解码,发现

解码出来的画面有四个重影,估计是宽和高弄错了,于是更换mediacodec encoder的编码宽高,发现ffmpeg解码正常了,快速晃动

也没有噪点、横线。于是换回mediacodec decoder,发现解码出来的图像也正常了。

总结:这个问题是由于编码宽和高设置的问题,对于mediacodec encoder ,宽和高设反了也一样可以编码,同样的宽和高设反了也

一样可以解码。但是,编码器编码出来的图像还是有隐藏的问题的,比如这个快速晃动会出现噪点的问题。

后记:坑爹的android系统,竖屏的时候,camera采集的图像是九十度的,用过camera.setPreviewCallback(new Camera.PreviewCallback(){};

接口的都知道这个问题。这样手动编码的时候还要把图像旋转一下。

 

你可能感兴趣的:(有意思的硬件编解码问题)