Размер может варьироваться от нескольких мегабайт до пары гигабайт. Парсится оно библиотекой h264bitstream вот таким образом. Либа составляет таблицу офсетов синтаксических единиц (NALU). Проблема: на данный момент программа читает файл целиком (она не моя, я её форкнул с целью улучшения) и парсит буфер всего файла. Мне же хочется, чтобы буфер был полегче и файл считывался бы с диска частями. Функция find_nal_unit() сканит непрерывный буфер и возвращает два офсета (на начало и конец NALU), т.е. нужно как-то реаллоцировать буфер чтения и смещать офсет в файле.
Может быть существует какой-нибудь эффективный bitstream-reader в C++ для этого?
Мб вместо буфера сунуть замапленый файл?
Я думал об этом, да.
Вообщем, попробую реализовать какой-то наивный алгоритм чтения, потом, возможно, к маппингу можно перейти.
Обсуждают сегодня