প্রদর্শন সেটিংস সামঞ্জস্য করুন

অ্যান্ড্রয়েডে এমন API রয়েছে যা অ্যাপগুলিকে সমর্থিত হার্ডওয়্যারে ডিসপ্লে সেটিংস সামঞ্জস্য করতে দেয়। অ্যান্ড্রয়েড টিভি অপারেটিং সিস্টেমে, অ্যাপগুলি এর সুবিধা নিতে পারে যাতে কন্টেন্টটি সর্বোত্তম সম্ভাব্য ফর্ম্যাটে প্রদর্শিত হয়, আদর্শ দেখার অভিজ্ঞতার জন্য ফ্রেমরেট এবং রঙের প্রোফাইলের সাথে মিল রেখে।

কন্টেন্ট ফ্রেম রেট মেলান

যখন কোনও ভিডিওর ফ্রেমরেট ডিসপ্লের রিফ্রেশ রেটের সাথে মেলে না, তখন ব্যবহারকারীরা ফ্রেম রেট রূপান্তর থেকে অপ্রীতিকর মোশন জুডার আর্টিফ্যাক্টগুলি অনুভব করতে পারেন। এটি বিশেষ করে ধীর প্যানিং শটের সময় দৃশ্যমান। এই কারণে, কন্টেন্টের ফ্রেম রেট সম্পর্কে ফ্রেমওয়ার্ককে অবহিত করার জন্য এবং ভিডিও কন্টেন্টটি নন-সিমলেস ফ্রেম রেট সুইচের জন্য যোগ্য কিনা তা সংকেত দেওয়ার জন্য SurfaceControl.Transaction.setFrameRate() API ব্যবহার করা গুরুত্বপূর্ণ।

আরও তথ্যের জন্য, ফ্রেম রেট নির্দেশিকাটি পড়ুন।

পছন্দের ছবির প্রোফাইল মেলান

অ্যান্ড্রয়েড ১৬-তে থাকা মিডিয়াকোয়ালিটি এপিআই ডেভেলপারদের ছবির প্রোফাইলের উপর নিয়ন্ত্রণ নিতে সাহায্য করে।

কিছু উদাহরণের মধ্যে রয়েছে:

  • যেসব সিনেমা এবং টিভি সিরিজে বৃহত্তর গতিশীল পরিসরে দক্ষতা রয়েছে, সেগুলির জন্য ডেভেলপাররা ফিল্মমেকার মোডের মাধ্যমে নির্মাতার ইচ্ছা অনুযায়ী কন্টেন্ট সঠিকভাবে প্রদর্শনের অনুরোধ করতে পারেন। বৃহত্তর রঙের নির্ভুলতা সহ একটি সিনেমা প্রোফাইল ছায়ার মধ্যে সূক্ষ্ম বিবরণ তুলে ধরে, যা উজ্জ্বলতা বৃদ্ধির পক্ষে।
  • লাইভ স্পোর্টস ইভেন্টগুলি, যা প্রায়শই একটি সংকীর্ণ গতিশীল পরিসরে আয়ত্ত করা হয় এবং দিনের আলোতে দেখা হয়, এমন একটি প্রোফাইল থেকে উপকৃত হতে পারে যা রঙের নির্ভুলতার চেয়ে উজ্জ্বলতাকে অগ্রাধিকার দেয়।
  • গেম ডেভেলপাররা ন্যূনতম ইমেজ প্রসেসিং সহ একটি কম ল্যাটেন্সি প্রোফাইলের অনুরোধ করতে পারেন যাতে খেলোয়াড়রা তাদের ডিসপ্লে থেকে সেরা পারফরম্যান্স পেতে পারে।

একটি সিস্টেম ছবির প্রোফাইল নির্বাচন করা

একটি ছবি প্রোফাইল নির্বাচন করার আগে, প্রথমে যাচাই করা গুরুত্বপূর্ণ যে ডিভাইসটি এটি সমর্থন করে।

নিম্নলিখিত স্নিপেটে দেখানো হয়েছে কিভাবে getAvailablePictureProfiles() ব্যবহার করে সমস্ত সমর্থিত ছবির প্রোফাইল অনুসন্ধান করতে এবং একটি স্পোর্টস প্রোফাইল প্রয়োগ করতে হয়:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) {
    val mediaQualityManager: MediaQualityManager =
        context.getSystemService(MediaQualityManager::class.java)
    val profiles = mediaQualityManager.getAvailablePictureProfiles(null)
    for (profile in profiles) {
        // If we have a system sports profile, apply it to our media codec
        if (profile.profileType == PictureProfile.TYPE_SYSTEM
            && profile.name == NAME_SPORTS
        ) {
            val bundle = Bundle().apply { 
                putParcelable(MediaFormat.KEY_PICTURE_PROFILE_INSTANCE, profile)
            }
            mediaCodec.setParameters(bundle)
        }
    }
}

নাম অনুসারে একটি নির্দিষ্ট প্রোফাইল পেতে, getPictureProfile() ব্যবহার করুন:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) {
    val profile = mediaQualityManager.getPictureProfile(
        PictureProfile.TYPE_SYSTEM, NAME_SPORTS, null)
}

যদি আপনার প্রোফাইল উপলব্ধ কিনা তা জিজ্ঞাসা করার প্রয়োজন না হয়, তাহলে MediaFormat.KEY_PICTURE_PROFILE_INSTANCE ব্যবহার করে প্রোফাইলগুলি তাদের আইডি দিয়ে সরাসরি MediaCodec-এ সরবরাহ করা যেতে পারে।

যদিও সমর্থিত প্রোফাইলগুলি ডিভাইস অনুসারে ভিন্ন হতে পারে, আপনি নিম্নলিখিত পরিচিত সিস্টেম প্রোফাইল আইডিগুলির সাথে মিল করার কথা বিবেচনা করতে পারেন:

const val NAME_STANDARD: String = "standard"
const val NAME_VIVID: String = "vivid"
const val NAME_SPORTS: String = "sports"
const val NAME_GAME: String = "game"
const val NAME_MOVIE: String = "movie"
const val NAME_ENERGY_SAVING: String = "energy_saving"
const val NAME_USER: String = "user"