u64 &x = *(u64*)(&f);
x++;
Да, серьезно.
Редактирование: , Поскольку кто-то указал, это не имеет дело с-ve числами, Inf, Nan или переполнением правильно. Более безопасная версия вышеупомянутого
u64 &x = *(u64*)(&f);
if( ((x>>52) & 2047) != 2047 ) //if exponent is all 1's then f is a nan or inf.
{
x += f>0 ? 1 : -1;
}
Кто-то по имени ahaslam, возможно, уже написал короткий сценарий bash , который решает вашу проблему.
ffmpeg
имеет интерфейс библиотеки - я ничего об этом не знаю, но Может быть, вы могли бы использовать это, чтобы получить информацию прямо в вашем коде?
Использование сценария кажется правильным ответом на заданный мной вопрос, но я должен был упомянуть, что использую PandaStream. Я был обеспокоен тем, что в PandaStream вы указали фиксированное выходное разрешение, но, очевидно, у него есть такая логика, что входное видео ограничивается этим разрешением, например, для выходного разрешения 480x270 видео 4: 3 будет закодировано в 360x270.
Это похоже на хороший компромисс. Просто настройте Panda на вывод в разрешении 16: 9, и тогда видео 16:10 и 4: 3 подойдут для большинства целей.