如果在cfg文件里加入自己的一个操作参数,那么你不仅需要读取它,还需要在VTM自带的解析cfg的类和成员函数里加上你的东西。
写入bitstream.cfg
例如,我想在bitstream文件里加入我自定义的add option,那么我需要在文件的 I/O下写入
addabcd : 1
当然了如果你用encoder的cfg的话,自然就加在这个cfg文件下就可以。
读文件操作
读文件的操作有很多,c++提供很多读文件的方式,奈何c++学艺不精,无法一一列举相应的读文件模式,实在抱歉。
ifstream infile("bitstream.cfg"); //读 bitstream.cfg
string cfginf; // 用来保存inf
char readcfgc;
bool partRecurRequest;
while (!infile.eof())
{
infile >> readcfgc;
cfginf.push_back(readcfgc);
}
infile.close(); //关闭
好了,如果这样你觉得就结束了,那么程序运行时就报错了,也就是标题中出现的error。
读文件的操作并没有什么问题,但VTM读取cfg有自己的一套方法,你还需要在如下程序段上加入自己的东西:
EncAppCfg.cpp 下的 parseCfg 函数内
找到这个位置,然后加入你的写的内容,然后加入同名的成员变量即可。
找成员变量的定义所在,只用找下面已有定义的成员变量,转到定义即可。
VTM的使用应当越简洁越好,能用批处理就用批处理,能用生成的exe就用exe,做视频编码免不了跑大量的600帧代码,所以要尽可能做的方便,简单。