|
VPU(Video Processing Unit)是i.MX27中的视频处理单元,主要用于H.264 BP、MPEG-4 SP、H.263 P3格式的硬件编解码[6]。为了用户能够使用VPU的硬件编解码器,Freescale提供了一套Linux下的基于i.MX27 VPU的库文件。不论是编码还是解码,首先都必须调用vpu_Init()函数对VPU硬件进行初始化。
对于H.264编码,需要执行以下步骤:
(1)调用vpu_EncOpen()函数对VPU编码器初始化;
(2)调用vpu_EncGetInitialInfo()函数获取编码初始化信息;
(3)调用vpu_EncRegisterFrameBuffer()函数注册编码帧缓冲;
(4)调用vpu_EncStartOneFrame()函数,将编码帧缓冲中的每一帧图像数据送入VPU编码器编码,并将编码得到的H.264码流存放到指定的位流缓冲区中;
(5)当需要结束编码操作时,只需调用vpu_EncClose()函数。
对于H.264解码,需要执行以下步骤:
(1)调用vpu_DecOpen()函数对VPU解码器初始化;
(2)调用vpu_DecGetInitialInfo()函数获取解码初始化信息;
(3)调用vpu_DecRegisterFrameBuffer()函数注册解码帧缓冲;
(4)为了获取需解码的H.264码流,可调用vpu_DecGetBitstreamBuffer()函数;
(5)调用vpu_DecStartOneFrame()函数,将H.264码流送入VPU解码器进行解码,并将得到的图像数据存放到解码帧缓冲中;
(6)当需要结束解码操作时,只需调用vpu_DecClose()函数。
|
|