This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320DM8168:如何将 GstBuffer 推入 OMX_h264enc

Guru**** 2546020 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/620475/tms320dm8168-how-to-push-gstbuffer-into-omx_h264enc

器件型号:TMS320DM8168

大家好、

我的问题只涉及 gstreamer 技能、我希望有人可以为我写下一些技巧。

我正在编写代码以运行以下流水线:appsrc -> OMX_h264enc -> rtph264pay -> udpsink
我的代码以 FPS ~ 8ms 运行、因为有一些 memcpy 可将数据从 GstBuffer 复制到 OMX 缓冲区。

我有8个用于图像数据的缓冲区。 下面是我将数据从 appsrc 推入编码器的代码
GstBuffer * buffer = GST_buffer_new();
GST_buffer_MALLOcData (buffer)=帧缓冲区[i];
gst_buffer_size (buffer)=帧大小;
GST_buffer_data (buffer)= GST_buffer_MALLOcData (buffer);
GST_buffer_free_FUNC (buffer)= customFreeSharedMemory;

GstFlowReturn = GST_APP_src_push_buffer (appsrc、buffer);

我正在尝试在 appsrc 和 OMX_h264enc (GstBuffer 和 OMX 缓冲区)之间共享数据。 OMX 使用 omxbufferalloc 将不带 memcpy 的缓冲区传递到 OMX 组件。
omxbufferalloc 使用来自共享区域2的 malloc 数据分配一些 OMX_BUFFERHEADERTYPE 结构。 我无法使用 omxbufferalloc、因为我的应用程序必须分配帧缓冲区。

在我的代码中、我必须使用元素 appsrc 将帧数据推入流水线。 我想、在默认设置下、OMX_h264enc 将使用 OMX_AllocateBuffer 和 memcpy GstBuffer 数据创建一个新的 OMX_BUFFERHEADERTYPE 结构。 因此、我需要找到推入 GstBuffer 的方法、OMX 只需要使用来自 GstBuffer 的数据调用 OMX_UseBuffer。

有人能帮我一秒钟吗?
非常感谢!