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

يهدف هذا المستند إلى مساعدة المصنّعين الأصليين للأجهزة (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. نظرًا لvariability أداء 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.
  • قد يتعذّر إجراء اختبارات ResourceManagerTest CTS في حال عدم ضبط هذين الإعدادَين بشكل صحيح.