LINUX.ORG.RU

Pipewire - неизбежная... победа!

 , ,


5

2

Есть snap, flatpak, wayland. Вроде хорошее дело, но - они добавляют изоляцию между приложениями, и такие штуки как jack, pulseaudio уже не могут работать как раньше. Надо что-то решать. И тут появляется надежда - pipewire. Но надежда ложная, потому что это катастрофа!

Нет, надежда все-таки есть.

Вот мои претензии (которые в итоге разрешились):

1. Обязательный ресемплинг. Как известно, pulseaudio поддерживало две частоты дискретизации микшера - основную и альтернативную. Это позволяло, в случае воспроизведения например только музыки со spotify переключать микшер на частоту дискретизации потока и УБРАТЬ ресемплинг! Если воспроизводит только одно приложение, ресемплинга быть НЕ ДОЛЖНО! Потому что он не нужен. Pipewire не позволяет, и похоже что реализовать это в той архитектуре, которую заложили, будет весьма непросто. На практике он всегда делает ресемплинг и всегда портит звук.

Последняя версия pipewire поддерживает до 16 значений частоты дискретизации и будет переключаться на нужную, когда это возможно.

Переключение РАБОТАЕТ уже сейчас, на версии из Git! На релизе 0.3.33 у меня не работает.

КАК СДЕЛАТЬ:

В pipewire.conf пишем:

default.clock.rate          = 48000
default.clock.allowed-rates = [ 44100, 48000 ]

Можно перечислить в allowed-rates до 16 значений. Все!

ТЕПЕРЬ - если воспроизведения не было, и запустить на воспроизведение ОДНО приложение, pipewrire будет переводить себя и звуковую карту на частоту дискретизации этого приложения, и ресемплинга НЕ БУДЕТ.

2. При работе с jack клиентами может меняться размер буфера. Занавес! То есть я играю на гитаре, и тут мне меняют размер буфера? А ничего что это приведет к слышимому и чувствуемому изменению задержки звука? Как играть??? Так НЕЛЬЗЯ ДЕЛАТЬ, а надо делать ровно наоборот. Я уже молчу про то, что изменение на лету размера буфера может просто крашануть jack приложение, которое такого бреда не ожидало!

3. Для того, чтобы вообще хоть как-то задать размер буфера для jack клиентов, надо запускать приложение с переменной окружения PIPEWIRE_LATENCY. То есть мне теперь все приложения из консоли стартовать? Или все desktop файлы править? С настоящим jack это решается элементарно - программой управления типа qjackctl. Там просто выбирается какой буфер, и все приложения используют его. Должно быть ВОТ ТАК.

Решение:

pw-metadata -n settings 0 clock.force-quantum <size>

устанавливает фиксированный размер буфера.

Или в jack.conf:

node.lock-quantum = true

4. Нельзя нормальным образом поменять частоту дискретизации при работе с jack клиентом. Используется та, на которую настроен pipewire своим конфигом. С нормальным jack частота просто выбирается в qjackctl. А с pipewire что, мне править конфиг и перезапускать его, или как?

Решение, можно менять на лету:

pw-metadata -n settings 0 clock.force-rate <samplerate>

В итоге, имеем огромные практически нерешаемые проблемы на уровне архитектуры, из-за которых pipewire идет в противоположную от нужной сторону.

Последний релиз и коммиты, которые делаются прямо сейчас показывают, что развитие пошло именно в нужную сторону.

★★★

Последнее исправление: James_Holden (всего исправлений: 4)

Ответ на: комментарий от James_Holden

Нет, флатпаки не имеют никакого отношения к Program Files. Приложение флатпака запускается не на реальной ФС хоста, а на «искусственной»

Да хоть на HDFS, роли это никакой не играет. Смысл один и тот же.

Это технически невозможно нормально сделать - ты сразу теряешь тогда возможность обновить библиотеку не обновляя программу. Что и наблюдается в Nix - любое обновление библиотеки влечет пересборку и перезалив всего что от нее зависит.

Технически возможно, но придётся всем сделать очень больно и поменять кучу стандартов, которые нынче за китов считаются, а именно поддерживать разные версии библиотек с разными названиями. Не libastral.so a libastral.0.0.25.so + Юзерские и патченные версии и т.д.. с возможностью настройки в конфиге для каждого приложения, какую версию пытаться использовать.

peregrine ★★★★★
()

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

macrohard ★★
()

Pipewire, который это уже по счёту костыль призванный решить проблемы ALSA? Число звуковых надсистем и их монстроподобие дают понять, что исправлять нужно подсистему. Замена нужна алсе, а не пульсу с джеком.

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

Не libastral.so a libastral.0.0.25.so + Юзерские и патченные версии и т.д.. с возможностью настройки в конфиге для каждого приложения, какую версию пытаться использовать.

Погоди, вот тут я тебя не понял.

Сейчас в классических дистрибутивах как. Кладется библиотека с именем libastral.0.0.25.so, потом на нее создается симлинк с именем libastral.so. Все приложения линкуются с именем libastral.so, то есть с симлинком. Если мы заменяем libastral.0.0.25.so на libastral.0.0.26.so и меняем симлинк сохраняя его имя, то приложение не замечает подмены и работает уже с новой версией библиотеки.

При таком раскладе ничего не мешает иметь сколько угодно версий libastral, в любом дистрибутиве, хоть в дебиане. Надо только обеспечить гибкое переключение симлинков на нужную версию.

И механизм переключения в дебиане уже есть. Просто он не может прямо при запуске приложения удобно и гибко переключать. Ну можно развить эту систему, но как это сделать удобно и при этом сохранить FHS - вопрос.

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

Ты ничего не понимаешь. ALSA это драйверы звуковой карты и низкоуровневый интерфейс к ним. Ты хочешь драйверы переписать? Чем они тебе не угодили?

Число звуковых надсистем

Какое число? Одна? У тебя одна это много?

который это уже по счёту костыль

Ну и который?

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

Яблочникам почему-то для всего хватает одного CoreAudio.

А линуксоидам теперь будет хватать одного pipewire.

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

Если мы заменяем libastral.0.0.25.so на libastral.0.0.26.so и меняем симлинк сохраняя его имя, то приложение не замечает подмены и работает уже с новой версией библиотеки

Потом в libastral.0.0.27.so ломают API/ABI и армагеддец.

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

Потом в libastral.0.0.27.so ломают API/ABI и армагеддец.

А почему дебиан при таком подходе за столько лет не постиг армагеддец?

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

И тебе тоже?

Куда я денусь. Я уже на него перешел.

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

Ну я даже не знаю, при запуске каждого приложения формировать и подсовывать LD_PRELOAD под него это как-то очень странно. Я не назову это «удобно».

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

Яблочникам почему-то для всего хватает одного CoreAudio.

Была такая картинка «звук в линуксах», где здоровенный лес 🌳 такой.

Надо ещё дополнять с кучами связей и всего вот этого.

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

Ну, «запуск приложения» это такое себе абстрактное понятие. Если нужно страдать подобной хренью, то написать скрипт-обёртку для запуска приложения с какими нужно костылями - вроде не такая уже и большая проблема. Многие крупные приложения так делают )

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

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

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

Вот и я про то же, но в NixOS не создают симлинки на каждую библиотеку, а просто прилинковывают напрямую. Что имеет как плюсы, так и минусы.

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

Потому что, если API/ABI ломается, они героически пытаются или тянуть старые версии, накладывая патчи для сборки с ними, или просто морозят версию и бэкпортируют по-возможности security-патчи.

Собственно поэтом и идёт всё к тому, что какие-нибудь браузеры будут только во flatpak/snap. Потому что зависимостей куча, API в них ломают часто (вспомнить теже libpng, или ffmpeg, у которого стабильный API вообще отсутствует как класс) и для LTS веток (10 лет) или для debian (вечный slowpoke) приходится

  • или держать старые версии (минус фичи, плюс уязвимости)
  • или бандлить либы (что противоречит политике debian, и в частности на этом обломали deadbeef)
  • или самому мейнтейнить все зависимости (надо быть RedHat-ом, иначе лютый геморрой)
  • или идти во flatpak/snap
SkyMaverick ★★★★★
()
Ответ на: комментарий от SkyMaverick

Собственно поэтом и идёт всё к тому, что какие-нибудь браузеры будут только во flatpak/snap

Да, то есть идея собирать весь софт в дистрибутиве на фиксированном единственном наборе библиотек давно провалилась. Только не все тут это понимают.

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

Не все догоняют, что с конца 80-х (когда появилась эта тема) размер, сложность и количество зависимостей популярного софта выросло не в разы, а на порядки. Количество же мейнтейнеров растёт не сильно убедительными темпами.

Поэтому для дистров тут ровно два варианта:

  • делать роллинги, а-ля Arch (ну или полу-роллинги, вроде промежуточных Ubuntu).
  • делать базовую систему по олдскулу (на пакетах), и пользовательское окружение вокруг какой-нибудь более универсальной дистрибуции (flatpak/snap/«ещё какая-нибудь хрень, которую потом придумают»)
SkyMaverick ★★★★★
()
Ответ на: комментарий от SkyMaverick

делать роллинги, а-ля Arch

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

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

Арч-у, насколько я в курсе, положить на бандлы. Т.е. нужные библиотеки в принципе можно забандлить на нужной версии (что неприемлимо в debian). Основные системные (типа glibc и даже, как ни странно, GTK+) имеют более-менее стабильный API (в GTK3 его вынужденно ломали только 1 раз - версия 3.10).

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

James_Holden тоже кастану, так как сюда удобнее ответить моё мнение.

или держать старые версии (минус фичи, плюс уязвимости)

чем flatpak/snap со старыми версиями облегчит жизнь? Тем что вместо одной уязвимости в одной библиотеки в системе будет 5 разных приложений с 5 разными наборами уязвимостей из-за того что в них условно разные версии libcurl.so, чтобы уж наверняка через одну из них можно было прописать зловреда/ломануть комп? Бесполезный аргуемнт, скорее даже не в пользу flatpak/snap

или бандлить либы (что противоречит политике debian, и в частности на этом обломали deadbeef)

А вот это надо в любом случае делать.

или самому мейнтейнить все зависимости (надо быть RedHat-ом, иначе лютый геморрой)

Часть зависимостей однозначно мейнтейнить самому

Что действительно даёт flatpak/snap, это убирает с маргинальных дистрибутивов необходимость майнтейнить самому репы и сваливает всю ответственность за дыры/уязвимости на разработчиков приложения в надежде что они то и осилят опакечивание в flatpak/snap, раз в deb/rpm не осилили (не осилят и этим будут заниматься вообще левые люди, не имеющие отношения ни к разработчикам, ни к авторам дистрибутивов). Таким образом вся безопасность в линуксах идёт лесом, вот прямо совсем. Прямо как с PPA в Ubuntu, с одним исключением, PPA это редкая штука, когда очень надо что-то конкретное, таким образом массово распространять заразу сложно, ppa с условным PCManFM будет использовать 1,5 человека, т.к. PCManFM есть в репах большинства дистрибутивов и только ради какой-то конкретной фичи может быть нужна какая-то совсем новая/патченная версия. Но с рассветом flatpak/snap репы отомрут и будет куча мутных flatpak/snap репозиториев на 1-2 пакета, за которые вообще непонятно кто и как отвечает. Более того, даже найти того кто что-то нехорошее сделает будет так же трудно, как найти хакера который сайт задефейсил.

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

Будет опять многобукаф, извиняюсь но что делать. Прошу вникнуть.

чем flatpak/snap со старыми версиями облегчит жизнь? Тем что вместо одной уязвимости в одной библиотеки в системе будет 5 разных приложений с 5 разными наборами уязвимостей из-за того что в них условно разные версии libcurl.so, чтобы уж наверняка через одну из них можно было прописать зловреда/ломануть комп?

Ты несколько преувеличиваешь опасность взлома. Речь идет о десктопе, мы пока не пихаем flatpak на сервера. Десктоп, находящийся за несколькими NAT даже при наличии уязвимости так ломануть весьма проблематично. Сюда добавим еще изоляцию, которую наворачивают flatpak и snap (и которой в дебиане вообще нету из коробки).

На андроиде apk это близкий аналог снапа. Уязвимостей - вагонище. С обновлениями даже системы - полное дно. Но катастрофы и массового взлома мобил не наблюдается. Так федора+флатпак на фоне этого - крепость.

Теперь посмотрим на проблему целостности системы. В дебиане целостность гарантируется только для deb пакета, до того как он распакован. А потом можно модифицировать файлы (тупой вирус), можно незаметно докидывать файлы в систему - если есть права рута.

Флатпак и OSTree обеспечивают целостность постоянно. Система - это как коммит в гите, каждый файл под контрольными суммами, и не в пакете, а уже после установки! Вот это очень важно! Плюс - все монтируется read only.

То есть - система, установленная из OSTree - смонтирована read only, и сидит в виде коммита в гит-подобной системе контроля. Ты там ничего не поменяешь незаметно, ничего не добавишь и не уберешь. Ну конечно имея рута можно наворотить и там, но это сильно осложняется.

Таким образом вся безопасность в линуксах идёт лесом, вот прямо совсем.

Ты сильно преувеличиваешь. Безопасность даже может вырасти.

Теперь смотри как устроен Flathub, основной репозиторий флатпак пакетов. Ты возможно жумаешь что туда васяны заливают васянски собранные бинарники и потом эти васяны сами отвечают за обновление? Ничего подобного.

Это репозиторий на GitHub, где хранятся манифесты для сборки всех флатпак пакетов. Вот эти манифесты ты и добавляешь на флатхаб, если решаешь добавить туда пакет. Далее - инфраструктура сборки собирает этот пакет. У них, не у васяна.

Теперь - если обнаружена уязвимость в условной libcurl, там нажмут условную кнопочку и весь репозиторий пересоберется с пропатченой libcurl. Даже если придется запатчивать все манифесты, прописывая туда новую версию или патч - это за день легко делается. То же самое в это время будет происходить в классических репах.

Проблемы будут с проприетарщиной, но тут как ни крути, как ни изголяйся, но в дебиане у тебя точно так же проприетарщина будет дырами светить, только еще и без изоляции!

будет куча мутных flatpak/snap репозиториев на 1-2 пакета

Да, будут, они уже есть - например Viber. Пока они для проприетарщины, но будут появляться и специально мошенические, с майнерами, шпионами. Это проблема, но ее можно сильно поуменьшить банальной защитой от дурака - дефолтным запретом подключать левые репы.

В snap и того жестче - можно использовать только магазин Canonical, сторонние репы вообще штатно не предусмотрены.

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

Десктоп, находящийся за несколькими NAT

Но ведь нет этих NAT, ipv6 шагает по планете

На андроиде apk это близкий аналог снапа. Уязвимостей - вагонище. С обновлениями даже системы - полное дно. Но катастрофы и массового взлома мобил не наблюдается. Так федора+флатпак на фоне этого - крепость.

Андрюшка несколько секьюрнее линукса, но и то причина в том что локеры не поделать, а шпионов ловить толку мало, они и так официально через плеймаркет там устанавливаются, вроде фонариков, которые СМС-ки хотят читать.

Это репозиторий на GitHub, где хранятся манифесты для сборки всех флатпак пакетов. Вот эти манифесты ты и добавляешь на флатхаб, если решаешь добавить туда пакет. Далее - инфраструктура сборки собирает этот пакет. У них, не у васяна.

Зевса с гитхаба убрали уже? Как бы вообще ботнет, но его там можно найти...

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

Но ведь нет этих NAT, ipv6 шагает по планете

Я думаю что открывать каждому пользователю все порты снаружи это совсем плохая идея для провайдера, хоть и ipv6. Ну можно системный файрволл дефолтный воткнуть.

Зевса с гитхаба убрали уже? Как бы вообще ботнет, но его там можно найти…

Тут же дело не в гитхабе, а во владельце конкретного репозитория на гитхабе. Ты же не думаешь что флатпаки мелкософт собирает раз манифесты на гитхабе.

Суть в том что и Snapcraft, и Flathub это не менее централизованные репозитории чем другие.

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

В дебиане целостность гарантируется только для deb пакета, до того как он распакован. А потом можно модифицировать файлы (тупой вирус), можно незаметно докидывать файлы в систему - если есть права рута.

Не хочу капитанствовать, но права рута дают полный контроль над системой. И никакой Флатпак от этого, мягко говоря, упущения не защитит.

Как вообще можно нафантазировать, что проблема с утечкой рута теперь залихватски решается чем бы то ни было вообще?

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

Но ведь нет этих NAT, ipv6 шагает по планете

Это разные плоскости. NAT не для того нужен, чтобы раздавать по одному IP-ишнику многим. Это тема безопасности и прочего. В основном это про открытые порты на устройствах. За NAT снаружи их не видно. А значит никто не будет их бомбить. IPv6 NAT никак не отменяет. Он отменяет UDP hole-punching, TURN- и STUN-сервера и так далее. Вот из какой это оперы.

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

Этот контроль еще надо реализовать.

Ну да, если root-а получит какой-то вендовый школ, то Флатпак от его неуклюжих попыток что-то кулцхакнуть защитить сможет. Это однозначно победа.

anonymous
()

PIPEWIRE_LATENCY

/etc/environment … ~/.profile читается gdm и прочими sddm, если же на говнотайлах сидишь, то сам себе дятел

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

А может, дятел в зеркале? Как мне для разных приложений и разных ситуаций разное значение на лету задавать? Все из консоли запускать?

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

Что за «задачи десктопа» и зачем они не нужны? Зачем вообще искусственно делить ЭВМ на классы и ограничивать в возможностях?

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

Проблема не в альсе, она глубже: в том, что у потребителей распространены убогие карточки типа HDA без аппаратного микширования и с полутора поддерживаемыми частотами дискретизации. Программно эту проблему не решить в принципе, всё равно что устраивать срач, какое сглаживание на LowDPI лучше: всё говно, на разный вкус только.

К макоси проблема нерелевантна тупо потому, что затычки вместо аудиокарт в маки тупо не ставят. Есть пруфы, что на вкряченных на днищеноуты какинтошах CoreAudio так же сносно работает?

mertvoprog
()
Последнее исправление: mertvoprog (всего исправлений: 1)
Ответ на: комментарий от James_Holden

Ага, отличная картинка, на ней половина уже мертво, а Phonon, PortAudio и OSS последние хрипы издают. Прибавился при этом за эти годы только PipeWire. Отличная тенденция, так держать.

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

Зачем вообще искусственно делить ЭВМ на классы и ограничивать в возможностях?

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

Я как раз предлагаю не ограничивать.

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

без аппаратного микширования и с полутора поддерживаемыми частотами дискретизации.

А ресемплер и микшер в железе какой-то другой? Святой? Он может то что софту неподвластно?

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

деление естественное

Wut.

В том, что одно и то же засунули в разные корпуса и наклеили разные шильдики, ничего естественного нет.

Процу пофиг, в «мобильник» его засунули или в «сервер», линуксу и подавно, в нём дрова на все случаи жизни, вот бывает Fibre Channel в «десктопах», например? — а драйвер в линуксе есть! Захотите поломать стереотипы и воткнуть оптику напрямую в нетбук — нет никаких проблем.

разработчики дистрибутивов

Это неправильные дистрибутивы.

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

Он устраняет лишнюю нагрузку на процессор и упрощает программную реализацию звуковой подсистемы, о чём и речь.

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

Он устраняет лишнюю нагрузку на процессор и упрощает программную реализацию звуковой подсистемы, о чём и речь.

Ты ради интереса открой системный монитор и посмотри, какая от звуковой системы идет нагрузка на процессор. Подскажу - ноль целых ноль десятых.

упрощает программную реализацию звуковой подсистемы

Всех волнует сложность аппаратной реализации. Сложность программной реализации цены не имеет - такие программы бесплатны.

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

какие-нибудь браузеры будут только во flatpak/snap

Они кагбэ давно существуют бинарными самообновляемыми тарболами (Program Files, ага). Но тенденция нехорошая, попробуйте-ка Anbox или FluffyChat бинарным тарболом найти.

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

Почему единственном-то?

Вот у Нас спокойно разные версии сосуществуют.

root@localhost:~# apt rdepends --installed libicu60 2>/devnull|wc -l
^C
root@localhost:~# apt rdepends --installed libicu60 2>/dev/null|wc -l
6
root@localhost:~# apt rdepends --installed libicu63 2>/dev/null|wc -l
8
root@localhost:~# apt rdepends --installed libicu67 2>/dev/null|wc -l
54
root@localhost:~# apt rdepends --installed libgstreamer0.10-0 2>/dev/null|wc -l
16
root@localhost:~# apt rdepends --installed libgstreamer1.0-0 2>/dev/null|wc -l
120

Без никсопомойки.

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

Процу пофиг,

Ты (или ВЫ) еще один небиологическое существо-проц?

Людям пофиг на проц, их интересуют проблемы людей.

С точки зрения человека десктоп и сервер это две большие разницы. Сервер обслуживает машины, поэтому из людей с ним взаимодействует только разработчик и админ. И тому, и другому нужна «система-как-среда-разработки», более приземленная аналогия - стройка. Лежат кирпичи, можно брать и сооружать из них что нужно. Именно поэтому линукс так прижился и так хорош на серверах.

Десктоп обслуживает человека. С ним взаимодействует небольшое количество разработчиков, и большое количество людей-пользователей. Пользователю нужна «система-как-набор-приложений». Приземленная аналогия - готовый сданный в эксплуатацию дом. Никаких кирпичей не валяется, есть клумбы, ничего менять нельзя. Только использовать как есть.

Пользователь не хочет жить на стройке. Разработчик - хочет. Отсюда главное противоречие десктопа: должен страдать либо пользователь, либо разработчик.

На маке и винде страдает разработчик, пользователь доволен. На линуксе страдает пользователь, разработчик доволен. Но!!! Разработчиков намного меньше чем пользователей. Отсюда - 1% рынка десктопа.

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

Это исключение, оно как раз подтверждает провал изначальной идеи, который достиг таких размеров что уже в дебиане чехарда из версий. А что делать, таковы потребности.

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

Подскажу - ноль целых ноль десятых

А, шо? https://pic4a.ru/18/L1y.png

А если по сети вещать, то пшшаудио и все 10% жрать может!

Всех волнует сложность аппаратной реализации

Ещё раз повторяем, аппаратная реализация недетерминирована вне программно-аппаратных комплексов типа амиг и маков. Кого там что волнует, Вы о чём вообще?

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