用于嵌入式系统的开源视频编码器

时间:2011-05-31 00:49:23

标签: c++ c linux voip embedded-linux

我最近设计了一个H.323 / SIP兼容的视频服务器(至少在代码中),它完全配备了.NET SDK可以使用的基于套接字的API,以及一个Web服务器。 ......所有这些东西。无论如何,我选择使用OPAL作为我的调用堆栈,并根据EKIGA的设计松散地构建我的架构。我甚至用两个输出和三个输入劫持了数字I/O的串口。

我的Linux P.C中的一切都运行良好。我专门针对具有Linux distribution处理器和2 GB Intel Atom的新电路板构建了自己的RAM。问题? Atom处理器无法处理编码器的负载。我所获得的最大帧速率约为NTSC的7 FPS。无论比特率如何,它都会这样做。我知道我没有任何内存泄漏,但是CPU负载在两个内核之间上升到大约130%,所以总共大约66%。我真的不想改变堆栈,但我不知道我需要做什么。是否有一些重量较轻的编码器可以转换成PWLIB插件?

无论视频编码器,H.261,theora,H.263+等等,问题都会发生......我的下一次攻击计划应该是什么?

更新

好的,所以我认为我的下一步行动是找到一个非常低调的PCIe GPU OpenGL兼容;它需要平行于主板。我怎样才能做到这一点?我也在吠叫错误的树吗?我只是一名程序员,所以请原谅我的无知。

其他问题:

假设我得到另一块带GPU的电路板。如何确保编码是在GPU上完成而不是在CPU上完成?这是由操作系统和驱动程序管理的吗?我需要编写特殊代码才能这样做吗?此外,在我看来,GPU的主要功能是渲染和输出,它是否也管理实际的变换和编码?一本好的书推荐会很好。

更多信息

我现在怀疑GPU不是问题所在。我认为这可能与时间空间权衡有关。我在我的超频i7 950上安装了闪光灯并且遇到了同样的问题。我发现帧速率会下降,但是如果没有运动,那么我可以保持高帧率。我还与OPAL VoIP的一位架构师进行了交谈,他们也怀疑GPU是否存在问题。问题还有什么呢?

2 个答案:

答案 0 :(得分:2)

单独使用Atom可能无法完成任务。一些Atom板配备了可用于卸载编码的GPU。否则,请查看带有DSP的电路板或可以进行编码的专用视频编解码器硬件。

答案 1 :(得分:1)

这是微观化的时候:仔细研究内循环的时间。

您需要确定哪些内部循环很重要,然后仔细查看如何获得最大吞吐量。您还可以进行健全性检查:机器真的可以做您想做的事吗?例如。如果你需要进行多次/累积操作并且你有n / 3个周期,那么就存在一个基本问题,你需要做其他事情。