מדיה

סמל Android Media HAL

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

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

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

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

ארכיטקטורה

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

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

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

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

הטמעת קודקים מותאמים אישית

Stagefright מגיע עם רכיבי codec תוכנה מובנים עבור פורמטי מדיה נפוצים, אך אתה יכול גם להוסיף רכיבי רכיבי רכיבי חומרה מותאמים אישית משלך כרכיבי 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 \
      ...
    

חשוף רכיבי codec למסגרת

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

הערה: החל מ-Android 4.1, הרכיב <Quirk> עבור רכיבי קודקים של מדיה אינו נתמך עוד.