Официальный форум СВД Встраиваемые Системы
04 Декабря, 2016, 09:01:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: snd_pcm_plugin_params - SND_PCM_PARAMS_NO_CHANNEL  (Прочитано 1199 раз)
Oluka
Интересующийся

Сообщений: 5


« : 27 Декабря, 2011, 08:45:08 »

Всем привет,

Если у вас есть возможность помочь мне с вопросом по аудио, буду очень признательна, так как от foundry27 нынче толку мало Sad

Написала аудио драйвер, тестирую работоспособность с wave (wave.c example on QNX site).
Функция snd_pcm_plugin_params возвращает SND_PCM_PARAMS_NO_CHANNEL (error #10).

Проблема в том, что я не могу найти никакой информации об этой ошибке и о возможных причинах ее возникновения.

Не могли бы вы рассказать, что это за SND_PCM_PARAMS_NO_CHANNEL?
Записан
Андрей Докучаев
Сотрудник СВД ВС
Ветеран

Сообщений: 651



WWW
« Ответ #1 : 27 Декабря, 2011, 10:31:24 »

Написала аудио драйвер, тестирую работоспособность с wave (wave.c example on QNX site).

Ваш драйвер представляет из себя подгружаемый модуль io-audio?

Функция snd_pcm_plugin_params возвращает SND_PCM_PARAMS_NO_CHANNEL (error #10).

Ошибка SND_PCM_PARAMS_NO_CHANNEL может возвращаться, например, в случаях:
- попытки воспроизведения данных не поддерживаемого формата;
- превышения максимального числа одновременно воспроизводимых потоков;
- при инициализации не указан формат воспроизводимых данных;
- произошла ошибка в драйвере при инициализации аудио потока...

Нужно рассматривать каждый случай отдельно, поскольку использование SND_PCM_PARAMS_NO_CHANNEL в драйверах может отличаться.
Записан

Oluka
Интересующийся

Сообщений: 5


« Ответ #2 : 27 Декабря, 2011, 10:51:46 »

Спасибо за оперативный ответ.

Да, мой драйвер - подгружаемый модуль io-audio.

Ошибка SND_PCM_PARAMS_NO_CHANNEL может возвращаться, например, в случаях:
- попытки воспроизведения данных не поддерживаемого формата;
Я правильно понимаю, что под поддерживаемым форматом имеется ввиду та информация, которой мы заполняем структуру snd_pcm_channel_info_t в коллбеке capabilities?

- превышения максимального числа одновременно воспроизводимых потоков;
В момент проверки ни одного потока не запущено на воспроизведение.

- при инициализации не указан формат воспроизводимых данных;
- произошла ошибка в драйвере при инициализации аудио потока...
Про последние 2 пункта - вы не могли бы пояснить подробнее, какие "этапы" инициализации имеются в виду?

Заранее спасибо

P.s.: в дополнение - я проигрываю mono, 24-bit, 48kHz, так как железо требует стрим именно такого формата.
« Последнее редактирование: 27 Декабря, 2011, 11:13:29 от Oluka » Записан
Андрей Докучаев
Сотрудник СВД ВС
Ветеран

Сообщений: 651



WWW
« Ответ #3 : 27 Декабря, 2011, 14:04:01 »

Я правильно понимаю, что под поддерживаемым форматом имеется ввиду та информация, которой мы заполняем структуру snd_pcm_channel_info_t в коллбеке capabilities?

да, io-audio анализирует эту информацию.

Про последние 2 пункта - вы не могли бы пояснить подробнее, какие "этапы" инициализации имеются в виду?

В Вашем случае указанные особенности могут и не проявиться. Большинство аудио драйверов возвращают SND_PCM_PARAMS_NO_CHANNEL из колбэка *_playback_aquire, конкретнее сказать не могу.
Записан

Oluka
Интересующийся

Сообщений: 5


« Ответ #4 : 27 Декабря, 2011, 14:24:03 »

Ясно, спасибо.

А может быть вы можете дать ответ на такой вопрос - при создании PCM-устройства (ado_pcm_create) в качестве аргументов передаются указатели на структуры ado_pcm_cap_t для playback и для capture. Как я поняла, эти данные потом каким-то образом преобразовываются в snd_pcm_channel_info_t, приходящие нам в capabilities. Но мне не понятна логика этого преобразования.

Например, при создании я указываю:
static ado_pcm_cap_t pb_cap =
{
...
   .rates = (SND_PCM_RATE_8000|SND_PCM_RATE_44100|SND_PCM_RATE_48000),

   .min_rate =    8000,
   .max_rate =    48000,
...
};

А в capabilities я упорно получаю минимальный рейт 44100, максимальный 48000.

Не понимаю, в чем дело... Это нормальная ситуация, когда io-audio игнорирует рейт 8000?
Записан
Андрей Докучаев
Сотрудник СВД ВС
Ветеран

Сообщений: 651



WWW
« Ответ #5 : 28 Декабря, 2011, 10:17:10 »

Ясно, спасибо.

А может быть вы можете дать ответ на такой вопрос - при создании PCM-устройства (ado_pcm_create) в качестве аргументов передаются указатели на структуры ado_pcm_cap_t для playback и для capture. Как я поняла, эти данные потом каким-то образом преобразовываются в snd_pcm_channel_info_t, приходящие нам в capabilities. Но мне не понятна логика этого преобразования.

Например, при создании я указываю:
static ado_pcm_cap_t pb_cap =
{
...
   .rates = (SND_PCM_RATE_8000|SND_PCM_RATE_44100|SND_PCM_RATE_48000),

   .min_rate =    8000,
   .max_rate =    48000,
...
};

А в capabilities я упорно получаю минимальный рейт 44100, максимальный 48000.

Не понимаю, в чем дело... Это нормальная ситуация, когда io-audio игнорирует рейт 8000?

Полагаю, проблема в том, что не указан непрерывный диапазон (подобных прецедентов в штатных драйверах не наблюдается). Явных ограничений, однако, со стороны io-audio я не заметил. Попробуйте следующий вариант:

Код:
pcm_caps.rates = SND_PCM_RATE_CONTINUOUS | SND_PCM_RATE_8000_48000;
pcm_caps.min_rate = 8000;
pcm_caps.max_rate = 48000;
Записан

Oluka
Интересующийся

Сообщений: 5


« Ответ #6 : 28 Декабря, 2011, 12:27:20 »

Не помогло, но все равно спасибо за предложенную идею.

Кстати, проблемы с преобразованием capabilities наблюдаются не только в рейтах. Так, например, min_voices мы выставляем в 1, а получаем 2  Huh?

Буду думать, в чем может быть проблема...

Еще раз спасибо, если вдруг появятся идеи о возможных причинах, напишите пожалуйста. Я в свою очередь так же напишу, если найду решение проблемы.

Кстати, на foundry27 вообще тишина Sad
Записан
Александр Варварик
Администратор
Старожил

Сообщений: 1354



WWW
« Ответ #7 : 28 Декабря, 2011, 20:57:27 »

Кстати, на foundry27 вообще тишина Sad

так ведь у них уже праздник в разгаре, они скоро уже на работу пойдут.
Записан

Oluka
Интересующийся

Сообщений: 5


« Ответ #8 : 29 Декабря, 2011, 09:27:39 »

Праздник праздником, но за последние 3 месяца мы не получили там ни одного толкового ответа - что они там так долго празднуют? Smiley
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 06 Октября, 2016, 15:47:08