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

این سند برای کمک به سازندگان تجهیزات اصلی (OEM) در اجرای صحیح پشتیبانی از مدیر منابع رسانه Android و 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 شکست بخورند.