כְּלֵי תִקְשׁוֹרֶת

סמל HAL של Android Media

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

תכונות השמעת שמע ווידאו של Stagefright כוללות שילוב עם רכיבי Codec של OpenMAX, ניהול הפעלות, עיבוד מסונכרן בזמן, בקרת תחבורה ו- DRM.

Stagefright תומך גם בשילוב עם רכיבי Codec חומרה מותאמים אישית הניתנים על ידך. כדי להגדיר נתיב חומרה לקידוד ופענוח מדיה, עליך להטמיע רכיב codec מבוסס חומרה כרכיב OpenMax IL (Integration Layer).

הערה: עדכוני Stagefright יכולים להתרחש באמצעות תהליך עדכון האבטחה החודשי של Android וכחלק משחרור מערכת ההפעלה של Android.

ארכיטקטורה

יישומי מדיה מתקשרים עם מסגרת המולטימדיה המקורית של Android בהתאם לארכיטקטורה הבאה.

ארכיטקטורת מדיה של Android

איור 1. ארכיטקטורת מדיה

מסגרת יישומים
ברמת מסגרת היישום נמצא קוד יישום המשתמש בממשקי API של android.media בכדי לקיים אינטראקציה עם חומרת המולטימדיה.
קלסר IPC
פרוקסי ה- IPC של קלסר מקלים על תקשורת על גבולות התהליך. הם ממוקמים בספריית frameworks/av/media/libmedia ומתחילים באות "אני".
מסגרת מולטימדיה מקורית
ברמה המקורית, אנדרואיד מספקת מסגרת מולטימדיה המשתמשת במנוע Stagefright להקלטה והשמעת שמע ווידאו. Stagefright מגיע עם רשימת ברירת מחדל של קודקי תוכנה נתמכים ותוכלו ליישם את קוד החומרה שלכם באמצעות תקן שכבת האינטגרציה של OpenMax. לפרטי יישום נוספים, עיין ברכיבי MediaPlayer ו- Stagefright הממוקמים frameworks/av/media .
שכבת שילוב OpenMAX (IL)
OpenMAX IL מספק דרך סטנדרטית ל- Stagefright לזהות ולהשתמש בקודקי מולטימדיה מבוססי חומרה המותאמים אישית הנקראים רכיבים. עליך לספק תוסף OpenMAX בצורה של ספרייה משותפת בשם libstagefrighthw.so . תוסף זה מקשר את Stagefright עם רכיבי ה- codec המותאמים אישית שלך, אותם יש ליישם על פי תקן רכיבי OpenMAX IL.

יישום רכיבי Codec מותאמים אישית

Stagefright מגיע עם קודקי תוכנה מובנים לפורמטים נפוצים של מדיה, אך ניתן גם להוסיף קודקי חומרה מותאמים אישית משלך כרכיבי OpenMAX. לשם כך, עליך ליצור את רכיבי OMX ותוסף OMX המחבר את ה- codec המותאם אישית שלך עם מסגרת Stagefright. לדוגמא רכיבים, עיין hardware/ti/omap4xxx/domx/ ; לקבלת דוגמה לתוסף ל- Galaxy Nexus, ראה hardware/ti/omap4xx/libstagefrighthw .

כדי להוסיף קודקים משלך:

  1. צור את הרכיבים שלך על פי תקן רכיבי OpenMAX IL. ממשק הרכיבים נמצא בקובץ frameworks/native/include/media/OpenMAX/OMX_Component.h . למידע נוסף על מפרט OpenMAX IL, עיין באתר OpenMAX .
  2. צור תוסף OpenMAX המקשר בין הרכיבים שלך לשירות Stagefright. לממשקים ליצירת התוסף, ראה frameworks/native/include/media/hardware/OMXPluginBase.h ו- HardwareAPI.h קבצי כותרת.
  3. בנה את התוסף שלך כספרייה משותפת עם השם libstagefrighthw.so ב- Makefile של המוצר שלך. לדוגמה:
    LOCAL_MODULE := libstagefrighthw
    

    ב- Makefile של המכשיר שלך, הקפד להכריז על המודול כחבילת מוצר:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

חשיפת קודקים למסגרת

השירות stagefright מנתח את system/etc/media_codecs.xml ואת system/etc/media_profiles.xml לחשוף את רכיבי codec הנתמכים ופרופילים על המכשיר מפתחי האפליקציה דרך android.media.MediaCodecList ו android.media.CamcorderProfile כיתות. עליכם ליצור את שני הקבצים במדריך device/<company>/<device>/ ולהעתיק זאת לספריית system/etc של תמונת system/etc בתיקיית ה- Makefile של המכשיר. לדוגמה:

PRODUCT_COPY_FILES += \
  device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \
  device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \

לקבלת דוגמאות מלאות, ראה device/samsung/tuna/media_codecs.xml device/samsung/tuna/media_profiles.xml .

הערה: החל מאנדרואיד 4.1, האלמנט <Quirk> מדיה כבר אינו נתמך.