Я знаю, движок на досуге ковыряет довольно много человек, но в основном - чисто для себя. Помощи я обычно ни у кого не прошу, а мне её оказывают, то это в основном помощи по ковырянию в декомпиле халфы, с целью сравнить алгоритмы, ну или целиком восстановить код, как в случае с DSP. Но здесь - особый случай. В ксаше есть одно весьма проблемное место - это mp3 плеер. Он прекрасно работает и жуёт почти все mp3-файлы, если треки запускать с начала. Но в том-то и дело, что музыка в ксаше тоже сохраняет свою позицию, начиная играть с этого места при загрузке сейва. И тут уже начинаются серъезные проблемы.
Проблемы эти имеют две причины:
1. в MPEG1 Layer III информация задана фреймами-кадрами, как в видео-файле. Для музыки подобное хранение нежелательно, хотя и допустимо.
Из-за этого нормальная навигация по треку невозможна. Заветные флажки FSTREAM_MPEGACCURATE в том же fmod просто распаковывают целый участок файла в wav и делают навигацию уже внутри несжатого потока. Без этого флажка возможно прыгать только на начало ближайшего фрейма, а это в зависимости от битрейта интервал 0.1 - 4 секунды. А может даже и больше, для каких-нибудь 64 kbps, где минута звука занимает 60 килобайт. Т.е. сам формат для навигации плохо годится. В том же OGG таких проблем нет и близко (зато есть проблема по навигации в Theora, но это уже совсем другая история).
2. Сама библиотека mpg123 старенькая от 2004-го года и может иметь какие-то проблемы.
Я сделал приблизительную навигацию, по типу того же FSTREAM_MPEGACCURATE, когда мы сперва находим фрейм, потом флушим его до конкретной временной точки и начинаем с нее играть.
И всё равно в большинстве случаев звук начинается либо с треска, либо с булькания, а в худшем случае - с вылета всего движка.
Я бы с удовольствием это отремонтировал, но я в этом ровным счётом ничего не понимаю. Всё, что я смог сделал, это увеличить размер буффера кадра и вылеты стали вроде как немного реже. Раньше я полагал, что есть связь между ID3v2-тэгами и вылетами, считал что вылетают только короткие файлы, меньше двух секунд длинной, но время развеяло эти приятные заблуждения. Совсем недавно камрад Ксерокс поймал вылет на саунд-треках хипнотика. Которые я сам лично кодировал по всем канонам. Я не знаю что с этим делать.
Надеюсь на вашу помощь. Можете попробовать поискать более другую библиотеку mp3 (хотя и эта прекрасно играет), можете попробовать починить управление этой, можете попробовать разобраться в проблеме, на какой недопустимой позиции происходит вылет.
В любом случае буду рад принять любую помощь по дебагу mp3-плеера с пожизненным занесением в кредитсы ествествено
Вот в кои-то веки попросил помощи нематериальной. Ну и где толпы желающих? Вам интереснее обсуждать кого резали собаки Сталина, а как до дела доходит - тишина.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Дядя Миша а ты 200 тысяч доната заслал?
Значит, никто не понимает в этом сраном и убогом MP3. Ну ты подожди, лет через пять кто-нибудь починит, как и DSP, и предиктинг, и сетевую часть. Москва не сразу строилась.
Добавлено 13-09-2016 в 22:13:
Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.
Добавлено 13-09-2016 в 22:19:
К слову, об MP3. Вот ты пишешь, что в других форматах, в частности в OGG, с навигацией лучше. Возьми и выкинь MP3, и забудь как страшный сон. Используй OGG, фанаты свободного ПО одобрят. Не обязательно делать это в Xash3D, сделай в XashNT. Я так понимаю, ты в этом движке стараешься избавиться от вещей, на которые распространяются копирайты Valve.
XaeroX так это же вы переживаете что сохранение mp3 портит сейвы, а не я. Это по большому счёту вам надо. Мне-то что? У меня в XashNT этой проблемы нет.
Дядя Миша ну вообще говоря, для корректной навигации все более менее продвинутые звуковые движки разжимают входной формат на pcm и далее работают с ним) Я бы занялся, но в работе со звуком в Си не особо шарю
200000 aside, как насчёт просто прикрутить вместо староговёного МеРЗкого плеера ffdshow? И тогда будут ОГГ, ФЛАК, ТТА - намного круче того же огороженного быдлоФМОДа, о котором даже сами разрабы забыли.
~ X ~ у меня там mp3-либа. Она умеет только mp3. fmod я точно нехочу, он будет конфликтовать с теми, которые цепляются к модам.
Раньше у меня была более другая либа для mp3, libmad называлась.
Она булькала на переменном битрейте и хрипела на 48 кгц.
Но вроде бы не вылетала. Можно попробовать взять более свежую версию mpg123.