डिसप्ले की सेटिंग अडजस्ट करना

Android में ऐसे एपीआई शामिल हैं जिनकी मदद से, ऐप्लिकेशन, काम करने वाले हार्डवेयर पर डिसप्ले की सेटिंग में बदलाव कर सकते हैं. 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"