יחסי תלות של OEM (יצרן ציוד מקורי) למנהל משאבי המדיה

המסמך הזה נועד לעזור ליצרני ציוד מקורי (OEM) להטמיע באופן תקין תמיכה במנהל משאבי המדיה ב-Android ובממשקי API קשורים.

מספר מקסימלי של מופעי קודק בו-זמנית

הממשק של 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>

יצרני ציוד מקורי יכולים להשתמש בבדיקה הזו כדי ליצור את המגבלות בו-זמנית שעוברים את הבדיקה. לשם כך:

  1. קודם מריצים את הבדיקה באמצעות cts-tradefed.
  2. מעריכים את ההודעה שהתקבלה לגבי הכשל. לדוגמה:
    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>
    
  3. הוספה של concurrent-instances השורות שהוצעו בבדיקה הודעה על כשל בקובץ /etc/media_codecs.xml.
  4. עליכם להריץ מחדש את הבדיקה כדי לוודא שהיא הצליחה.

קצב הפריימים של קודק הווידאו שניתן להשיג

הממשק של VideoCapabilities.getAchievableFrameRatesFor מחזירה את טווח קצב הפריימים של הסרטון בהתאם לגודל הסרטון. הזה ה-OEM (יצרן הציוד המקורי) צריך לספק את המידע לגבי כל מכשיר באמצעות קובץ XML שממוקם בכתובת /etc/media_codecs_performance.xml ההגדרות האלה נבדקות על ידי com.android.cts.videoperf.VideoEncoderDecoderTest וגם android.media.cts.VideoDecoderPerfTest בדיקות CTS.

יצרני ציוד מקורי יכולים להשתמש בבדיקות ה-CTS כדי ליצור את קובצי ה-XML שעוברים את הבדיקות. לשם כך:

  1. קודם מריצים את הבדיקות באמצעות cts-tradefed. בהינתן שונות של ביצועי Android, מומלץ לבצע את הבדיקות פעמים רבות כדי לקבל ערכי מינימום ומקסימום מדויקים יותר.
  2. השתמשו ב-שצוין הסקריפט get_achievable_rates.py כדי ליצור את קובץ ה-XML.
  3. מציבים את קובץ ה-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
    
  4. הריצו מחדש את בדיקות הביצועים כדי לוודא שהן הצליחו.

קיום משותף של קודק מאובטח וקודק לא מאובטח

  • תומך-מאובטח עם קודק לא מאובטח — אם המופע של קודק מאובטח והמופע של קודק לא מאובטח לא יכולים קיימות בו-זמנית, ויש לציין זאת כהגדרה גלובלית קובץ media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Support-multi-secure-codecs — אם אין תמיכה בקיום של מספר מכונות קודק מאובטחות, צריך לוודא מצוינת כהגדרה גלובלית בקובץ media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • שימו לב ששתי ההגדרות נכונות כברירת מחדל, כלומר אם הן נתמכות, אין צורך להוסיף את שורת ההגדרה ל-media_codecs.xml.
  • ResourceManagerTest בדיקות ה-CTS עשויות להיכשל אם שתי ההגדרות האלה לא מוגדרות כראוי.