אודיו ברזולוציה גבוהה

במהדורת Android 10 יש את השיפורים הבאים לאודיו ברזולוציה גבוהה:

  • Float: קודיקים של WAV ו-FLAC ותוכנות חילוץ עודכנו כדי לתמוך ב-float (יותר מ-24 ביט של דיוק ללא אובדן נתונים). אפקטים של הורדה ל-2 ערוצים ואפקטים של וירטואליזציה מתעדכנים ל-float. אפשרות לעדכון הדיוק קיימת ב-MediaPlayer‏ (NuPlayer).
  • תדר גבוה: קודקים של WAV ו-FLAC ותוכנות חילוץ עודכנו כך שיתמכו ב-192kHz. האפקטים שמוגדרים כברירת מחדל ב-Android נבדקים לתמיכה ב-192kHz בתדרים רגילים. התדרים הרגילים המותרים הם 88.2 kHz,‏ 96 kHz,‏ 176.4 kHz ו-192 kHz.
  • ערוצים מרובים: אפקטים שמוגדרים כברירת מחדל להפעלה ב-Android נבדקים לתמיכה בערוצים מרובים, עד שמונה ערוצים.
  • תזמון: פרטי התזמון כלולים במסגרת האודיו.

החל מ-Android 9, השיפורים הבאים לא דורשים הטמעה של שותפים:

  • מספר הטראקים של הפלט של הלקוח בו-זמנית גדל מ-14 ל-40, כי מופעים מוגבלים של AudioTrack בלקוחות היו בעיה באפליקציות ב-Android 8.x.
  • נפח הזיכרון המקסימלי של לקוח/שרת גדל מ-4MB ל-32MB (בהתאם לנפח הזיכרון הכולל של המכשיר) כדי לאפשר יותר טראקים של אודיו ברזולוציה גבוהה בו-זמנית.
  • מספר הטראקים המעורבים הכולל גדל מ-32 ל-256 כדי למנוע תחרות על משאבים בין האפליקציות לבין ממשק המשתמש של המערכת.

שינויים באפקט הפלט

במאמר אפקטים קוליים מפורטים השינויים בגרסה של Android 11.

לפני השקת Android 9, עיבוד שרשרת האפקטים הוטמע בפורמט סטראו של 16 ביט לדגימה. לכך היו כמה מגבלות:

  • כל אפקט הפלט מאלץ המרה מנתוני אודיו של נקודה צפה ל-int16, וכתוצאה מכך יש אובדן דיוק.
  • אפקטים של פלט נדחו מבורות פלט עם מספר ערוצים גדול מ-2.

במהדורה של Android 9, צינור עיבוד הנתונים של שרשור האפקטים שודרג כך שיתמוך בפורמט float במספר ערוצים. נקודות עיקריות:

  • אפקטים של תוכנה ל-Android כבר הועברו ל-stereo float.
  • אפקטים מדור קודם נתמכים באמצעות מתאמי פורמט, שממירים את הערך מסוג float למספר שלם מסוג int16 לפי הצורך.

הטמעת אפקטים של פלט

יישום ייחוס לאפקטים של פלט זמין בקטע frameworks/av/media/libeffects.

שותפים שמטמיעים אפקטים מותאמים אישית של פלט צריכים לבצע את הפעולות הבאות לגרסה 10 של Android:

  • מעדכנים את אפקטים הפלט כך שיתמכו בפורמט float רב-ערוצי:
    • אין יותר צורך בתמיכה בעיבוד של Int16.
    • תמיכה במספרי ערוצים של פלט מ-2 עד 8 (לצורך תאימות עתידית, מומלץ להשתמש במספרים מ-1 עד 30).
    • תמיכה במספרי ערוצים של קלט שתואמים למספרי ערוצים של פלט לאפקטים של הוספה. אפקטים משניים ימשיכו לראות מספר של ערוץ קלט אחד (מונו).
    • תמיכה במסכות של מיקום הערוץ (קנוניות) ובמסכות של מדד הערוץ של (1 << n) - 1.
  • אם אתם חייבים להמשיך לתמוך באפקטים של פלט של ספקים מדור קודם ולא יכולים לעדכן אותם, עליכם לאמת את הקוד הקודם באופן הבא:
    • השפעות פלט (הוספה) מדור קודם חייבות לדחות הגדרות שלא נתמכות ב-EFFECT_CMD_SET_CONFIG.
      • בודקים שהפורמט הוא int16.
      • בודקים שהמסכות של ערוצי הקלט והפלט הן סטריאו.
      • אם אחת מהבדיקות נכשלת, מחזירים את הערך -EINVAL.
    • אפקטים מדור קודם של פלט (משני) מוגדרים על ידי AudioFlinger באמצעות מסכה של ערוץ קלט מונו, ויכול להיות גם מסכות של ערוץ פלט מרובה ערוצים, בהתאם לכך אם מקור הפלט הוא מרובה ערוצים. הם חייבים לדחות הגדרות לא נתמכות ב- EFFECT_CMD_SET_CONFIG.
      • בודקים שהפורמט הוא int16.
      • בודקים שמסכת ערוץ הקלט היא מונו ומסכת ערוץ הפלט היא סטריאו.
      • אם אחת מהבדיקות נכשלת, מחזירים את הערך -EINVAL.
    • אימות קוד מדור קודם. אל תניחו שהכול עובד כמו שצריך!