Я работаю над фильтром прямого показа декодера H.265. Я использую lide265 для этой цели.
Кодер возвращает поток байтов. Мне нужно преобразовать его в единицу NAL согласно требованию декодера. Как мне это сделать.
Потому что простой поток байтов не декодируется.
Кажется, что синтаксис потока байтов H.265 очень похож на H.264. Если вы посмотрите спецификацию Вот:
Синтаксис блока NAL для потока байтов!
leading_zero_8bits это байт, равный 0x00.
ПРИМЕЧАНИЕ. — Синтаксический элемент lead_zero_8bits может присутствовать только в первом блоке NAL потока битов битового потока, поскольку (как показано на диаграмме синтаксиса в пункте B.2.1) любые байты, равные 0x00, следуют за синтаксической структурой блока NAL и предшествуют Четырехбайтовая последовательность 0x00000001 (которая должна интерпретироваться как ноль_байт, за которым следует start_code_prefix_one_3bytes) будет
считаются элементами синтаксиса trailing_zero_8bits, которые являются частью блока NAL предыдущего байтового потока.zero_byte это один байт, равный 0x00.
Если выполняется одно или несколько из следующих условий, должен присутствовать синтаксический элемент zero_byte:
— nal_unit_type в структуре синтаксиса nal_unit () равен VPS_NUT, SPS_NUT или PPS_NUT.
— Синтаксическая структура блока NAL потока байтов содержит первый блок NAL блока доступа в порядке декодирования, как указано в пункте 7.4.2.4.4.
Это должно дать вам представление о том, когда ожидать 0x00000001, а когда ожидать 0x000001, и вы сможете анализировать поток битов, отыскивая стартовые коды и извлекая блоки NAL между ними.