【问题标题】:Check the Validity of x264 Nal Units检查 x264 Nal 单位的有效性
【发布时间】:2014-01-07 12:40:01
【问题描述】:

我正在使用 x264 编码器 api,对于每张编码的图片,我都会得到一些最终单元。有什么方法可以在我的 VS2010 调试器中检查 nals 是否有效。目前我可以看到以下信息::

i_ref_idc        -858993460
i_type           -858993460
b_long_startcode -858993460
i_first_mb       -858993460
i_last_mb        -858993460
i_payload        27
p_payload        0x06b94d68
i_padding        -858993460

我不确定这些负值是否表示 nals 无效或缺少信息。
基本上我如何检查我从 x264_encoder_encode() 获得的 nals 是否是有效的 nal 单元?
注意 ::我正在使用这些 nals 使用 LIVE555 进行直播。

【问题讨论】:

    标签: c++ ffmpeg x264


    【解决方案1】:

    -858993460 也称为0xССССССССindicate,其值未由编码器初始化。

    i_payloadp_payload 是有效负载的大小(以字节为单位)和指向数据的指针。除了将数据提供给解码器并针对输出和解码错误的可用性进行测试之外,基本上没有对该数据的有效性检查。

    【讨论】:

      【解决方案2】:

      这绝对是无效的。如果不解析整个事物,您无法确定 nalu 是否 100% 有效。但是您可以健全检查值。

      i_ref_idc 是一个 2 位字段。任何超出 0-3 范围的东西都是不理智的。

      i_type 为 5 位。但实际上编码器只会产生 1-15 或 19-21(含)

      b_long_startcode 是布尔值,因此您无法对其进行完整性检查

      i_first_mb 和 i_last_mb 将小于 ceil(width/8.0) * ceil(height/8.0)

      i_payload 是 p_payload 指向的数据的大小,所以在这里选择一个高值。 10*with*height 应该足够了。

      【讨论】:

        猜你喜欢
        • 2014-06-02
        • 2014-05-13
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 2011-04-17
        • 1970-01-01
        • 2011-10-15
        • 1970-01-01
        相关资源
        最近更新 更多