Парсинг EBML Void элемент

325
02 августа 2017, 21:35

Добрый день , хочу предупредить , что с такого рода заданиями сталкиваюсь в первые , потому могу спрашивать для кого-то очевидные вещи , прошу не пинать за это. Решил разпарсить webm файл , а именно проверить и получить Void элемент, на гитхабе нашёл пример (https://gist.github.com/mganeko/9ceee931ac5dde298e81 ) но как оказалось он не работает. Решил найти и исправить ошибку , в коде и самом алгоритме его работы я разобрался, но по всей видимости упускаю какую-то деталь из спецификации (https://matroska.org/technical/specs/index.html ) , проблема в том что данный код показывает что абсолютно во всех webm файлах одинаковый Void элемент с одним и тем же значением , но например (EBML Inspect) говорит о другом. По алгоритму после нахождения 2 элементов верхнего уровня (EBML и Segment) , тут он работает корректно , указатель буфера находит байт [EC] (как и написано в спецификации ) но далее он берёт следующий байт (0x86) и по той же спецификации его размерность равна 1 байту и завершает работу , а на самом деле данные 0xEC идут как раз после этого байта(0x86) ещё 5 байт (например в EBML Inspect показывает 0x39 0x33 0x34 0x39 0x35 0x39 ). Вот и вопрос что я упускаю ?

P.S С++ тег добавил так как думаю что они сталкиваются чаще в повседневной работе с такого рода работой.

READ ALSO
Как запретить обновления содержимого QListView в автоматическом режиме?

Как запретить обновления содержимого QListView в автоматическом режиме?

При соединении модели данных QAbstractTableModel к QListView данные обновляются автоматически (постоянно вызывается функция data)

385
Как выводить шрифт Wingdings?

Как выводить шрифт Wingdings?

Дело в том, что требуется вывод текста шрифтом "Wingdings"В Code::Blocks этот шрифт отображается криво

324
Как обрабатывать исключения SHCreateDirectoryEx

Как обрабатывать исключения SHCreateDirectoryEx

Как обработать исключение при создание папки?

387