چارچوب کیفیت رسانه (Media Quality) در اندروید ۱۶ برای اندروید تیوی معرفی شده است و هدف آن ایجاد یک API استاندارد برای تنظیمات کیفیت تصویر (PQ) و کیفیت صدا (AQ) است. هدف اصلی، ارائه یک رویکرد یکپارچه برای این تنظیمات در دستگاههای مختلف اندروید تیوی است. این چارچوب استاندارد با ارائه مجموعهای منسجم از APIهای اندروید، توسعه را برای توسعهدهندگان برنامه، تولیدکنندگان تجهیزات اصلی (OEMها) و فروشندگان سیستم روی تراشه (SoC) ساده میکند. بهطور خاص برای فروشندگان SoC، این چارچوب به چارچوب اندروید اجازه میدهد تا پیکربندی PQ و AQ را مدیریت کند و سربار همکاری با توسعهدهندگان برنامههای مختلف را کاهش دهد.
در نهایت، برای پلتفرم گوگل و اندروید، به کاهش پراکندگی، بهبود کیفیت و مقیاسپذیری، ارائه ویژگیهای جدید و پایهگذاری یک رابط کاربری یکپارچه AQ/PQ و بهبود تجربه کاربری کمک میکند.
چارچوب کیفیت رسانه از موارد استفاده مختلفی برای بهبود تجربه تماشای تلویزیون پشتیبانی میکند. شایان ذکر است که پروفایلها و تنظیمات را میتوان بر اساس نام بسته (برنامه) و بر اساس شناسه ورودی مدیریت کرد. علاوه بر این، پروفایلها میتوانند توسط برنامههای سیستم یا توسط سایر برنامههایی که در لیست مجاز هستند ایجاد شوند. پروفایلها فقط توسط مالک پروفایلها قابل بهروزرسانی یا حذف هستند. به طور خاص، این چارچوب، پروفایلهای تصویر و صدا را مدیریت میکند. نمونههایی از پارامترهای تصویر شامل روشنایی، کنتراست، وضوح است. نمونههایی از پارامترهای صدا شامل باس و تریبل است. این پروفایلها را میتوان در زمینههای مختلف، از جمله تنظیم پروفایلهای پیشفرض جهانی، پروفایلهای پخش از طریق MediaCodec، تنظیم پروفایلهای پیشفرض برنامه برای برنامههای رسانهای خاص و تنظیم پروفایلهای تصویر ورودی تلویزیون برای ورودیهای خاص مانند HDMI، اعمال کرد. این چارچوب همچنین از تغییرات وضعیت پشتیبانی میکند و امکان تنظیم پارامترهای مختلف برای حالتهایی مانند HDR، مدیریت پروفایلهای تصویر فعال برای پردازش مداوم و مدیریت ویژگیهای نور پس زمینه محیط را فراهم میکند.
تیم اندروید در حال همکاری با شرکای اکوسیستم خود برای پشتیبانی از چارچوب کیفیت رسانه است.
قطعات
چارچوب کیفیت رسانه از چندین مؤلفه کلیدی تشکیل شده است که در لایههای برنامه، چارچوب و سختافزار با هم کار میکنند.

شکل ۱. تعاملات بین اجزای چارچوب کیفیت رسانه
- مدیر کیفیت رسانه (SDK API) : رابط برنامهنویسی نرمافزار SDK که به برنامهها اجازه میدهد پروفایلهای تصویر و صدا را مدیریت کنند.
- سرویس کیفیت رسانه : یک سرویس سیستمی که شامل منطق اصلی کسبوکار، مدیریت پروفایلها، مجوزها و ارتباط با HAL است.
- پایگاه داده کیفیت رسانه : یک پایگاه داده SQLite که تمام پروفایلهای تصویر و صدا را ذخیره میکند.
- قرارداد کیفیت رسانه : پارامترهای استاندارد و ساختارهای داده مورد استفاده برای ارتباط بین برنامهها و چارچوب را تعریف میکند.
- کیفیت رسانه HAL : لایه انتزاعی سختافزاری که فروشندگان SoC برای انتقال تغییرات پروفایل تصویر و صدا به سختافزار زیرین پیادهسازی میکنند.
ویژگیها
چارچوب کیفیت رسانه از طیف گستردهای از ویژگیها پشتیبانی میکند تا سیستمی انعطافپذیر و قدرتمند برای مدیریت کیفیت رسانه ارائه دهد.
مدیریت پروفایل
- پروفایلهای مدیریتشده توسط برنامه : برنامهها میتوانند پروفایلهای خود را برای یک تجربه سفارشی ایجاد، بهروزرسانی و حذف کنند.
- پروفایلهای پیشفرض : برنامههای سیستمی میتوانند پروفایلهای پیشفرض را برای برنامههای خاص یا ورودیهای تلویزیون (مثلاً HDMI 1) تنظیم کنند.
- پروفایل پیشفرض سراسری : یک پروفایل پشتیبان سراسری که وقتی هیچ پروفایل خاصی تنظیم نشده باشد، اعمال میشود.
گردش کار کلی
نمودارهای زیر توالی فراخوانی برای عملیات رایج کیفیت رسانه را نشان میدهند.
ایجاد و اعمال یک پروفایل تصویر

شکل ۲. نمودار توالی برای ایجاد یک پروفایل تصویر
- یک برنامه سیستمی، تابع
setPictureProfileAllowList()را فراخوانی میکند تا به یک برنامه رسانهای اجازه ایجاد پروفایل بدهد. - برنامهی رسانه یک
PictureProfileCallbackثبت میکند تا اعلانهایی در مورد تغییرات پروفایل دریافت کند. - برنامهی رسانه، تابع
createPictureProfile()را با یک شیءPictureProfileفراخوانی میکند. - سرویس
MediaQualityServiceدرخواست را پردازش میکند، پروفایل را در پایگاه داده ذخیره میکند و از طریق فراخوانی ثبتشده (onPictureProfileAdded()یاonError()) موفقیت یا عدم موفقیت را به برنامه اطلاع میدهد.
تنظیم پروفایل تصویر برای هر استریم
این گردش کار نشان میدهد که چگونه یک برنامه میتواند در طول پخش، یک پروفایل خاص را به محتوای ویدیوی خود اعمال کند.

شکل ۳. نمودار توالی برای تنظیم پروفایل تصویر به ازای هر جریان
- برنامهی رسانه از
MediaQualityManagerدرخواست میکند تا فهرستی از پروفایلهای تصویر موجود را دریافت کند. - سپس برنامه از
MediaCodec.setParametersبرای انتخاب و تنظیم پروفایل مورد نظر برای پخش زنده استفاده میکند. - این چارچوب، این انتخاب را به HAL مربوط به کیفیت رسانه (MQ) ابلاغ میکند و شناسه پروفایل و پارامترهای آن را به آن ارسال میکند.
- در نهایت، MQ HAL این پارامترها را به Composer HAL ارسال میکند که جریان ویدیو را با مشخصات تصویر مشخص شده رندر میکند.
تنظیم یک پروفایل پیشفرض سراسری
فقط برنامههای سیستمی میتوانند نمایه پیشفرض جهانی را تنظیم کنند، که به عنوان جایگزینی برای هر محتوایی که نمایه خاصی به آن اختصاص داده نشده است، عمل میکند.
- برنامه سیستمی لیستی از پروفایلهای تصویر موجود را از فریمورک بازیابی میکند.
- سپس برنامه با فراخوانی
setDefaultPictureProfile(id)یکی از این پروفایلها را به عنوان پیشفرض سراسری جدید انتخاب میکند. - این چارچوب پارامترهای آن پروفایل را به Media Quality HAL ارسال میکند، که سپس تغییرات را اعمال میکند.
رابط برنامهنویسی نرمافزار (SDK) کیفیت رسانه
رابط برنامهنویسی نرمافزار (API) کیت توسعه نرمافزار (SDK) کیفیت رسانه (Media Quality SDK) ابزارهای لازم برای تعامل برنامهها با این چارچوب را فراهم میکند. نقطه ورودی اصلی، پکیج android.media.quality است.
کیفیت.رسانه.اندروید
این بسته شامل کلاسهای اولیه برای مدیریت کیفیت رسانه است.
| کلاس | توضیحات |
|---|---|
MediaQualityManager | کلاس مرکزی برای تعامل با MQF. |
PictureProfile | یک کلاس داده که مجموعه کاملی از پارامترهای تصویر را برای یک حالت خاص نشان میدهد. |
SoundProfile | یک کلاس داده برای پارامترهای صدا. |
MediaQualityContract | کلاسی که شامل ثابتهایی برای تمام کلیدهای پارامتر از پیش تعریفشده است. |
مدیر کیفیت رسانه
روشهای کلیدی عبارتند از:
| روش | توضیحات |
|---|---|
createPictureProfile(PictureProfile profile) | یک نمایه تصویر جدید ایجاد میکند. به مجوزهای ویژه یا قرار داشتن برنامه در فهرست مجوزهای لازم نیاز دارد. |
updatePictureProfile(PictureProfile profile) | یک پروفایل تصویر موجود را بهروزرسانی میکند. فقط توسط سازنده پروفایل قابل فراخوانی است. |
removePictureProfile(String profileId) | یک پروفایل را حذف میکند. فقط توسط سازنده پروفایل قابل فراخوانی است. |
getAvailablePictureProfiles() | لیستی از تمام پروفایلهای تصویر موجود را برمیگرداند. |
setDefaultPictureProfile(String profileId) | نمایه تصویر پیشفرض جهانی را تنظیم میکند. به مجوز MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE نیاز دارد. |
registerPictureProfileCallback(PictureProfileCallback cb) | یک فراخوانی برای گوش دادن به تغییرات پروفایل ثبت میکند. |
شیء PictureProfile
شیء PictureProfile تمام اطلاعات مربوط به یک حالت تصویر مشخص را در خود جای میدهد.
public final class PictureProfile {
private String id;
private int type; // System or Application
private String name; // e.g., "Movie", "Game"
private String inputId; // e.g., "HDMI1"
private String packageName; // e.g., "com.google.android.youtube"
private PersistableBundle parameters; // Bundle containing all PQ parameters
}
کیفیت رسانه HAL
رابط کیفیت رسانه (Media Quality HAL) یک رابط مبتنی بر AIDL است که در hardware/interfaces/tv/mediaquality/aidl/ تعریف شده است. فروشندگان SoC باید این رابط را برای فعال کردن چارچوب کیفیت رسانه در دستگاههای خود پیادهسازی کنند. HAL به عنوان پل ارتباطی بین MediaQualityService در چارچوب اندروید و سختافزار زیرین، که مسئول اعمال تنظیمات تصویر و صدا است، عمل میکند.
HAL پروفایلهای تصویر و صدا را با استفاده از بستههای AIDL مدیریت میکند. این شامل دریافت تغییرات پروفایل از چارچوب و اطلاعرسانی به چارچوب در مورد هرگونه تنظیمات انجام شده در سطح سختافزار است.
ماژولها
رابط HAL از چندین فایل کلیدی AIDL تشکیل شده است:
| فایل HAL | توضیحات |
|---|---|
IMediaQuality.aidl | رابط اصلی سرویس کیفیت رسانه، که برای تنظیم شنوندهها و کشف قابلیتهای سختافزاری استفاده میشود. |
IPictureProfileChangedListener.aidl | یک رابط شنونده که چارچوب از آن برای اطلاعرسانی به HAL (بهطور خاص، کامپوننتی مانند آهنگساز HAL) در مورد تغییرات در یک پروفایل تصویر استفاده میکند. |
IPictureProfileAdjustmentListener.aidl | یک رابط شنونده که HAL از آن برای اطلاعرسانی به چارچوب تنظیمات انجامشده در سطح سختافزار استفاده میکند، برای مثال، هنگامی که کاربر تنظیماتی را مستقیماً از طریق ریموت سختافزاری تغییر میدهد. |
PictureParameter.aidl | یک واحد AIDL که تمام پارامترهای استاندارد تصویر، مانند کنتراست و وضوح، را که میتوانند تنظیم شوند، تعریف میکند. |
PictureProfile.aidl | بسته AIDL که یک شیء PictureProfile را در لایه HAL نشان میدهد و حاوی یک شناسه پروفایل و پارامترهای مرتبط با آن است. |
ISoundProfileChangedListener.aidl | یک رابط شنونده که چارچوب از آن برای اطلاعرسانی به HAL در مورد تغییرات در یک پروفایل صدا استفاده میکند. |
ISoundProfileAdjustmentListener.aidl | یک رابط شنونده که HAL از آن برای اطلاعرسانی به چارچوب تنظیمات صدا در سطح سختافزار استفاده میکند. |