์ค์๊ฐ ์ค๋์ค ์ถ๋ ฅ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฉํฐ๋ฏธ๋์ด ์๋ฒ์ด์ ํ๋ ์์ํฌ์ธ PipeWire์ ์ค๋ซ๋์ ๊ธฐ๋ค๋ ค์จ ์ฒซ ๋ฒ์งธ ์ฃผ์ ๋ฒ์ ์ด ๋ง์นจ๋ด ์ถ์๋์์ต๋๋ค. ALSA, PulseAudio ๋ฐ JACK๊ณผ API ๋ฐ ABI๊ฐ ํธํ๋ฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ๋ง์ง ์์ง๋ง ์ค์ํฉ๋๋ค(์ฒซ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ด๋๊น์).
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- ์ข ๋ฃ ์ ๋ฒํผ๋ฅผ ์ธ๋ก๋ํ ๋ memfd/dmabuf์์ ๋ฐ์ํ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
- Ardour์์ ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ jack_port_get_buffer()์ ๋ํ ๋์ ํธ์ถ ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- IRQ๋ฅผ ์ฌ์ฉํ ๋ ALSA์์ ํ์ด๋ฐ ํํ์ด ๊ฐ์ ๋๊ณ ์งํฐ๊ฐ ๊ฐ์ํฉ๋๋ค.
- ๋ค์ํ ๋ฌธ์ ๊ฐ์ .
๊ธฐํ ๋ณ๊ฒฝ ์ฌํญ:
ํ์ดํ ์์ด์ด
- ์ด์ PIPEWIRE_DLCLOSE๊ฐ ๋ชจ๋ ๊ณณ์์ ์ ์ฉ๋๊ณ pw_in_valgrind()๊ฐ ์ ๊ฑฐ๋์์ต๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฌด์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ์๋ํ ๋ ๋ฐ์ํ๋ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
๋ชจ๋
- ํผํฉ ๊ตฌ์กฐ๋ฅผ ๋ณต์ฌํ ๋ ๋ฐ์ํ ์ ์๋ ์ธ๊ทธํดํธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
- ๋ชจ๋-rt์ setrlimit์์ ๋ฐ์ํ ์ ์๋ ๊ฒฝ์ ์กฐ๊ฑด์ ์์ ํ์ต๋๋ค.
- ํํฐ ์ฒด์ธ์ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
- rtp.prime ๋งค๊ฐ๋ณ์๋ ๋ฐ์ ์(์์ ์ ์๋)์ ๋ํด ์ค์ ๋ฉ๋๋ค.
- ROC ๋ชจ๋์ ROC 0.3์ผ๋ก ์ด์๋์์ต๋๋ค.
SPA
- libcamera์ ์ง์ฐ์ ๋ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์ผ๋ถ ์ปดํ์ผ ๊ฒฝ๊ณ ๋ฅผ ์์ ํ์ต๋๋ค.
- EVL ํ๋ฌ๊ทธ์ธ์ด ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
Bluetooth
- LC3 ์ฝ๋ฑ ์ถ๊ฐ ๋ฐ ํธํ์ฑ ๊ฐ์
PulseAudio
- ์ถ๋ ฅ์ด๋ ์์ค ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ด๋ฒคํธ๋ฅผ ๋ณด๋ด๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ต๋๋ค.
์ญ
- ์ด์ก ๋ฐ ์๊ฐ์ ๋ฐ๋ฅธ ์ ๋ฌด ๊ฐ์ ์ด์ ๊ณ ์ ์๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์๊ฐ๊ณผ ์ด์ก์ ๋ํ ์ฐ์์ ์ธ ์ค๋ ์ท์ ์์ฑํฉ๋๋ค.
- ์ฌ์ฉ๋์ง ์๋ ํฌํธ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ์ ๊ฑฐํ์ต๋๋ค.
- ๋ฒํผ ์ฌ์ฌ์ฉ์ ์ต์ ํํ์ต๋๋ค.
ะะพะบัะผะตะฝัะฐัะธั
- pw-dump, pw-loopback, pipewire-pulse ๋ฐ ๋ชจ๋์ ๋ํ man ํ์ด์ง๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์ด์ Doxygen์ ์ฌ์ฉํ์ฌ Man ํ์ด์ง๋ฅผ ์์ฑํฉ๋๋ค.
- PulseAudio ๋ชจ๋์ ๋ํ ์ค๋ช ์๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
์ผ๋ก ๊ธฐํ ๋ณ๊ฒฝ ์ฌํญ GNU/Hurd ์ง์์ด ์ถ๊ฐ๋ ์ ์ ์ฃผ๋ชฉํ ๋งํฉ๋๋ค.
์ถ์ฒ : linux.org.ru
