অ্যান্ড্রয়েড ১৪ ডেভেলপার এপিআই প্রদান করে, যা ব্যবহার করে অ্যাপগুলো ইউএসবি অডিও প্লেব্যাকের জন্য পছন্দের মিক্সার অ্যাট্রিবিউটগুলো জিজ্ঞাসা ও কনফিগার করতে পারে। এই পছন্দের মিক্সার অ্যাট্রিবিউটগুলো অ্যাপগুলোকে অডিও ফরম্যাট, চ্যানেল মাস্ক, স্যাম্পল রেট এবং মিক্সারের আচরণ নির্ধারণ করার সুযোগ দিয়ে ইউএসবি অডিও প্লেব্যাকের অভিজ্ঞতা উন্নত করে। সমর্থিত ইউএসবি ডিভাইসগুলোতে পছন্দের মিক্সার এপিআই ব্যবহারের মাধ্যমে ব্যবহারকারীরা কম ল্যাটেন্সির অডিও প্লেব্যাক এবং উচ্চ-রেজোলিউশনের অডিও কন্টেন্ট পেতে পারেন।
এই ফিচারটি ইউএসবি ডিভাইসগুলির জন্য ঐচ্ছিক বিট-পারফেক্ট প্লেব্যাক মিক্সার আচরণেরও সমর্থন প্রদান করে। বিট-পারফেক্ট মোড সামঞ্জস্যপূর্ণ ডিজিটাল টু অ্যানালগ কনভার্টার (DAC)-গুলিতে মাস্টার কোয়ালিটি অথেনটিকেটেড (MQA) এবং ডাইরেক্ট স্ট্রিম ডিজিটাল (DSD) ফরম্যাটের প্লেব্যাক সক্ষম করে।
ইন্টারফেস
অডিও পলিসি ম্যানেজার ফ্রেমওয়ার্কের মিক্সার অ্যাট্রিবিউটগুলো পরিচালনা করে। AudioMixerAttributes ক্লাসটি মিক্সারের অ্যাট্রিবিউটগুলো উপস্থাপন করে। AudioMixerAttributes ক্লাসে একটি AudioFormat অবজেক্ট অন্তর্ভুক্ত থাকে, যা মিক্সারের জন্য অডিও ডেটা ফরম্যাট, চ্যানেল মাস্ক এবং স্যাম্পল রেট বর্ণনা করে। ডিফল্টরূপে, ফ্রেমওয়ার্ক মিক্সারের আচরণ নির্ধারণ করে, যা সমস্ত অডিও সোর্সকে মিশ্রিত করে এবং ভলিউম কন্ট্রোল ও ইফেক্ট প্রয়োগ করে।
যদি মিক্সারের আচরণ BIT_PERFECT মোড ব্যবহার করে, তাহলে সিস্টেমটি অডিও কন্টেন্টকে কোনো পরিবর্তন ছাড়াই অডিও ফ্রেমওয়ার্ক, HAL এবং ঐচ্ছিকভাবে ডিজিটাল সিগন্যাল প্রসেসর (DSP)-এর মধ্য দিয়ে API থেকে USB ডিভাইসে পাঠায়। BIT_PERFECT মোড MQA বা DSD-এর মতো এনকোডেড ফরম্যাট সমর্থন করে, যেগুলোতে যেকোনো ভলিউম স্কেলিং বা মিক্সিং ডেটার অর্থ নষ্ট করে দিতে পারে।
যখন অ্যাপগুলি মিক্সার অ্যাট্রিবিউট কনফিগার করে, তখন ফ্রেমওয়ার্ক প্রয়োজনে নতুন অ্যাট্রিবিউট সহ আউটপুট স্ট্রিমটি পুনরায় খোলে। মিক্সার অ্যাট্রিবিউট সেট করা হলে অ্যাপ, ফ্রেমওয়ার্ক এবং HAL-এর মধ্যেকার ইন্টারফেসটি নিচের চিত্রে দেখানো হয়েছে:

চিত্র ১. অ্যাপ, ফ্রেমওয়ার্ক এবং HAL-এর মধ্যকার ইন্টারফেস।
বাস্তবায়ন
অ্যান্ড্রয়েড ১৪-এর জন্য ইউএসবি অডিওতে BIT_PERFECT অ্যাট্রিবিউট ব্যতীত অন্যান্য পছন্দের মিক্সার অ্যাট্রিবিউটগুলোর প্রয়োগ বাধ্যতামূলক।
পছন্দের মিক্সারের বৈশিষ্ট্য
পছন্দসই মিক্সার বৈশিষ্ট্যগুলো সমর্থন করার জন্য, বিক্রেতাদের অবশ্যই ডায়নামিক মিক্স পোর্টে ইউএসবি ডিভাইস রাউটিং সমর্থন করতে হবে, যা নিম্নরূপ:
usb_audio_policy_configuration.xmlফাইলে ডাইনামিক মিক্স পোর্টটি নির্ধারণ করুন।অডিও পলিসি কনফিগারেশনে অথবা
getAudioPortsএবংgetAudioRoutesAIDL মেথডগুলিতে USB ডিভাইসগুলিকে ডাইনামিক মিক্স পোর্টে রাউট করার ক্ষমতা ঘোষণা করুন।
hardware/libhardware/modules/usbaudio অধীনে USB অডিও HAL-এর রেফারেন্স ইমপ্লিমেন্টেশন দেখুন। frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml এ একটি ডাইনামিক মিক্স পোর্টের উদাহরণ দেখুন।
বিট-পারফেক্ট প্লেব্যাক বৈশিষ্ট্য
বিট-পারফেক্ট প্লেব্যাক অ্যাট্রিবিউটটি ঐচ্ছিক এবং এটি শুধুমাত্র অডিও এইচএএল (Audio HAL)-এর এআইডিএল (AIDL) ইমপ্লিমেন্টেশনে সমর্থিত। বিট-পারফেক্ট প্লেব্যাক সমর্থন করার জন্য, ভেন্ডরদের অবশ্যই ডাইনামিক মিক্স পোর্টে AUDIO_OUTPUT_FLAG_BIT_PERFECT বিট-পারফেক্ট আউটপুট ফ্ল্যাগটি যোগ করতে হবে, যা ইউএসবি (USB) ডিভাইসে রাউট করা যায়।
নিম্নলিখিত কোড নমুনাটি usb_audio_policy_configuration.xml ফাইলে AUDIO_OUTPUT_FLAG_BIT_PERFECT ফ্ল্যাগটির ব্যবহার দেখায়:
<module name="usb" halVersion="2.0">
<mixPorts>
<mixPort name="hifi_output"
role="source" flags="AUDIO_OUTPUT_FLAG_BIT_PERFECT">
</mixPort>
</mixPorts>
<devicePorts>
<devicePort tagName="USB Device Out"
type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
</devicePort>
</devicePorts>
<routes>
<route type="mix" sink="USB Device Out"
sources="hifi_output"/>
</routes>
</module>
যদি বিট-পারফেক্ট প্লেব্যাক অ্যাট্রিবিউটটি নির্দিষ্ট করা থাকে, তবে HAL-কে অবশ্যই নিশ্চিত করতে হবে যে অডিও স্ট্রিমটি কোনো পরিবর্তন ছাড়াই USB ডিভাইসে পাঠানো হয়েছে। অর্থাৎ, অডিও স্ট্রিমে কোনো ভলিউম স্কেলিং, স্যাম্পল রেট কনভার্সন বা অডিও প্রসেসিং ইফেক্ট থাকবে না এবং এটি DSP-তে মিক্স করা হবে না। এক্ষেত্রে, হার্ডওয়্যারই ভলিউম নিয়ন্ত্রণ করে, কারণ ফ্রেমওয়ার্ক কোনো সফটওয়্যার ভলিউম কন্ট্রোল প্রদান করে না।
বৈধতা
USB ডিভাইসগুলির জন্য পছন্দের মিক্সার অ্যাট্রিবিউটের সমর্থন যাচাই করতে PreferredMixerAttributesTestActivity.java তে CTS পরীক্ষাগুলি চালান।
BIT_PERFECT অ্যাট্রিবিউটের বাস্তবায়ন যাচাই করতে, এমন USB DAC ব্যবহার করুন যা পালস-কোড মডুলেশন (PCM) অডিও ফরম্যাটের মাধ্যমে MQA এবং DSD সমর্থন করে।