abramx
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору JackalSR13 Итак наконец все по-поводу поддержки Unicode и и других кодировок в моей компиляции плагина (Я удалил два предыдущих поста, чтобы они не вводили в заблуждение) Итак, полностью разобравшись в библиотеке id3lib (монстроподобная, зато умеет парсить таги всех видов) имеем следующее 1. Библиотека понимает теги в любой кодировке, причем многобайтными признаются только UTF16 BE и UTF16 LE (двухбайтовый уникод), остальные кодировки рассматриваются как однобайтные (включая UTF8) 2. При использовании simple C-API (которое я собственно и использовал), юникод конвертируется в ASCII (возможно расширенный то 8-Bit) с помощью функции __toascii (эти поганцы не знают Windows API ) и обрабатывается далее как не-уникод (в том числе и плагином) Это значит, что UTF16 теги c ASCII содержимым должны отображаться правильно (правда в случае использования фичи пятого винампа - Advanced Title Formatting - это не так, почему он плох и его надо отключить будет объяснено ниже) В случае с более сложным содержимым в UTF16 тегах - результат точно предугадать нельзя и у меня не было тестового материала Теперь расмотрим другую юникодную кодировку - UTF8. К сожалению, невозможно определить, является ли текст в поле тега кодирован UTF8 или не-юникод кодировкой (например ANSI). Поэтому строка обрабатывается как однобайтная кодировка и выводится AS IT IS. То есть если выбрать в minibrowser кодировку UTF8, то теги можно увидеть, но в других местах - будет мешанина (правильно будут отображаться только ASCII символы). Вывод - UTF8 кодировку внутри ID3 тегов правильно обработать невозможно(только спец плагин делать - только для UTF8) - надо конвертирывать теги в UTF16 Как будет меняться плагин исходя из вышесказанного: -буду правильно обрабатывать UTF16 внутри библиотеки id3lib c конвертацией в UTF8 (для Minibrowser) и ANSI (для Playlist и других внутривинамповских вещей) с помощью Windows API Для дополнительных тестов мне нужен экземпляр твоих юникодных тегов - желательно с 1-2 сек MP3 К вопросу, почему фича Advanced Title Formatting вредна и ее надо отключить: - Для некоторых файлов она пытается прочитать теги в обход плагина - это значит - прощай юникод и title форматтинг из плагина (in_mad сам прекрасно генерирует title из тегов) - Где-то там у них происхобит ошибка при работе с памятью и винамп вываливается (выяснено при работе над плагином in_mp4). Свои плагины я отсек, ибо они скомпилены с ключиком проверки буферов Добавлено Новая работа - плагин для проигрывания AAC/MP4 in_mp4. Фичи: - основа: библиотека FAAD2 и плагин in_mp4 от http://www.audiocoding.com - полная тег информация отображается внутри mibibrowser (включая cover picture и lyrics) - полная поддержка Unicode (хорошо, когда кодировка одна): Minibrowser - UTF8, внутри винампа - текущая ANSI (ну не понимает винамп ничего кроме ANSI, что можно с этим поделать) - из-за предыдущего пункта работа с линейкой Win9x не гарантируется - редактирование тегов отключено - библиотека парсинта MP4 тегов доставшаяся в наследство обладает 2-мя недостатками: при записи удаляет поля о которых не знает, польностью перезаписывая тег и при записи тего его невозможно прочитать программой Tag & Rename (что мне очень не нравится). Конвертация из AAC в MP4 работает нормально. - код оптимизирован для использования на P4 и Athlon - компилирован при помощи Intel C 8 и VC 2003 - механизм формирования title из тега унифицирован с in_mad. Установка: - распаковать архив в каталог плагинов Винампа. Для 5-го винампа в каталоге уже присутствует in_mp4 предназначеный для разбора mp4 контейнеров (декодирыванием AAC в оффициально поставке заниамется in_mp3 ) - эти два плагина не совместимы, выбирайте один - если уже использовался плагин in_mp4 от http://www.audiocoding.com то замените их убогий title formatting на взятый из in_mad. - Ну и отключите винамповский "Advanced Title Formatting" Лежит на http://madplugin.nm.ru
---------- "First comes smiles, then lies. Last is gunfire." — Roland Deschain, of Gilead |
|