इस दस्तावेज़ का मकसद, ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (ओईएम) को 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, इस टेस्ट का इस्तेमाल करके एक साथ चलने वाले ऐसे ऐप्लिकेशन की संख्या तय कर सकते हैं जो टेस्ट पास कर सकें. ऐसा करने के लिए:
- सबसे पहले, 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 को हर डिवाइस के लिए /etc/media_codecs_performance.xml
पर मौजूद एक्सएमएल फ़ाइल के ज़रिए देनी होगी. इन सेटिंग की जांच, com.android.cts.videoperf.VideoEncoderDecoderTest
और android.media.cts.VideoDecoderPerfTest
सीटीएस टेस्ट के ज़रिए की जाती है.
ओईएम, जांच पास करने वाली एक्सएमएल फ़ाइलें जनरेट करने के लिए, सीटीएस टेस्ट का इस्तेमाल कर सकते हैं. ऐसा करने के लिए:
- पहले cts-tradefed का इस्तेमाल करके टेस्ट चलाएं. Android की परफ़ॉर्मेंस में अंतर होने की वजह से, हमारा सुझाव है कि कम से कम और ज़्यादा से ज़्यादा वैल्यू को ज़्यादा सटीक बनाने के लिए, टेस्ट कई बार चलाए जाएं.
- एक्सएमएल फ़ाइल जनरेट करने के लिए, दी गई get_achievable_rates.py स्क्रिप्ट का इस्तेमाल करें.
- एक्सएमएल फ़ाइल को यहां डालें:
/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
- परफ़ॉर्मेंस की जांच करने वाले टूल की सफलता की पुष्टि करने के लिए, उन्हें फिर से चलाएं.
सुरक्षित कोडेक और गैर-सुरक्षित कोडेक का एक साथ इस्तेमाल करना
- 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
सीटीएस टेस्ट पास न हों.