【问题标题】:Pure C-Code of x264 of ffmpegffmpeg x264的纯C代码
【发布时间】:2015-09-22 04:33:46
【问题描述】:

我正在对 FFMPEG 的 Ratecontrol 进行一些硬件实现。我正在使用 x264 编码器,在这里我无法找到此函数intra_mbcmp_x3_8x8c 的 C 代码实现。

我试图追溯它,但只有代码的汇编实现。可以请一些人指导最新 x264 的纯 C 实现。

如果有人帮助我在 FFMPEG 中禁用 x86 标志,这也会很有帮助,这样我就可以运行纯 C 实现。
注意:我检查了一个类似的问题here
但我无法得到我的答案。

【问题讨论】:

    标签: ffmpeg h.264 x264 video-codecs


    【解决方案1】:

    您可能正在寻找this。 mbcmp (sad, satd) 有多种实现方式,因为 x264 允许用户选择使用哪个错误度量。

    哦,和你的第二个问题有关,看看x264 --asm option(或者如果你打算使用API​​,看看它是如何在API端实现的):

    $ ~/Projects/x264/x86-64/x264 --fullhelp|grep -- --asm
          --asm <integer>         Override CPU detection
    

    【讨论】:

    • 感谢您的回复,非常有帮助。现在我已经禁用了 slicetype.c 中函数 intra_mbcmp_x3_8x8c 的汇编代码我面临的问题是函数 intra_mbcmp_x3_8x8c 返回三个 satd 值。我找不到这个函数的等效 C 代码。
    • 我已经将 printf 放在了大多数 C 文件中。但我找不到它的函数体在哪里。我想知道这个函数背后的逻辑 h->pixf.intra_mbcmp_x3_8x8c( h->mb.pic.p_fenc[0], pix, satds );你能帮我知道这个函数的等效C代码吗?提前致谢
    • 我原始回复中“this”中链接到的文件的第 545 行:INTRA_MBCMP(sad, 8x8, dc, h, v, c,, _c), 创建一个函数 void x264_intra_##mbcmp ##_x3_##size##chroma##cpu => x264_intra_sad_x3_8x8c_c,它将在色度平面中的 dc、h 和 v 帧内预测器上执行悲伤(或第 546 行:satd)。我不太明白你在这里不明白的地方,你能更具体一点吗?
    • 感谢您的回复。我想知道 ffmpeg 如何在 x264 中进行 satd 计算。 x264 也以 hor、ver 和 DC 的 min 作为 satd,试图了解其背后的动机
    • 它试图找到最佳色度帧内预测模式,并通过计算每个可用预测模式(H、V、DC)的预测误差(源和预测器之间的差异)然后返回具有最佳预测因子的得分 = 最低错误得分。
    猜你喜欢
    • 2014-11-18
    • 2013-01-15
    • 1970-01-01
    • 2010-12-30
    • 2016-05-10
    • 1970-01-01
    • 2012-08-28
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多