אנחנו משיקים את מסגרת איכות המדיה ב-Android 16 ל-Android TV במטרה ליצור API סטנדרטי להתאמות של איכות התמונה (PQ) ואיכות האודיו (AQ). המטרה העיקרית היא לספק גישה אחידה להתאמות האלה במכשירי Android TV שונים. מטרת המסגרת המתוקננת הזו היא לפשט את הפיתוח למפתחי אפליקציות, ליצרני ציוד מקורי (OEM) ולספקי מערכת על שבב (SoC), על ידי הצעת קבוצה עקבית של ממשקי Android API. במקרה של ספקי SoC, היא מאפשרת למסגרת Android לטפל בהגדרות של PQ ו-AQ, וכך מצמצמת את העלויות של שיתוף פעולה עם מפתחי אפליקציות שונים.
בסופו של דבר, עבור Google ופלטפורמת Android, זה עוזר לצמצם את הפיצול, לשפר את האיכות והמדרגיות, לספק תכונות חדשות ולהניח את הבסיס לממשק משתמש מאוחד של AQ/PQ ולחוויית משתמש משופרת.
מסגרת איכות המדיה תומכת בתרחישים שונים לשיפור חוויית הצפייה בטלוויזיה. חשוב לציין שאפשר לנהל פרופילים והגדרות לפי שם חבילה (אפליקציה) ולפי מזהה קלט. בנוסף, אפליקציות מערכת או אפליקציות אחרות שנמצאות ברשימת ההיתרים יכולות ליצור פרופילים. רק הבעלים של הפרופילים יכולים לעדכן או להסיר אותם. באופן ספציפי, המסגרת מנהלת את פרופילי התמונה והצליל. דוגמאות לפרמטרים של תמונות כוללות בהירות, ניגודיות וחדות. דוגמאות לפרמטרים של צליל: בס וטרבל. אפשר להשתמש בפרופילים האלה בהקשרים שונים, כולל הגדרת פרופילים גלובליים כברירת מחדל, סטרימינג של פרופילים באמצעות MediaCodec, הגדרת פרופילים כברירת מחדל באפליקציות מדיה ספציפיות והגדרת פרופילים של תמונות קלט בטלוויזיה עבור קלטים ספציפיים כמו HDMI. המסגרת תומכת גם בשינויים בסטטוס, ומאפשרת להשתמש בקבוצות שונות של פרמטרים למצבים כמו HDR, לנהל פרופילים פעילים של תמונות לעיבוד מתמשך ולטפל בתכונות של תאורה אחורית סביבתית.
צוות Android עובד עם השותפים שלנו במערכת האקולוגית כדי לתמוך במסגרת Media Quality.
רכיבים
מסגרת איכות המדיה מורכבת מכמה רכיבים מרכזיים שפועלים יחד בשכבות האפליקציה, המסגרת והחומרה.

איור 1. אינטראקציות בין רכיבים של Media Quality Framework
- Media Quality Manager (SDK API): ממשק SDK API שפונה לאפליקציה ומאפשר לאפליקציות לנהל פרופילים של תמונות וצלילים.
- שירות איכות המדיה: שירות מערכת שמכיל את הלוגיקה העסקית העיקרית, ניהול פרופילים, הרשאות ותקשורת עם HAL.
- מסד נתונים של איכות המדיה: מסד נתונים של SQLite שבו מאוחסנים כל פרופילי התמונה והקול.
- Media Quality Contract: מגדיר את הפרמטרים והמבנים של הנתונים שמשמשים לתקשורת בין האפליקציות לבין המסגרת.
- HAL לאיכות מדיה: שכבת הפשטה של חומרה שספקי SoC מטמיעים כדי להעביר שינויים בפרופיל של תמונה וצליל לחומרה הבסיסית.
תכונות
המסגרת לאיכות המדיה תומכת במגוון רחב של תכונות, כדי לספק מערכת גמישה ועוצמתית לניהול איכות המדיה.
ניהול פרופילים
- פרופילים שמנוהלים על ידי אפליקציות: אפליקציות יכולות ליצור, לעדכן ולמחוק פרופילים משלהן כדי להתאים אישית את חוויית המשתמש.
- פרופילים שמוגדרים כברירת מחדל: אפליקציות מערכת יכולות להגדיר פרופילים שמוגדרים כברירת מחדל לאפליקציות ספציפיות או לכניסות ספציפיות לטלוויזיה (לדוגמה, HDMI 1).
- פרופיל ברירת מחדל גלובלי: פרופיל ברירת מחדל ברמת המערכת שמוחל כשלא מוגדר פרופיל ספציפי.
תהליך העבודה הכולל
בתרשימים הבאים מוצגות רצפי הפעולות של פעולות נפוצות שקשורות לאיכות המדיה.
יצירה והחלה של תמונת פרופיל

איור 2. דיאגרמת רצף ליצירת פרופיל עם תמונה
- אפליקציית מערכת מתקשרת אל
setPictureProfileAllowList()כדי להעניק לאפליקציית מדיה הרשאה ליצור פרופילים. - אפליקציית המדיה רושמת
PictureProfileCallbackכדי לקבל התראות על שינויים בפרופיל. - אפליקציית המדיה קוראת ל-
createPictureProfile()עם אובייקטPictureProfile. - ה-
MediaQualityServiceמעבד את הבקשה, שומר את הפרופיל במסד הנתונים ומודיע לאפליקציה על הצלחה או על כישלון באמצעות הקריאה החוזרת הרשומה (onPictureProfileAdded()אוonError()).
הגדרת פרופיל תמונה לכל סטרימינג
בתרשים זרימת העבודה הזה מוצג איך אפליקציה יכולה להחיל פרופיל ספציפי על תוכן הווידאו שלה במהלך ההפעלה.

איור 3. דיאגרמת רצף להגדרת פרופיל תמונה לכל סטרימינג
- אפליקציית המדיה שולחת שאילתה אל
MediaQualityManagerכדי לקבל רשימה של פרופילים עם תמונות שזמינים. - האפליקציה משתמשת ב-
MediaCodec.setParametersכדי לבחור ולהגדיר את הפרופיל הרצוי לסטרימינג. - המסגרת מעבירה את הבחירה הזו ל-HAL של איכות המדיה (MQ), יחד עם מזהה הפרופיל והפרמטרים שלו.
- לבסוף, ה-HAL של MQ שולח את הפרמטרים האלה ל-HAL של Composer, שמבצע עיבוד של זרם הווידאו עם פרופיל התמונה שצוין.
הגדרת פרופיל גלובלי כברירת מחדל
רק אפליקציות מערכת יכולות להגדיר את פרופיל ברירת המחדל הגלובלי, שמשמש כגיבוי לכל תוכן שלא הוקצה לו פרופיל ספציפי.
- אפליקציית המערכת מאחזרת מהמסגרת רשימה של פרופילים זמינים עם תמונות.
- לאחר מכן האפליקציה בוחרת אחד מהפרופילים האלה להיות ברירת המחדל הגלובלית החדשה על ידי קריאה ל-
setDefaultPictureProfile(id). - המסגרת שולחת את הפרמטרים של הפרופיל הזה ל-HAL של איכות המדיה, ואז השינויים מוחלים.
Media Quality SDK API
ממשק ה-API של Media Quality SDK מספק לאפליקציות את הכלים הדרושים כדי ליצור אינטראקציה עם המסגרת. נקודת הכניסה הראשית היא חבילת android.media.quality.
android.media.quality
החבילה הזו מכילה את המחלקות העיקריות לניהול איכות המדיה.
| דרגה | תיאור |
|---|---|
MediaQualityManager |
המחלקות המרכזיות לאינטראקציה עם MQF. |
PictureProfile |
מחלקת נתונים שמייצגת קבוצה מלאה של פרמטרים של תמונה למצב ספציפי. |
SoundProfile |
סוג נתונים לפרמטרים של צליל. |
MediaQualityContract |
מחלקה שמכילה קבועים לכל מפתחות הפרמטרים המוגדרים מראש. |
MediaQualityManager
השיטות העיקריות כוללות:
| שיטה | תיאור |
|---|---|
createPictureProfile(PictureProfile profile) |
יצירת פרופיל תמונה חדש. נדרשות הרשאות מיוחדות או שהאפליקציה צריכה להיות ברשימת ההיתרים. |
updatePictureProfile(PictureProfile profile) |
מעדכן תמונת פרופיל קיימת. רק מי שיצר את הפרופיל יכול להתקשר. |
removePictureProfile(String profileId) |
מחיקת פרופיל. רק מי שיצר את הפרופיל יכול להתקשר. |
getAvailablePictureProfiles() |
מחזירה רשימה של כל פרופילי התמונות שזמינים. |
setDefaultPictureProfile(String profileId) |
הגדרת תמונת הפרופיל הגלובלית שמוגדרת כברירת מחדל. נדרשת הרשאה מסוג MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE. |
registerPictureProfileCallback(PictureProfileCallback cb) |
רושם קריאה חוזרת (callback) להאזנה לשינויים בפרופיל. |
אובייקט 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
}
Media Quality HAL
HAL של איכות המדיה הוא ממשק מבוסס AIDL שמוגדר ב-hardware/interfaces/tv/mediaquality/aidl/. ספקי SoC צריכים להטמיע את הממשק הזה כדי להפעיל את Media Quality Framework במכשירים שלהם. שכבת ה-HAL משמשת כגשר תקשורת בין MediaQualityService במסגרת Android לבין החומרה הבסיסית, והיא אחראית להחלת התאמות של תמונה וקול.
ה-HAL מנהל פרופילים של תמונות וצלילים באמצעות חבילות AIDL. התהליך כולל קבלת שינויים בפרופיל מהמסגרת והודעה למסגרת על כל ההתאמות שבוצעו ברמת החומרה.
מודולים
ממשק HAL מורכב מכמה קובצי AIDL מרכזיים:
| קובץ HAL | תיאור |
|---|---|
IMediaQuality.aidl |
הממשק הראשי של שירות איכות המדיה, שמשמש להגדרת מאזינים ולגילוי יכולות החומרה. |
IPictureProfileChangedListener.aidl |
ממשק מאזין שהמסגרת משתמשת בו כדי להודיע ל-HAL (במיוחד לרכיב כמו composer HAL) על שינויים בפרופיל תמונה. |
IPictureProfileAdjustmentListener.aidl |
ממשק listener שמשמש את HAL כדי להודיע למסגרת על שינויים שבוצעו ברמת החומרה, למשל, כשמשתמש משנה הגדרה ישירות באמצעות שלט חומרה. |
PictureParameter.aidl |
מבנה איחוד של AIDL שמגדיר את כל הפרמטרים הרגילים של התמונה, כמו ניגודיות וחדות, שאפשר לשנות. |
PictureProfile.aidl |
חבילת AIDL שניתנת להעברה ומייצגת אובייקט PictureProfile בשכבת HAL, שמכילה מזהה פרופיל ופרמטרים שמשויכים אליו. |
ISoundProfileChangedListener.aidl |
ממשק מאזין שהמסגרת משתמשת בו כדי להודיע ל-HAL על שינויים בפרופיל הצליל. |
ISoundProfileAdjustmentListener.aidl |
ממשק מאזין ששכבת ה-HAL משתמשת בו כדי להודיע למסגרת על שינויים בצליל שבוצעו ברמת החומרה. |