Рассинхронизация ID3: как это работает

Согласно документации, теги ID3 имеют флаг десинхронизации< /эм>. Насколько я понял, это должно применяться только к кадрам ID3 (не к заголовкам или нижним колонтитулам).

Но как именно я должен обрабатывать кадры перед парсингом (для чтения, а не для записи)? Должен ли я просто заменить все последовательности '11111111 111xxxxx' на '11111111 00000000 111xxxxx'?


person bvitaliyg    schedule 30.10.2013    source источник


Ответы (1)


Нет, это то, что вы делаете, когда ЗАПИСЫВАЕТЕ тег (и не забывайте, в этом случае вам также нужно заменить любые «0xff,0x00» на «0xff,0x00,0x00», как указано в спецификации).

Когда вы ЧИТАЕТЕ тег, вы можете просто заменить любую последовательность «0xff, 0x00» на «0xff». Проще всего сделать это сразу, пока вы читаете файл, отслеживая последний прочитанный байт и отбрасывая любой одиночный байт 0x00, следующий за 0xff.

На самом деле это не так просто понять, потому что спецификация описывает только то, что нужно делать для десинхронизации, когда вы записываете тег, а не то, что вы делаете при его чтении.

person Jonas    schedule 15.01.2014