这是关于我拥有的 HEVC 编码器和解码器
** encoder and decoder in debug mode
** encoder and decoder in release mode
我知道发布模式优化了一些东西。
我们可以使用调试编码器和发布解码器吗?(我还没有验证过)
发布编码器和调试解码器怎么样?(我试试这个,没问题)
我想两者都应该没问题,但我仍然想知道为什么是或为什么不是理论层面的。
这是关于我拥有的 HEVC 编码器和解码器
** encoder and decoder in debug mode
** encoder and decoder in release mode
我知道发布模式优化了一些东西。
我们可以使用调试编码器和发布解码器吗?(我还没有验证过)
发布编码器和调试解码器怎么样?(我试试这个,没问题)
我想两者都应该没问题,但我仍然想知道为什么是或为什么不是理论层面的。
不完全确定你在问什么,但如果你看看 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
所以你有调试模式和发布模式之间的区别。无论您使用调试二进制文件还是发布二进制文件,生成和重建的比特流都是相同的。
您可以完美地混合调试和发布二进制文件。
希望能帮助到你...
由编码器的调试和发布版本生成的 HEVC 比特流应该是相同的。此外,解码器的行为在两个构建变体中应该是相同的。开发过程中没有正式的测试,但是我在HM中从来没有遇到过任何问题。
如果您发现情况并非如此,那将被视为错误并应在错误跟踪器中报告。