我正在嵌入式系统上试验 gstreamer,我想知道是否有办法确定 gstreamer 将使用的最大内存量。如果我有一个简单的source -> filter -> filter -> sink
管道,我能否计算出每个阶段将分配多少缓冲区以及它们的最大大小是多少?
我的理解是我不能限制内存使用,但我至少想了解最坏的情况。这是可能的还是过于依赖运行时条件和/或数据内容。我也是 gstreamer 的新手,所以如果有什么我可以添加到管道中以使其更具确定性,请告诉我。
谢谢!
使用 gstreamer-0.10,您可以使用 gst-tracelib ( http://cgit.freedesktop.org/~ensonic/gst-tracelib/ ) 来获取例如峰值内存消耗和各种数据流相关的统计信息。通常元素不会保留缓冲区的副本。例外是例如队列之类的元素和编解码器(需要保留参考缓冲区)。许多元素尝试就地工作,即它们不分配新缓冲区,而是更改它们接收到的缓冲区并将其传递(例如卷)。