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

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

يمكن للمصنّعين الأصليين للأجهزة استخدام اختبارات CTS لإنشاء ملفات XML التي تجتاز الاختبارات. ولإجراء ذلك:

  1. قم بإجراء الاختبارات أولاً باستخدام cts-tradefed. بناءً على لتغيّر أداء Android، ننصحك بإجراء الاختبارات عدة مرات للحصول على قيم دنيا والحد الأقصى أكثر دقة.
  2. استخدم المتوفر get_acheaseable_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. أعِد إجراء اختبارات الأداء للتحقّق من نجاحها.

توفُّر برنامج ترميز آمن وبرامج ترميز غير آمنة

  • يتوافق مع برنامج ترميز آمن مع ترميز غير آمن، فإذا تعذّر على مثيل برنامج الترميز الآمن ومثيل برنامج الترميز غير الآمن، في نفس الوقت، والتي ينبغي الإشارة إليها كإعداد عام في ملف 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 في حال عدم ضبط هذين الإعدادَين. بشكل صحيح.