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