پشتیبانی از «خط‌مشی صوتی قابل‌پیکربندی» در AIDL HAL

از Android 16، میانای AIDL Audio HAL به‌طور کامل از «خط‌مشی صوتی پیکربندی‌پذیر» (CAP) پشتیبانی می‌کند.

این صفحه اطلاعات فنی لازم را برای کمک به شرکا و فروشندگان SoC در انتقال پیکربندی‌های خط‌مشی صوتی آن‌ها ارائه می‌دهد.

چارچوب پارامتر

پیاده‌سازی CAP براساس چارچوب پارامتر Intel است. «پروتکل مشترک هشدار» در Android 6 معرفی شد. «چارچوب پارامتر» (PfW) امکان توصیف سیستم را براساس پارامترها فراهم می‌کند. بااستفاده از فایل پیکربندی XML، «پلتفرم برای وب» پارامترها را بااستفاده از افزونه‌ها به کنش‌ها پیوند می‌دهد و قوانینی برای تغییر پارامترها براساس معیارهای فعلی ارائه می‌دهد.

ساختار CAP در HIDL

در HIDL، همه پیکربندی‌های CAP در XML مشخص شده بود. برای اطلاعات بیشتر، چارچوب پارامتر و پیکربندی بااستفاده از چارچوب پارامتر را ببینید. از فایل‌های XML برای مشخص کردن موارد زیر استفاده شده است:

  • شرح ساختار پارامترها (یعنی شرح دامنه صوتی برای PfW)
  • تعاریف معیارها
  • قوانین مربوط به استراتژی‌های مسیریابی (انتخاب دستگاه ورودی و خروجی)
  • مشخصات جدول‌های حجم

با HIDL، چارچوب Android می‌توانست این فایل‌های XML را مستقیماً از بخش فروشنده بار کند. این کار مجاز بود زیرا طرحواره XSD به‌عنوان بخشی از HAL API برای این فایل‌های XML تعریف شده بود. هر نسخه اصلی HIDL HAL دارای یک طرحواره XSD مربوطه بود. نسخه‌های اصلی نیازی به سازگاری با نسخه‌های قدیمی نداشتند.

ساختار CAP در AIDL

با انتقال به AIDL، نسخه‌های HAL API باید با نسخه‌های قدیمی سازگار باقی بمانند (از نظر HIDL، هر نسخه از AIDL HAL یک به‌روزرسانی «جزئی» است). طرحواره‌های XSD دیگر نمی‌توانند به‌عنوان بخشی از میاناهای برنامه‌سازی کاربردی HAL استفاده شوند زیرا روشی برای تعریف به‌روزرسانی‌های سازگار با نسخه‌های قبلی برای طرحواره‌ها وجود ندارد. بنابراین، پیکربندی‌ای که قبلاً در فایل‌های XML تعریف شده بود اکنون باید توسط HAL بااستفاده از AIDL APIs ارائه شود. برای تسهیل این امر، ساختار پیکربندی CAP به AIDL تبدیل می‌شود، مشابه با پیکربندی‌های خط‌مشی صوتی XML در AIDL Audio HAL برای Android 15.

ساختارهای داده برای CAP به انواع داده پایدار مشترک اضافه شده است و شامل موارد زیر است:

نقطه ورود برای پیکربندی CAP در ساختار AudioHalEngineConfig.CapSpecificConfig قرار دارد. برای مشاهده نمودار ساختارهای داده CAP، نظرات موجود در AudioHalCapConfiguration.aidl را ببینید.

پیاده‌سازی پیش‌فرض از AIDL HAL حاوی کلاس کمکی است که براساس محتوای فایل‌های قدیمی CAP XML، بسته‌های AIDL را تکمیل می‌کند تا انتقال داده برای شرکا ساده‌تر شود.

سناریوهای انتقال

شرکا ممکن است گزینه‌های فهرست‌شده در این بخش را براساس اینکه آیا اولین راه‌اندازی محصولی است که قبلاً از CAP استفاده نمی‌کرده است یا انتقال محصول موجود درنظر بگیرند.

محصول جدید

برای محصول جدیدی که از CAP برای اجرای خط‌مشی صوتی استفاده می‌کند، سازنده تجهیزات اصلی می‌تواند از XML برای ذخیره پیکربندی CAP در سمت فروشنده استفاده کند.

مزیت استفاده از XML این است که مجموعه‌ای از ابزارهای دستورگان‌نویسی وجود دارد که تولید پیکربندی از شرح سطح بالا را تسهیل می‌کند.

اگر سازنده تجهیزات اصلی تصمیم بگیرد از XML برای ذخیره پیکربندی CAP در پارتیشن فروشنده استفاده کند، توصیه می‌شود از پیاده‌سازی پیش‌فرض تجزیه‌کننده XML برای تبدیل پیکربندی به AIDL استفاده کند.

به‌روزرسانی برای محصول موجود

اگر محصول ازقبل از CAP استفاده می‌کند و بنابراین پیکربندی XML دارد، می‌توانید به استفاده از CAP موجود با نسخه AIDL از HAL ادامه دهید.

قواعد نام‌گذاری برای راهبردهای محصول در نسخه‌های HIDL و AIDL پیکربندی CAP متفاوت است. در HIDL، استراتژی‌های داخلی («قدیمی») از نام‌های کوتاه با حروف کوچک مانند media استفاده می‌کردند، درحالی‌که در AIDL، استراتژی‌های داخلی از نام‌های با حروف بزرگ با پیشوند STRATEGY_ استفاده می‌کنند، برای مثال STRATEGY_MEDIA. فهرست استراتژی‌های داخلی را در CapProductStrategies.xml ببینید. همین فایل شناسه‌های «ازپیش اختصاص‌داده‌شده» را برای استراتژی‌های مختص سازنده تجهیزات اصلی تعریف می‌کند که از الگوی نام‌گذاری vx_10xx با اعداد 1000 تا 1039 پیروی می‌کنند.

محصول قدیمی

اگر محصولی که به CAP متکی است پارتیشن فروشنده خود را به‌روز نکند و در HIDL باقی بماند، می‌توانید پارتیشن سیستم را به Android 16 به‌روز کنید. این چارچوب همچنان با پیکربندی CAP قدیمی سازگار است.

پیاده‌سازی نمونه

برای کمک به شرکا در پیاده‌سازی CAP برای پلاتفرم‌هایشان، AOSP نمونه‌ای از طعم «خودرویی» دستگاه مجازی Cuttlefish دارد که از CAP با AIDL HAL استفاده می‌کند. پیکربندی مختص دستگاه در device/google/cuttlefish/shared/auto/audio/policy/engine قرار دارد، با نام هدف lunch از aosp_cf_x86_64_auto. از فایل Android.bp می‌توان به‌عنوان مرجع برای تولید مجموعه کامل فایل‌های فروشنده CAP استفاده کرد.