LINUX.ORG.RU

Alsa dmix и sample rate


0

1

Есть звуковая карточка (E-MU 0202) без поддержки микширования, соответственно обязательно использование программного микшера. Альзовский dmix требует обязательного указания определённой частоты семплирования к которой всё и приводится в принудительном порядке. Но поскольку карточка поддерживает разные режимы sample rate, то хотелось бы совместить и микширование и вывод разных частот (в зависимости от источника). Возможно ли так настроить alsa или может быть есть какие то другие решения?


afaik, одновременно ты можешь давать/снимать звукопоток на карточку только в одной частоте. поэтому непонятно, как оно должно себя вести в случае двух источников с разными частотами.

anonymous
()
Ответ на: комментарий от anonymous

Ну например что бы остальные потоки микшировались к частоте потока который приходит первым (когда девайс занят), а если поток только один то и выводить его как есть.

NoldoR
() автор топика
Ответ на: комментарий от NoldoR

И где гарантия, что первый поток будет в адекватном качестве?)

Имхо, гораздо проще сделать в rc альсы нужное кол-во входов с нужными частотами и переключать дефолтный вход под настроение, когда требуется особое качество (тм).

По-умолчанию дефолтный вход держать в наиболее распространённой частоте.
От того, что звуки нотификации будут из 22 конвертиться в 44 ни особых нагрузок на cpu, ни потерь в качестве.

anonymous
()

вообщето sample rate который ты задаеш dmix'у получается у него на выходе, тоесть то что уже в последствии пихается в железку, а на входе он с любым стандартным рейтом принимает:

mplayer -srate 44100 2\ Unlimited\ -\ No\ Limit.ogg MPlayer SVN-r31918 (C) 2000-2010 MPlayer Team 159 audio & 341 video codecs

Playing 2 Unlimited - No Limit.ogg. Cache fill: 0.00% (0 bytes)

libavformat file format detected. [lavf] stream 0: audio (vorbis), -aid 0, No Limit ========================================================================== Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders AUDIO: 44100 Hz, 2 ch, s16le, 160.0 kbit/11.34% (ratio: 20000->176400) Selected audio codec: [ffvorbis] afm: ffmpeg (FFmpeg Vorbis) ========================================================================== AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample) Video: no video Starting playback...

вторая консолька:

mplayer -srate 48000 2\ Unlimited\ -\ No\ Limit.ogg MPlayer SVN-r31918 (C) 2000-2010 MPlayer Team 159 audio & 341 video codecs

Playing 2 Unlimited - No Limit.ogg. Cache fill: 0.00% (0 bytes)

libavformat file format detected. [lavf] stream 0: audio (vorbis), -aid 0, No Limit ========================================================================== Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders AUDIO: 44100 Hz, 2 ch, s16le, 160.0 kbit/11.34% (ratio: 20000->176400) Selected audio codec: [ffvorbis] afm: ffmpeg (FFmpeg Vorbis) ========================================================================== AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample) Video: no video Starting playback...

и никаких проблем нет.

GHhost
()
Ответ на: комментарий от anonymous

>И где гарантия, что первый поток будет в адекватном качестве?)

А и не надо гарантии. Как правило это будет 44.1 или 48. Ну или накрайняк 96 или 192.

Имхо, гораздо проще сделать в rc альсы нужное кол-во входов с нужными частотами и переключать дефолтный вход под настроение, когда требуется особое качество (тм).

Это и так понятно. Вопрос в том что бы автоматически.

NoldoR
() автор топика
Ответ на: комментарий от GHhost

>вообщето sample rate который ты задаеш dmix'у получается у него на выходе, тоесть то что уже в последствии пихается в железку, а на входе он с любым стандартным рейтом принимает

Хочется избежать преобразований по возможности. А так получится ресемплинг.

NoldoR
() автор топика
Ответ на: комментарий от NoldoR

Хочется избежать преобразований по возможности. А так получится ресемплинг.


а чем он плох в бытовых условиях?

имхо, не стоит загоняться ,) лучше бы написал клёвую доку про поднятие емки с разными свистелками и т.д. под топиком.

anonymous
()
Ответ на: комментарий от anonymous

Тащемта, с этим

pcm.rate {
    type rate
    slave.pcm "hw"
    converter "speexrate_best"
}

разница отчётливо слышна. Возможно, я что-то не дописал?

GotF ★★★★★
()
Ответ на: комментарий от NoldoR

>Хочется избежать преобразований по возможности. А так получится ресемплинг.

как избежать ресемплинга это уже другая тема, он не только програмным может быть, на некоторых картах аппаратный бывает, если в общем то выбирай наиболее распростаненный smple rate для себя, как правило это 44100 если ты конечно не музыкант, но думаю в последнем случае ты бы не задавал таких вопросов:)

GHhost
()
Ответ на: комментарий от anonymous

Похоже, так и есть. Послушал эти wav-ки mplayer'ом — разницы с выводом через

pcm.!default{
    type plug
    slave.pcm hw
}

не услышал. Спасибо за подсказку.

dmix мне сейчас приходится использовать из-за Hedgewars, т.к. там два процесса, и первый монопольно захватывает вывод, оставляя игровой процесс без озвучки.

GotF ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.