मीडिया रिसॉर्स मैनेजर के लिए OEM डिपेंडेंसी

इस दस्तावेज़ का मकसद, ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (ओईएम) को Android मीडिया रिसॉर्स मैनेजर और उससे जुड़े एपीआई के लिए सहायता को सही तरीके से लागू करने में मदद करना है.

एक साथ चलने वाले ज़्यादा से ज़्यादा कोडेक इंस्टेंस

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>

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. जांच की सफलता की पुष्टि करने के लिए, उसे फिर से चलाएं.

वीडियो कोडेक के लिए फ़्रेम रेट

VideoCapabilities.getAchievableFrameRatesFor इंटरफ़ेस, किसी वीडियो साइज़ के लिए वीडियो फ़्रेम रेट की रेंज दिखाता है. यह जानकारी, OEM को हर डिवाइस के लिए /etc/media_codecs_performance.xml पर मौजूद एक्सएमएल फ़ाइल के ज़रिए देनी होगी. इन सेटिंग की जांच, com.android.cts.videoperf.VideoEncoderDecoderTest और android.media.cts.VideoDecoderPerfTest सीटीएस टेस्ट के ज़रिए की जाती है.

ओईएम, जांच पास करने वाली एक्सएमएल फ़ाइलें जनरेट करने के लिए, सीटीएस टेस्ट का इस्तेमाल कर सकते हैं. ऐसा करने के लिए:

  1. पहले cts-tradefed का इस्तेमाल करके टेस्ट चलाएं. Android की परफ़ॉर्मेंस में अंतर होने की वजह से, हमारा सुझाव है कि कम से कम और ज़्यादा से ज़्यादा वैल्यू को ज़्यादा सटीक बनाने के लिए, टेस्ट कई बार चलाए जाएं.
  2. एक्सएमएल फ़ाइल जनरेट करने के लिए, दी गई get_achievable_rates.py स्क्रिप्ट का इस्तेमाल करें.
  3. एक्सएमएल फ़ाइल को यहां डालें: /etc/media_codecs_performance.xml
    आम तौर पर, ऐसा करने के लिए एक्सएमएल फ़ाइल को डिवाइस प्रोजेक्ट (device/<vendor>/<product>) में डाला जाता है. साथ ही, device.mk में PRODUCT_COPY_FILES लाइन इस तरह जोड़ी जाती है:
    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. परफ़ॉर्मेंस की जांच करने वाले टूल की सफलता की पुष्टि करने के लिए, उन्हें फिर से चलाएं.

सुरक्षित कोडेक और गैर-सुरक्षित कोडेक का एक साथ इस्तेमाल करना

  • 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>
    …
    
  • ध्यान दें कि दोनों सेटिंग डिफ़ॉल्ट रूप से 'सही' होती हैं. इसका मतलब है कि अगर ये सेटिंग काम करती हैं, तो media_codecs.xml में सेटिंग लाइन जोड़ने की ज़रूरत नहीं है.
  • अगर इन दोनों सेटिंग को सही तरीके से सेट नहीं किया गया है, तो हो सकता है कि ResourceManagerTest सीटीएस टेस्ट पास न हों.