מסגרת של איכות המדיה

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

בסופו של דבר, עבור פלטפורמות Google ו-Android, זה עוזר לצמצם את הפיצול, לשפר את האיכות וההתאמה, לספק תכונות חדשות ולהניח את הבסיס לממשק משתמש מאוחד של AQ/PQ ולחוויית משתמש משופרת.

מסגרת איכות המדיה תומכת בתרחישים שונים לשיפור חוויית הצפייה בטלוויזיה. אפשר לנהל את הפרופילים וההגדרות לפי שם החבילה (האפליקציה) או לפי מזהה הקלט. בנוסף, אפליקציות מערכת או אפליקציות ברשימת ההיתרים יכולות ליצור פרופילים, ורק הבעלים יכול לעדכן או להסיר אותם.

באופן ספציפי, המסגרת מנהלת את פרופילי התמונה והקול. דוגמאות לפרמטרים של תמונה: בהירות, ניגודיות וחדות. דוגמאות לפרמטרים של סאונד: באס וטרבל.

אפשר להשתמש בפרופילים האלה בהקשרים שונים, כולל הגדרת פרופילים גלובליים כברירת מחדל, פרופילים לסטרימינג באמצעות MediaCodec, הגדרת פרופילים כברירת מחדל לאפליקציות מדיה ספציפיות והגדרת פרופילים של תמונת קלט בטלוויזיה לקלטים ספציפיים כמו HDMI. המסגרת תומכת גם בשינויי סטטוס (ומאפשרת להשתמש בקבוצות שונות של פרמטרים למצבים כמו HDR), מנהלת פרופילים פעילים של תמונות לעיבוד מתמשך ומטפלת בתכונות של תאורה אחורית סביבתית.

צוות Android עובד עם השותפים שלנו במערכת האקולוגית כדי לתמוך במסגרת Media Quality.

רכיבים

מסגרת איכות המדיה מורכבת מכמה רכיבים מרכזיים שפועלים יחד בשכבות של האפליקציה, המסגרת והחומרה.

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

תכונות

המסגרת לאיכות המדיה תומכת במגוון רחב של תכונות כדי לספק מערכת גמישה ועוצמתית לניהול איכות המדיה.

ניהול פרופילים

  • פרופילים שמנוהלים על ידי אפליקציות: אפליקציות יכולות ליצור, לעדכן ולמחוק פרופילים משלהן כדי להתאים אישית את חוויית המשתמש.
  • פרופילים שמוגדרים כברירת מחדל: אפליקציות מערכת יכולות להגדיר פרופילים שמוגדרים כברירת מחדל לאפליקציות ספציפיות או לכניסות של טלוויזיה (למשל, HDMI 1).
  • פרופיל ברירת מחדל גלובלי: פרופיל ברירת מחדל שמוגדר בכל המערכת ומוחל כשלא מוגדר פרופיל ספציפי.

תהליך העבודה הכולל

בתרשימים הבאים מוצגות רצפי השיחות לפעולות נפוצות שקשורות לאיכות המדיה.

יצירה והחלה של פרופיל לתמונה

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

הגדרת פרופיל תמונה לכל סטרימינג

בתהליך העבודה הזה נדגים איך אפליקציה יכולה להחיל פרופיל ספציפי על תוכן הווידאו שלה במהלך ההפעלה.

הגדרת תמונת פרופיל לשידור
איור 3. דיאגרמת רצף להגדרת פרופיל תמונה לכל סטרימינג.
  1. אפליקציית המדיה שולחת שאילתה אל MediaQualityManager כדי לקבל רשימה של פרופילי תמונות זמינים.
  2. האפליקציה משתמשת ב-MediaCodec.setParameters כדי לבחור ולהגדיר את הפרופיל שנבחר לשידור.
  3. המסגרת מעבירה את הבחירה הזו ל-HAL של איכות המדיה (MQ), יחד עם מזהה הפרופיל והפרמטרים שלו.
  4. לבסוף, ה-HAL של MQ שולח את הפרמטרים האלה ל-HAL של Composer, שמבצע רינדור של זרם הווידאו עם פרופיל התמונה שצוין.

הגדרת פרופיל גלובלי כברירת מחדל

רק אפליקציות מערכת יכולות להגדיר את פרופיל ברירת המחדל הגלובלי, שמשמש כגיבוי לכל תוכן שלא הוקצה לו פרופיל ספציפי.

  1. אפליקציית המערכת מאחזרת רשימה של פרופילי תמונות זמינים מהמסגרת.
  2. לאחר מכן האפליקציה בוחרת אחד מהפרופילים האלה כברירת המחדל הגלובלית החדשה על ידי קריאה ל-setDefaultPictureProfile(id).
  3. המסגרת שולחת את הפרמטרים של הפרופיל הזה ל-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 ממשק listener שהמסגרת משתמשת בו כדי להודיע ל-HAL (במיוחד לרכיב כמו composer HAL) על שינויים בפרופיל תמונה.
IPictureProfileAdjustmentListener.aidl ממשק listener שמשמש את HAL כדי להודיע ל-framework על שינויים שבוצעו ברמת החומרה, למשל, כשמשתמש משנה הגדרה ישירות באמצעות שלט חומרה.
PictureParameter.aidl איגוד AIDL שמגדיר את כל פרמטרי התמונה הרגילים, כמו ניגודיות וחדות, שאפשר לשנות.
PictureProfile.aidl חבילת AIDL שניתנת להעברה ומייצגת אובייקט PictureProfile בשכבת HAL, שמכילה מזהה פרופיל ופרמטרים שמשויכים אליו.
ISoundProfileChangedListener.aidl ממשק מאזין שהמסגרת משתמשת בו כדי להודיע ל-HAL על שינויים בפרופיל הצליל.
ISoundProfileAdjustmentListener.aidl ממשק מאזין שמשמש את HAL כדי להודיע למסגרת על שינויים בצליל שבוצעו ברמת החומרה.