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

אנחנו משיקים את מסגרת איכות המדיה ב-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 שפונה לאפליקציה ומאפשר לאפליקציות לנהל פרופילים של תמונות וצלילים.
  • שירות איכות המדיה: שירות מערכת שמכיל את הלוגיקה העסקית הבסיסית, ניהול פרופילים, הרשאות ותקשורת עם HAL.
  • מסד נתונים של איכות המדיה: מסד נתונים של SQLite שבו מאוחסנים כל פרופילי התמונה והקול.
  • Media Quality Contract: מגדיר את הפרמטרים והמבנים של הנתונים שמשמשים לתקשורת בין האפליקציות לבין המסגרת.
  • 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 ממשק מאזין שמשמש את HAL כדי להודיע למסגרת על שינויים שבוצעו ברמת החומרה, למשל, כשמשתמש משנה הגדרה ישירות באמצעות שלט חומרה.
PictureParameter.aidl איחוד AIDL שמגדיר את כל הפרמטרים הרגילים של התמונה, כמו ניגודיות וחדות, שאפשר לשנות.
PictureProfile.aidl חבילת AIDL שניתנת להעברה ומייצגת אובייקט PictureProfile בשכבת HAL, שמכילה מזהה פרופיל ופרמטרים שמשויכים אליו.
ISoundProfileChangedListener.aidl ממשק מאזין שהמסגרת משתמשת בו כדי להודיע ל-HAL על שינויים בפרופיל הצליל.
ISoundProfileAdjustmentListener.aidl ממשק מאזין שמשמש את HAL כדי להודיע למסגרת על שינויים בצליל שבוצעו ברמת החומרה.