وابستگی های OEM برای مدیر منابع رسانه ای

این سند برای کمک به تولیدکنندگان تجهیزات اصلی (OEMها) در پیاده‌سازی صحیح پشتیبانی از مدیر منابع رسانه‌ای اندروید و APIهای مرتبط در نظر گرفته شده است.

حداکثر نمونه‌های کدک همزمان

رابط 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) می‌توانند از این آزمون برای تولید محدودیت‌های همزمانی که از آزمون سربلند بیرون می‌آیند، استفاده کنند. برای انجام این کار:

  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 محدوده نرخ فریم ویدیوی قابل دستیابی را برای یک اندازه ویدیو برمی‌گرداند. این اطلاعات باید توسط OEM برای هر دستگاه از طریق یک فایل XML که در /etc/media_codecs_performance.xml قرار دارد، ارائه شود. این تنظیمات توسط تست‌های com.android.cts.videoperf.VideoEncoderDecoderTest و android.media.cts.VideoDecoderPerfTest CTS آزمایش می‌شوند.

تولیدکنندگان اصلی تجهیزات (OEM) می‌توانند از تست‌های CTS برای تولید فایل‌های XML که تست‌ها را با موفقیت پشت سر می‌گذارند، استفاده کنند. برای انجام این کار:

  1. ابتدا تست‌ها را با استفاده از cts-tradefed اجرا کنید. با توجه به تغییرپذیری عملکرد اندروید، توصیه می‌شود تست‌ها چندین بار اجرا شوند تا مقادیر حداقل و حداکثر دقیق‌تری به دست آید.
  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 با شکست مواجه شوند.