وابستگی‌های سازنده اصلی محصول برای مدیر منابع رسانه

این سند برای کمک به سازندگان تجهیزات اصلی (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_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 با مشکل مواجه شوند.