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

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

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

যখন কোনো ভিডিওর ফ্রেমরেট ডিসপ্লের রিফ্রেশ রেটের সাথে মেলে না, তখন ফ্রেম রেট কনভার্সনের কারণে ব্যবহারকারীরা অস্বস্তিকর মোশন জাডার আর্টিফ্যাক্ট অনুভব করতে পারেন। এটি বিশেষ করে ধীরগতির প্যানিং শটের সময় বেশি দৃশ্যমান হয়। এই কারণে, কন্টেন্টের ফ্রেম রেট সম্পর্কে ফ্রেমওয়ার্ককে জানাতে এবং ভিডিও কন্টেন্টটি একটি নন-সিমলেস ফ্রেম রেট সুইচের জন্য উপযুক্ত কিনা তা সংকেত দিতে Surface.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"