एचडीआर वीडियो प्लेबैक

उच्च गतिशील रेंज (एचडीआर) वीडियो उच्च गुणवत्ता वाले वीडियो डिकोडिंग में अगली सीमा है, जो बेजोड़ दृश्य पुनरुत्पादन गुण लाता है। यह ल्यूमिनेंस घटक की गतिशील रेंज (वर्तमान 100 सीडी/एम 2 से 1000 सीडी/एम 2 तक) को महत्वपूर्ण रूप से बढ़ाकर और बहुत व्यापक रंग स्थान (बीटी 2020) का उपयोग करके ऐसा करता है। यह अब टीवी क्षेत्र में 4K UHD विकास का एक केंद्रीय तत्व है।

एंड्रॉइड 10 निम्नलिखित एचडीआर वीडियो का समर्थन करता है।

  • एचडीआर10
  • वीपी9
  • एचडीआर10+

एंड्रॉइड 9 और उच्चतर से शुरू होकर, मीडियाकोडेक टनल मोड की परवाह किए बिना एचडीआर मेटाडेटा की रिपोर्ट करता है। आप गैर-सुरंग मोड में स्थिर/गतिशील मेटाडेटा के साथ डिकोडेड डेटा प्राप्त कर सकते हैं। स्थिर मेटाडेटा का उपयोग करने वाले HDR10 और VP9Profile2 के लिए, इन्हें कुंजी KEY_HDR_STATIC_INFO के साथ आउटपुट स्वरूप में रिपोर्ट किया जाता है। HDR10+ के लिए जो डायनामिक मेटाडेटा का उपयोग करता है, इसे आउटपुट प्रारूप पर कुंजी KEY_HDR10_PLUS_INFO के साथ रिपोर्ट किया जाता है और प्रत्येक आउटपुट फ्रेम के लिए बदल सकता है। अधिक जानकारी के लिए मल्टीमीडिया टनलिंग देखें।

एंड्रॉइड 7.0 के बाद से, प्रारंभिक एचडीआर समर्थन में एचडीआर वीडियो पाइपलाइनों की खोज और सेटअप के लिए उचित स्थिरांक का निर्माण शामिल है। इसका मतलब है कि कोडेक प्रकार और डिस्प्ले मोड को परिभाषित करना और यह निर्दिष्ट करना कि एचडीआर डेटा को मीडियाकोडेक को कैसे पास किया जाना चाहिए और एचडीआर डिकोडर्स को कैसे आपूर्ति की जानी चाहिए।

इस दस्तावेज़ का उद्देश्य एप्लिकेशन डेवलपर्स को एचडीआर स्ट्रीम प्लेबैक का समर्थन करने में मदद करना है, और ओईएम और एसओसी को एचडीआर सुविधाओं को सक्षम करने में मदद करना है।

समर्थित एचडीआर प्रौद्योगिकियाँ

एंड्रॉइड 7.0 और उच्चतर के अनुसार, निम्नलिखित एचडीआर प्रौद्योगिकियां समर्थित हैं।

तकनीकी डॉल्बी-विज़न एचडीआर10 VP9-HLG VP9-PQ
कोडेक एवीसी/एचईवीसी एचईवीसी वीपी9 वीपी9
स्थानांतरण प्रकार्य एसटी-2084 एसटी-2084 एचएलजी एसटी-2084
एचडीआर मेटाडेटा प्रकार गतिशील स्थिर कोई नहीं स्थिर

एंड्रॉइड 7.0 में, केवल टनल मोड के माध्यम से एचडीआर प्लेबैक को परिभाषित किया गया है , लेकिन डिवाइस अपारदर्शी वीडियो बफ़र्स का उपयोग करके सरफेस व्यू पर एचडीआर के प्लेबैक के लिए समर्थन जोड़ सकते हैं। दूसरे शब्दों में:

  • यह जांचने के लिए कोई मानक एंड्रॉइड एपीआई नहीं है कि गैर-सुरंग वाले डिकोडर्स का उपयोग करके एचडीआर प्लेबैक समर्थित है या नहीं।
  • एचडीआर प्लेबैक क्षमता का विज्ञापन करने वाले टनल वीडियो डिकोडर को एचडीआर-सक्षम डिस्प्ले से कनेक्ट होने पर एचडीआर प्लेबैक का समर्थन करना चाहिए।
  • एचडीआर सामग्री की जीएल संरचना एओएसपी एंड्रॉइड 7.0 रिलीज द्वारा समर्थित नहीं है।

खोज

एचडीआर प्लेबैक के लिए एचडीआर-सक्षम डिकोडर और एचडीआर-सक्षम डिस्प्ले से कनेक्शन की आवश्यकता होती है। वैकल्पिक रूप से, कुछ प्रौद्योगिकियों को एक विशिष्ट एक्सट्रैक्टर की आवश्यकता होती है।

प्रदर्शन

निर्दिष्ट डिस्प्ले द्वारा समर्थित एचडीआर प्रौद्योगिकियों को क्वेरी करने के लिए एप्लिकेशन नए Display.getHdrCapabilities एपीआई का उपयोग करेंगे। यह मूल रूप से EDID स्टेटिक मेटाडेटा डेटा ब्लॉक की जानकारी है जैसा कि CTA-861.3 में परिभाषित है:

  • public Display.HdrCapabilities getHdrCapabilities()
    डिस्प्ले की HDR क्षमताएँ लौटाता है।
  • Display.HdrCapabilities
    किसी दिए गए डिस्प्ले की एचडीआर क्षमताओं को समाहित करता है। उदाहरण के लिए, यह किस एचडीआर प्रकार का समर्थन करता है और वांछित ल्यूमिनेंस डेटा के बारे में विवरण देता है।

स्थिरांक:

  • int HDR_TYPE_DOLBY_VISION
    डॉल्बी विजन समर्थन।
  • int HDR_TYPE_HDR10
    एचडीआर10/पीक्यू सपोर्ट।
  • int HDR_TYPE_HDR10_PLUS
    HDR10+ सपोर्ट।
  • int HDR_TYPE_HLG
    हाइब्रिड लॉग-गामा समर्थन।
  • float INVALID_LUMINANCE
    अमान्य चमक मान.

सार्वजनिक तरीके:

  • float getDesiredMaxAverageLuminance()
    इस डिस्प्ले के लिए सीडी/सीडी/एम 2 में वांछित सामग्री अधिकतम फ्रेम-औसत ल्यूमिनेंस डेटा लौटाता है।
  • float getDesiredMaxLuminance()
    इस डिस्प्ले के लिए वांछित सामग्री अधिकतम ल्यूमिनेंस डेटा सीडी/सीडी/एम 2 में लौटाता है।
  • float getDesiredMinLuminance()
    इस डिस्प्ले के लिए सीडी/सीडी/एम 2 में वांछित सामग्री न्यूनतम ल्यूमिनेंस डेटा लौटाता है।
  • int[] getSupportedHdrTypes()
    इस डिस्प्ले के समर्थित एचडीआर प्रकार प्राप्त होते हैं (स्थिरांक देखें)। यदि एचडीआर डिस्प्ले द्वारा समर्थित नहीं है तो खाली सरणी लौटाता है।

डिकोडर

नए HDR सक्षम प्रोफाइल के लिए समर्थन सत्यापित करने के लिए एप्लिकेशन मौजूदा CodecCapabilities.profileLevels API का उपयोग करेंगे:

डॉल्बी-विज़न

MediaFormat माइम स्थिरांक:

String MIMETYPE_VIDEO_DOLBY_VISION

MediaCodecInfo.CodecProfileLevel प्रोफ़ाइल स्थिरांक:

int DolbyVisionProfileDvavPen
int DolbyVisionProfileDvavPer
int DolbyVisionProfileDvheDen
int DolbyVisionProfileDvheDer
int DolbyVisionProfileDvheDtb
int DolbyVisionProfileDvheDth
int DolbyVisionProfileDvheDtr
int DolbyVisionProfileDvheStn

डॉल्बी विज़न वीडियो परतों और मेटाडेटा को वीडियो अनुप्रयोगों द्वारा प्रति फ़्रेम एक एकल बफर में संयोजित किया जाना चाहिए। यह डॉल्बी-विज़न सक्षम मीडियाएक्सट्रैक्टर द्वारा स्वचालित रूप से किया जाता है।

एचईवीसी एचडीआर 10

MediaCodecInfo.CodecProfileLevel प्रोफ़ाइल स्थिरांक:

int HEVCProfileMain10HDR10
int HEVCProfileMain10HDR10Plus

वीपी9 एचएलजी और पीक्यू

MediaCodecInfo.CodecProfileLevel प्रोफ़ाइल स्थिरांक:

int VP9Profile2HDR
int VP9Profile2HDR10Plus
int VP9Profile3HDR
int VP9Profile3HDR10Plus

यदि कोई प्लेटफ़ॉर्म एचडीआर-सक्षम डिकोडर का समर्थन करता है, तो यह एचडीआर-सक्षम एक्सट्रैक्टर का भी समर्थन करेगा।

केवल सुरंगयुक्त डिकोडर्स को एचडीआर सामग्री को चलाने की गारंटी दी जाती है। गैर-सुरंग वाले डिकोडर्स द्वारा प्लेबैक के परिणामस्वरूप एचडीआर जानकारी नष्ट हो सकती है और सामग्री एसडीआर रंग की मात्रा में समतल हो सकती है।

चिमटा

एंड्रॉइड 7.0 पर विभिन्न एचडीआर प्रौद्योगिकियों के लिए निम्नलिखित कंटेनर समर्थित हैं:

तकनीकी डॉल्बी-विज़न एचडीआर10 VP9-HLG VP9-PQ
पात्र MP4 MP4 वेबएम वेबएम

किसी ट्रैक (फ़ाइल के) को एचडीआर समर्थन की आवश्यकता है या नहीं, इसकी खोज प्लेटफ़ॉर्म द्वारा समर्थित नहीं है। एप्लिकेशन यह निर्धारित करने के लिए कोडेक-विशिष्ट डेटा को पार्स कर सकते हैं कि किसी ट्रैक को विशिष्ट एचडीआर प्रोफ़ाइल की आवश्यकता है या नहीं।

सारांश

प्रत्येक एचडीआर तकनीक के लिए घटक आवश्यकताएँ निम्नलिखित तालिका में दिखाई गई हैं:

तकनीकी डॉल्बी-विज़न एचडीआर10 VP9-HLG VP9-PQ
समर्थित एचडीआर प्रकार (प्रदर्शन) HDR_TYPE_DOLBY_VISION HDR_TYPE_HDR10 एचडीआर_प्रकार_एचएलजी HDR_TYPE_HDR10
कंटेनर (एक्सट्रैक्टर) MP4 MP4 वेबएम वेबएम
डिकोडर MIMETYPE_VIDEO_DOLBY_VISION MIMETYPE_VIDEO_HEVC MIMETYPE_VIDEO_VP9 MIMETYPE_VIDEO_VP9
प्रोफ़ाइल (डिकोडर) डॉल्बी प्रोफाइल में से एक HEVCप्रोफ़ाइलमेन10HDR10 VP9Profile2HDR या VP9Profile3HDR VP9Profile2HDR या VP9Profile3HDR

टिप्पणियाँ:

  • डॉल्बी-विज़न बिटस्ट्रीम को डॉल्बी द्वारा परिभाषित तरीके से MP4 कंटेनर में पैक किया जाता है। एप्लिकेशन अपने स्वयं के डॉल्बी-सक्षम एक्सट्रैक्टर्स को तब तक लागू कर सकते हैं जब तक वे डॉल्बी द्वारा परिभाषित डिकोडर के लिए संबंधित परतों से एक्सेस इकाइयों को एकल एक्सेस यूनिट में पैकेज करते हैं।
  • एक प्लेटफ़ॉर्म एचडीआर-सक्षम एक्सट्रैक्टर का समर्थन कर सकता है, लेकिन कोई संबंधित एचडीआर-सक्षम डिकोडर नहीं।

प्लेबैक

किसी एप्लिकेशन के पास एचडीआर प्लेबैक के लिए सत्यापित समर्थन होने के बाद, यह एचडीआर सामग्री को लगभग उसी तरह से चला सकता है जैसे यह गैर-एचडीआर सामग्री को चलाता है, निम्नलिखित चेतावनियों के साथ:

  • डॉल्बी-विज़न के लिए, किसी विशिष्ट मीडिया फ़ाइल/ट्रैक को एचडीआर सक्षम डिकोडर की आवश्यकता है या नहीं, यह तुरंत उपलब्ध नहीं है। एप्लिकेशन के पास यह जानकारी पहले से होनी चाहिए या मीडियाफ़ॉर्मेट के कोडेक-विशिष्ट डेटा अनुभाग को पार्स करके यह जानकारी प्राप्त करने में सक्षम होना चाहिए।
  • CodecCapabilities.isFormatSupported इस बात पर विचार नहीं करता है कि ऐसी प्रोफ़ाइल का समर्थन करने के लिए टनल डिकोडर सुविधा आवश्यक है या नहीं।

एचडीआर प्लेटफ़ॉर्म समर्थन सक्षम करें

SoC विक्रेताओं और OEM को किसी डिवाइस के लिए HDR प्लेटफ़ॉर्म समर्थन सक्षम करने के लिए अतिरिक्त कार्य करना होगा।

एचडीआर के लिए एंड्रॉइड 7.0 में प्लेटफ़ॉर्म परिवर्तन

यहां प्लेटफ़ॉर्म (ऐप/नेटिव लेयर) में कुछ महत्वपूर्ण बदलाव दिए गए हैं जिनके बारे में ओईएम और एसओसी को अवगत होना आवश्यक है।

प्रदर्शन

हार्डवेयर रचना

एचडीआर-सक्षम प्लेटफार्मों को एचडीआर सामग्री को गैर-एचडीआर सामग्री के साथ मिश्रित करने का समर्थन करना चाहिए। एंड्रॉइड द्वारा रिलीज़ 7.0 के अनुसार सटीक सम्मिश्रण विशेषताओं और संचालन को परिभाषित नहीं किया गया है, लेकिन प्रक्रिया आम तौर पर इन चरणों का पालन करती है:

  1. परतों के रंग, मास्टरिंग और संभावित गतिशील मेटाडेटा के आधार पर, एक रैखिक रंग स्थान/आयतन निर्धारित करें जिसमें मिश्रित होने वाली सभी परतें शामिल हों।
    यदि किसी डिस्प्ले पर सीधे कंपोज़िंग की जाती है, तो यह रैखिक स्थान हो सकता है जो डिस्प्ले के रंग वॉल्यूम से मेल खाता है।
  2. सभी परतों को सामान्य रंग स्थान में बदलें।
  3. सम्मिश्रण करें.
  4. यदि एचडीएमआई के माध्यम से प्रदर्शित किया जा रहा है:
    1. मिश्रित दृश्य के लिए रंग, मास्टरिंग और संभावित गतिशील मेटाडेटा निर्धारित करें।
    2. परिणामी मिश्रित दृश्य को व्युत्पन्न रंग स्थान/आयतन में परिवर्तित करें।
  5. यदि सीधे डिस्प्ले पर प्रदर्शित किया जा रहा है, तो परिणामी मिश्रित दृश्य को उस दृश्य को उत्पन्न करने के लिए आवश्यक डिस्प्ले सिग्नल में परिवर्तित करें।

खोज प्रदर्शित करें

एचडीआर डिस्प्ले डिस्कवरी केवल HWC2 के माध्यम से समर्थित है। डिवाइस कार्यान्वयनकर्ताओं को इस सुविधा को काम करने के लिए एंड्रॉइड 7.0 के साथ जारी किए गए HWC2 एडाप्टर को चुनिंदा रूप से सक्षम करना होगा। इसलिए, प्लेटफ़ॉर्म को यह जानकारी प्रदान करने का एक तरीका प्रदान करने के लिए HWC2 के लिए समर्थन जोड़ना होगा या AOSP ढांचे का विस्तार करना होगा। HWC2 फ्रेमवर्क और एप्लिकेशन में एचडीआर स्टेटिक डेटा को प्रसारित करने के लिए एक नई एपीआई को उजागर करता है।

HDMI

  • कनेक्टेड एचडीएमआई डिस्प्ले एचडीएमआई ईडीआईडी ​​के माध्यम से अपनी एचडीआर क्षमता का विज्ञापन करता है जैसा कि सीटीए-861.3 अनुभाग 4.2 में परिभाषित किया गया है।
  • निम्नलिखित ईओटीएफ मैपिंग का उपयोग किया जाएगा:
    • ET_0 पारंपरिक गामा - एसडीआर ल्यूमिनेंस रेंज: किसी भी एचडीआर प्रकार से मैप नहीं किया गया
    • ET_1 पारंपरिक गामा - एचडीआर ल्यूमिनेन्स रेंज: किसी भी एचडीआर प्रकार से मैप नहीं किया गया
    • ET_2 SMPTE ST 2084 - HDR प्रकार HDR10 पर मैप किया गया
  • एचडीएमआई पर डॉल्बी विजन या एचएलजी समर्थन का सिग्नलिंग उनके संबंधित निकायों द्वारा परिभाषित अनुसार किया जाता है।
  • ध्यान दें कि HWC2 एपीआई फ्लोट वांछित ल्यूमिनेंस मानों का उपयोग करता है, इसलिए 8-बिट EDID मानों को उपयुक्त तरीके से अनुवादित किया जाना चाहिए।

डिकोडर्स

प्लेटफ़ॉर्म को एचडीआर-सक्षम टनल डिकोडर जोड़ना होगा और अपने एचडीआर समर्थन का विज्ञापन करना होगा। आम तौर पर, एचडीआर-सक्षम डिकोडर्स को यह करना होगा:

  • टनल्ड डिकोडिंग ( FEATURE_TunneledPlayback ) का समर्थन करें।
  • एचडीआर स्थिर मेटाडेटा ( OMX.google.android.index.describeHDRColorInfo ) और डिस्प्ले/हार्डवेयर संरचना में इसके प्रसार का समर्थन करें। एचएलजी के लिए, उचित मेटाडेटा डिस्प्ले पर प्रस्तुत किया जाना चाहिए।
  • रंग विवरण ( OMX.google.android.index.describeColorAspects ) और डिस्प्ले/हार्डवेयर संरचना में इसके प्रसार का समर्थन करें।
  • प्रासंगिक मानक द्वारा परिभाषित एचडीआर एम्बेडेड मेटाडेटा का समर्थन करें।

डॉल्बी विजन डिकोडर समर्थन

डॉल्बी विज़न का समर्थन करने के लिए, प्लेटफ़ॉर्म को डॉल्बी-विज़न सक्षम एचडीआर ओएमएक्स डिकोडर जोड़ना होगा। डॉल्बी विजन की विशिष्टताओं को देखते हुए, यह आम तौर पर एक या अधिक एवीसी और/या एचईवीसी डिकोडर के साथ-साथ एक कंपोजिटर के आसपास एक रैपर डिकोडर होता है। ऐसे डिकोडर्स को यह करना होगा:

  • समर्थन माइम प्रकार "वीडियो/डॉल्बी-विज़न।"
  • समर्थित डॉल्बी विज़न प्रोफ़ाइल/स्तरों का विज्ञापन करें।
  • उन एक्सेस इकाइयों को स्वीकार करें जिनमें डॉल्बी द्वारा परिभाषित सभी परतों की उप-एक्सेस-इकाइयाँ शामिल हैं।
  • डॉल्बी द्वारा परिभाषित कोडेक-विशिष्ट डेटा स्वीकार करें। उदाहरण के लिए, डॉल्बी विज़न प्रोफ़ाइल/स्तर वाला डेटा और संभवतः आंतरिक डिकोडर्स के लिए कोडेक-विशिष्ट डेटा।
  • डॉल्बी की आवश्यकता के अनुसार डॉल्बी विजन प्रोफाइल/स्तरों के बीच अनुकूली स्विचिंग का समर्थन करें।

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

यदि कोई प्लेटफ़ॉर्म सामान्य एचडीआर डिकोडर समर्थन के अलावा डॉल्बी-विज़न सक्षम डिकोडर प्रदान करता है, तो उसे यह करना होगा:

  • डॉल्बी-विज़न अवेयर एक्सट्रैक्टर प्रदान करें, भले ही वह एचडीआर प्लेबैक का समर्थन नहीं करता हो।
  • एक डिकोडर प्रदान करें जो डॉल्बी द्वारा परिभाषित विज़न प्रोफ़ाइल का समर्थन करता है।

HDR10 डिकोडर समर्थन

HDR10 का समर्थन करने के लिए, प्लेटफ़ॉर्म को HDR10-सक्षम OMX डिकोडर जोड़ना होगा। यह आम तौर पर एक सुरंगयुक्त एचईवीसी डिकोडर है जो एचडीएमआई से संबंधित मेटाडेटा को पार्स करने और संभालने का भी समर्थन करता है। ऐसे डिकोडर (सामान्य एचडीआर डिकोडर समर्थन के अतिरिक्त) को यह करना होगा:

  • समर्थन माइम प्रकार "वीडियो/एचईवीसी।"
  • विज्ञापन समर्थित HEVCMain10HDR10। HEVCMain10HRD10 प्रोफ़ाइल समर्थन के लिए HEVCMain10 प्रोफ़ाइल का समर्थन करने की भी आवश्यकता होती है, जिसके लिए समान स्तरों पर HEVCMain प्रोफ़ाइल का समर्थन करने की आवश्यकता होती है।
  • मास्टरिंग मेटाडेटा एसईआई ब्लॉक, साथ ही एसपीएस में निहित अन्य एचडीआर संबंधित जानकारी को पार्स करने में सहायता करें।

VP9 डिकोडर समर्थन

VP9 HDR का समर्थन करने के लिए, प्लेटफ़ॉर्म को VP9 प्रोफ़ाइल2-सक्षम HDR OMX डिकोडर जोड़ना होगा। यह आम तौर पर एक सुरंगयुक्त VP9 डिकोडर है जो एचडीएमआई से संबंधित मेटाडेटा को संभालने का भी समर्थन करता है। ऐसे डिकोडर (सामान्य एचडीआर डिकोडर समर्थन के अतिरिक्त) को यह करना होगा:

  • समर्थन माइम प्रकार "video/x-vnd.on2.vp9।"
  • विज्ञापन समर्थित VP9Profile2HDR। VP9Profile2HDR प्रोफ़ाइल समर्थन के लिए भी समान स्तर पर VP9Profile2 प्रोफ़ाइल का समर्थन करना आवश्यक है।

एक्सट्रैक्टर्स

डॉल्बी विजन एक्सट्रैक्टर समर्थन

जो प्लेटफ़ॉर्म डॉल्बी विज़न डिकोडर्स का समर्थन करते हैं, उन्हें डॉल्बी वीडियो सामग्री के लिए डॉल्बी एक्सट्रैक्टर (जिसे डॉल्बी एक्सट्रैक्टर कहा जाता है) समर्थन जोड़ना होगा।

  • एक नियमित MP4 एक्सट्रैक्टर फ़ाइल से केवल आधार परत निकाल सकता है, लेकिन एन्हांसमेंट या मेटाडेटा परतें नहीं। इसलिए फ़ाइल से डेटा निकालने के लिए एक विशेष डॉल्बी एक्सट्रैक्टर की आवश्यकता होती है।
  • डॉल्बी एक्सट्रैक्टर को प्रत्येक डॉल्बी वीडियो ट्रैक (समूह) के लिए 1 से 2 ट्रैक प्रदर्शित करने होंगे:
    • संयुक्त 2/3-लेयर डॉल्बी स्ट्रीम के लिए "वीडियो/डॉल्बी-विज़न" प्रकार के साथ एक डॉल्बी विज़न एचडीआर ट्रैक। एचडीआर ट्रैक का एक्सेस-यूनिट प्रारूप, जो परिभाषित करता है कि बेस/एन्हांसमेंट/मेटाडेटा परतों से एक्सेस इकाइयों को एक एकल एचडीआर फ्रेम में डीकोड करने के लिए एक बफर में कैसे पैकेज किया जाए, डॉल्बी द्वारा परिभाषित किया जाना है।
    • यदि डॉल्बी विज़न वीडियो ट्रैक में एक अलग (बैकवर्ड संगत) बेस-लेयर (बीएल) है, तो एक्सट्रैक्टर को इसे एक अलग "वीडियो/एवीसी" या "वीडियो/एचईवीसी" ट्रैक के रूप में भी प्रदर्शित करना होगा। एक्सट्रैक्टर को इस ट्रैक के लिए नियमित AVC/HEVC एक्सेस इकाइयाँ प्रदान करनी होंगी।
    • बीएल ट्रैक में एचडीआर ट्रैक के समान ट्रैक-यूनिक-आईडी ("ट्रैक-आईडी") होना चाहिए ताकि ऐप समझ सके कि ये एक ही वीडियो के दो एन्कोडिंग हैं।
    • प्लेटफ़ॉर्म की क्षमता के आधार पर एप्लिकेशन तय कर सकता है कि कौन सा ट्रैक चुनना है।
  • डॉल्बी विज़न प्रोफ़ाइल/स्तर को एचडीआर ट्रैक के ट्रैक प्रारूप में प्रदर्शित किया जाना चाहिए।
  • यदि कोई प्लेटफ़ॉर्म डॉल्बी-विज़न सक्षम डिकोडर प्रदान करता है, तो उसे डॉल्बी-विज़न जागरूक एक्सट्रैक्टर भी प्रदान करना होगा, भले ही वह एचडीआर प्लेबैक का समर्थन नहीं करता हो।

HDR10 और VP9 HDR एक्सट्रैक्टर सपोर्ट

HDR10 या VP9 HLG का समर्थन करने के लिए कोई अतिरिक्त एक्सट्रैक्टर आवश्यकताएं नहीं हैं। MP4 में VP9 PQ को सपोर्ट करने के लिए प्लेटफ़ॉर्म को MP4 एक्सट्रैक्टर का विस्तार करना होगा। HDR स्थिर मेटाडेटा को VP9 PQ बिटस्ट्रीम में प्रचारित किया जाना चाहिए, जैसे कि यह मेटाडेटा VP9 PQ डिकोडर और सामान्य MediaExtractor => MediaCodec पाइपलाइन के माध्यम से डिस्प्ले तक भेजा जाता है।

डॉल्बी विजन समर्थन के लिए स्टेजफ्राइट एक्सटेंशन

प्लेटफ़ॉर्म को स्टेजफ़्राइट में डॉल्बी विज़न प्रारूप समर्थन जोड़ना होगा:

  • संपीड़ित पोर्ट के लिए पोर्ट परिभाषा क्वेरी के लिए समर्थन।
  • डीवी डिकोडर के लिए समर्थन प्रोफ़ाइल/स्तर गणना।
  • डीवी एचडीआर ट्रैक के लिए डीवी प्रोफ़ाइल/स्तर को उजागर करने में सहायता।

प्रौद्योगिकी-विशिष्ट कार्यान्वयन विवरण

HDR10 डिकोडर पाइपलाइन

चित्र 1. HDR10 पाइपलाइन

HDR10 बिटस्ट्रीम MP4 कंटेनर में पैक किए गए हैं। एप्लिकेशन फ़्रेम डेटा निकालने और उसे डिकोडर को भेजने के लिए एक नियमित MP4 एक्सट्रैक्टर का उपयोग करते हैं।

  • MPEG4 एक्सट्रैक्टर
    HDR10 बिटस्ट्रीम को MPEG4Extractor द्वारा एक सामान्य HEVC स्ट्रीम के रूप में पहचाना जाता है और "वीडियो/HEVC" प्रकार वाला HDR ट्रैक निकाला जाएगा। फ़्रेमवर्क एक HEVC वीडियो डिकोडर चुनता है जो उस ट्रैक को डिकोड करने के लिए Main10HDR10 प्रोफ़ाइल का समर्थन करता है।
  • एचईवीसी डिकोडर
    एचडीआर जानकारी या तो एसईआई या एसपीएस में है। HEVC डिकोडर पहले फ़्रेम प्राप्त करता है जिसमें HDR जानकारी होती है। फिर डिकोडर एचडीआर जानकारी निकालता है और एप्लिकेशन को सूचित करता है कि वह एचडीआर वीडियो को डिकोड कर रहा है। एचडीआर जानकारी को डिकोडर आउटपुट प्रारूप में बंडल किया जाता है, जिसे बाद में सतह पर प्रसारित किया जाता है।

विक्रेता की गतिविधियाँ

  1. समर्थित एचडीआर डिकोडर प्रोफाइल और लेवल ओएमएक्स प्रकार का विज्ञापन करें। उदाहरण:
    OMX_VIDEO_HEVCProfileMain10HDR10 (और Main10 )
  2. इंडेक्स के लिए समर्थन लागू करें: ' OMX.google.android.index.describeHDRColorInfo '
  3. सूचकांक के लिए समर्थन लागू करें: ' OMX.google.android.index.describeColorAspects '
  4. मास्टरिंग मेटाडेटा के एसईआई पार्सिंग के लिए समर्थन लागू करें।

डॉल्बी विजन डिकोडर पाइपलाइन

चित्र 2. डॉल्बी विज़न पाइपलाइन

डॉल्बी द्वारा परिभाषित अनुसार डॉल्बी-बिटस्ट्रीम को MP4 कंटेनरों में पैक किया जाता है। सैद्धांतिक रूप से, एप्लिकेशन बेस परत, एन्हांसमेंट परत और मेटाडेटा परत को स्वतंत्र रूप से निकालने के लिए एक नियमित MP4 एक्सट्रैक्टर का उपयोग कर सकते हैं; हालाँकि, यह वर्तमान Android MediaExtractor/MediaCodec मॉडल में फिट नहीं बैठता है।

  • डॉल्बी एक्सट्रैक्टर:
    • डॉल्बी-बिटस्ट्रीम को डॉल्बीएक्सट्रैक्टर द्वारा पहचाना जाता है, जो प्रत्येक डॉल्बी वीडियो ट्रैक (समूह) के लिए 1 से 2 ट्रैक के रूप में विभिन्न परतों को उजागर करता है:
      • संयुक्त 2/3-परतों वाली डॉल्बी स्ट्रीम के लिए "वीडियो/डॉल्बी-विज़न" प्रकार वाला एक एचडीआर ट्रैक। एचडीआर ट्रैक का एक्सेस-यूनिट प्रारूप, जो परिभाषित करता है कि बेस/एन्हांसमेंट/मेटाडेटा परतों से एक्सेस इकाइयों को एक एकल एचडीआर फ्रेम में डीकोड करने के लिए एक बफर में कैसे पैकेज किया जाए, डॉल्बी द्वारा परिभाषित किया जाना है।
      • (वैकल्पिक, केवल अगर बीएल बैकवर्ड संगत है) एक बीएल ट्रैक में केवल आधार परत होती है, जिसे नियमित मीडियाकोड डिकोडर द्वारा डिकोड किया जाना चाहिए, उदाहरण के लिए, एवीसी/एचईवीसी डिकोडर। एक्सट्रैक्टर को इस ट्रैक के लिए नियमित एवीसी/एचईवीसी एक्सेस इकाइयां प्रदान करनी चाहिए। इस बीएल ट्रैक में डॉल्बी ट्रैक के समान ट्रैक-यूनिक-आईडी ("ट्रैक-आईडी") होना चाहिए ताकि एप्लिकेशन समझ सके कि ये एक ही वीडियो के दो एन्कोडिंग हैं।
    • प्लेटफ़ॉर्म की क्षमता के आधार पर एप्लिकेशन तय कर सकता है कि कौन सा ट्रैक चुनना है।
    • क्योंकि एचडीआर ट्रैक में एक विशिष्ट एचडीआर प्रकार होता है, फ्रेमवर्क उस ट्रैक को डिकोड करने के लिए डॉल्बी वीडियो डिकोडर को चुनेगा। बीएल ट्रैक को नियमित एवीसी/एचईवीसी वीडियो डिकोडर द्वारा डिकोड किया जाएगा।
  • डॉल्बी डिकोडर:
    • DolbyDecoder एक्सेस इकाइयाँ प्राप्त करता है जिसमें सभी परतों के लिए आवश्यक एक्सेस इकाइयाँ होती हैं (EL+BL+MD या BL+MD)
    • व्यक्तिगत परतों के लिए सीएसडी (कोडेक विशिष्ट डेटा, जैसे एसपीएस + पीपीएस + वीपीएस) जानकारी को डॉल्बी द्वारा परिभाषित करने के लिए 1 सीएसडी फ्रेम में पैक किया जा सकता है। एकल सीएसडी फ्रेम का होना आवश्यक है।

डॉल्बी क्रियाएँ

  1. अमूर्त डॉल्बी डिकोडर (यानी एचडीआर डिकोडर द्वारा अपेक्षित बफर प्रारूप) के लिए विभिन्न डॉल्बी कंटेनर योजनाओं (जैसे बीएल + ईएल + एमडी) के लिए एक्सेस इकाइयों की पैकेजिंग को परिभाषित करें।
  2. अमूर्त डॉल्बी डिकोडर के लिए सीएसडी की पैकेजिंग को परिभाषित करें।

विक्रेता की गतिविधियाँ

  1. डॉल्बी एक्सट्रैक्टर लागू करें। यह कार्य डॉल्बी द्वारा भी किया जा सकता है।
  2. DolbyExtractor को फ्रेमवर्क में एकीकृत करें। प्रवेश बिंदु frameworks/av/media/libstagefright/MediaExtractor.cpp है।
  3. एचडीआर डिकोडर प्रोफाइल और लेवल ओएमएक्स प्रकार घोषित करें। उदाहरण: OMX_VIDEO_DOLBYPROFILETYPE और OMX_VIDEO_DOLBYLEVELTYP
  4. इंडेक्स के लिए समर्थन लागू करें: 'OMX.google.android.index.describeColorAspects '
  5. प्रत्येक फ्रेम में ऐप और सतह पर गतिशील एचडीआर मेटाडेटा का प्रचार करें। आमतौर पर इस जानकारी को डॉल्बी द्वारा परिभाषित डिकोडेड फ्रेम में पैक किया जाना चाहिए, क्योंकि एचडीएमआई मानक इसे डिस्प्ले तक पहुंचाने का कोई तरीका प्रदान नहीं करता है।

VP9 डिकोडर पाइपलाइन

चित्र 3. VP9-PQ पाइपलाइन

VP9 बिटस्ट्रीम को WebM टीम द्वारा परिभाषित तरीके से WebM कंटेनरों में पैक किया जाता है। डिकोडर को फ्रेम भेजने से पहले अनुप्रयोगों को बिटस्ट्रीम से एचडीआर मेटाडेटा निकालने के लिए वेबएम एक्सट्रैक्टर का उपयोग करने की आवश्यकता होती है।

  • वेबएम एक्सट्रैक्टर:
  • VP9 डिकोडर:
    • डिकोडर प्रोफाइल2 बिटस्ट्रीम प्राप्त करता है और उन्हें सामान्य वीपी9 स्ट्रीम के रूप में डिकोड करता है।
    • डिकोडर फ्रेमवर्क से कोई भी एचडीआर स्थिर मेटाडेटा प्राप्त करता है।
    • डिकोडर VP9 PQ स्ट्रीम के लिए बिटस्ट्रीम एक्सेस इकाइयों के माध्यम से स्थिर मेटाडेटा प्राप्त करता है।
    • VP9 डिकोडर को एचडीआर स्थिर/गतिशील मेटाडेटा को डिस्प्ले पर प्रसारित करने में सक्षम होना चाहिए।

विक्रेता की गतिविधियाँ

  1. इंडेक्स के लिए समर्थन लागू करें: OMX.google.android.index.describeHDRColorInfo
  2. इंडेक्स के लिए समर्थन लागू करें: OMX.google.android.index.describeColorAspects
  3. एचडीआर स्थिर मेटाडेटा का प्रचार करें