0

这是关于我拥有的 HEVC 编码器和解码器

** encoder and decoder in debug mode

** encoder and decoder in release mode

我知道发布模式优化了一些东西。

  1. 我们可以使用调试编码器和发布解码器吗?(我还没有验证过)

  2. 发布编码器和调试解码器怎么样?(我试试这个,没问题)

我想两者都应该没问题,但我仍然想知道为什么是或为什么不是理论层面的。

4

2 回答 2

0

不完全确定你在问什么,但如果你看看 linux makefile,你会看到:

debug:
    $(MAKE) -C lib/TLibVideoIO  debug MM32=$(M32)
    $(MAKE) -C lib/TLibCommon   debug MM32=$(M32)
    $(MAKE) -C lib/TLibDecoder  debug MM32=$(M32)
    $(MAKE) -C lib/TLibEncoder  debug MM32=$(M32)
    $(MAKE) -C lib/TAppCommon       debug MM32=$(M32)
    $(MAKE) -C app/TAppDecoder      debug MM32=$(M32)
    $(MAKE) -C app/TAppEncoder      debug MM32=$(M32)
    $(MAKE) -C utils/annexBbytecount       debug MM32=$(M32)
    $(MAKE) -C utils/convert_NtoMbit_YCbCr debug MM32=$(M32)

release:
    $(MAKE) -C lib/TLibVideoIO  release MM32=$(M32)
    $(MAKE) -C lib/TLibCommon   release MM32=$(M32)
    $(MAKE) -C lib/TLibDecoder  release MM32=$(M32)
    $(MAKE) -C lib/TLibEncoder  release MM32=$(M32)
    $(MAKE) -C lib/TAppCommon       release MM32=$(M32)
    $(MAKE) -C app/TAppDecoder      release MM32=$(M32)
    $(MAKE) -C app/TAppEncoder      release MM32=$(M32)
    $(MAKE) -C utils/annexBbytecount       release MM32=$(M32)
    $(MAKE) -C utils/convert_NtoMbit_YCbCr release MM32=$(M32)

如果您遵循 makefile,您最终会在makefile.base其中包含以下部分:

#
# debug cpp flags
DEBUG_CPPFLAGS    = -g  -D_DEBUG
#
# release cpp
RELEASE_CPPFLAGS  =  -O3 -ffloat-store -Wuninitialized

所以你有调试模式和发布模式之间的区别。无论您使用调试二进制文件还是发布二进制文件,生成和重建的比特流都是相同的。

您可以完美地混合调试和发布二进制文件。

希望能帮助到你...

于 2013-08-27T18:50:37.730 回答
0

由编码器的调试和发布版本生成的 HEVC 比特流应该是相同的。此外,解码器的行为在两个构建变体中应该是相同的。开发过程中没有正式的测试,但是我在HM中从来没有遇到过任何问题。

如果您发现情况并非如此,那将被视为错误并应在错误跟踪器中报告。

于 2014-02-25T19:19:58.793 回答