تبعيات OEM لمدير موارد الوسائط

يهدف هذا المستند إلى مساعدة الشركات المصنعة للمعدات الأصلية (OEMs) على تنفيذ الدعم بشكل صحيح لمدير موارد وسائط 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 . يتم اختبار هذه الإعدادات من خلال اختبارات com.android.cts.videoperf.VideoEncoderDecoderTest و android.media.cts.VideoDecoderPerfTest CTS.

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

التعايش بين برنامج الترميز الآمن والترميز غير الآمن

  • support-secure-with-non-secure-codec — إذا كان مثيل برنامج الترميز الآمن ومثيل برنامج الترميز غير الآمن لا يمكن أن يتواجدا معًا في نفس الوقت، فيجب الإشارة إلى ذلك كإعداد عام في ملف media_codecs.xml .
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • يدعم برامج الترميز الآمنة المتعددة — إذا كان التواجد المشترك لمثيلات برامج الترميز الآمنة المتعددة غير مدعوم، فيجب الإشارة إلى ذلك كإعداد عام في ملف media_codecs.xml .
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • لاحظ أن كلا الإعدادين صحيحان افتراضيًا، مما يعني أنه إذا كانا مدعومين، فلن تكون هناك حاجة لإضافة سطر الإعداد إلى media_codecs.xml .
  • قد تفشل اختبارات ResourceManagerTest CTS إذا لم يتم ضبط هذين الإعدادين بشكل صحيح.