【问题标题】:How to get the information of encoded video from the Decoder TAppdecoderStatic HM model如何从Decoder TAppdecoderStatic HM模型中获取编码视频的信息
【发布时间】:2020-10-27 19:44:01
【问题描述】:

我正在尝试从 HEVC 测试模型的解码器中获取压缩帧的信息(包括帧内、运动矢量、系数)。我在 Linux 中使用了这个命令:

env PRINT_COEFF=1 PRINT_INTRA=1 PRINT_MV=1 SAVE_PREFILT=1 ./TAppDecoderAnalyserStaticd -b "BasketballDrive_1920x1080_50_50.bin"
-o "BasketballDrive_1920x1080_50_50.yuv"

但它只返回这样的结果

HM software: Decoder Version [11.0][Linux][GCC 7.5.0][64 bit] 

POC    0 TId: 0 ( I-SLICE, QP 27 ) [DT  0.049] [L0 ] [L1 ] [:,,,(unk)] 
POC    1 TId: 0 ( P-SLICE, QP 30 ) [DT  0.016] [L0 0 ] [L1 ] [:,,,(unk)]  
POC    2 TId: 0 ( P-SLICE, QP 29 ) [DT  0.019] [L0 1 0 ] [L1 ] [:,,,(unk)]  
POC    3 TId: 0 ( P-SLICE, QP 30 ) [DT  0.015] [L0 2 1 0 ] [L1 ] [:,,,(unk)]  
POC    4 TId: 0 ( P-SLICE, QP 28 ) [DT 0.017] [L0 3 2 1 0 ] [L1 ] [:,,,(unk)]  
POC    5 TId: 0 ( P-SLICE, QP 30 ) [DT  0.009] [L0 4 3 2 0 ] [L1 ] [:,,,(unk)]  
POC    6 TId: 0 ( P-SLICE, QP 29 ) [DT  0.011] [L0 5 4 3 0 ] [L1 ] [:,,,(unk)]  
POC    7 TId: 0 ( P-SLICE, QP 30 ) [DT  0.010] [L0 6 5 4 0 ] [L1 ] [:,,,(unk)]  
enter code hereTotal Time:        0.172 sec.

我期待的结果是这样的 information from compressed video

有什么办法可以解决这个问题吗? 谢谢。

【问题讨论】:

    标签: encoder decoder hevc


    【解决方案1】:

    我不知道那些 PRINT_X 参数是从哪里来的。但是根据官方的HM代码,他们应该什么都不做。

    第二,帧的帧内模式或MV是什么意思?您询问的信息在块级别。

    这样的块级信息可以在解析过程中记录下来。

    【讨论】:

    • 感谢您的回答。首先,我正在尝试运行此代码link。目标是使用来自解码器的信息来加速应用于压缩视频的超分辨率算法,而不是对每一帧都应用 SR 算法。我也不知道作者是如何设置 PRINT_X 参数的,尽管我阅读了我对 HEVC 不熟悉的文档并且我已经误解了这些参数与运动矢量或残差矩阵有关,您的回答已经对我有很大帮助。如何在解析过程中记录 Block 级别的信息?谢谢
    • 我查看了您链接中提供的代码,但没有找到任何关于 HM 或那些 PRINT_X 参数的信息。也许你把它弄清楚了,这样我才能更准确地提供帮助。 (我解释了如何在新评论中提取块级信息)
    • 可能那些PRINT_X是作者在代码中修改的。他们只是修改了代码并设置了那些参数,本文的源代码只包含可执行文件,没有HM模型的源代码所以我不知道如何修改它
    【解决方案2】:

    如果您想记录块级信息,例如帧内模式、MV、QP、分区大小等,您可以在解码器端的解析阶段简单地完成。在这个阶段,大多数语法元素都有专门的函数来从比特流中读取它们的值并将它们复制到编码单元结构中(所有这些都发生在TDecSbac.cpp

    例如,您可以转到parseIntraDirLumaAng() 并获取相应块的intraPredMode。或者转到parseCoeffNxN() 并获取存储在pcCoef 数组中的系数值。 MV 和其他语法元素也是如此。

    【讨论】:

    • 非常感谢您的帮助。我试图打印一些变量并再次创建它,但这段代码让我有点困惑,因为我是 HEVC 代码的新手,不熟悉 C++。我不知道如何正确修改它。我会花时间阅读这段代码。非常感谢您的帮助和支持!
    猜你喜欢
    • 2015-07-25
    • 2019-07-07
    • 1970-01-01
    • 2013-05-09
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2017-07-10
    相关资源
    最近更新 更多