AIDL HAL-এ কনফিগারযোগ্য অডিও নীতি সমর্থন

অ্যান্ড্রয়েড ১৬ থেকে শুরু করে, AIDL Audio HAL ইন্টারফেস কনফিগারযোগ্য অডিও পলিসি (CAP) সম্পূর্ণরূপে সমর্থন করে।

এই পৃষ্ঠাটি অংশীদার এবং SoC বিক্রেতাদের তাদের অডিও পলিসি কনফিগারেশন স্থানান্তরে সহায়তা করার জন্য প্রয়োজনীয় প্রযুক্তিগত পটভূমি প্রদান করে।

প্যারামিটার ফ্রেমওয়ার্ক

CAP-এর বাস্তবায়ন ইন্টেল প্যারামিটার ফ্রেমওয়ার্কের উপর ভিত্তি করে করা হয়েছে। CAP অ্যান্ড্রয়েড ৬-এ চালু করা হয়েছিল। প্যারামিটার ফ্রেমওয়ার্ক (PfW) একটি সিস্টেমকে প্যারামিটারের মাধ্যমে বর্ণনা করার সুযোগ দেয়। একটি কনফিগারেশন XML ফাইল ব্যবহার করে, PfW প্লাগইনের সাহায্যে প্যারামিটারগুলোকে বিভিন্ন অ্যাকশনের সাথে যুক্ত করে এবং বর্তমান মানদণ্ড অনুযায়ী প্যারামিটার পরিবর্তনের জন্য নিয়ম সরবরাহ করে।

HIDL-এ CAP-এর গঠন

HIDL-এ, CAP-এর সমস্ত কনফিগারেশন XML-এ নির্দিষ্ট করা হতো। আরও তথ্যের জন্য ‘প্যারামিটার ফ্রেমওয়ার্ক’ এবং ‘প্যারামিটার ফ্রেমওয়ার্ক ব্যবহার করে কনফিগারেশন’ দেখুন। XML ফাইলগুলো নিম্নলিখিত বিষয়গুলো নির্দিষ্ট করতে ব্যবহৃত হতো:

  • প্যারামিটারগুলোর কাঠামোর বিবরণ (অর্থাৎ, PfW-এর জন্য অডিও ডোমেইনের বিবরণ)
  • মানদণ্ডের সংজ্ঞা
  • রাউটিং কৌশলের নিয়মাবলী (ইনপুট এবং আউটপুট ডিভাইস নির্বাচন)
  • ভলিউম টেবিলের স্পেসিফিকেশন

HIDL-এর সাহায্যে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক এই XML ফাইলগুলো সরাসরি ভেন্ডর পার্টিশন থেকে লোড করতে পারত। এটি সম্ভব হয়েছিল কারণ HAL API-এর অংশ হিসেবে এই XML ফাইলগুলোর জন্য একটি XSD স্কিমা সংজ্ঞায়িত করা ছিল। HIDL HAL-এর প্রতিটি প্রধান রিলিজের একটি সংশ্লিষ্ট XSD স্কিমা থাকত। প্রধান রিলিজগুলোর জন্য ব্যাকওয়ার্ড কম্প্যাটিবিলিটির প্রয়োজন ছিল না।

AIDL-এ CAP-এর কাঠামো

AIDL-এ রূপান্তরের সাথে সাথে, HAL API রিলিজগুলোকে অবশ্যই ব্যাকওয়ার্ড-কম্প্যাটিবল থাকতে হবে (HIDL-এর পরিভাষায়, AIDL HAL-এর প্রতিটি রিলিজ একটি "মাইনর" আপডেট)। XSD স্কিমাগুলো এখন আর HAL API-এর অংশ হিসেবে ব্যবহার করা যাবে না, কারণ স্কিমাগুলোর ব্যাকওয়ার্ড-কম্প্যাটিবল আপডেট সংজ্ঞায়িত করার কোনো প্রতিষ্ঠিত উপায় নেই। তাই, যে কনফিগারেশনটি আগে XML ফাইলে সংজ্ঞায়িত করা হতো, তা এখন AIDL API ব্যবহার করে HAL-এর মাধ্যমে সরবরাহ করতে হবে। এই কাজটি সহজ করার জন্য, CAP কনফিগারেশনের কাঠামোকে AIDL-এ রূপান্তর করা হয়েছে, যা AIDL Audio HAL for Android 15-এর Audio Policy Configuration XML-গুলোর অনুরূপ।

CAP-এর জন্য ডেটা স্ট্রাকচারগুলো কমন স্টেবল ডেটা টাইপ -এ যোগ করা হয়েছে এবং এতে নিম্নলিখিত পার্সেলযোগ্য ডেটা টাইপগুলো অন্তর্ভুক্ত রয়েছে:

CAP কনফিগারেশনের এন্ট্রি পয়েন্ট হলো AudioHalEngineConfig.CapSpecificConfig স্ট্রাকচারটি। CAP ডেটা স্ট্রাকচারের ডায়াগ্রামের জন্য AudioHalCapConfiguration.aidl ফাইলের কমেন্টগুলো দেখুন।

AIDL HAL-এর ডিফল্ট ইমপ্লিমেন্টেশনে একটি হেল্পার ক্লাস রয়েছে, যা পার্টনারদের জন্য মাইগ্রেশন সহজ করার উদ্দেশ্যে লিগ্যাসি CAP XML ফাইলের বিষয়বস্তুর উপর ভিত্তি করে AIDL পার্সেলেবলগুলো পূরণ করে।

অভিবাসন পরিস্থিতি

অংশীদাররা এই বিভাগে তালিকাভুক্ত বিকল্পগুলি বিবেচনা করতে পারেন, তা নির্ভর করবে এটি এমন কোনো পণ্যের প্রথম লঞ্চ কিনা যা আগে CAP ব্যবহার করত না, অথবা বিদ্যমান কোনো পণ্যের মাইগ্রেশন কিনা তার উপর।

নতুন পণ্য

যে নতুন পণ্যে অডিও পলিসি বাস্তবায়নের জন্য CAP ব্যবহার শুরু হয়, সেটির ক্ষেত্রে OEM ভেন্ডর সাইডে CAP কনফিগারেশন সংরক্ষণের জন্য XML ব্যবহার করার বিকল্প বেছে নিতে পারে।

XML ব্যবহারের সুবিধা হলো, এমন কিছু স্ক্রিপ্টিং টুল রয়েছে যা একটি উচ্চ-স্তরের বিবরণ থেকে কনফিগারেশন তৈরি করাকে সহজ করে তোলে।

যদি OEM ভেন্ডর পার্টিশনে CAP কনফিগারেশন সংরক্ষণের জন্য XML ব্যবহার করার সিদ্ধান্ত নেয়, তাহলে সেই কনফিগারেশনকে AIDL-এ রূপান্তর করার জন্য XML পার্সারের ডিফল্ট ইমপ্লিমেন্টেশন ব্যবহার করার পরামর্শ দেওয়া হয়।

বিদ্যমান পণ্যের জন্য আপডেট

যদি পণ্যটি ইতিমধ্যেই CAP ব্যবহার করে এবং সেই কারণে এর XML কনফিগারেশন থাকে, তাহলে আপনি HAL-এর AIDL সংস্করণের সাথে বিদ্যমান CAP ব্যবহার করা চালিয়ে যেতে পারেন।

CAP কনফিগারেশনের HIDL এবং AIDL সংস্করণে প্রোডাক্ট স্ট্র্যাটেজির নামকরণের রীতি ভিন্ন। HIDL-এ বিল্ট-ইন ("লেগ্যাসি") স্ট্র্যাটেজিগুলো media মতো ছোট হাতের অক্ষরে সংক্ষিপ্ত নাম ব্যবহার করত, যেখানে AIDL-এ বিল্ট-ইন স্ট্র্যাটেজিগুলো STRATEGY_ উপসর্গসহ বড় হাতের অক্ষরে নাম ব্যবহার করে, যেমন STRATEGY_MEDIACapProductStrategies.xml ফাইলে বিল্ট-ইন স্ট্র্যাটেজিগুলোর তালিকা দেখুন। একই ফাইলটি OEM-নির্দিষ্ট স্ট্র্যাটেজিগুলোর জন্য "পূর্ব-বরাদ্দকৃত" আইডি নির্ধারণ করে, যেগুলো 1000 থেকে 1039 পর্যন্ত সংখ্যাসহ vx_10xx নামকরণের প্যাটার্ন অনুসরণ করে।

লিগ্যাসি পণ্য

যদি CAP-নির্ভর প্রোডাক্টটি তার ভেন্ডর পার্টিশন আপডেট না করে HIDL-এ থেকে যায়, তাহলে আপনি সিস্টেম পার্টিশনটি Android 16-এ আপডেট করতে পারেন। ফ্রেমওয়ার্কটি পুরোনো CAP কনফিগারেশনের সাথে সামঞ্জস্যপূর্ণ থাকে।

উদাহরণ বাস্তবায়ন

পার্টনারদের তাদের প্ল্যাটফর্মে CAP প্রয়োগ করতে সাহায্য করার জন্য, AOSP-এর কাছে Cuttlefish ভার্চুয়াল ডিভাইসের "অটোমোটিভ" সংস্করণের একটি উদাহরণ রয়েছে, যা AIDL HAL-এর সাথে CAP ব্যবহার করে। ডিভাইস-নির্দিষ্ট কনফিগারেশনটি device/google/cuttlefish/shared/auto/audio/policy/engine- এ অবস্থিত, যার lunch টার্গেট নেম হলো aosp_cf_x86_64_auto । CAP ভেন্ডর ফাইলগুলির সম্পূর্ণ সেট তৈরি করার জন্য Android.bp ফাইলটি রেফারেন্স হিসাবে ব্যবহার করা যেতে পারে।