为什么 gstreamer 解复用器需要队列?

问题描述 投票:0回答:1

我使用过各种 gstreamer 解复用器,如 qt、ogg 和 matroska,每次在每个解复用器垫后不使用队列时,我都会发现死锁/停顿问题。

但是我似乎无法在源代码或文档中找到造成这种情况的原因。 gstreamer 不是每个 pad 使用一个线程吗?因此,一个被阻挡的垫子也不会阻挡另一个垫子。

c++ video video-streaming gstreamer gstreamer-1.0
1个回答
0
投票

根据传入流的速率,多路分解过程可能不够快。

在简单情况下,对单个 pad 进行解复用并且下游元素能够足够快地处理数据,可能不需要队列,但这是一个非常具体的用例。

这还取决于下游的管道元素,它们的处理时间很慢。这可能会导致延迟增加,直到解复用器可能无法将已处理的缓冲区出队。

© www.soinside.com 2019 - 2024. All rights reserved.