Отредактированный код из CABACWriter.cpp. Это код, который я использовал для получения количества битов в макроблоке и вывода их в текстовый файл:
int before;
int after;
int diff;
ofstream outfile;
outfile.open("Macroblock.txt");
if (isEncoding())
{
before = m_BinEncoder.getNumWrittenBits();
}
coding_unit( cu, partitioner, cuCtx );
if (isEncoding())
{
after = m_BinEncoder.getNumWrittenBits();
diff = after - before;
}
outfile << diff << endl;
outfile.close();
Когда я запускаю, я получаю только биты no.of в последнем макроблоке в текстовом файле.
Это код, который я использую для отображения количества битов в каждом макроблоке, не помещая их в текстовый файл:
int before;
int after;
int diff;
if (isEncoding())
{
before = m_BinEncoder.getNumWrittenBits();
}
// coding unit
coding_unit( cu, partitioner, cuCtx );
if (isEncoding())
{
after = m_BinEncoder.getNumWrittenBits();
diff = after - before;
}
cout<<"The difference is: "<<diff<<endl;
Когда я это делаю, я вижу количество битов в каждом макроблоке, а не только в последнем макроблоке.
Может ли кто-нибудь помочь мне отобразить количество битов в каждом макроблоке в выходном текстовом файле? Я думал об использовании цикла for, но тогда я не знаю, какой должна быть максимальная итерация, потому что каждое видео будет иметь разное количество макроблоков в каждом кадре. Поэтому я думаю, что должна быть переменная, которая работает для всех.