Android में ऐसे एपीआई शामिल हैं जिनकी मदद से, ऐप्लिकेशन काम करने वाले हार्डवेयर पर डिसप्ले की सेटिंग में बदलाव कर सकते हैं. Android TV OS पर, ऐप्लिकेशन इस सुविधा का फ़ायदा ले सकते हैं. इससे यह पक्का किया जा सकता है कि कॉन्टेंट सबसे सही फ़ॉर्मैट में दिखे. इसके लिए, फ़्रेमरेट और कलर प्रोफ़ाइल को मैच किया जाता है, ताकि कॉन्टेंट देखने का बेहतरीन अनुभव मिल सके.
कॉन्टेंट के फ़्रेम रेट से मैच करें
जब किसी वीडियो का फ़्रेम रेट, डिसप्ले के रीफ़्रेश रेट से मैच नहीं होता, तो उपयोगकर्ताओं को फ़्रेम रेट कन्वर्ज़न की वजह से, वीडियो में मोशन जडर आर्टफ़ैक्ट दिख सकते हैं. यह समस्या खास तौर पर तब दिखती है, जब वीडियो में पैनिंग शॉट धीरे-धीरे लिए गए हों. इसलिए, Surface.setFrameRate एपीआई का इस्तेमाल करके, फ़्रेमवर्क को कॉन्टेंट के फ़्रेम रेट के बारे में बताएं. साथ ही, यह भी बताएं कि वीडियो कॉन्टेंट, फ़्रेम रेट स्विच के लिए ज़रूरी शर्तें पूरी करता है या नहीं.
ज़्यादा जानकारी के लिए, फ़्रेम रेट की गाइड पढ़ें.
पसंदीदा पिक्चर प्रोफ़ाइल मैच करना
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"