Linux, проблема со звуком $

Тема в разделе "Общие вопросы по С и С++", создана пользователем vasilevs, 28 ноя 2006.

Статус темы:
Закрыта.
  1. vasilevs

    vasilevs Гость

    Репутация:
    0
    Люди шаращие ! Помогите плиз . Работаю с одним хлопцем , он мне пишет программу за $ . Он хороший программер но возникла проблема которая может повлиять на наши отношения :-(
    Суть. Пишем музыкальную программу. Уже практически всё написали и работает, но с cтрого с определённым оборудованием ( встретились только 2 звуковухи которые нормально работали одна старая очень , другая старая SBLive! )
    Купили новую, AUDIGY. ALSA нашла её , определила и установила драйвер. Консольный плеер amp в консоли играет всё нормально но наша программа не стартует. Долго разбирались пока не нашли следующее. Если поставить старые карты, которые нормально работают с нашей программой, можно одновременно запустить 2 консольных плеера amp и они одновременно будут играть . Но если поставить AUDIGY ( и ряд других карт ) , то первый amp работает а второй отказывается и кричит :

    root@localhost:~# amp /root/1.mp3

    amp 0.7.6, © Tomislav Uzelac 1996,1997
    THIS PROGRAM COMES WITH ABSOLUTELY NO WARRANTY
    PLEASE READ THE DOCUMENTATION FOR DETAILS

    Playing: /root/1.mp3
    Unable to open the audio device

    Properties: stereo 44100Hz
    Coding Method: MPEG1.0 layer3
    Bitrate: 192kbit/s
    Broken pipe
    root@localhost:~#


    Мой программер говорит что в том что эта карта ( в данном случае AUDIGY ) не поддерживает много потоков и типа сливай воду. Но я не могу привязываться к строго определённым картам а уж тем более к старым . К тому же мне очень тяжело поверить что AUDIGY чего то может неподдерживать ...


    В проекте используется :
    XFree
    Qt3
    Kernel 2.6.18
    ALSA 1.0.13


    Пожалуйста , скажите можно ли как то победить ситуацию ? Или мне прийдётся скупить на радиобазаре всё старое барахло ?

    Или мой программер ленится что бы решить эту проблему ?

    Спасибо большое !!!!!!!!!!
     
  2. Shadow-Master

    Shadow-Master Гость

    Репутация:
    0
    У меня к примеру на cm8738 xmms и др. приложения монопольно захватывают звуковуху и при попытке другим приложением чё-нидь говорит:Device bysy или device already in use.
     
  3. Rommer

    Rommer Гость

    Репутация:
    0
    Ваш программер абсолютно прав. По умолчанию через ALSA одновременно можно проигрывать столько потоков, сколько звуковая карта может смешивать хардварно. На старый звуковухах это ~ 4 потока, SBLive! (у меня сейчас стоит) - 16 потоков, все остальные, что я встречал (встроенные в мптеринку) - 1.
    Вам поможет плагин к ALSA - dmix: он смешивает звуки софтваро на уровне библиотек alsa, а дальше отправляет на звуковую карту только один поток. Да моей Fedora Core 3 он включается так:
    Вконце /etc/alsa/alsa.conf нужно дописать следующее:
    #
    # Dmix ALSA plugin
    #

    pcm.ossmix {
    type dmix
    ipc_key 1027
    slave {
    pcm "hw:0,0"
    period_time 0
    period_size 1024
    buffer_size 4096
    rate 44100
    }
    bindings {
    0 0
    1 1
    }
    }

    pcm.!default {
    type plug
    slave.pcm "ossmix"
    }

    ctl.mixer0 {
    type hw
    card 0
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей