این سند برای کمک به سازندگان تجهیزات اصلی (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>
تولیدکنندگان تجهیزات اصلی میتوانند از این آزمایش برای تولید محدودیتهای همزمان که در آزمایش قبول میشوند استفاده کنند. برای انجام این کار:
- ابتدا آزمایش را بااستفاده از cts-tradefed اجرا کنید.
- پیام خطای حاصل را ارزیابی کنید. بهعنوان مثال:
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> concurrent-instancesخط پیشنهادی در پیام خطای آزمایش را به فایل/etc/media_codecs.xmlاضافه کنید.- برای درستیسنجی موفقیت آن، آزمایش را دوباره اجرا کنید.
نرخهای فریم قابلدستیابی برای کدکهای ویدیو
واسط VideoCapabilities.getAchievableFrameRatesFor
محدوده نرخهای فریم ویدیو قابلدستیابی را برای اندازه ویدیو برمیگرداند. این
اطلاعات باید توسط سازنده اصلی محصول برای هر دستگاه ازطریق فایل XML که در
/etc/media_codecs_performance.xml قرار دارد ارائه شود. این تنظیمات توسط
آزمایشهای com.android.cts.videoperf.VideoEncoderDecoderTest و
android.media.cts.VideoDecoderPerfTest CTS آزمایش میشوند.
«تولیدکنندگان تجهیزات اصلی» میتوانند از آزمونهای CTS برای تولید فایلهای XML که آزمونها را میگذرانند استفاده کنند. برای انجام این کار:
- ابتدا آزمایشها را بااستفاده از cts-tradefed اجرا کنید. با توجه به تغییرپذیری عملکرد Android، توصیه میشود آزمایشها چندین بار اجرا شوند تا مقادیر حداقل و حداکثر دقیقتری بهدست آید.
- از دستورگان get_achievable_rates.py ارائهشده برای تولید فایل XML استفاده کنید.
- فایل 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
- آزمایشهای عملکرد را دوباره اجرا کنید تا موفقیت آنها را تأیید کنید.
همزیستی کدک امن و کدک غیرامن
- 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نیست. - اگر این دو تنظیم بهدرستی تنظیم نشده باشند، ممکن است آزمایشهای
ResourceManagerTestCTS با مشکل مواجه شوند.