HM软件学习日记(第2天)
—>>今天的任务
学习HM16.20的Encode部分的一部分代码及原理试着修改参数,实际操作几个视频的编码过程总结近几天学过的英语单词- CTC
每天学一点linux的知识
—>>走进 shell
用于设置前景色和背景色的setterm选项
选 项 | 参 数 | 描 述 |
---|---|---|
-background | black 、 red 、 green 、 yellow 、 blue 、magenta、cyan或 white | 将终端的背景色改为指定颜色 |
-foreground | black 、 red 、 green 、 yellow 、 blue 、magenta、cyan或 white | 将终端的前景色改为指定颜色 |
-inversescreen | on或off | 交换背景色和前景色 |
-reset | 无 | 将终端外观恢复成默认设置并清屏 |
-store | 无 | 将终端当前的前景色和背景色设置成 -reset选项的值 |
—>>捋代码
HM16.20文件目录
源代码的文件
- 全部文件 13 directories, 166 files
.
├── App
│ ├── TAppDecoder
│ │ ├── decmain.cpp
│ │ ├── TAppDecCfg.cpp
│ │ ├── TAppDecCfg.h
│ │ ├── TAppDecTop.cpp
│ │ └── TAppDecTop.h
│ ├── TAppEncoder
│ │ ├── encmain.cpp
│ │ ├── TAppEncCfg.cpp
│ │ ├── TAppEncCfg.h
│ │ ├── TAppEncTop.cpp
│ │ └── TAppEncTop.h
│ ├── TAppMCTSExtractor
│ │ ├── mctsExtmain.cpp
│ │ ├── TAppMctsExtCfg.cpp
│ │ ├── TAppMctsExtCfg.h
│ │ ├── TAppMctsExtTop.cpp
│ │ └── TAppMctsExtTop.h
│ └── utils
│ ├── annexBbytecount.cpp
│ ├── BitrateTargeting
│ │ ├── encodeCommand.sh
│ │ ├── encode.shl
│ │ ├── ExtractBitrates.cpp
│ │ ├── ExtractBitrates.h
│ │ ├── ExtractBitratesMain.cpp
│ │ ├── GuessLambdaModifiers.cpp
│ │ ├── GuessLambdaModifiers.h
│ │ ├── GuessLambdaModifiersMain.cpp
│ │ ├── makefile
│ │ ├── QuickStartGuide.pdf
│ │ ├── RuntimeError.h
│ │ └── targetBitrates.sh
│ └── convert_NtoMbit_YCbCr.cpp
└── Lib
├── libmd5
│ ├── libmd5.c
│ ├── libmd5.h
│ └── MD5.h
├── TAppCommon
│ ├── program_options_lite.cpp
│ └── program_options_lite.h
├── TLibCommon
│ ├── AccessUnit.h
│ ├── CommonDef.h
│ ├── ContextModel3DBuffer.cpp
│ ├── ContextModel3DBuffer.h
│ ├── ContextModel.cpp
│ ├── ContextModel.h
│ ├── ContextTables.h
│ ├── Debug.cpp
│ ├── Debug.h
│ ├── NAL.h
│ ├── SEI.cpp
│ ├── SEI.h
│ ├── TComBitCounter.h
│ ├── TComBitStream.cpp
│ ├── TComBitStream.h
│ ├── TComCABACTables.cpp
│ ├── TComCABACTables.h
│ ├── TComChromaFormat.cpp
│ ├── TComChromaFormat.h
│ ├── TComCodingStatistics.h
│ ├── TComDataCU.cpp
│ ├── TComDataCU.h
│ ├── TComInterpolationFilter.cpp
│ ├── TComInterpolationFilter.h
│ ├── TComList.h
│ ├── TComLoopFilter.cpp
│ ├── TComLoopFilter.h
│ ├── TComMotionInfo.cpp
│ ├── TComMotionInfo.h
│ ├── TComMv.h
│ ├── TComPattern.cpp
│ ├── TComPattern.h
│ ├── TComPic.cpp
│ ├── TComPic.h
│ ├── TComPicSym.cpp
│ ├── TComPicSym.h
│ ├── TComPicYuv.cpp
│ ├── TComPicYuv.h
│ ├── TComPicYuvMD5.cpp
│ ├── TComPrediction.cpp
│ ├── TComPrediction.h
│ ├── TComRdCost.cpp
│ ├── TComRdCost.h
│ ├── TComRdCostWeightPrediction.cpp
│ ├── TComRdCostWeightPrediction.h
│ ├── TComRectangle.h
│ ├── TComRom.cpp
│ ├── TComRom.h
│ ├── TComSampleAdaptiveOffset.cpp
│ ├── TComSampleAdaptiveOffset.h
│ ├── TComSlice.cpp
│ ├── TComSlice.h
│ ├── TComTrQuant.cpp
│ ├── TComTrQuant.h
│ ├── TComTU.cpp
│ ├── TComTU.h
│ ├── TComWeightPrediction.cpp
│ ├── TComWeightPrediction.h
│ ├── TComYuv.cpp
│ ├── TComYuv.h
│ └── TypeDef.h
├── TLibDecoder
│ ├── AnnexBread.cpp
│ ├── AnnexBread.h
│ ├── NALread.cpp
│ ├── NALread.h
│ ├── SEIread.cpp
│ ├── SEIread.h
│ ├── SyntaxElementParser.cpp
│ ├── SyntaxElementParser.h
│ ├── TDecBinCoderCABAC.cpp
│ ├── TDecBinCoderCABAC.h
│ ├── TDecBinCoder.h
│ ├── TDecCAVLC.cpp
│ ├── TDecCAVLC.h
│ ├── TDecConformance.cpp
│ ├── TDecConformance.h
│ ├── TDecCu.cpp
│ ├── TDecCu.h
│ ├── TDecEntropy.cpp
│ ├── TDecEntropy.h
│ ├── TDecGop.cpp
│ ├── TDecGop.h
│ ├── TDecSbac.cpp
│ ├── TDecSbac.h
│ ├── TDecSlice.cpp
│ ├── TDecSlice.h
│ ├── TDecTop.cpp
│ └── TDecTop.h
├── TLibEncoder
│ ├── AnnexBwrite.h
│ ├── NALwrite.cpp
│ ├── NALwrite.h
│ ├── SEIEncoder.cpp
│ ├── SEIEncoder.h
│ ├── SEIwrite.cpp
│ ├── SEIwrite.h
│ ├── SyntaxElementWriter.cpp
│ ├── SyntaxElementWriter.h
│ ├── TEncAnalyze.h
│ ├── TEncBinCoderCABACCounter.cpp
│ ├── TEncBinCoderCABACCounter.h
│ ├── TEncBinCoderCABAC.cpp
│ ├── TEncBinCoderCABAC.h
│ ├── TEncBinCoder.h
│ ├── TEncCavlc.cpp
│ ├── TEncCavlc.h
│ ├── TEncCfg.h
│ ├── TEncCu.cpp
│ ├── TEncCu.h
│ ├── TEncEntropy.cpp
│ ├── TEncEntropy.h
│ ├── TEncGOP.cpp
│ ├── TEncGOP.h
│ ├── TEncPic.cpp
│ ├── TEncPic.h
│ ├── TEncPreanalyzer.cpp
│ ├── TEncPreanalyzer.h
│ ├── TEncRateCtrl.cpp
│ ├── TEncRateCtrl.h
│ ├── TEncSampleAdaptiveOffset.cpp
│ ├── TEncSampleAdaptiveOffset.h
│ ├── TEncSbac.cpp
│ ├── TEncSbac.h
│ ├── TEncSearch.cpp
│ ├── TEncSearch.h
│ ├── TEncSlice.cpp
│ ├── TEncSlice.h
│ ├── TEncTop.cpp
│ ├── TEncTop.h
│ ├── WeightPredAnalysis.cpp
│ └── WeightPredAnalysis.h
└── TLibVideoIO
├── TVideoIOYuv.cpp
└── TVideoIOYuv.h
13 directories, 166 files
—>>SCM
何为“SCM”?
Software configuration management ,软件配置管理(SCM)是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。 (Software configuration management (SCM, or just plain CM) is an organizational framework — that is, a discipline — for managing the evolution of computer systems throughout all stages of systems development.)
—>>CTC???
何为“CTC”?
“HEVC common test condition”“HEVC公用测试序列”(简称CTC)
今天我跟老师提到我的HM代码学习进度过慢,李帅老师建议我先进行一“CTC”,我的理解是“ Code To Code“,即”YUV code —> (Encode)编码 —> HEVC —>(Decode) 解码 —>YUV code
—>>makefile
何为“makefile”?
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。
—>>cfg
何为“cfg”?
cfg大多为软件的配置文件,bai其格式还是文du本文件,和txt不同的zhi是,格用cfg后缀来区分,而很多软件需要dao配置文件。如我们经常看到的迅雷下载文件时,当没有下载完成就会生成一个cfg格式文件。一些软件也用cfg文件来配置。
—>>每日一试
尝试用16.9版本的HM进行一次CTC
解决“-Werror”问题
同组的小伙伴都是用的16.9版本的HM,所以我又额外安装了16.9版本的HM,并尝试对参考文件(YUV)进行CTC。
又遇到了与第一天遇到的一样的问题,通过回顾第一天学到的知识,顺利解决了!
并学到了linux下make操作符的作用。
尝试进行一次“CTC”
详细情况看下一篇日志!
—>>意外收获
在ubuntu系统下可以看到这台电脑的所有文件,包括windows10之下的所有文件!!!!
如图所示:
也就是说,只要在这台电脑上存储一份文件,就可以在两个系统中都可以看到!!!
translate-shell的使用
参考:https://blog.csdn.net/u014268482/article/details/86302443