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.

[参考译文] J784S4XEVM:tiovxldc Gstreamer 元素的 LDC LUT 文件格式

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1376811/j784s4xevm-ldc-lut-file-format-of-the-tiovxldc-gstreamer-element

器件型号:J784S4XEVM
主题中讨论的其他器件:test2

工具与软件:

您好!

我们希望使用 tiovxldc Gstreamer 元素来使图像不失真。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1058565/faq-tda4vm-how-to-create-a-ldc-mesh-lut-for-fisheye-distortion-correction-on-tda4中 详细介绍了 LUT 计算。

对于 m=4 (16倍缩小)的传入1280x944图像、LUT 文件应包含具有以下分辨率的网格:

网格宽度为1280/16 + 1 = 81;

网格高度为944/16 + 1 = 60;

填充的 LUT 节距大小= 81 * 2 * 2 = 324四舍五入为16对齐= 336字节

因此、完整填充的 LUT 网格大小为336 * 60 = 20160字节。

我们创建了一个包含10080 S16Q3元素的二进制文件、并尝试将该文件指定为 tiovxldc 的 LUT 文件:

gst-launch-1.0 videotestsrc ! video/x-raw,width=1280,height=944 ! tiovxldc ldc-ds-factor=4 ldc-table-width=1280 ldc-table-height=944 lut-file=./binarylut.lut ! v4l2h265enc ! filesink location=test2.mp4

启动管道后、我们会收到以下错误:

[ERROR] 1503: readImage: Plane [0] bytes read = 20160, expected = 23040

我检查了原始文章并找到了以下图像:

此处、SL2大小是 GStreamer 流水线期望的确切大小。

如果我们检查原始文章中提到的"TEST_mesh_LDC_DCC.xml"、我们的大小计算结果是正确的、但 tiovxldc Gstreamer 元素希望 LDC LUT 文件的内容比实际 mesh_table_size 多:

我们无法使用预先生成的固定 DCC 文件、因为我们需要动态更改并重新计算失真。 您能帮助我们如何生成可与 tiovxldc Gstreamer 元素一同使用的正确 LDC LUT 文件吗?

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

    您好、Adam、

    [quote userid="610558" url="~/support/processors-group/processors/f/processors-forum/1376811/j784s4xevm-ldc-lut-file-format-of-the-tiovxldc-gstreamer-element

    因此、完整填充的 LUT 网格大小为336 * 60 = 20160字节。

    [报价]

    从 LDC H/W 的角度来看、这是正确的。
    336字节是最小 LDC LUT 行宽度。
    较大的行宽(例如336+16,336+32或386)也适用。

    [quote userid="610558" url="~/support/processors-group/processors/f/processors-forum/1376811/j784s4xevm-ldc-lut-file-format-of-the-tiovxldc-gstreamer-element [ERROR] 1503: readImage: Plane [0] bytes read = 20160, expected = 23040
    [报价]

    这似乎表明 gstreamer 流水线期望"384 * 60=23040"字节作为 LDC LUT 的总大小。
    我熟悉 gstreamer 实现、以及为什么每行需要384字节。
    s/w 行对齐可能存在一些问题。

    您可以尝试将原始 LUT 填充为384字节而不是336、然后重新测试。
    我希望这对您有效。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid="610558" url="~/support/processors-group/processors/f/processors-forum/1376811/j784s4xevm-ldc-lut-file-format-of-the-tiovxldc-gstreamer-element

    此处、SL2大小是 GStreamer 流水线期望的确切大小。

    [报价]

    这只是巧合。

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

    尊敬的

    感谢您的快速回复。 是的、我曾认为相同、但我们传递给 GStreamer 元素的只是:
    tiovxldc ldc-ds-factor=4 ldc-table-width=1280 ldc-table-height=944 lut-file=./binarylut.lut

    那么、如果我们决定应用更大的填充、tiovxldc Gstreamer 元素如何知道我们在 binarylut.LUT 文件中使用的实际填充是什么? 它需要基于宽度和 LDC-DS-factor、否则 tiovxldc 无法计算它。

    但有趣的是、即使在 DCC 配置期间、LUT 的间距也与我们使用的间距相匹配、为什么 GStreamer 元素会期望不同的间距、如果会、我们如何计算?  因为现在观察该问题的唯一方法是尝试设置。 我已经检查了 GStreamer 元素的源代码、它只需将 LUT 文件传递到底层低电平 LDC API。

    因此、如果 GStreamer 元素需要在 LUT 文件中具有不同的间距、我们需要确切的方法来计算它、因为现在的唯一方法是基于我们获得的运行时错误消息。

    谢谢!
    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="610558" url="~/support/processors-group/processors/f/processors-forum/1376811/j784s4xevm-ldc-lut-file-format-of-the-tiovxldc-gstreamer-element/5260325 #5260325"]

    tiovxldc ldc-ds-factor=4 ldc-table-width=1280 ldc-table-height=944 lut-file=./binarylut.lut

    [报价]

    Gstreamer 必须使用这些输入并在做一些假设的情况下决定填充。
    假设每行的 LUT 元素数量为16个字节、而不是16 个字节、这将产生384个字节、而不是336个字节。

    但有趣的是、即使在 DCC 配置期间、LUT 的俯仰也与我们使用的俯仰相匹配、

    自然假设将是最小字节数、即调优工具和 LDC 常见问题解答计算行宽度的方式。

    请告诉我384是否适合您。

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

    这确实是计算俯仰的正确方法。

    因此、网格宽度为1280 / 16 + 1 = 81;

    网格高度为944/16 + 1 = 60;

    网格宽度应与16对齐、因此为96。

    填充的 LUT 间距大小= 96 * 2 * 2 = 384。

    因此、完全填充的 LUT 网格大小为384 * 60 =  23040字节。

    我们也用其他决议对它进行了测试、它在所有情况下都是有效的。

    非常感谢

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

    您好、Adam、

    感谢您的确认!

    这是我怀疑的。
    这应该是由于对行对齐要求的误解。
    我将检查是否有人可以在 gstreamer 中解决该问题。

    我将关闭此主题帖、如果您有任何其他问题、请随时打开一个新主题帖。