המסמך הזה מיועד לעזור ליצרני ציוד מקורי (OEM) להטמיע תמיכה במנהל משאבי המדיה של Android ובממשקי API קשורים.
מספר מקסימלי של מופעי קודק בו-זמנית
ממשק CodecCapabilities.getMaxSupportedInstances
מחזיר את המספר המקסימלי של מופעי codec מקבילים נתמכים.
בדיקת ה-CTS
testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
משמשת כדי לוודא שהערך המקסימלי הנכון מוגדר ב-/etc/media_codecs.xml
.
לדוגמה:
... <MediaCodecs> ... <Encoders> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > ... <Limit name="concurrent-instances" max="13" /> </MediaCodec> ... </Encoders> ... </MediaCodecs>
יצרני ציוד מקורי יכולים להשתמש בבדיקה הזו כדי ליצור את המגבלות המקבילות שעוברות את הבדיקה. ככה עושים את זה:
- מריצים את הבדיקה באמצעות cts-tradefed.
- בודקים את הודעת הכישלון שמתקבלת. לדוגמה:
There was 1 failure: 1) testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) junit.framework.AssertionFailedError: In order to pass the test, please publish following codecs' concurrent instances limit in /etc/media_codecs.xml: <MediaCodec name="OMX.<vendor>.video.encoder.mpeg4" type="video/mp4v-es" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.encoder.h263" type="video/3gpp" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.encoder.vp8" type="video/x-vnd.on2.vp8" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.avc" type="video/avc" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.avc.secure" type="video/avc" > <Limit name="concurrent-instances" max="4" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.mpeg4" type="video/mp4v-es" > <Limit name="concurrent-instances" max="12" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.h263" type="video/3gpp" > <Limit name="concurrent-instances" max="12" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.vp8" type="video/x-vnd.on2.vp8" > <Limit name="concurrent-instances" max="12" /> </MediaCodec>
- מוסיפים את השורות
concurrent-instances
שמוצעות בהודעת הכישלון של הבדיקה לקובץ/etc/media_codecs.xml
. - מריצים מחדש את הבדיקה כדי לוודא שהיא הצליחה.
קצב הפריימים שאפשר להשיג בקידודים של סרטונים
ממשק VideoCapabilities.getAchievableFrameRatesFor
מחזיר את טווח קצב הפריימים האפשריים של סרטון בגודל מסוים. יצרן הציוד המקורי (OEM) צריך לספק את המידע הזה לכל מכשיר באמצעות קובץ XML שמוצב בנתיב /etc/media_codecs_performance.xml
. ההגדרות האלה נבדקות על ידי com.android.cts.videoperf.VideoEncoderDecoderTest
וandroid.media.cts.VideoDecoderPerfTest
CTS.
יצרני ציוד מקורי יכולים להשתמש בבדיקות CTS כדי ליצור את קובצי ה-XML שעוברים את הבדיקות. ככה עושים את זה:
- מריצים את הבדיקות קודם באמצעות cts-tradefed. בגלל השונות בביצועים של Android, מומלץ להריץ את הבדיקות כמה פעמים כדי לקבל ערכי מינימום ומקסימום מדויקים יותר.
- משתמשים בסקריפט get_achievable_rates.py שמופיע כאן כדי ליצור את קובץ ה-XML.
- ממקמים את קובץ ה-XML בנתיב:
/etc/media_codecs_performance.xml
בדרך כלל עושים את זה על ידי מיקום קובץ ה-XML בפרויקט המכשיר (device/<vendor>/<product>) והוספת השורהPRODUCT_COPY_FILES
ל-device.mk
באופן הבא:PRODUCT_COPY_FILES += \ ... device/moto/shamu/media_codecs.xml:system/etc/media_codecs.xml \ + device/moto/shamu/media_codecs_performance.xml:system/etc/media_codecs_performance.xml
- מריצים מחדש את בדיקות הביצועים כדי לוודא שהן הצליחו.
דו-קיום של קודק מאובטח וקודק לא מאובטח
- supports-secure-with-non-secure-codec —
אם אי אפשר להשתמש בו-זמנית במופע של קודק מאובטח ובמופע של קודק לא מאובטח, צריך לציין זאת כהגדרה גלובלית בקובץ
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- supports-multiple-secure-codecs —
אם לא קיימת תמיכה בדו-קיום של כמה מופעים של רכיבי קודק מאובטחים, צריך לציין זאת כהגדרה גלובלית בקובץ
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- שימו לב ששתי ההגדרות מוגדרות כ-true כברירת מחדל, כלומר אם הן נתמכות, אין צורך להוסיף את שורת ההגדרה ל-
media_codecs.xml
. - יכול להיות שהבדיקות של
ResourceManagerTest
CTS ייכשלו אם שתי ההגדרות האלה לא הוגדרו בצורה נכונה.