প্রকল্প সম্পর্কে
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।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.