वीडियो एन्कोडिंग के आंकड़े एक्सपोर्ट करना

Android 13 से, ऐप्लिकेशन क्लाइंट, वीडियो एन्कोडर से हर एन्कोड किए गए वीडियो फ़्रेम के लिए एन्कोडिंग के आंकड़े एक्सपोर्ट करने का अनुरोध कर सकते हैं. वीडियो एन्कोडर से मिले आंकड़ों की मदद से, ऐप्लिकेशन वीडियो एन्कोडिंग के टास्क को ऑप्टिमाइज़ कर सकते हैं. जैसे, एन्कोडिंग से पहले मल्टीपास एन्कोडिंग और फ़्रेम प्रीप्रोसेसिंग.

वीडियो एन्कोडिंग के आंकड़े एक्सपोर्ट करने के लिए, SoC वेंडर को वीडियो एन्कोडर ड्राइवर बदलना होगा. इसके बारे में वीडियो एन्कोडर ड्राइवर से जुड़े अपडेट में बताया गया है.

वीडियो एन्कोडिंग के आंकड़ों का डेटा

Android 13 में, वीडियो एन्कोडर के आंकड़े एक्सपोर्ट करने का डेटा, यहां दी गई टेबल में दिखाया गया है.

एन्कोडर के आंकड़ों का नाम ब्यौरा
हर फ़्रेम में औसत ब्लॉक क्यूपी वीडियो फ़्रेम में मौजूद सभी ब्लॉक क्यूएपी का औसत, जिन्हें बिटस्ट्रीम में कोड किया गया है
फ़ोटो का टाइप I, P या B टाइप करें

डेवलपर, MediaFormat डेवलपर क्लास का इस्तेमाल करके, हर फ़्रेम के लिए आंकड़ों की जानकारी पा सकते हैं.

वीडियो एन्कोडर ड्राइवर से जुड़े अपडेट

वीडियो एन्कोडिंग के आंकड़ों को एक्सपोर्ट करने की सुविधा के लिए, SoC वेंडर को वीडियो एन्कोडर ड्राइवर बदलना होगा. Android 13 में, Codec 2.0 के बेस में ये कुंजियां जोड़ी गई हैं:

  • KEY_VIDEO_QP_AVERAGE से, हर फ़्रेम के लिए औसतन ब्लॉक क्यूपी के बारे में पता चलता है.

    KEY_VIDEO_QP_AVERAGE कुंजी को लागू करने के लिए, ये नियम लागू होते हैं:

    • एसओसी एनकोडर को, कोडेक 2.0 को डेटा भेजने से पहले, ब्लॉक के क्यूएपी के औसत को निकटतम पूर्णांक में बदलना होगा.

    • औसत वैल्यू का हिसाब सिर्फ़ ल्यूमा प्लेन से लगाया जाता है.

    • अगर मौजूदा फ़्रेम के सभी ब्लॉक स्किप किए गए मोड में हैं, तो SoC एन्कोडर को INT_MAX वैल्यू दिखानी होगी. यह स्थिति तब होती है, जब किसी भी कोएफ़िशिएंट को कोड में नहीं बदला जाता है और फ़्रेम में कोई ज़रूरी QP जानकारी कोड में नहीं बदली जाती है.

  • KEY_PICTURE_TYPE एन्कोड किए गए फ़्रेम के टाइप के बारे में बताता है. जैसे, PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B, या PICTURE_TYPE_UNKNOWN.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL से, वीडियो एन्कोडर से मिलने वाली एन्कोडिंग के आंकड़ों की जानकारी के लेवल के बारे में पता चलता है. यह जानकारी इस तरह से होती है:

    • जब एन्कोडर, एन्कोडिंग के आंकड़ों के बारे में कोई जानकारी जनरेट नहीं करता है, तब इस कुंजी को VIDEO_ENCODING_STATISTICS_LEVEL_NONE पर सेट किया जाता है.

    • जब एनकोडर हर फ़्रेम के लिए KEY_VIDEO_QP_AVERAGE और KEY_PICTURE_TYPE जनरेट करता है, तब इस कुंजी को VIDEO_ENCODING_STATISTICS_LEVEL_1 पर सेट किया जाता है.

रेफ़रंस के तौर पर लागू करने के लिए, VideoEncodingStatisticsTest देखें.

Validation

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

वीडियो एन्कोडिंग के आंकड़े एक्सपोर्ट करने की सुविधा चालू होने पर, इसे बंद करने की पुष्टि करने के लिए, VIDEO_ENCODING_STATISTICS_LEVEL_NONE कुंजी का इस्तेमाल इस तरह करें:

format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);