תלות OEM עבור מנהל משאבי מדיה

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

מקסימום מופעי codec במקביל

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

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

  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. הפעל מחדש את הבדיקה כדי לאמת את הצלחתה.

קצבי פריימים בר השגה עבור רכיבי Codec של וידאו

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

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

  1. הפעל את הבדיקות תחילה באמצעות cts-tradefed. לאור השונות של ביצועי אנדרואיד, מומלץ להריץ את הבדיקות מספר פעמים כדי לקבל ערכי מינימום ומקסימום מדויקים יותר.
  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. הפעל מחדש את מבחני הביצועים כדי לאמת את הצלחתם.

דו קיום של codec מאובטח ו-codec לא מאובטח

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