मीडिया क्वालिटी फ़्रेमवर्क

Android TV के लिए, Android 16 में मीडिया क्वालिटी फ़्रेमवर्क लॉन्च किया जा रहा है. इसका मकसद, पिक्चर क्वालिटी (पीक्यू) और ऑडियो क्वालिटी (एक्यू) में अडजस्टमेंट के लिए, स्टैंडर्ड एपीआई बनाना है. इसका मुख्य मकसद, अलग-अलग Android TV डिवाइसों पर इन अडजस्टमेंट के लिए एक जैसा तरीका उपलब्ध कराना है. इस स्टैंडर्ड फ़्रेमवर्क का मकसद, ऐप्लिकेशन डेवलपर, ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (ओईएम) और सिस्टम-ऑन-चिप (एसओसी) वेंडर के लिए डेवलपमेंट को आसान बनाना है. इसके लिए, यह Android के एपीआई का एक जैसा सेट उपलब्ध कराता है. खास तौर पर, एसओसी वेंडर के लिए, यह Android फ़्रेमवर्क को पीक्यू और एक्यू कॉन्फ़िगरेशन मैनेज करने की अनुमति देता है. इससे अलग-अलग ऐप्लिकेशन डेवलपर के साथ मिलकर काम करने का खर्च कम हो जाता है.

Google और Android प्लैटफ़ॉर्म के लिए, इससे फ़्रैगमेंटेशन कम करने, क्वालिटी और स्केलेबिलिटी को बेहतर बनाने, नई सुविधाएं उपलब्ध कराने, और एक्यू/पीक्यू यूज़र इंटरफ़ेस (यूआई) और बेहतर उपयोगकर्ता अनुभव के लिए आधार तैयार करने में मदद मिलती है.

मीडिया क्वालिटी फ़्रेमवर्क, टीवी देखने के अनुभव को बेहतर बनाने के लिए, अलग-अलग तरह के इस्तेमाल के मामलों में काम करता है. यहां यह ध्यान रखना ज़रूरी है कि प्रोफ़ाइलें और सेटिंग, पैकेज के नाम (ऐप्लिकेशन) और इनपुट आईडी के हिसाब से मैनेज की जा सकती हैं. इसके अलावा, प्रोफ़ाइलें सिस्टम ऐप्लिकेशन या अनुमति वाली सूची में शामिल अन्य ऐप्लिकेशन से बनाई जा सकती हैं. प्रोफ़ाइलें सिर्फ़ उनके मालिक ही अपडेट या हटा सकते हैं. खास तौर पर, यह फ़्रेमवर्क, पिक्चर और साउंड प्रोफ़ाइलें मैनेज करता है. पिक्चर पैरामीटर के उदाहरणों में, चमक, कंट्रास्ट, शार्पनेस शामिल हैं. साउंड पैरामीटर के उदाहरणों में, बास और ट्रेबल शामिल हैं. इन प्रोफ़ाइलों को अलग-अलग संदर्भों में लागू किया जा सकता है. इनमें, ग्लोबल डिफ़ॉल्ट प्रोफ़ाइलें सेट करना, MediaCodec के ज़रिए प्रोफ़ाइलें स्ट्रीम करना, खास मीडिया ऐप्लिकेशन के लिए ऐप्लिकेशन की डिफ़ॉल्ट प्रोफ़ाइलें सेट करना, और एचडीएमआई जैसे खास इनपुट के लिए, टीवी इनपुट पिक्चर प्रोफ़ाइलें सेट करना शामिल है. यह फ़्रेमवर्क, स्टेटस में होने वाले बदलावों को भी मैनेज करता है. इससे एचडीआर जैसे स्टेटस के लिए अलग-अलग पैरामीटर सेट किए जा सकते हैं. साथ ही, यह चालू प्रोसेस के लिए, ऐक्टिव पिक्चर प्रोफ़ाइलें मैनेज करता है और आस-पास की रोशनी के हिसाब से बैकलाइट की सुविधाओं को मैनेज करता है.

Android टीम, मीडिया क्वालिटी फ़्रेमवर्क के लिए, हमारे इकोसिस्टम पार्टनर के साथ मिलकर काम कर रही है.

कॉम्पोनेंट

मीडिया क्वालिटी फ़्रेमवर्क में कई अहम कॉम्पोनेंट शामिल हैं. ये कॉम्पोनेंट, ऐप्लिकेशन, फ़्रेमवर्क, और हार्डवेयर लेयर पर एक साथ काम करते हैं.

PQ AQ स्टैंडर्डाइज़ेशन डायग्राम

पहली इमेज. मीडिया क्वालिटी फ़्रेमवर्क के कॉम्पोनेंट के बीच होने वाले इंटरैक्शन

  • मीडिया क्वालिटी मैनेजर (एसडीके एपीआई): यह ऐप्लिकेशन के लिए एसडीके एपीआई है. इसकी मदद से, ऐप्लिकेशन, पिक्चर और साउंड प्रोफ़ाइलें मैनेज कर सकते हैं.
  • मीडिया क्वालिटी सर्विस: यह एक सिस्टम सेवा है. इसमें मुख्य लॉजिक शामिल होता है. यह प्रोफ़ाइलें, अनुमतियां, और एचएएल के साथ होने वाले कम्यूनिकेशन को मैनेज करती है.
  • मीडिया क्वालिटी डेटाबेस: यह एक SQLite डेटाबेस है. इसमें पिक्चर और साउंड की सभी प्रोफ़ाइलें सेव होती हैं.
  • मीडिया क्वालिटी कॉन्ट्रैक्ट: इसमें स्टैंडर्ड पैरामीटर और डेटा स्ट्रक्चर तय किए जाते हैं. इनका इस्तेमाल, ऐप्लिकेशन और फ़्रेमवर्क के बीच कम्यूनिकेशन के लिए किया जाता है.
  • मीडिया क्वालिटी एचएएल: यह हार्डवेयर ऐब्स्ट्रैक्शन लेयर है. इसे एसओसी वेंडर लागू करते हैं, ताकि हार्डवेयर में होने वाले पिक्चर और साउंड प्रोफ़ाइल के बदलावों के बारे में जानकारी दी जा सके.

सुविधाएं

मीडिया क्वालिटी फ़्रेमवर्क में कई सुविधाएं उपलब्ध हैं. इससे मीडिया क्वालिटी को मैनेज करने के लिए, फ़्लेक्सिबल और पावरफ़ुल सिस्टम मिलता है.

प्रोफ़ाइल मैनेज करना

  • ऐप्लिकेशन से मैनेज की जाने वाली प्रोफ़ाइलें: ऐप्लिकेशन, पसंद के मुताबिक अनुभव देने के लिए, अपनी प्रोफ़ाइलें बना सकते हैं, उन्हें अपडेट कर सकते हैं, और मिटा सकते हैं.
  • डिफ़ॉल्ट प्रोफ़ाइलें: सिस्टम ऐप्लिकेशन, खास ऐप्लिकेशन या टीवी इनपुट (जैसे, एचडीएमआई 1) के लिए डिफ़ॉल्ट प्रोफ़ाइलें सेट कर सकते हैं.
  • ग्लोबल डिफ़ॉल्ट प्रोफ़ाइल: यह सिस्टम-वाइड फ़ॉलबैक प्रोफ़ाइल है. इसे तब लागू किया जाता है, जब कोई खास प्रोफ़ाइल सेट नहीं की जाती.

पूरा वर्कफ़्लो

यहां दिए गए डायग्राम में, मीडिया क्वालिटी से जुड़े सामान्य कामों के लिए कॉल सीक्वेंस दिखाए गए हैं.

पिक्चर प्रोफ़ाइल बनाना और लागू करना

Picture Profile बनाना

दूसरी इमेज. पिक्चर प्रोफ़ाइल बनाने के लिए सीक्वेंस डायग्राम

  1. कोई सिस्टम ऐप्लिकेशन, setPictureProfileAllowList() को कॉल करके, मीडिया ऐप्लिकेशन को प्रोफ़ाइलें बनाने की अनुमति देता है.
  2. मीडिया ऐप्लिकेशन, प्रोफ़ाइल में होने वाले बदलावों के बारे में सूचनाएं पाने के लिए, PictureProfileCallback रजिस्टर करता है.
  3. मीडिया ऐप्लिकेशन, PictureProfile ऑब्जेक्ट के साथ createPictureProfile() को कॉल करता है.
  4. MediaQualityService, अनुरोध को प्रोसेस करता है, प्रोफ़ाइल को डेटाबेस में सेव करता है, और रजिस्टर किए गए कॉलबैक (onPictureProfileAdded() या onError()) के ज़रिए, ऐप्लिकेशन को सफलता या गड़बड़ी के बारे में सूचना देता है.

हर स्ट्रीम के लिए पिक्चर प्रोफ़ाइल सेट करना

इस वर्कफ़्लो से पता चलता है कि कोई ऐप्लिकेशन, प्लेबैक के दौरान अपने वीडियो कॉन्टेंट पर कोई खास प्रोफ़ाइल कैसे लागू कर सकता है.

स्ट्रीम की जाने वाली फ़ोटो की प्रोफ़ाइल सेट करना

तीसरी इमेज. हर स्ट्रीम के लिए पिक्चर प्रोफ़ाइल सेट करने के लिए सीक्वेंस डायग्राम

  1. मीडिया ऐप्लिकेशन, उपलब्ध पिक्चर प्रोफ़ाइलों की सूची पाने के लिए, MediaQualityManager से क्वेरी करता है.
  2. इसके बाद, ऐप्लिकेशन, स्ट्रीम के लिए अपनी पसंद की प्रोफ़ाइल चुनने और सेट करने के लिए, MediaCodec.setParameters का इस्तेमाल करता है.
  3. फ़्रेमवर्क, मीडिया क्वालिटी (एमक्यू) एचएएल को इस विकल्प के बारे में बताता है. साथ ही, प्रोफ़ाइल आईडी और उसके पैरामीटर भी पास करता है.
  4. आखिर में, एमक्यू एचएएल, इन पैरामीटर को कंपोज़र एचएएल को भेजता है. इसके बाद, कंपोज़र एचएएल, वीडियो स्ट्रीम को तय की गई पिक्चर प्रोफ़ाइल के साथ रेंडर करता है.

ग्लोबल डिफ़ॉल्ट प्रोफ़ाइल सेट करना

सिर्फ़ सिस्टम ऐप्लिकेशन, ग्लोबल डिफ़ॉल्ट प्रोफ़ाइल सेट कर सकते हैं. यह ऐसे किसी भी कॉन्टेंट के लिए फ़ॉलबैक के तौर पर काम करती है जिसके लिए कोई खास प्रोफ़ाइल असाइन नहीं की गई है.

  1. सिस्टम ऐप्लिकेशन, फ़्रेमवर्क से उपलब्ध पिक्चर प्रोफ़ाइलों की सूची वापस लेता है.
  2. इसके बाद, ऐप्लिकेशन, setDefaultPictureProfile(id) को कॉल करके, इनमें से किसी एक प्रोफ़ाइल को नई ग्लोबल डिफ़ॉल्ट प्रोफ़ाइल के तौर पर चुनता है.
  3. फ़्रेमवर्क, उस प्रोफ़ाइल के पैरामीटर, मीडिया क्वालिटी एचएएल को भेजता है. इसके बाद, मीडिया क्वालिटी एचएएल, बदलावों को लागू करता है.

मीडिया क्वालिटी एसडीके एपीआई

मीडिया क्वालिटी एसडीके एपीआई, ऐप्लिकेशन को फ़्रेमवर्क के साथ इंटरैक्ट करने के लिए ज़रूरी टूल उपलब्ध कराता है. इसका मुख्य एंट्री पॉइंट, android.media.quality पैकेज है.

android.media.quality

इस पैकेज में, मीडिया क्वालिटी मैनेज करने के लिए मुख्य क्लास शामिल हैं.

क्लास ब्यौरा
MediaQualityManager यह एमक्यूएफ के साथ इंटरैक्ट करने के लिए मुख्य क्लास है.
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 यह मीडिया क्वालिटी सर्विस के लिए मुख्य इंटरफ़ेस है. इसका इस्तेमाल, लिसनर सेट करने और हार्डवेयर की क्षमताओं का पता लगाने के लिए किया जाता है.
IPictureProfileChangedListener.aidl यह एक लिसनर इंटरफ़ेस है. इसका इस्तेमाल करके, फ़्रेमवर्क, एचएएल (खास तौर पर, कंपोज़र एचएएल जैसे कॉम्पोनेंट) को पिक्चर प्रोफ़ाइल में होने वाले बदलावों के बारे में सूचना देता है.
IPictureProfileAdjustmentListener.aidl यह एक लिसनर इंटरफ़ेस है. इसका इस्तेमाल करके, एचएएल, फ़्रेमवर्क को हार्डवेयर लेवल पर किए गए अडजस्टमेंट के बारे में सूचना देता है. उदाहरण के लिए, जब कोई उपयोगकर्ता, हार्डवेयर रिमोट के ज़रिए सीधे कोई सेटिंग बदलता है.
PictureParameter.aidl यह एक एआईडीएल यूनियन है. इसमें पिक्चर के सभी स्टैंडर्ड पैरामीटर तय किए जाते हैं. जैसे, कंट्रास्ट और शार्पनेस. इनमें अडजस्टमेंट किया जा सकता है.
PictureProfile.aidl यह एआईडीएल पार्सलेबल है. यह एचएएल लेयर पर PictureProfile ऑब्जेक्ट को दिखाता है. इसमें प्रोफ़ाइल आईडी और उससे जुड़े पैरामीटर शामिल होते हैं.
ISoundProfileChangedListener.aidl यह एक लिसनर इंटरफ़ेस है. इसका इस्तेमाल करके, फ़्रेमवर्क, एचएएल को साउंड प्रोफ़ाइल में होने वाले बदलावों के बारे में सूचना देता है.
ISoundProfileAdjustmentListener.aidl यह एक लिसनर इंटरफ़ेस है. इसका इस्तेमाल करके, एचएएल, फ़्रेमवर्क को हार्डवेयर लेवल पर किए गए साउंड अडजस्टमेंट के बारे में सूचना देता है.