تبعيات المصنّع الأصلي للجهاز لخدمة "إدارة موارد الوسائط"

تهدف هذه المستندات إلى مساعدة مصنّعي الأجهزة الأصلية (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>

يمكن لمصنّعي الأجهزة الأصلية استخدام هذا الاختبار لإنشاء الحدود المتزامنة التي تجتاز الاختبار. لإجراء ذلك، يُرجى اتّباع الخطوات التالية:

  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 نطاق عدد اللقطات في الثانية الذي يمكن تحقيقه للفيديو بحجم معيّن. يجب أن يقدّم مصنّع الأجهزة الأصلية هذه المعلومات لكل جهاز من خلال ملف XML يتم وضعه في /etc/media_codecs_performance.xml. يتم اختبار هذه الإعدادات من خلال اختبارَي CTS‏ com.android.cts.videoperf.VideoEncoderDecoderTest وandroid.media.cts.VideoDecoderPerfTest.

يمكن لمصنّعي الأجهزة الأصلية استخدام اختبارات 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. أعِد إجراء اختبارات الأداء للتأكّد من نجاحها.

إمكانية استخدام برنامج ترميز آمن وبرنامج ترميز غير آمن في الوقت نفسه

  • 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.
  • قد تفشل اختبارات CTS‏ ResourceManagerTest إذا لم يتم ضبط هذَين الإعدادَين بشكل صحيح.