মিডিয়া রিসোর্স ম্যানেজারের জন্য 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. /etc/media_codecs.xml ফাইলে, concurrent-instances লাইনের সাজেস্ট করা টেস্ট ফেল হওয়ার মেসেজ যোগ করুন।
  4. এটি সফল হয়েছে কিনা তা যাচাই করতে টেস্টটি আবার চালান।

ভিডিও কোডেকের জন্য অর্জনযোগ্য ফ্রেম রেট

VideoCapabilities.getAchievableFrameRatesFor ইন্টারফেস ভিডিওর সাইজের জন্য অর্জনযোগ্য ভিডিও ফ্রেম রেঞ্জের রিটার্ন দেয়। এই তথ্য OEM-কে প্রতিটি ডিভাইসের জন্য /etc/media_codecs_performance.xml-এ রাখা XML ফাইলের মাধ্যমে প্রদান করতে হবে। এইসব সেটিংস com.android.cts.videoperf.VideoEncoderDecoderTest এবং android.media.cts.VideoDecoderPerfTest CTS টেস্টের মাধ্যমে পরীক্ষা করা হয়।

OEM-গুলি CTS টেস্ট ব্যবহার করে XML ফাইল তৈরি করতে পারে যা টেস্টে পাস করে। এটি করতে:

  1. cts-tradefed ব্যবহার করে প্রথমে টেস্ট রান করুন। Android পারফর্ম্যান্সের পরিবর্তনশীলতার কারণে, আরও সঠিক সর্বনিম্ন ও সর্বোচ্চ ভ্যালু পেতে, একাধিকবার টেস্ট করার সাজেশন দেওয়া হয়।
  2. XML ফাইল তৈরি করতে, প্রদত্ত get_achievable_rates.py স্ক্রিপ্ট ব্যবহার করুন।
  3. XML ফাইলটি এখানে রাখুন: /etc/media_codecs_performance.xml
    এটি সাধারণত ডিভাইস প্রোজেক্টে XML ফাইলটি রেখে করা হয় (device/<vendor>/<product>) এবং device.mk-এ একটি PRODUCT_COPY_FILES লাইন যোগ করে, যেমন:
    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 টেস্ট ব্যর্থ হতে পারে।