מודולי מדיה

אנדרואיד 10 ומעלה כולל מספר רכיבי מדיה הניתנים לעדכון המאפשרים לעדכן רכיבי מסגרת באמצעות תשתית Google Play Store או באמצעות מנגנון אויר-אוויר (OTA) שסופק על ידי שותף. רכיבי מדיה ארוזים יחד במודולים המאפשרים לספק עדכוני אבטחה ועדכוני תכונות ללא צורך בעדכון תמונת מערכת מלאה.

רכיבי מדיה הניתנים לעדכון קיימים במודולים הבאים.

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

מחלצי מדיה

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

מסגרת המדיה טוענת אוטומטית את כל קבצי ה- .so המחלצים הזמינים, כך שתוכל ליצור מחלצים משלך על ידי הוספת קובץ .so חדש ללא צורך בשינוי libstagefright או ספריות מסגרת מדיה אחרות. אתה גם יכול להבטיח שחולץ מותאם אישית מועדף על פני החולץ שסופק על ידי Google.

MediaSession2 API

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

MediaParser API

ממשק ה-API של MediaParser מאפשר ל-ExoPlayer לעשות שימוש יעיל במנתחי מסגרת מדיה לחילוץ דגימות מדיה ממיכלי מדיה. MediaParser כולל את השינויים הבאים בגבולות קוד המקור:

  • frameworks/base/apex/media/framework/java/android/media/MediaParser.java . יישום API ושכבה דקה.

  • external/exoplayer/ . מקורות מילה במילה של Exoplayer שעליהם בנוי MediaParser.

לא ניתן להתאים את ה-API של MediaParser. כדי לבדוק את MediaParser, השתמש בבדיקות ב- cts/tests/tests/mediaparser/ .

קודקים של מדיה

מודול Media Codec כולל רכיבי תוכנה Codec2 הניתנים לעדכון. התמיכה בהתאמה אישית שונה בין מהדורות:

  • באנדרואיד 11 ומעלה (במיוחד Google Play System Update v292100200 ), אתה יכול להתאים אישית את הפרמטרים להקצאת זיכרון ION (ראה למטה לפרטים).

  • ב-Android 9 ומטה, ה-API של OMX codec אינו ניתן לעדכון, אך אתה עדיין יכול להשתמש בו במחיצת הספק.

הקצאת זיכרון ION

ב-Android 11 ומעלה וב- Google Play System Update v292100200 ומעלה, אתה יכול להתאים אישית את הפרמטרים הבאים להקצאת זיכרון ION.

פָּרָמֶטֶר ערך ברירת מחדל תיאור
heapMask 0xFFFFFFFF כל סוגי הערמות מותרים.
allocFlags 0 לא הוגדרו דגלים.
minAlignment 0 אין יישור.

כדי לעקוף את הפרמטרים:

  1. רשום שירות android.hardware.media.c2 המוגדר כברירת מחדל וספק פרמטרי שימוש מותאמים אישית ב-ION.

  2. הוסף את הקוד הבא למכשיר manifest.xml .

    <hal format="hidl">
        <name>android.hardware.media.c2</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IComponentStore</name>
            <instance>default</instance>
        </interface>
    </hal>
    

פורמט ותלות

מודול המדיה ( com.android.media ) ומודול ה-Media Codec ( com.android.media.swcodec ) הם בפורמט APEX . רכיבי המדיה הכלולים מסתמכים רק על ממשקי API של NDK.

עדכונים

במהלך עדכון, רכיבי המסגרת במכשיר טוענים חבילת APEX המכילה Java וקוד מקורי.

עדכוני מדיה

איור 1. זרימת העדכון של רכיבי המדיה

לאחר שהמסגרת תתקין את חבילת APEX, המכשיר מאתחל ומעלה את תמונת הדיסק ותהליכי מערכת המדיה ( media.extractor ו- media.codec ) טען את המודולים המעודכנים מנקודת הטעינה.