Android 16 में, Android TV के लिए मीडिया क्वालिटी फ़्रेमवर्क लॉन्च किया जा रहा है. इसका मकसद, पिक्चर क्वालिटी (पीक्यू) और ऑडियो क्वालिटी (एक्यू) को अडजस्ट करने के लिए, स्टैंडर्ड एपीआई उपलब्ध कराना है. इसका मुख्य मकसद, Android TV वाले अलग-अलग डिवाइसों पर इन बदलावों को एक ही तरीके से लागू करना है. इस स्टैंडर्ड फ़्रेमवर्क का मकसद, ऐप्लिकेशन डेवलपर, ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (ओईएम), और सिस्टम-ऑन-चिप (एसओसी) वेंडर के लिए डेवलपमेंट को आसान बनाना है. इसके लिए, यह Android API का एक जैसा सेट उपलब्ध कराता है. खास तौर पर, SoC वेंडर के लिए यह सुविधा उपलब्ध है. इसकी मदद से, Android फ़्रेमवर्क को पीक्यू और एक्यू कॉन्फ़िगरेशन को मैनेज करने की अनुमति मिलती है. इससे अलग-अलग ऐप्लिकेशन डेवलपर के साथ मिलकर काम करने का बोझ कम हो जाता है.
आखिरकार, Google और Android प्लैटफ़ॉर्म के लिए, इससे फ़्रैगमेंटेशन को कम करने, क्वालिटी और स्केलेबिलिटी को बेहतर बनाने, नई सुविधाएं उपलब्ध कराने, और यूनीफ़ाइड एएक्यू/पीक्यू यूज़र इंटरफ़ेस (यूआई) और बेहतर उपयोगकर्ता अनुभव के लिए आधार तैयार करने में मदद मिलती है.
मीडिया क्वालिटी फ़्रेमवर्क, टीवी देखने के अनुभव को बेहतर बनाने के लिए अलग-अलग तरह के इस्तेमाल के उदाहरणों के साथ काम करता है. प्रोफ़ाइलों और सेटिंग को पैकेज के नाम (ऐप्लिकेशन) या हर इनपुट आईडी के हिसाब से मैनेज किया जा सकता है. इसके अलावा, सिस्टम ऐप्लिकेशन या अनुमति वाली सूची में शामिल ऐप्लिकेशन, प्रोफ़ाइलें बना सकते हैं. इन्हें सिर्फ़ इनके मालिक अपडेट या हटा सकते हैं.
खास तौर पर, फ़्रेमवर्क Picture और Sound Profile को मैनेज करता है. पिक्चर पैरामीटर के उदाहरणों में चमक, कंट्रास्ट, और शार्पनेस शामिल हैं. वहीं, साउंड पैरामीटर के उदाहरणों में बास और ट्रेबल शामिल हैं.
इन प्रोफ़ाइलों को अलग-अलग कॉन्टेक्स्ट में लागू किया जा सकता है. जैसे, ग्लोबल डिफ़ॉल्ट प्रोफ़ाइलें सेट करना, MediaCodec का इस्तेमाल करके स्ट्रीमिंग प्रोफ़ाइलें सेट करना, कुछ मीडिया ऐप्लिकेशन के लिए ऐप्लिकेशन की डिफ़ॉल्ट प्रोफ़ाइलें सेट करना, और एचडीएमआई जैसे कुछ इनपुट के लिए टीवी इनपुट की पिक्चर प्रोफ़ाइलें सेट करना. यह फ़्रेमवर्क, स्टेटस में बदलाव करने की सुविधा भी देता है. इससे एचडीआर जैसे स्टेटस के लिए अलग-अलग पैरामीटर सेट इस्तेमाल किए जा सकते हैं. यह फ़्रेमवर्क, प्रोसेसिंग के दौरान ऐक्टिव पिक्चर प्रोफ़ाइलों को मैनेज करता है. साथ ही, यह आस-पास के माहौल के हिसाब से बैकलाइट की सुविधाओं को भी मैनेज करता है.
Android टीम, मीडिया क्वालिटी फ़्रेमवर्क को सपोर्ट करने के लिए, हमारे नेटवर्क के पार्टनर के साथ मिलकर काम कर रही है.
घटक
मीडिया क्वालिटी फ़्रेमवर्क में कई अहम कॉम्पोनेंट होते हैं. ये ऐप्लिकेशन, फ़्रेमवर्क, और हार्डवेयर लेयर पर एक साथ काम करते हैं.
- मीडिया क्वालिटी मैनेजर (SDK API): यह ऐप्लिकेशन के लिए उपलब्ध SDK API है. इसकी मदद से ऐप्लिकेशन, पिक्चर और साउंड प्रोफ़ाइलों को मैनेज कर सकते हैं.
- मीडिया क्वालिटी सर्विस: यह सिस्टम की एक ऐसी सेवा है जिसमें कारोबार से जुड़ा मुख्य लॉजिक शामिल होता है. यह प्रोफ़ाइलों, अनुमतियों, और एचएएल के साथ कम्यूनिकेशन को मैनेज करती है.
- मीडिया क्वालिटी डेटाबेस: यह एक SQLite डेटाबेस है. इसमें सभी फ़ोटो और साउंड प्रोफ़ाइलें सेव होती हैं.
- मीडिया क्वालिटी कॉन्ट्रैक्ट: यह स्टैंडर्ड पैरामीटर और डेटा स्ट्रक्चर तय करता है. इनका इस्तेमाल, ऐप्लिकेशन और फ़्रेमवर्क के बीच कम्यूनिकेशन के लिए किया जाता है.
- मीडिया क्वालिटी एचएएल: यह एक हार्डवेयर ऐब्स्ट्रैक्शन लेयर है. इसे एसओसी वेंडर लागू करते हैं, ताकि वे फ़ोटो और साउंड प्रोफ़ाइल में हुए बदलावों के बारे में हार्डवेयर को बता सकें.
सुविधाएं
मीडिया क्वालिटी फ़्रेमवर्क, कई तरह की सुविधाओं के साथ काम करता है. इससे मीडिया क्वालिटी को मैनेज करने के लिए, एक फ़्लेक्सिबल और बेहतर सिस्टम मिलता है.
प्रोफ़ाइल मैनेज करना
- ऐप्लिकेशन के ज़रिए मैनेज की जाने वाली प्रोफ़ाइलें: ऐप्लिकेशन, लोगों को उनकी पसंद के मुताबिक अनुभव देने के लिए, अपनी प्रोफ़ाइलें बना सकते हैं, उन्हें अपडेट कर सकते हैं, और मिटा सकते हैं.
- डिफ़ॉल्ट प्रोफ़ाइलें: सिस्टम ऐप्लिकेशन, खास ऐप्लिकेशन या टीवी इनपुट (जैसे, HDMI 1) के लिए डिफ़ॉल्ट प्रोफ़ाइलें सेट कर सकते हैं.
- ग्लोबल डिफ़ॉल्ट प्रोफ़ाइल: यह सिस्टम-वाइड फ़ॉलबैक प्रोफ़ाइल होती है. इसे तब लागू किया जाता है, जब कोई खास प्रोफ़ाइल सेट नहीं की जाती.
पूरा वर्कफ़्लो
यहां दिए गए डायग्राम में, मीडिया की क्वालिटी से जुड़ी सामान्य कार्रवाइयों के लिए कॉल सीक्वेंस दिखाए गए हैं.
पिक्चर प्रोफ़ाइल बनाना और उसे लागू करना
- सिस्टम ऐप्लिकेशन,
setPictureProfileAllowList()को कॉल करता है, ताकि मीडिया ऐप्लिकेशन को प्रोफ़ाइल बनाने की अनुमति दी जा सके. - मीडिया ऐप्लिकेशन, प्रोफ़ाइल में हुए बदलावों के बारे में सूचनाएं पाने के लिए
PictureProfileCallbackरजिस्टर करता है. - मीडिया ऐप्लिकेशन,
PictureProfileऑब्जेक्ट के साथcreatePictureProfile()को कॉल करता है. MediaQualityServiceअनुरोध को प्रोसेस करता है और प्रोफ़ाइल को डेटाबेस में सेव करता है. साथ ही, रजिस्टर किए गए कॉलबैक (onPictureProfileAdded()याonError()) का इस्तेमाल करके, ऐप्लिकेशन को अनुरोध पूरा होने या न होने की सूचना देता है.
स्ट्रीम के हिसाब से पिक्चर प्रोफ़ाइल सेट करना
इस वर्कफ़्लो में बताया गया है कि कोई ऐप्लिकेशन, वीडियो चलाने के दौरान अपने वीडियो कॉन्टेंट पर कोई खास प्रोफ़ाइल कैसे लागू कर सकता है.
- मीडिया ऐप्लिकेशन,
MediaQualityManagerसे उपलब्ध फ़ोटो प्रोफ़ाइलों की सूची पाने के लिए क्वेरी करता है. - इसके बाद, ऐप्लिकेशन
MediaCodec.setParametersका इस्तेमाल करके, स्ट्रीम के लिए चुनी गई प्रोफ़ाइल को चुनता है और सेट करता है. - यह फ़्रेमवर्क, इस विकल्प के बारे में मीडिया क्वालिटी (एमक्यू) एचएएल को बताता है. साथ ही, प्रोफ़ाइल आईडी और उसके पैरामीटर भी पास करता है.
- आखिर में, MQ HAL इन पैरामीटर को Composer HAL को भेजता है. इसके बाद, Composer HAL, वीडियो स्ट्रीम को तय की गई पिक्चर प्रोफ़ाइल के साथ रेंडर करता है.
ग्लोबल डिफ़ॉल्ट प्रोफ़ाइल सेट करना
सिर्फ़ सिस्टम ऐप्लिकेशन, ग्लोबल डिफ़ॉल्ट प्रोफ़ाइल सेट कर सकते हैं. यह प्रोफ़ाइल, ऐसे कॉन्टेंट के लिए फ़ॉलबैक के तौर पर काम करती है जिसे कोई खास प्रोफ़ाइल असाइन नहीं की गई है.
- सिस्टम ऐप्लिकेशन, फ़्रेमवर्क से उपलब्ध पिक्चर प्रोफ़ाइलों की सूची वापस पाता है.
- इसके बाद, ऐप्लिकेशन इनमें से किसी एक प्रोफ़ाइल को नया ग्लोबल डिफ़ॉल्ट सेट करने के लिए,
setDefaultPictureProfile(id)को कॉल करता है. - फ़्रेमवर्क, उस प्रोफ़ाइल के पैरामीटर को मीडिया क्वालिटी HAL पर भेजता है. इसके बाद, HAL उन पैरामीटर में बदलाव करता है.
Media Quality SDK API
Media Quality SDK API, ऐप्लिकेशन को फ़्रेमवर्क के साथ इंटरैक्ट करने के लिए ज़रूरी टूल उपलब्ध कराता है. मुख्य एंट्री पॉइंट android.media.quality पैकेज है.
android.media.quality
इस पैकेज में, मीडिया क्वालिटी को मैनेज करने के लिए प्राइमरी क्लास शामिल हैं.
| कक्षा | ब्यौरा |
|---|---|
MediaQualityManager |
MQF के साथ इंटरैक्ट करने के लिए, यह सेंट्रल क्लास है. |
PictureProfile |
यह एक डेटा क्लास है. यह किसी खास मोड के लिए, फ़ोटो के पैरामीटर का पूरा सेट दिखाती है. |
SoundProfile |
साउंड पैरामीटर के लिए डेटा क्लास. |
MediaQualityContract |
यह क्लास, पहले से तय की गई सभी पैरामीटर कुंजियों के लिए कॉन्स्टेंट शामिल करती है. |
MediaQualityManager
मुख्य तरीकों में ये शामिल हैं:
| तरीका | ब्यौरा |
|---|---|
createPictureProfile(PictureProfile profile) |
नई पिक्चर प्रोफ़ाइल बनाता है. इसके लिए, खास अनुमतियों की ज़रूरत होती है या ऐप्लिकेशन को अनुमति वाली सूची में शामिल करना होता है. |
updatePictureProfile(PictureProfile profile) |
इस कुकी का इस्तेमाल, मौजूदा पिक्चर प्रोफ़ाइल को अपडेट करने के लिए किया जाता है. इसे सिर्फ़ प्रोफ़ाइल का क्रिएटर कॉल कर सकता है. |
removePictureProfile(String profileId) |
यह कुकी, किसी प्रोफ़ाइल को मिटाती है. इसे सिर्फ़ प्रोफ़ाइल का क्रिएटर कॉल कर सकता है. |
getAvailablePictureProfiles() |
यह उपलब्ध सभी पिक्चर प्रोफ़ाइलों की सूची दिखाता है. |
setDefaultPictureProfile(String profileId) |
यह कुकी, ग्लोबल डिफ़ॉल्ट पिक्चर प्रोफ़ाइल सेट करती है. इसके लिए, MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE की अनुमति ज़रूरी है. |
registerPictureProfileCallback(PictureProfileCallback cb) |
यह कुकी, प्रोफ़ाइल में किए गए बदलावों को सुनने के लिए कॉलबैक रजिस्टर करती है. |
PictureProfile ऑब्जेक्ट
PictureProfile ऑब्जेक्ट में, किसी दिए गए पिक्चर मोड के बारे में पूरी जानकारी शामिल होती है.
public final class PictureProfile {
private String id;
private int type; // System or Application
private String name; // e.g., "Movie", "Game"
private String inputId; // e.g., "HDMI1"
private String packageName; // e.g., "com.google.android.youtube"
private PersistableBundle parameters; // Bundle containing all PQ parameters
}
मीडिया क्वालिटी एचएएल
मीडिया क्वालिटी एचएएल, एआईडीएल पर आधारित एक इंटरफ़ेस है. इसे hardware/interfaces/tv/mediaquality/aidl/ में तय किया गया है. एसओसी वेंडर को इस इंटरफ़ेस को लागू करना होगा, ताकि वे अपने डिवाइसों पर मीडिया क्वालिटी फ़्रेमवर्क को चालू कर सकें. एचएएल, Android फ़्रेमवर्क में मौजूद MediaQualityService और हार्डवेयर के बीच बातचीत का ज़रिया होता है. यह इमेज और साउंड में बदलाव करने के लिए ज़िम्मेदार होता है.
एचएएल, एआईडीएल पार्सल का इस्तेमाल करके, पिक्चर और साउंड प्रोफ़ाइल मैनेज करता है. इसमें फ़्रेमवर्क से प्रोफ़ाइल में हुए बदलावों को पाना और हार्डवेयर लेवल पर किए गए किसी भी बदलाव के बारे में फ़्रेमवर्क को सूचना देना शामिल है.
मॉड्यूल
एचएएल इंटरफ़ेस में कई अहम एआईडीएल फ़ाइलें शामिल होती हैं:
| एचएएल फ़ाइल | ब्यौरा |
|---|---|
IMediaQuality.aidl |
यह Media Quality सेवा का मुख्य इंटरफ़ेस है. इसका इस्तेमाल, लिसनर सेट करने और हार्डवेयर की क्षमताओं के बारे में जानने के लिए किया जाता है. |
IPictureProfileChangedListener.aidl |
यह एक लिसनर इंटरफ़ेस है. इसका इस्तेमाल फ़्रेमवर्क, एचएएल को सूचना देने के लिए करता है. खास तौर पर, कंपोज़र एचएएल जैसे कॉम्पोनेंट को, पिक्चर प्रोफ़ाइल में हुए बदलावों के बारे में सूचना देने के लिए. |
IPictureProfileAdjustmentListener.aidl |
यह एक लिसनर इंटरफ़ेस है. इसका इस्तेमाल एचएएल, हार्डवेयर लेवल पर किए गए बदलावों के बारे में फ़्रेमवर्क को सूचना देने के लिए करता है. उदाहरण के लिए, जब कोई उपयोगकर्ता हार्डवेयर रिमोट का इस्तेमाल करके सीधे तौर पर कोई सेटिंग बदलता है. |
PictureParameter.aidl |
यह एक AIDL यूनियन है. इसमें कंट्रास्ट और शार्पनेस जैसे सभी स्टैंडर्ड पिक्चर पैरामीटर तय किए जाते हैं. इन्हें अडजस्ट किया जा सकता है. |
PictureProfile.aidl |
यह AIDL पार्सल करने लायक ऑब्जेक्ट है. यह HAL लेयर पर मौजूद PictureProfile ऑब्जेक्ट को दिखाता है. इसमें प्रोफ़ाइल आईडी और उससे जुड़े पैरामीटर शामिल होते हैं. |
ISoundProfileChangedListener.aidl |
यह एक लिसनर इंटरफ़ेस है. इसका इस्तेमाल फ़्रेमवर्क, HAL को साउंड प्रोफ़ाइल में हुए बदलावों के बारे में सूचना देने के लिए करता है. |
ISoundProfileAdjustmentListener.aidl |
यह एक लिसनर इंटरफ़ेस है. इसका इस्तेमाल एचएएल, हार्डवेयर लेवल पर किए गए साउंड अडजस्टमेंट के बारे में फ़्रेमवर्क को सूचना देने के लिए करता है. |