প্রকল্প সম্পর্কে

CPAL (Cross-Platform Audio Library) হলো অডিও ইনপুট ও আউটপুটের জন্য একটি লো-লেভেল Rust লাইব্রেরি। এটি একটি ভিত্তি স্তর হিসেবে তৈরি; README-তে উচ্চতর স্তরের প্লেব্যাক ও ক্যাপচার চাওয়া ব্যবহারকারীদের Rodio বা অনুরূপ লাইব্রেরির দিকে নির্দেশ করা হয়েছে। README-তে বর্ণিত সক্ষমতা: - অডিও হোস্ট, ডিভাইস এবং তাদের সমর্থিত স্ট্রিম কনফিগারেশন এনুমারেট করা। - স্থিতিশীল ID বা ডিফল্ট ইনপুট/আউটপুট ভূমিকা অনুসারে ডিভাইস খোঁজা। - ডিভাইস মেটাডেটা পরিদর্শন: নাম, প্রস্তুতকারক, ধরন ও বাসের ধরন। - কম্পাইল-টাইম বা রানটাইম স্যাম্পল ফরম্যাটে ইনপুট ও আউটপুট স্ট্রিম তৈরি করা। - স্ট্রিম চালানো, বিরতি দেওয়া এবং বাফার সাইজ ও ক্লক জিজ্ঞাসা করা। প্ল্যাটফর্ম ও ডিফল্ট ব্যাকএন্ড: - 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-তে বিল্ড নির্ভরতা (উদাহরণস্বরূপ ALSA-এর জন্য Debian/Ubuntu-তে libasound2-dev, যা JACK, PipeWire বা PulseAudio ব্যবহার করলেও প্রয়োজন), প্রতি ব্যাকএন্ডের জন্য ন্যূনতম সমর্থিত Rust ও OS/রানটাইম সংস্করণ, এবং Android (cargo-apk, JNI কনটেক্সট ইনিশিয়ালাইজেশন), ASIO (CPAL_ASIO_DIR, LLVM/Clang, LIBCLANG_PATH, Visual Studio, MinGW-w64 ক্রস-কম্পাইলেশন) ও WebAssembly-এর সেটআপ ধাপ নথিভুক্ত করা হয়েছে। সমস্যা সমাধানের নির্দেশনায় রয়েছে ডিফল্ট ডিভাইস অনুপস্থিত থাকা, ALSA/PipeWire/PulseAudio ডিভাইস দ্বন্দ্ব (কোনো সাউন্ড সার্ভার ALSA ডিফল্ট ডিভাইস ধরে রাখলে DeviceBusy), বাফার সাইজ কনফিগারেশন ও তার লেটেন্সি ট্রেড-অফ, PipeWire রিস্যাম্পলিং গ্লিচ, ALSA রিয়েল-টাইম প্রায়োরিটি প্রমোশন (SCHED_FIFO, CAP_SYS_NICE, rtprio সীমা, D-Bus-এর মাধ্যমে rtkit) এবং বিল্ড ত্রুটি। ডুপ্লেক্স ডিভাইস নিয়ে আলোচনা করা হয়েছে: CPAL নিজে ডিভাইস কম্পোজ করে না এবং এমন একটি ডিভাইস প্রয়োজন যা ইতিমধ্যে ক্যাপচার ও প্লেব্যাক উভয়ই দাবি করে, যেখানে ALSA asym প্লাগইন বা JACK ক্লায়েন্ট পোর্ট বিকল্প হিসেবে রয়েছে। রিপোজিটরিতে examples/ ডিরেক্টরির অধীনে উদাহরণ রয়েছে (যেমন beep), যা cargo run --example beep দিয়ে চালানো যায় এবং প্ল্যাটফর্ম-নির্দিষ্ট ব্যাকএন্ডের জন্য ফিচার ফ্ল্যাগ রয়েছে। লাইসেন্স Apache-2.0।