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

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

সর্বাধিক সমবর্তী কোডেক দৃষ্টান্ত

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
    এটি সাধারণত ডিভাইস প্রজেক্টে (device/ <vendor> / <product> ) XML ফাইলটি স্থাপন করে এবং 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 পরীক্ষাগুলি ব্যর্থ হতে পারে।