2012-12-19 32 views
3

我正准备抓住我的树莓派的视频输出,将它传递给adalight环境闪电系统。 XBMC的播放器为PI,omxplayer,用户使用OpenMAX API进行解码等功能。编写一个OpenMAX IL组件,从哪里开始

寻找到代码给出如下:
m_omx_tunnel_sched.Initialize(&m_omx_sched, m_omx_sched.GetOutputPort(), &m_omx_render, m_omx_render.GetInputPort());

据我明白,这台视频调度器和渲染器之间的管道[S] - > [R]。

现在我的想法是写一个抓取器组件,并插入它很难进入管道[S] - > [G] - > [R]。抓取器将从帧缓冲区中提取像素并将其传递给驱动LED的deamon。

现在我正要深入研究OpenMAX API,这似乎很奇怪。我应该从哪里开始?这是一种可行的方法吗?

问候

+0

覆盆子pi真的很好吃。 –

+0

据我现在了解,一个不能注册OpenMAX组件,只有Broadcom可以做到这一点 – Stasik

回答

2

如果你想解码的数据,那么就是不发送到渲染器。不要渲染,取得数据并做任何你想做的事情。解码后的数据应该从OpenGL IL组件的输出端口获取。我想你还需要设置正确的输出像素格式,因此请将组件输出端口设置为您需要的正确格式,以便转换由GPU完成(YUV或RGB565可用)。

+0

是否有一些事件处理程序,我可以在帧解码完成后调用? – Stasik

+0

我如何从解码器中读取数据?只需调用GetOutputBuffer()? – Stasik

+0

当输出端口未被隧道传输时,FillBufferDone回调将接收缓冲区。阅读OpenMAX文档以获取更多信息。 –

0

起初我认为你应该给摄像头组件的输出附加一个缓冲区,用CPU中的这个帧做所有你想要的,并且通过附加到渲染输入端口的缓冲区发送一帧,它不会去这是一项微不足道的任务,因为在树莓上几乎没有关于OpenMax的文档。

最好的地方,开始:有手部 https://jan.newmarch.name/RPi/

最好的地方: http://home.nouwen.name/RaspberryPi/documentation/ilcomponents/index.html

下一个最好的地方:在互联网上分发源代码。

祝你好运。