Gstreamer:xvimagesink内部错误:无法分配图像

时间:2019-03-21 13:23:16

标签: c++ gstreamer

我有以下简单的gstreamer管道:

+--------+    +--------------+
| appsrc | -> |  vximagesink |
+--------+    +--------------+

在appsrc的“需要数据”回调中,我有以下几行:

Glib::RefPtr<Gst::Memory> memory =
    Gst::Memory::create(static_cast<Gst::MemoryFlags>(0), ptr, size, 0, size);

Glib::RefPtr<Gst::Buffer> buffer = Gst::Buffer::create();
buffer->insert_memory(-1, std::move(memory));

buffer->set_pts(timestamp);
buffer->set_duration(gst_util_uint64_scale_int(1, GST_SECOND, 30));

srcapp->push_buffer(buffer);

“ ptr”已预先分配,并保存有效数据。

根据文档,在此代码中,分配的数据将被包装在一个内存对象内,而该对象又被缓冲区对象包装。但是这里有些东西行不通,因为vximagesink发送一个错误事件,提示“内部错误:无法分配图像” (这种情况发生在xvimagesink没有可用的池但不需要池的情况下在此示例中。)

管道的构建非常简单(我没有显示属性设置):

pipeline->add(appsrc)->add(sink);
appsrc->link(sink);

我在做什么错了?

0 个答案:

没有答案