芯片为DM8148,使用DVR RDK4.1进行开发,做H.264编码,使用4D1的usecase,此usecase流程中,有编码后取出到A8核,再由A8写入到本地文件,在调试中发现,每次去enc中取编码数据时,有时候会一次返回两帧,从数据帧大小看,是一个I帧一个P帧。
请问:1,编码器一次编码一帧数据,为什么会取一次数据返回两帧数据?
2.是否可以通过参数设置,达到取一次数据只返回一帧的效果?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
芯片为DM8148,使用DVR RDK4.1进行开发,做H.264编码,使用4D1的usecase,此usecase流程中,有编码后取出到A8核,再由A8写入到本地文件,在调试中发现,每次去enc中取编码数据时,有时候会一次返回两帧,从数据帧大小看,是一个I帧一个P帧。
请问:1,编码器一次编码一帧数据,为什么会取一次数据返回两帧数据?
2.是否可以通过参数设置,达到取一次数据只返回一帧的效果?
ENC link数据通过IpcBitInLinkHLOS_CreateParams 给到A8,A8取数据的时候是通过一个结构体,结构体返回本次取回几帧,以及数据地址,多数时候是1帧,有时候是2帧,而且两帧中小的是几k,打的是30或者40k,都有0x00000001的帧头,所以认为是I帧和P帧,请问这一处是因为取数据太慢造成的吗?或者是参数设置不当造成的吗?
首先感谢您的热心回答!只是数据太多,您跟我说下您的关注点,我再截取
刚查了一下,应当不会出现你说的现象,有多个视频帧同时输出的;
这个问题,你可以再去确认一下数据;
您好,看来是我理解错了,rdk中ipcBitsInLink_tsk.c中有函数IpcBitsInLink_getFullBitBuf()中的循环可取回最多64帧,如果改成1帧即返回,数据延迟会很大,我是不是可以这样理解,enc每次编码一帧放入que,IpcBitsInLink_getFullBitBuf()取回则不一定每次取回一帧数据,视情况而定?我的程序中设置的编码后的bitRate为1Mbit/s,多数时候是IpcBitsInLink_getFullBitBuf()返回取回一帧数据,少数情况是返回一帧I帧和一帧P帧,I帧P帧顺序不一定。