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.

[参考译文] Linux/DRA746:如何将 codecdata/extra 数据传递到 h264的 libdce?

Guru**** 2558250 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/609830/linux-dra746-how-to-pass-codecdata-extra_data-to-libdce-for-h264

器件型号:DRA746

工具/软件:Linux

当 h264以 mp4格式包含时、有编解码器数据(ffmpeg 将其称为 extra data)。

(它包含 SPS/PPS 信息、但不包含 SPS/PPS 的原始格式)

如何将这些数据传递到 libdce?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    应用程序是否应将 extradata 转换为 IH264VDEC_NAL_UNIT_format 格式? 然后将其发送到 libdce?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Halley、

    我无法看到您提到的那种 extra 数据。 您能添加更多信息吗?

    IH264VDEC_NAL_UNIT_FORMAT bitStreamFormat 是为了指示流没有 NAL 单元的起始代码。

    Ramprasad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以 ffmpeg 为例、这里是: github.com/.../avcodec.h
    它包含 H264的 sps/pps 信息、该信息从 mp4容器中提取。

    libdce 是否直接接受它? 或者我需要将其转换为 IH264VDEC_NAL_UNIT_FORMAT 格式的 SPS/pps?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Halley、

    解码器本身从 IDR 帧检测并解码 SPS /PPS 标头。 您可以尝试 targetfs 的/usr/share/ti/video 中存在的.264基本流

    Ramprasad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    mp4文件格式中的 exadata 包括 sps/pps 信息、但不包括原始 sps/pps。 应从 extradata 中提取 sps/pps:
    github.com/.../h264_parse.c
    2.由于您说 libdce 从 IDR 帧解析 SPS/PPS。 (我们可以从 libdce API 中看到一个输出帧使用一个输入缓冲器发送)

    因此,我得出的结论是:
    应用程序需要解析来自 exadata 的 sps/pps、然后将其前缀为第一个视频帧数据(在将缓冲区发送到 libdce 之前)。

    当我们讨论 h264解码时、通常它不是关于基本流、而是包含在 mp4文件格式中。
    SPS/pps 信息以不同的方式以文件格式提供。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Halley、

    [引用用户="Halley Zhao"]1. mp4文件格式的 extradata 包括 sps/pps 信息,但不包括原始 sps/pps。 应从 extradata 中提取 sps/pps:
    github.com/.../h264_parse.c

    您的意思是、它的额外数据与此链接的第19.5节中的数据相同吗?  

    [引用用户="Halley Zhao"的话]因此,我得出的结论是:
    应用程序需要解析来自 exadata 的 sps/pps、然后将其前缀为第一个视频帧数据(在将缓冲区发送到 libdce 之前)。

    当我们讨论 h264解码时、通常它不是关于基本流、而是包含在 mp4文件格式中。
    SPS/pps 信息以不同的方式以文件格式提供。

    是的、如果您指向上面链接中的 exadata 或 mp4格式的数据、则您的假设是正确的、 在这种情况下、应用程序或框架应解析所有这些 exadata、并向 libdce 提供基本格式流、然后 libdce 将其发送到编解码器。

    编解码器仅接受基本格式的数据、它不理解容器/mp4文件格式。  

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

    是的、我们所说的是相同的东西。

    我对接口设计提出质疑、为什么不支持 libdce 的 extra data 和 nal_size_NALU 数据?

    它可以避免对将元素流放入多个 nal/slices 进行一些计算 --我假设硬件按 slice 处理数据片段。