অ্যান্ড্রয়েড 14 বিকাশকারী API সরবরাহ করে যা অ্যাপগুলি ইউএসবি অডিও প্লেব্যাকের জন্য পছন্দের মিক্সার বৈশিষ্ট্যগুলি অনুসন্ধান এবং কনফিগার করতে ব্যবহার করতে পারে। এই পছন্দের মিক্সার অ্যাট্রিবিউটগুলি অ্যাপগুলিকে অডিও ফর্ম্যাট, চ্যানেল মাস্ক, নমুনা রেট এবং মিক্সার আচরণ সেট করতে দিয়ে USB অডিও প্লেব্যাকের অভিজ্ঞতা উন্নত করে৷ সমর্থিত ইউএসবি ডিভাইসে পছন্দের মিক্সার এপিআই ব্যবহার করে, ব্যবহারকারীরা কম-বিলম্বিত অডিও প্লেব্যাক এবং উচ্চ-রেজোলিউশন অডিও সামগ্রী পেতে পারেন।
এই বৈশিষ্ট্যটি USB ডিভাইসগুলির জন্য ঐচ্ছিক বিট-পারফেক্ট প্লেব্যাক মিক্সার আচরণের জন্য সমর্থন প্রদান করে। বিট-পারফেক্ট মোড মাস্টার কোয়ালিটি অথেনটিকেটেড (MQA) এবং ডিরেক্ট স্ট্রিম ডিজিটাল (DSD) ফরম্যাটের জন্য সামঞ্জস্যপূর্ণ ডিজিটাল থেকে এনালগ কনভার্টার (DACs) এর জন্য প্লেব্যাক সক্ষম করে।
ইন্টারফেস
অডিও পলিসি ম্যানেজার ফ্রেমওয়ার্কের মধ্যে মিক্সার অ্যাট্রিবিউটগুলি পরিচালনা করে। AudioMixerAttributes
ক্লাস মিক্সারের বৈশিষ্ট্য উপস্থাপন করে। AudioMixerAttributes
ক্লাসে একটি AudioFormat
অবজেক্ট রয়েছে যা মিক্সারের জন্য অডিও ডেটা ফরম্যাট, চ্যানেল মাস্ক এবং নমুনা হার বর্ণনা করে। ডিফল্টরূপে, ফ্রেমওয়ার্ক মিক্সার আচরণ নির্ধারণ করে, যা সমস্ত অডিও উত্স মিশ্রিত করে এবং ভলিউম নিয়ন্ত্রণ এবং প্রভাব প্রয়োগ করে।
যদি মিক্সার আচরণ BIT_PERFECT
মোড ব্যবহার করে, তবে সিস্টেমটি অডিও ফ্রেমওয়ার্ক, HAL এবং ঐচ্ছিকভাবে ডিজিটাল সিগন্যাল প্রসেসর (DSP) এর মাধ্যমে এপিআই থেকে USB ডিভাইসে পরিবর্তন ছাড়াই অডিও সামগ্রী পাঠায়। BIT_PERFECT
মোড এনকোড করা ফরম্যাটগুলিকে সমর্থন করে, যেমন MQA বা DSD, যার উপর যেকোনো ভলিউম স্কেলিং বা মিশ্রণ ডেটার অর্থকে ধ্বংস করতে পারে।
অ্যাপস যখন মিক্সার অ্যাট্রিবিউট কনফিগার করে, প্রয়োজন হলে ফ্রেমওয়ার্ক নতুন অ্যাট্রিবিউটের সাথে আউটপুট স্ট্রীম আবার খুলে দেয়। নিম্নলিখিত চিত্রটি অ্যাপ, ফ্রেমওয়ার্ক এবং HAL-এর মধ্যে ইন্টারফেস দেখায় যখন মিক্সার বৈশিষ্ট্যগুলি সেট করা হয়:
চিত্র 1. অ্যাপ, ফ্রেমওয়ার্ক এবং HAL এর মধ্যে ইন্টারফেস।
বাস্তবায়ন
Android 14 এর জন্য USB অডিওর জন্য BIT_PERFECT
অ্যাট্রিবিউট ব্যতীত পছন্দের মিক্সার অ্যাট্রিবিউটের প্রয়োগ বাধ্যতামূলক৷
পছন্দের মিক্সার বৈশিষ্ট্য
পছন্দের মিক্সার অ্যাট্রিবিউট সমর্থন করতে, বিক্রেতাদের অবশ্যই ইউএসবি ডিভাইসগুলিকে ডায়নামিক মিক্স পোর্টে রাউটিং সমর্থন করতে হবে, নিম্নরূপ:
usb_audio_policy_configuration.xml
এ ডায়নামিক মিক্স পোর্ট সংজ্ঞায়িত করুন।অডিও নীতি কনফিগারেশনে বা
getAudioPorts
এবংgetAudioRoutes
AIDL পদ্ধতিতে USB ডিভাইসগুলিকে গতিশীল মিক্স পোর্টে রুট করার ক্ষমতা ঘোষণা করুন৷
hardware/libhardware/modules/usbaudio
অধীনে USB অডিও HAL-এর জন্য রেফারেন্স বাস্তবায়ন দেখুন। frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
এ একটি ডায়নামিক মিক্স পোর্টের উদাহরণ দেখুন।
বিট-পারফেক্ট প্লেব্যাক অ্যাট্রিবিউট
বিট-পারফেক্ট প্লেব্যাক বৈশিষ্ট্য ঐচ্ছিক এবং শুধুমাত্র অডিও 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 ডিভাইসে পাঠানো হয়েছে, অর্থাৎ, অডিও স্ট্রিমে কোনো ভলিউম স্কেলিং, নমুনা হার রূপান্তর, বা অডিও প্রসেসিং প্রভাব থাকা উচিত নয় এবং ডিএসপিতে মিশ্রিত করা উচিত নয়। এই ক্ষেত্রে, হার্ডওয়্যার ভলিউম নিয়ন্ত্রণ করে কারণ ফ্রেমওয়ার্ক কোনো সফ্টওয়্যার ভলিউম নিয়ন্ত্রণ প্রদান করে না।
বৈধতা
USB ডিভাইসগুলির জন্য পছন্দের মিক্সার বৈশিষ্ট্যগুলির জন্য সমর্থন যাচাই করতে PreferredMixerAttributesTestActivity.java
এ CTS পরীক্ষা চালান৷
BIT_PERFECT
অ্যাট্রিবিউটের বাস্তবায়ন যাচাই করতে, USB DAC ব্যবহার করুন যা MQA এবং DSD ওভার পালস-কোড মডুলেশন (PCM) অডিও ফরম্যাট সমর্থন করে।