Android כולל את Stagefright, מנוע להפעלת מדיה ברמת ה-Native שיש בו רכיבי קודק מובנים מבוססי תוכנה לפורמטים פופולריים של מדיה.
התכונות להפעלת אודיו ווידאו ב-Stagefright כוללות שילוב עם קודקים של OpenMAX, ניהול סשן, רינדור מסונכרן בזמן, תעבורה ו-DRM.
Stagefright תומך גם בשילוב עם קודקי חומרה בהתאמה אישית שמסופקים על ידי את/ה. כדי להגדיר נתיב חומרה לקידוד ולפענוח של מדיה, צריך להטמיע קודק מבוסס חומרה כרכיב OpenMax IL (שכבת שילוב).
הערה: עדכוני Stagefright יכולים להתרחש דרך אבטחה חודשית ב-Android וכחלק מגרסת Android OS.
ארכיטקטורה
אפליקציות מדיה פועלות יחד עם מסגרת המולטימדיה המקורית של Android בהתאם לארכיטקטורה הבאה.
- מסגרת האפליקציה
- ברמת מסגרת האפליקציה הוא קוד אפליקציה שמשתמש android.media ממשקי API לאינטראקציה עם חומרת המולטימדיה.
- Binder IPC
- שרתי ה-proxy של Binder IPC מסייעים בתקשורת מעל גבולות תהליכים.
הם נמצאים בספרייה
frameworks/av/media/libmedia
ו להתחיל באות "I". - מסגרת מולטימדיה מקורית
- ברמה המותאמת, Android מספק מסגרת מולטימדיה שמשתמשת
את המנוע Stagefright להקלטה ולהפעלה של אודיו ווידאו. פליטת אקסטרים
מגיע עם רשימת ברירת מחדל של רכיבי קודק תוכנה נתמכים, ואפשר להטמיע
באמצעות תקן שכבת השילוב של OpenMax, קודק חומרה משלכם. עבור
לפרטי הטמעה נוספים, אפשר לעיין ברכיבים של MediaPlayer ו-Stagefright
נמצא ב-
frameworks/av/media
. - שכבת שילוב OpenMAX (IL)
- OpenMAX IL מספק ל-Stagefright דרך סטנדרטית לזהות
להשתמש ברכיבי קודק מולטימדיה מותאמים אישית מבוססי חומרה שנקראים רכיבים. צריך לספק
פלאגין של OpenMAX בצורת ספרייה משותפת בשם
libstagefrighthw.so
הפלאגין הזה מקשר את Stagefright אל הקטע המותאם אישית רכיבי קודק, שמוטמעים בהתאם ל-OpenMAX IL תקן הרכיבים.
הטמעת קודקים בהתאמה אישית
ב-Stagefright מגיע עם רכיבי קודק תוכנה מובנים לפורמטים נפוצים של מדיה, אבל
תוכלו גם להוסיף רכיבי קודק חומרה מותאמים אישית משלכם כרכיבי OpenMAX. לבצע
יש ליצור את רכיבי ה-OMX ופלאגין של OMX שמחובר יחד
את רכיבי הקודק המותאמים אישית עם מסגרת Stagefright. רכיבים לדוגמה:
hardware/ti/omap4xxx/domx/
; לפלאגין לדוגמה
Galaxy Nexus, ראו hardware/ti/omap4xx/libstagefrighthw
.
כדי להוסיף רכיבי קודק משלכם:
- יוצרים את הרכיבים בהתאם לתקן הרכיבים של OpenMAX IL.
ממשק הרכיבים נמצא
קובץ
frameworks/native/include/media/OpenMAX/OMX_Component.h
. שפת תרגום לקבלת מידע נוסף על מפרט OpenMAX IL, אתר OpenMAX. - יוצרים פלאגין של OpenMAX שמקשר את הרכיבים ל-Stagefright
לאחר השיפור. למידע על הממשקים ליצירת הפלאגין:
frameworks/native/include/media/hardware/OMXPluginBase.h
והקבוצה קובצי כותרותHardwareAPI.h
. - בניית הפלאגין כספרייה משותפת עם השם
libstagefrighthw.so
בקובץ ה-Makefile של המוצר. מוצרים לדוגמה:
LOCAL_MODULE := libstagefrighthw
בקובץ ה-Makefile של המכשיר, חשוב להצהיר על המודול כמוצר [חבילה]:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
חשיפת רכיבי קודק ל-framework
שירות Stagefright מנתח את system/etc/media_codecs.xml
ו-system/etc/media_profiles.xml
כדי לחשוף את רכיבי הקודק הנתמכים
ופרופילים במכשיר למפתחי אפליקציות באמצעות
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>
עבור רכיבי קודק של מדיה.