پشتیبانی از خط مشی صوتی قابل تنظیم در AIDL HAL

با شروع از اندروید ۱۶، رابط کاربری AIDL Audio HAL به طور کامل از سیاست صوتی قابل تنظیم (CAP) پشتیبانی می‌کند.

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

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

پیاده‌سازی CAP بر اساس Intel Parameter Framework است. CAP در اندروید ۶ معرفی شد. Parameter Framework (PfW) امکان توصیف یک سیستم را بر اساس پارامترها فراهم می‌کند. PfW با استفاده از یک فایل XML پیکربندی، پارامترها را با استفاده از افزونه‌ها به اکشن‌ها متصل می‌کند و قوانینی را برای تغییر پارامترها طبق معیارهای فعلی ارائه می‌دهد.

ساختار CAP در HIDL

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

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

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

ساختار CAP در AIDL

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

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

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

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

سناریوهای مهاجرت

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

محصول جدید

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

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

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

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

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

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

محصول قدیمی

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

پیاده‌سازی مثال

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