EXTERNAL_BUFFER чем не оно?Цитата:
научить SNDRENDER работать с кольцевым буфером в штатном режиме
Вид для печати
EXTERNAL_BUFFER чем не оно?Цитата:
научить SNDRENDER работать с кольцевым буфером в штатном режиме
поставил фиксы boo_boo, добавил ещё одну фичу (отключение показа неактивных иконок)...
незнаю :|
у мну фиксы не прокатили и звук стал только хуже.
заколебало блин уже. наверное добью до юзабельной 0.1 и начну писать потактовую эмуляцию (да и к тому же чтоб разные устройства рендерили ОДИНАКОВОЕ количество семплов на фрейм).
хорошо: больше движков - лучше. хотя, проблемы c количеством семплов уже нет, просто boo_boo выложил что-то не тоЦитата:
Сообщение от Sinus
тем, что этот екстернал буфер один на все экземпляры SNDRENDER, а если охота микшировать потоки самому, это не катит :rolleyes:Цитата:
Сообщение от SMT
я то самое выложил, но Sinus хочет, видимо, чтоб кол-во семплов было равным на каждом фрейме, а не в среднем. ИМХО это было бы приятно, хотя не принципиально вообщем :)Цитата:
Сообщение от SMT
в смысле -- хуже? это ты про "высокочастотное сипение" с новым wavplay? похоже, у тебя не тянет с 8-ю фрагментами, надо больше (у меня такой феномен проявляется, когда их меньше 8-и, а если система загружена, то и при 8и).Цитата:
Сообщение от Sinus
если заменить строчку на
tmp = 0xFF0000 | (int) (log(frag_size) + 0.5);
исчезло сипение? системы у всех разные... поэтому и нужна возможность задавать из конфига размер буфера (AUDIO_HW_BUFFER) и, как выясняется, еще и кол-во фрагментов -- то, что у тебя нормально звучит, у меня дает лаг, и наоборот тоже лажа. :rolleyes:
вообщем, ИМХО надо передавать в wav_start 2 параметра (из конфига): frag_num и frag_size, а вышеупомянутую строчку превратить в
tmp = (frag_num << 16) | (int) (log(frag_size) + 0.5);
ЗЫ частоте семплирования по-хорошему тоже место в конфиге ;)
ну типа того.Цитата:
Сообщение от boo_boo
т.е. хочу чтоб для любого фрейма
dev_ay.samples == dev_border.samples
(конечно же если frame1_samples != frame2_samples то это совершенно не критично)
буду дома- попробую.Цитата:
Сообщение от boo_boo
размер буфера (тот который AUDIO_HW_BUFFER) не хотелось бы в конфиг перекладывать, ибо надо тогда динамические массивы юзать.Цитата:
вообщем, ИМХО надо передавать в wav_start 2 параметра (из конфига): frag_num и frag_size, а вышеупомянутую строчку превратить в
tmp = (frag_num << 16) | (int) (log(frag_size) + 0.5);
ЗЫ частоте семплирования по-хорошему тоже место в конфиге ;)
ничего страшного конечно (вон тот же config.cpp вообще деревья строчит), но всё таки не очень хотелось бы- меньше потенциальных глюков.
а вот frag_num и frag_size надо бы в конфиг.
и ещё чтоб ты написал туториал какие надо ставить- я допустив абсолютно не в курсе что это значит.
malloc или new либо проходит 1 раз при старте, либо нет, откуда глюки?!Цитата:
Сообщение от Sinus
это кол-во буферов и размер каждого . отимальные подбираются опытным путем, а по умолчанию надо поставить с запасом. UPD кстати, AUDIO_HW_BUFFER это сейчас и есть frag_size, только в сэмплах.Цитата:
Сообщение от Sinus
короче вот результаты моиз изголений:
несмотря на то, что /*max 8 fragments*/
у меня лучший результат достигается про значениях 11-12 (я убрал пока логарифм нафих).
и в старой версии wavplay.cpp установка размера фрагмента шла в самом конце, а в новом- где-то посредине. это так надо?
я перенёс в конец- ничего вроде не поменялось.
и вообще, лучше всего себя вела SDL - почти чистый звук.