Я пытаюсь понять, как Android MediaExtractor анализирует H264 (содержащийся в формате контейнера).
Если я изучу поток H264, то увижу, что он состоит из блоков NAL, разграниченных последовательностью 00 00 00 01.
Выборки, возвращаемые MediaExtractor, представляют собой именно те единицы NAL, каждая из которых начинается с этого маркера, за исключением того, что для конкретного источника данных первые три единицы NAL объединяются. Первые два блока NAL очень короткие (29 и 8 байт).
Почему происходит эта конкатенация? Если бы мне пришлось анализировать H264 вручную, как бы я узнал, что делать эту конкатенацию?
Для первых трех блоков NAL байт, следующий за префиксом начального кода, представляет собой десятичные числа 103, 104 и 101. Для большинства следующих единиц NAL это 65, а иногда и 101.