LINUX.ORG.RU

ubuntu, звук, загрузка процессора


0

0

А это нормально, что теперь при воспроизведении mp3 заметно загрузку на процессор? Rhytmbox примерно 25-30%, mpg123 ~ 40%, mplayer рвёт их как тузик грелку: 10-15%.

Eeepc 1000, вроде не 486? Ubuntu jaunty, поставил и накатил все обновления, вроде больше ничего не делал. ФС раз при старте проверялась, может от этого у убунте звук весь изломаться?

Было подозрение на пульс - удалил пульс. Что-бы ещё удалить?

★★★★★

грузят обычно pulseaudio
и плагины обработки звука, например resampling
отключайте в плеере)

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

Такого вообще нет. Он из какого пакета должен быть?

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

А что в нём должно быть?

Есть /etc/modprobe.d/alsa-base.conf

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

Хотя нет, это я кривой файл создал, алса отказала и mpg123 видать через oss выводил.

Но в любом случае понятно где искать.

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

>через oss

Ну или как вариант через oss эмуляцию в alsa

devl547 ★★★★★
()

Как уже сказали выше - это скорее всего ресемплинг. Если ЦАП звукового чипа может брать семплы с частотой 44100 Гц (наиболее распространённая частота дискретизации) и ты воспроизводишь поток именно такой частоты, то ресемплинг (передискретизация) не нужен. Если чип умеет только (например) 48000 Гц, то при воспроизведении 44100 ресемплинг необходим и он будет кушать процессорное время. Кроме того, возможны хитрые случаи, когда звук выводят одновременно две программы, но с разной частотой дискретизации, при этом для одного из потоков неизбежно требуется ресемплинг.

Список возможных частот дискретизации, которые умеет твой чип, можно посмотреть в /proc/asound/cardX/codec#Y. Там должно быть что-то типа

Default PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
Попробуй убрать все свои настройки из /etc/asound.conf и ~/.asoundrc (если ты их уже поменял), сгенерировать тестовых файлов с разными частотами дискретизации и воспроизвести с помощью aplay.

Если это действитель ресемплинг и тебе жалко 10% процессорного времени, то используй более простой метод ресемплинга, чем тот, который использует alsa-lib по умолчанию. Естественно качество при этом пострадает =).

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

> Как уже сказали выше - это скорее всего ресемплинг

Видимо да, больше просто нечему.

> Список возможных частот дискретизации, которые умеет твой чип, можно посмотреть в /proc/asound/cardX/codec#Y. Там должно быть что-то типа


Default PCM:
rates [0x5f0]: 32000 44100 48000 88200 96000 192000
bits [0xe]: 16 20 24

> убрать все свои настройки из /etc/asound.conf и ~/.asoundrc


Здесь самое забавное, что при пустом конфиге оно работает, но как только я что-то вписываю туда, aplay перестаёт играть. Судя по всему, при этом всё начинает идти через oss (эмуляцию?), но ресемплинг и пожирание процесора заканчивается. При указании устройства 0,0 так-же не играет:

$ aplay -D hw:0,0 /usr/share/sounds/alsa/Front_Center.wav
Воспроизведение WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Частота 48000 Гц, Моно
aplay: set_params:966: Недоступно количество каналов

$ cat /dev/urandom |aplay -D hw:0,0
Воспроизведение Сырые данные 'stdin' : Unsigned 8 bit, Частота 8000 Гц, Моно
aplay: set_params:961: Остсутствует частота оцифровки

Вроде всё по учебнику...

Впрочем, это тоже выход, сломать алсу кривым конфигом и успокоиться :)

> жалко 10% процессорного времени,


Батарея.

> более простой метод ресемплинга,


Вообще-бы от него отказаться, да кроме как сломать не получается :(

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

> $ aplay -D hw:0,0 /usr/share/sounds/alsa/Front_Center.wav
> Воспроизведение WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little > Endian, Частота 48000 Гц, Моно

> aplay: set_params:966: Недоступно количество каналов


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

> $ cat /dev/urandom |aplay -D hw:0,0

> Воспроизведение Сырые данные 'stdin' : Unsigned 8 bit, Частота 8000 Гц, Моно

> aplay: set_params:961: Остсутствует частота оцифровки


То же самое, только на этот раз ещё и неподдерживаемая частота дискретизации (8000 Гц).

Либо сделай WAV'ы с нужнойчастотой, размером сэмплов и количеством каналов, либо выводи на plughw:0,0 (но в этом случае ALSA может включить и ресемплинг если он будет нужен).

> Вообще-бы от него отказаться, да кроме как сломать не получается :(


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

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

> Если подавать поток напрямую на hw:, то alsa не производит вообще никаких преобразований. В данном конкретном случае, она ругается на то, что ты подаёшь моно-поток, а звуковой чип его не умеет, нужно подавать стерео.

Спасибо, теперь вроде понятно :)

Интересно, а не существует-ли толкового описания на русском как это всё организуется?

> Если от него вообще отказаться, то звук в некоторых случаях прост оне будет воспроизводиться.

Вроде звук вообще не особо и нужен, "системные звуки" я обычно сразу убираю, mp3 да кино только, voip пока не пользуюсь. Хотя если записи через одну воспроизводиться будут... :)

Вот пришла идея сменить алсу на oss, даже нашёл что-то как это делать, вечером может попробую. А то полчаса батарей-то всё-же не лишние :)

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

>> $ cat /dev/urandom |aplay -D hw:0,0
>> Воспроизведение Сырые данные 'stdin' : Unsigned 8 bit, Частота 8000 Гц, Моно

>> aplay: set_params:961: Остсутствует частота оцифровки


> То же самое, только на этот раз ещё и неподдерживаемая частота дискретизации (8000 Гц).


Самое забавное, что это скопированный пример из описания по настройке :) .

Хотя возможно к этому месту там уже в конфиге указано как передискретизировать. Без параметра -D и у меня работает. Если у меня конфига нет, то наверно оно преобразует в соответствии с параметрами по умолчанию, как собрано?

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

> Интересно, а не существует-ли толкового описания на русском как это всё организуется?

Есть ли на русском - не знаю. Документация по конкретным плагинам есть тут: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html
Настройки цепочки плагинов, используемой по умолчанию расположены в /usr/share/alsa

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

> Вот пришла идея сменить алсу на oss, даже нашёл что-то как это делать, вечером может попробую. А то полчаса батарей-то всё-же не лишние :)

В плане энергопотребления скорее всего станет хуже. Во-первых, HDA-чипы могут отключаться, когда не воспроизводится звук, чтобы уменьшить энергопотребление. В ALSA поддержка этого есть (возможно необходим pulseaudio, но тут я не уверен, возможно и голая ALSA умеет отключать), в OSS нету. Во-вторых, suspend/resume в OSS работает через костыли, а на некоторых чипах возможно вообще в принципе не работает. Ну и в третьих, ресемплинг нужен будет и там =).

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

Понятно. Собственно, интерес вызвало то, что со сломанным конфигом алсы всё работало нормально (достаточно битого /etc/asound.conf), вот и подумал что это было через oss.

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

> Понятно. Собственно, интерес вызвало то, что со сломанным конфигом алсы всё работало нормально (достаточно битого /etc/asound.conf), вот и подумал что это было через oss.

В ядре то в этом случае по любому ALSA. Просто возможно использовалась эмуляция OSS через ALSA.

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