عن المشروع
CPAL (مكتبة الصوت عبر المنصات) هي مكتبة Rust منخفضة المستوى للإدخال والإخراج الصوتي. صُممت كطبقة أساسية؛ ويشير ملف README المستخدمين الراغبين في تشغيل وتسجيل بمستوى أعلى إلى Rodio أو مكتبات مشابهة.
القدرات الموصوفة في README:
- تعداد المضيفات الصوتية والأجهزة وتكوينات التدفق المدعومة.
- البحث عن الأجهزة بواسطة معرف ثابت أو الدور الافتراضي للإدخال/الإخراج.
- فحص بيانات الجهاز: الاسم، الشركة المصنعة، النوع، ونوع الناقل.
- بناء تدفقات إدخال وإخراج بتنسيقات عينات وقت الترجمة أو وقت التشغيل.
- تشغيل، إيقاف مؤقت، والاستعلام عن حجم المخزن المؤقت وساعة التدفق.
المنصات والخلفيات الافتراضية:
- Android: AAudio
- BSD: ALSA (اختياري JACK، PipeWire، PulseAudio)
- iOS، macOS، tvOS، visionOS: CoreAudio (macOS اختياري JACK)
- Linux: ALSA (اختياري JACK، PipeWire، PulseAudio)
- WebAssembly: Web Audio API (اختياري Audio Worklet)
- Windows: WASAPI (اختياري ASIO، JACK)
الميزات الاختيارية تشمل asio، audioworklet، custom، jack، pipewire، pulseaudio، realtime، realtime-dbus و wasm-bindgen. يوثق README تبعيات البناء (مثل libasound2-dev على Debian/Ubuntu لـ ALSA، المطلوبة حتى عند استخدام JACK أو PipeWire أو PulseAudio)، والحد الأدنى من إصدارات Rust وأنظمة التشغيل/وقت التشغيل المدعومة لكل خلفية، وخطوات الإعداد لـ Android (cargo-apk، تهيئة سياق JNI)، وASIO (CPAL_ASIO_DIR، LLVM/Clang، LIBCLANG_PATH، Visual Studio، تجميع MinGW-w64 عبر المنصات) وWebAssembly.
إرشادات استكشاف الأخطاء تغطي الأجهزة الافتراضية المفقودة، تنازع أجهزة ALSA/PipeWire/PulseAudio (DeviceBusy عندما يحتفظ خادم الصوت بجهاز ALSA الافتراضي)، تكوين حجم المخزن المؤقت ومقايضات زمن الوصول، مشاكل إعادة تشكيل PipeWire، ترقية أولوية الوقت الحقيقي لـ ALSA (SCHED_FIFO، CAP_SYS_NICE، حدود rtprio، rtkit عبر D-Bus)، وأخطاء البناء. تُناقش الأجهزة ثنائية الاتجاه: لا يقوم CPAL بتكوين الأجهزة بنفسه ويتطلب جهازًا يدعي بالفعل كل من الالتقاط والتشغيل، مع خيارات مثل مكون ALSA asym أو منافذ عميل JACK.
يحتوي المستودع على أمثلة تحت examples/ (مثل beep)، قابلة للتشغيل عبر cargo run --example beep مع علامات ميزات للخلفيات الخاصة بالمنصة. الترخيص هو Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.