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

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

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

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

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

Components

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

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

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

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

सुविधाएं

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Media Quality SDK API

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

android.media.quality

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

कक्षा ब्यौरा
MediaQualityManager यह MQF के साथ इंटरैक्ट करने के लिए सेंट्रल क्लास है.
PictureProfile यह एक डेटा क्लास है. यह किसी खास मोड के लिए, फ़ोटो के पैरामीटर का पूरा सेट दिखाती है.
SoundProfile यह साउंड पैरामीटर के लिए डेटा क्लास है.
MediaQualityContract यह क्लास, पहले से तय की गई सभी पैरामीटर कुंजियों के लिए कॉन्स्टेंट शामिल करती है.

MediaQualityManager

इसके लिए, ये मुख्य तरीके अपनाए जाते हैं:

Method ब्यौरा
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/ में तय किया गया है. एसओसी वेंडर को इस इंटरफ़ेस को लागू करना होगा, ताकि वे अपने डिवाइसों पर मीडिया क्वालिटी फ़्रेमवर्क को चालू कर सकें. HAL, Android फ़्रेमवर्क में मौजूद MediaQualityService और हार्डवेयर के बीच कम्यूनिकेशन ब्रिज का काम करता है. यह इमेज और साउंड में बदलाव करने के लिए ज़िम्मेदार होता है.

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

मॉड्यूल

एचएएल इंटरफ़ेस में कई अहम एआईडीएल फ़ाइलें शामिल होती हैं:

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