LINUX.ORG.RU

Влияние метода копирования данных на качество звука

 , , ,


0

5

Привет, ЛОР!

Я тут нашёл на одном форуме серию постов о том, что выбор функции для работы с памятью и копирования данных в памяти в аудиоприложении довольно сильно влияет на качество звука. Скажи, этому есть какое-нибудь научное обоснование?

Ссылка: https://www.audioasylum.com/messages/pcaudio/119979/

Для Ъ:

  • Разные версии memcpy() приводят к разному качеству.
  • Код на C++ с new звучит лучше, чем сишный код с malloc().
  • Есть специальная оптимизированная для звука версия memcpy(), позволяющая избавиться от лишних шумов.

Скажи, ЛОР, насколько стоит этим заморачиваться в моём коде? Если у меня на одном и том же компьютеры запущены плеер и мой код, делающий что-то с памятью, может ли это быть причиной плохого звука? Если да, что с этим можно сделать?

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

Открой для себя двойную буферизацию. Данные в буфер улетают в 2 раза чаще, чем его полная длина (но половинками). В итоге тебе нужна точность времени хоста в пределах 1/2 размера буфера в секундах. Пару мегабайт уже хватит на несколько секунд. Если хост не может за секунду-две раздуплиться и выдать новую пачку данных, с ним всё очень плохо, в штатном режиме это не очень реальная история для ОС с нормальной вытесняющей многозадачностью.

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

Справедливости для я и под онтопиком проблему наблюдал 2.5 раза и то на десктопе только. Под виндой при i/o загрузке без свопа я мёртвых виясяков ни разу не видел. Но я не то, чтобы какое-то разнообразие ввода вывода имел, это либо диски, либо видео, либо звук.

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

У нас с тобой диалог глухого со слепым.

Однозначно.

Я имел ввиду цифровую обработку, если что.

Хмм. Напоминаю:

Только если у тебя есть собака. Или ручной дельфин. Или летучая мышь, на худой конец.

И вот, конечно, не ультразвук имелся в виду.

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

Короче, всё с Вами понятно…

ПыСы. Но Вы настолько занятны что отныне я буду за Вами внимательно следить - надо же как-то развлекаться…

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

И вот, конечно, не ультразвук имелся в виду.

Это был ответ про «слушать на частотах выше 44kHz».

Вы позволили себе аппелировать к Котельникову

Где? Я про него или Найквиста в этом треде вообще не писал.

Начали загонять про бесполезность 96kHz

Опять же, где? Хотя мне интересно было бы увидеть твой аргумент о полезности подачи 96kHz на вывод. У тебя НЧ фильтр в любом случае появится где-то в цепочке между входом DAC и твоим мозгом.

По-моему, мой образ в твоей голове наложился на чей-то ещё, и ты в итоге отвечаешь кому-то другому.

ПыСы. Но Вы настолько занятны что отныне я буду за Вами внимательно следить - надо же как-то развлекаться…

Но мне лестно твоё внимание. Люблю, когда у меня появляются фанаты!

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 4)
Ответ на: комментарий от hateyoufeel

Хотя мне интересно было бы увидеть твой аргумент о полезности подачи 96kHz

Не подачи, а частоты дескритизации. Мне кажется что посыл про идеальный аналоговый фильтр необходимый для Котельникова / Найквиста - Вы не увидели. А до тех пор у Вас будет «тсс - тсс» вместо «дзинь - дзинь». Надеюсь хоть кто-то поймёт…

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

Не подачи, а частоты дескритизации.

Да и насрать. Считай, что частота дискретизации имелась ввиду 192kHz.

Мне кажется что посыл про идеальный аналоговый фильтр необходимый для Котельникова / Найквиста - Вы не увидели

Конечно не увидел. Ты же пишешь намёками, не напрямую, а мне лень за тебя додумывать. Тем не менее, я нигде не писал о бесполезности записи или обработки звука с частотой дискретизации выше 44kHz.

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

Ты же пишешь намёками, не напрямую

Не, это не совсем так. Я просто зачастую пропускаю то что мне кажется очевидным. Вы далеко не первый кто мне это говорит…

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

Мне кажется что посыл про идеальный аналоговый фильтр необходимый для Котельникова / Найквиста - Вы не увидели. А до тех пор у Вас будет «тсс - тсс» вместо «дзинь - дзинь». Надеюсь хоть кто-то поймёт…

Мне кажется, сейчас большинство ЦАПов работают на больших частотах, типа 192кГц. Соответственно, внутри делается upsampling со всякими КИХ-фильтрами, а на выходе уже не нужны аналоговые фильтры столь высоких порядков.

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

сейчас большинство ЦАПов работают на больших частотах, типа 192кГц.

ШИМ там, на мегагерце и выше. Потом интегрируется, и вуаля.

Но 96/24 из 44.1/16 не сделать. Точнее можно, но абсолютно бессмысленно - это как 128kbit mp3 в 320 пережимать надеясь что будет лучше.

bugfixer ★★★★★
()
Последнее исправление: bugfixer (всего исправлений: 1)

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

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

1024 семплов - 1/44 доля секунды. Это точно можно услышать? Ну, если ичертания постоянны, то наверное можно, а если 1-2 раза за секунду?

Это не просто можно услышать, это почти невозможно не услышать.

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

Это сильно проще сделать.

Абсолютно здравая мысль. Только «в лоб» так всё равно никто не делает: проблемы у Вас начнутся ещё на этапе попыток точно выставить напряжение согласно значению 16-ти (а уж тем более 24-ёх) битного сэмпла - нелинейности попрут ого-го, даже «в статике». Стандартное решение - превратить 44.1/16 в 705.6/1 (или больше) поток с широтно импульсной модуляцией и завернуть его потом на интегратор (благо 0Hz никому не интересен). Ну, и мегагерц отрезать от 20kHz - вообще ничего не стОит.

bugfixer ★★★★★
()