মিডিয়া রিসোর্স ম্যানেজারের জন্য OEM নির্ভরতা

এই নথিটির উদ্দেশ্য হলো মূল সরঞ্জাম প্রস্তুতকারকদের (OEM) অ্যান্ড্রয়েড মিডিয়া রিসোর্স ম্যানেজার এবং সংশ্লিষ্ট এপিআইগুলোর জন্য সমর্থন সঠিকভাবে বাস্তবায়ন করতে সাহায্য করা।

সর্বাধিক একযোগে কোডেক ইনস্ট্যান্স

CodecCapabilities.getMaxSupportedInstances ইন্টারফেসটি একই সাথে সমর্থিত কোডেক ইনস্ট্যান্সের সর্বোচ্চ সংখ্যা ফেরত দেয়।

/etc/media_codecs.xml ফাইলে সঠিক সর্বোচ্চ মান সেট করা হয়েছে কিনা, তা নিশ্চিত করতে CTS টেস্ট testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) ব্যবহার করা হয়।

এখানে একটি উদাহরণ দেওয়া হলো:

...
<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-কে অবশ্যই /etc/media_codecs_performance.xml এ থাকা একটি XML ফাইলের মাধ্যমে সরবরাহ করতে হবে। এই সেটিংসগুলো com.android.cts.videoperf.VideoEncoderDecoderTest এবং android.media.cts.VideoDecoderPerfTest CTS টেস্টগুলোর মাধ্যমে পরীক্ষা করা হয়।

OEM-রা CTS টেস্টগুলো ব্যবহার করে এমন XML ফাইল তৈরি করতে পারে যা টেস্টগুলোতে উত্তীর্ণ হয়। এটি করার জন্য:

  1. প্রথমে cts-tradefed ব্যবহার করে পরীক্ষাগুলো চালান। অ্যান্ড্রয়েড পারফরম্যান্সের পরিবর্তনশীলতার কারণে, আরও সঠিক সর্বনিম্ন এবং সর্বোচ্চ মান পেতে পরীক্ষাগুলো একাধিকবার চালানোর পরামর্শ দেওয়া হয়।
  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>
    …
    
  • একাধিক সুরক্ষিত কোডেক সমর্থন করে — যদি একাধিক সুরক্ষিত কোডেক ইনস্ট্যান্সের সহাবস্থান সমর্থিত না হয়, তবে media_codecs.xml ফাইলে একটি গ্লোবাল সেটিং হিসাবে তা উল্লেখ করা উচিত।
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • উল্লেখ্য যে, উভয় সেটিংই ডিফল্টরূপে 'ট্রু' থাকে, অর্থাৎ যদি সেগুলি সমর্থিত হয়, তাহলে media_codecs.xml ফাইলে সেটিং লাইনটি যোগ করার কোনো প্রয়োজন নেই।
  • এই দুটি সেটিং সঠিকভাবে সেট করা না থাকলে ResourceManagerTest CTS টেস্টগুলো ব্যর্থ হতে পারে।