LeMaker Guitar:视频解码

From BananaPro/Pi
Jump to: navigation, search
This page is a translated version of the page LeMaker Guitar:Video decoder engine and the translation is 100% complete.

Other languages:
English • ‎中文(简体)‎

介绍

LeMaker Guitar VDE(Video Decoder Engine) 是基于 OpenMAX的解码器组件。 OpenMAX (Open Media Acceleration),通常缩写为"OMX", 是一个非专有、免费、跨平台的C语言编程接口,提供用于音频、视频和静态图像处理的抽象例程。 它主要用于那些需要对大量的多媒体数据(如视频编解码、图形库和其它的音视频、图像、语音的功能)以可预测方式进行高效的处理的低功耗和嵌入式设备(包括智能手机、游戏机、数字媒体播放器、机顶盒等)。 OpenMAX 一共提供三层接口:应用层(application layer:AL),集成层(integration layer:IL) 和开发层(development layer:DL)。

OMX_VDE 有两个端口: port1 为视频流输入接口,port2 为视频流输出接口。OMX_VDE 支持许多视频格式,例如:AVC(H264), H263, MJPEG, MPEG2, MPEG4, WMV3 等等……

使用 OMX_VDE

初始化组件

Component Init.png

  1. 调用 OMX_GetHandle 初始化组件;
  2. 调用 OMX_SetParameter 初始化端口并设置格式;
  3. 允许端口缓冲。缓冲可从端口上层,也可以通过调用 OM_AllocateBuffer 为端口分配。
  4. OMX_StateIdle 状态变化完成。

运行组件

Component Run.png

  1. 组件状态变化为 OMX_StateIdle 的过程会将负责缓冲区的输入输出的 bufferMgmtThreadID 线程开启。
  2. 通过缓冲区 EmptyThisBuffer (输入端口) 和 FillThisBuffer (输出端口), 当组件完成, EmptyBufferDone (输入端口) 和 FillBufferDone (输出端口) 将返回缓冲区。
  3. 如果组件发生异常, EventHandler将会给上层发送消息处理。

取消组件初始化

Component Deinit.png

  1. 将组件的状态改为 OMX_StateLoaded, bufferMgmtThreadID 将停止运行。
  2. 调用 OMX_FreeHandle 释放组件资源。


OMX_VDE 例子

第一步:下载并安装 omx lib

sudo wget http://mirror.lemaker.org/omx.tar.gz
sudo tar –zxvf omx.tar.gz
chown -R root:root .
sudo ./install.sh

omx 头文件被安装在 /usr/include/omx-include, omx 视频解码库安装在 /usr/lib, 全程代码在 /home/owlplayer。

第二步: 编译owlplayer

cd /home/owlplayer
make

第三步: 测试

cd /home/owlplayer
./owlplayer [videoname]

第四步: 测试结果
当执行 ./owlplayer videoname 时, 你会在 /home 目录下发现 "NV12_wxxx_hxxx"。 "NV12_wxxx_hxxx" 会记录 "videoname"中的50帧图像。 "NV12" 表示像素格式为 NV12。"xxx" 表示宽度或高度。 你可以在Windows 电脑上运行 YUVPlayer.exe 播放"NV12_wxxx_hxxx"。

另请参阅