библиотека FMOD и /dev/dsp (нет потока из /dev/dsp)

Разные проблемы звука, видео, обсуждение разных устройств и т.д.

Модератор: Модераторы разделов

Гурман
Сообщения: 55
ОС: Debian 4 Etch, Win XP SP2

библиотека FMOD и /dev/dsp

Сообщение Гурман »

пытаюсь получить выходной сигнал с /dev/dsp для обработки библиотекой FMOD

для пробы использую пример из комплекта FMOD - stream/Main.cpp

чтобы чего-то получить, запускаю параллельно mpeg123 03.mpg

если при этом выполнять cat /dev/dsp то на консоль летит содержимое 03.mpg в символьном виде :)

исходник stream изменен, чтобы он открывал raw поток, он открывает:

stream /dev/dsp поток открывается, из него якобы выполняется чтение, состояния ошибки не возникает,
но при этом в динамиках тишина и вызов FSOUND_GetCurrentLevels( channel, &l, &r) дает уровни обоих каналов l/r == 0,
а через несколько циклов чтения входной поток вообще неожиданно закрывается - в потоке проскакивает
сообщение STREAM ENDED!! после чего FSOUND_GetChannelsPlaying() возвращает 0

если же просто открыть любой файл, например stream 03.mp3 то в динамиках есессно шум, и значения
каналов l/r содержат ненулевые значения

была мысль, что из-за открытия на чтение блокируется /dev/dsp на запись, и библиотека не может
в него писать, поэтому уровни каналов нулевые - но после изменения программы на вывод через ALSA
ничего не изменилось

принимаются любые идеи - почему FMOD не читает из /dev/dsp, хотя успешно его открывает и якобы
даже сначала там что-то есть (число проигрываемых каналов не равно 0)
Спасибо сказали:
Гурман
Сообщения: 55
ОС: Debian 4 Etch, Win XP SP2

Re: библиотека FMOD и /dev/dsp

Сообщение Гурман »

похоже, что FMOD не пригодна в принципе для работы с потоком из /dev/dsp

она пытается делать seek и еще какие-то операции, в конце концов запрос на чтение из файла от библиотеки имеет длину фрагмента 0 байт - ничего не читается, ничего не работает

хотя если ей подсовывать обычный файл, то запрос на чтение ненулевой, все работает

точно не работает версия FMOD 3.75 для С, по документации похоже, что версия Ex (4x) для С++ также не будет работать
Спасибо сказали: