המסמך הזה נועד לעזור ליצרני ציוד מקורי (OEM) להטמיע כראוי תמיכה במנהל המשאבים של מדיה ב-Android ובממשקי ה-API הקשורים.
מספר המקסימום של מופעי codec בו-זמניים
הממשק CodecCapabilities.getMaxSupportedInstances
מחזיר את המספר המקסימלי של מכונות הקודק הנתמכות בו-זמנית.
בדיקת 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>
- מוסיפים לקובץ
/etc/media_codecs.xml
את השורותconcurrent-instances
שהוצעו בהודעה על כשל הבדיקה. - מריצים מחדש את הבדיקה כדי לוודא שהיא הסתיימה בהצלחה.
קצב הפריימים שאפשר להשיג בקודקים של וידאו
הממשק VideoCapabilities.getAchievableFrameRatesFor
מחזיר את טווח קצב הפריימים האפשרי של סרטון בגודל מסוים. יצרן הציוד המקורי (OEM) צריך לספק את המידע הזה לכל מכשיר באמצעות קובץ XML שנמצא בכתובת /etc/media_codecs_performance.xml
. ההגדרות האלה נבדקות על ידי בדיקות CTS com.android.cts.videoperf.VideoEncoderDecoderTest
ו-android.media.cts.VideoDecoderPerfTest
.
יצרני ציוד מקורי יכולים להשתמש בבדיקות 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
. - אם שתי ההגדרות האלה לא הוגדרו כראוי, יכול להיות שבדיקות ה-CTS של
ResourceManagerTest
ייכשלו.