Автодобавление APEx2 тега портит .ape файлы

Aki

New member
Ох господа хорошие, попал-таки я с новой версией - не проверив как следует, поставил вместо ещё третьей версии...
Суть: практически вся фонотека в .ape формате. В первый же день, пока тестировал ещё не активированную программу, заметил, что на каких-то конкретных файлах она наглухо вешается, причём, если стоит галочка "При запуске" "Возобновить проигрывание", то получаем глухой вис сразу же, и только выявление и удаление проблемного файла позволить запустить программу.
Погрешил в данном явлении на BASS-библиотеку (взята здесь же) - стянул новую c сайта BASS - проблема с висом исчезла... но спустя полтора суток радость была конкретно омрачена: оказалось, что файлы, на которых RadioBoss вешался, реально битые, и виновник - сам RadioBoss.
Причина, как я понял, устаноленный "крыжик" "Добавлять тег APEv2 ко всем файлам для хранения доп. информации". Файлы портятся в самом конце, проверка декодером (или проигрывание чем-либо) показывает ошибку в конце. Внутри файла, в самом конце видим вот что:
Код:
00020213B0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
00020213C0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
00020213D0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
[b]00020213E0: 41 50 45 54 41 47 45 58 │ D0 07 00 00 A9 01 00 00  APETAGEXР•  c☺
00020213F0: 13 00 00 00 00 00 00 A0 │ 00 00 00 00 00 00 00 00  ‼       [/b]
0002021400: 01 00 00 00 00 00 00 00 │ 54 72 61 63 6B 00 31 04  ☺       Track 1♦
0002021410: 00 00 00 00 00 00 00 59 │ 65 61 72 00 31 39 38 30         Year 1980
0002021420: 06 00 00 00 00 00 00 00 │ 54 69 74 6C 65 00 5A 6F  ♠       Title Zo
0002021430: 64 69 61 63 06 00 00 00 │ 00 00 00 00 41 72 74 69  diac♠       Arti
0002021440: 73 74 00 5A 6F 64 69 61 │ 63 0A 00 00 00 00 00 00  st Zodiac◙
0002021450: 00 47 65 6E 72 65 00 45 │ 6C 65 63 74 72 6F 6E 69   Genre Electroni
0002021460: 63 0E 00 00 00 00 00 00 │ 00 41 6C 62 75 6D 00 44  c♫       Album D
0002021470: 69 73 63 6F 20 41 6C 6C │ 69 61 6E 63 65 17 00 00  isco Alliance↨
0002021480: 00 00 00 00 00 43 6F 6D │ 6D 65 6E 74 00 47 72 65       Comment Gre
0002021490: 65 6E 20 53 70 69 72 69 │ 74 20 63 6F 6C 6C 65 63  en Spirit collec
00020214A0: 74 69 6F 6E 01 00 00 00 │ 00 00 00 00 52 61 74 69  tion☺       Rati
00020214B0: 6E 67 00 30 01 00 00 00 │ 00 00 00 00 47 65 6E 64  ng 0☺       Gend
00020214C0: 65 72 00 30 13 00 00 00 │ 00 00 00 00 52 42 4C 61  er 0‼       RBLa
00020214D0: 73 74 50 6C 61 79 65 64 │ 00 32 30 31 32 2D 30 39  stPlayed 2012-09
00020214E0: 2D 31 34 20 31 37 3A 32 │ 34 3A 35 33 01 00 00 00  -14 17:24:53☺
00020214F0: 00 00 00 00 50 6C 61 79 │ 43 6F 75 6E 74 00 31 02      PlayCount 1☻
0002021500: 00 00 00 00 00 00 00 49 │ 6E 74 72 6F 00 2D 31 02         Intro -1☻
0002021510: 00 00 00 00 00 00 00 4F │ 75 74 72 6F 00 2D 31 02         Outro -1☻
0002021520: 00 00 00 00 00 00 00 43 │ 75 65 49 6E 00 2D 31 02         CueIn -1☻
0002021530: 00 00 00 00 00 00 00 43 │ 75 65 4F 75 74 00 2D 31         CueOut -1
0002021540: 02 00 00 00 00 00 00 00 │ 46 61 64 65 49 6E 00 2D  ☻       FadeIn -
0002021550: 31 02 00 00 00 00 00 00 │ 00 46 61 64 65 4F 75 74  1☻       FadeOut
0002021560: 00 2D 31 02 00 00 00 00 │ 00 00 00 4D 69 78 50 6F   -1☻       MixPo
0002021570: 69 6E 74 00 2D 31 02 00 │ 00 00 00 00 00 00 54 72  int -1☻       Tr
0002021580: 61 63 6B 4C 65 6E 00 2D │ 31 41 50 45 54 41 47 45  ackLen -1APETAGE
0002021590: 58 D0 07 00 00 A9 01 00 │ 00 13 00 00 00 00 00 00  XР•  c☺  ‼
00020215A0: 80 00 00 00 00 00 00 00 │ 00                       ?
А вот как выглядит концовка ещё не запорченного файла (файл другой, но суть становится понята):
Код:
0001CE9970: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
0001CE9980: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
0001CE9990: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
0001CE99A0: 00 01 00 00 1C 8D 00 00 │ 00 00 8C 62 01 00 07 00   ☺  ∟?    ?b☺ •
0001CE99B0: 81 00 00 00 00 2A C8 85 │ 00 07 00 00 00 00 00 01  ?    *И: •     ☺
0001CE99C0: 00 00 00 00 01 00 00 00 │ 00 00 00 00 54 72 61 63      ☺       Trac
0001CE99D0: 6B 00 33 04 00 00 00 00 │ 00 00 00 59 65 61 72 00  k 3♦       Year
0001CE99E0: 31 39 38 30 06 00 00 00 │ 00 00 00 00 41 72 74 69  1980♠       Arti
0001CE99F0: 73 74 00 5A 6F 64 69 61 │ 63 0A 00 00 00 00 00 00  st Zodiac◙
0001CE9A00: 00 47 65 6E 72 65 00 45 │ 6C 65 63 74 72 6F 6E 69   Genre Electroni
0001CE9A10: 63 0E 00 00 00 00 00 00 │ 00 41 6C 62 75 6D 00 44  c♫       Album D
0001CE9A20: 69 73 63 6F 20 41 6C 6C │ 69 61 6E 63 65 10 00 00  isco Alliance►
0001CE9A30: 00 00 00 00 00 54 69 74 │ 6C 65 00 50 72 6F 76 69       Title Provi
0001CE9A40: 6E 74 69 61 6C 20 44 69 │ 73 63 6F 17 00 00 00 00  ntial Disco↨
0001CE9A50: 00 00 00 43 6F 6D 6D 65 │ 6E 74 00 47 72 65 65 6E     Comment Green
0001CE9A60: 20 53 70 69 72 69 74 20 │ 63 6F 6C 6C 65 63 74 69   Spirit collecti
0001CE9A70: 6F 6E 41 50 45 54 41 47 │ 45 58 D0 07 00 00 CE 00  onAPETAGEXР•  О
0001CE9A80: 00 00 07 00 00 00 00 00 │ 00 40 00 00 00 00 00 00    •      @
0001CE9A90: 00 00                   │
 
Ну вроде все нормально.
Тег пишется в конец. Маркер тега - APETAGEX, он присутствует в обоих файлах. Тег может иметь произвольное количество полей, поэтому после "обработки" тег становится больше. Но это не должно вызывать проблем.
Если можно, отправьте один из проблемных файлов на support@djsoft.net
 
Я подсветил проблемное место. APETAGEX там ну никак не должен быть - он записан поверх, соответственно там "что-то" затёрто (что именно, я конечно могу проверить, но придётся возиться с копиями, пока я в ауте.... за 56 часов работы новой версии перепорчен вагон файлов :(

Думаю, слать файлы нет необходимости - можно на месте сотворить. Но я-таки сделал копию файла "до" и "после" первого проигрывания. Сравнил их - файлы абсолютно одинаковые до 00B315F6:
концовка файла "до" проигрывания
Код:
B315B0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
B315C0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
B315D0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
B315E0: 00 00 00 00 00 00 00 00 │ [b][color=red]00 00 00 00 00 00 00 00
B315F0: 00 00 00 00 00 00 01 00 │ DA 97 FD 00 00 00 00 FF        ☺ Ъ-э    я
B31600: 00 01 00 07 [/color][/b]00 00 00 00 │ 01 00 00 00 00 00 00 00   ☺ •    ☺
B31610: 54 72 61 63 6B 00 34 04 │ 00 00 00 00 00 00 00 59  Track 4♦       Y
B31620: 65 61 72 00 32 30 30 33 │ 0A 00 00 00 00 00 00 00  ear 2003◙
B31630: 47 65 6E 72 65 00 53 6F │ 75 6E 64 74 72 61 63 6B  Genre Soundtrack
B31640: 0B 00 00 00 00 00 00 00 │ 54 69 74 6C 65 00 54 6F  ♂       Title To
B31650: 20 74 68 65 20 52 61 63 │ 65 0C 00 00 00 00 00 00   the Race♀
B31660: 00 41 72 74 69 73 74 00 │ 44 6F 6C 63 65 20 54 72   Artist Dolce Tr
B31670: 69 61 64 65 11 00 00 00 │ 00 00 00 00 41 6C 62 75  iade◄       Albu
B31680: 6D 00 4C 61 73 74 20 45 │ 78 69 6C 65 20 4F 2E 53  m Last Exile O.S
B31690: 2E 54 2E 21 00 00 00 00 │ 00 00 00 43 6F 6D 6D 65  .T.!       Comme
B316A0: 6E 74 00 47 72 65 65 6E │ 20 53 70 69 72 69 74 20  nt Green Spirit
B316B0: 43 44 20 49 6D 61 67 65 │ 73 20 63 6F 6C 6C 65 63  CD Images collec
B316C0: 74 69 6F 6E 41 50 45 54 │ 41 47 45 58 D0 07 00 00  tionAPETAGEXР•
B316D0: DC 00 00 00 07 00 00 00 │ 00 00 00 40 00 00 00 00  Ь   •      @
B316E0: 00 00 00 00             │
и "после" первого проигрывания
Код:
B315B0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
B315C0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
B315D0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00
B315E0: 00 00 00 00 00 00 00 00 │[b][color=red] 41 50 45 54 41 47 45 58          APETAGEX
B315F0: D0 07 00 00 C1 01 00 00 │ 13 00 00 00 00 00 00 A0  Р•  Б☺  ‼       
B31600: 00 00 00 00 [/color][/b]00 00 00 00 │ 01 00 00 00 00 00 00 00          ☺
B31610: 54 72 61 63 6B 00 34 04 │ 00 00 00 00 00 00 00 59  Track 4♦       Y
B31620: 65 61 72 00 32 30 30 33 │ 0A 00 00 00 00 00 00 00  ear 2003◙
B31630: 47 65 6E 72 65 00 53 6F │ 75 6E 64 74 72 61 63 6B  Genre Soundtrack
B31640: 0B 00 00 00 00 00 00 00 │ 54 69 74 6C 65 00 54 6F  ♂       Title To
B31650: 20 74 68 65 20 52 61 63 │ 65 0C 00 00 00 00 00 00   the Race♀
B31660: 00 41 72 74 69 73 74 00 │ 44 6F 6C 63 65 20 54 72   Artist Dolce Tr
B31670: 69 61 64 65 11 00 00 00 │ 00 00 00 00 41 6C 62 75  iade◄       Albu
B31680: 6D 00 4C 61 73 74 20 45 │ 78 69 6C 65 20 4F 2E 53  m Last Exile O.S
B31690: 2E 54 2E 21 00 00 00 00 │ 00 00 00 43 6F 6D 6D 65  .T.!       Comme
B316A0: 6E 74 00 47 72 65 65 6E │ 20 53 70 69 72 69 74 20  nt Green Spirit
B316B0: 43 44 20 49 6D 61 67 65 │ 73 20 63 6F 6C 6C 65 63  CD Images collec
B316C0: 74 69 6F 6E 01 00 00 00 │ 00 00 00 00 52 61 74 69  tion☺       Rati
B316D0: 6E 67 00 30 01 00 00 00 │ 00 00 00 00 47 65 6E 64  ng 0☺       Gend
B316E0: 65 72 00 30 13 00 00 00 │ 00 00 00 00 52 42 4C 61  er 0‼       RBLa
B316F0: 73 74 50 6C 61 79 65 64 │ 00 32 30 31 32 2D 30 39  stPlayed 2012-09
B31700: 2D 31 34 20 32 33 3A 31 │ 34 3A 35 30 01 00 00 00  -14 23:14:50☺
B31710: 00 00 00 00 50 6C 61 79 │ 43 6F 75 6E 74 00 31 02      PlayCount 1☻
B31720: 00 00 00 00 00 00 00 49 │ 6E 74 72 6F 00 2D 31 02         Intro -1☻
B31730: 00 00 00 00 00 00 00 4F │ 75 74 72 6F 00 2D 31 02         Outro -1☻
B31740: 00 00 00 00 00 00 00 43 │ 75 65 49 6E 00 2D 31 02         CueIn -1☻
B31750: 00 00 00 00 00 00 00 43 │ 75 65 4F 75 74 00 2D 31         CueOut -1
B31760: 02 00 00 00 00 00 00 00 │ 46 61 64 65 49 6E 00 2D  ☻       FadeIn -
B31770: 31 02 00 00 00 00 00 00 │ 00 46 61 64 65 4F 75 74  1☻       FadeOut
B31780: 00 2D 31 02 00 00 00 00 │ 00 00 00 4D 69 78 50 6F   -1☻       MixPo
B31790: 69 6E 74 00 2D 31 02 00 │ 00 00 00 00 00 00 54 72  int -1☻       Tr
B317A0: 61 63 6B 4C 65 6E 00 2D │ 31 41 50 45 54 41 47 45  ackLen -1APETAGE
B317B0: 58 D0 07 00 00 C1 01 00 │ 00 13 00 00 00 00 00 00  XР•  Б☺  ‼
B317C0: 80 00 00 00 00 00 00 00 │ 00                       ?
 
Вроде как не поверх, а наоборот, с отступом от содержимого файла.
Оригинальный тег заканчивается на отступе 0001CE9A70, а тег, записанный RadioBOSS'ом - на 0002021590 - разница примерно 3 мегабайта.
Получается, файлы становятся больше на 3Мб после того, как в них записан тег?

Думаю нужен один из ваших APE файлов для проверки.
 
Нет, файл "длиннеет" совсем чуть-чуть, как раз на размер доп.инфы в теге. Я дополнил предыдущее сообщение дампом с подсветкой, где imho проблема. Первый дамп - концовка ни разу не проигранного файла. Второй - после первого проигрывания. Красным пометил проблемное место (начиная с 0B315F6h)
 
Aki сказал(а):
Нет, файл "длиннеет" совсем чуть-чуть, как раз на размер доп.инфы в теге. Я дополнил предыдущее сообщение дампом с подсветкой, где imho проблема. Первый дамп - концовка ни разу не проигранного файла. Второй - после первого проигрывания. Красным пометил проблемное место (начиная с 0B315F6h)
Я думал, первые дампы это для одного и того же файла... ОК.

APETAGEX должен быть в начале и конце тега - это по спецификации: http://wiki.hydrogenaudio.org/index.php?title=APEv2_specification (APE Tags Header и есть APETAGEX).

В исходном варианте его у вас нет... отсюда и проблемы. Хотя вроде как допускается отсутствие Header и наличие только Footer, зависит от реализации.
 
Ошибка подтверждена. При отсутствии Header файл портится (перезаписываются 32 байта в конце). Будет исправлено в следующем обновлении.
 
Imho Header как правило не прописывается (я вот вообще привык, что его нет), видимо связано с тем, что в длину тега он и не входит. Получается, что да, хедера изначально не было, при записи модифицированного тега хедер появился, но "вслепую" был записан поверх последних байт.

Спасибо, буду ждать обновления, хотя без дела сидеть не придётся :)
 
Назад
Верх