ডিসপ্লে সেটিংস অ্যাডজাস্ট করা

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

কন্টেন্টের ফ্রেম রেট ম্যাচ করা

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

আরও তথ্যের জন্য, ফ্রেম রেট গাইড পড়ুন।

পছন্দের ছবি প্রোফাইলের সাথে ম্যাচ করা

Android 16-এ MediaQuality 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"