Android 13 से, ऐप्लिकेशन क्लाइंट, वीडियो एन्कोडर से अनुरोध कर सकते हैं कि वह एन्कोड किए गए हर वीडियो फ़्रेम के लिए, एन्कोडिंग के आंकड़े एक्सपोर्ट करे. वीडियो एन्कोडर से मिले आंकड़ों की मदद से, ऐप्लिकेशन अपने वीडियो एन्कोडिंग टास्क को ऑप्टिमाइज़ कर सकते हैं. जैसे, एन्कोड करने से पहले मल्टीपास एन्कोडिंग और फ़्रेम की प्रोसेसिंग करना.
वीडियो एन्कोडिंग के आंकड़े एक्सपोर्ट करने के लिए, SoC वेंडर को वीडियो एन्कोडर ड्राइवर बदलना होगा. इसके बारे में वीडियो एन्कोडर ड्राइवर से जुड़े अपडेट में बताया गया है.
वीडियो एन्कोडिंग के आंकड़ों का डेटा
Android 13 के साथ, वीडियो एन्कोडर आंकड़ों का डेटा एक्सपोर्ट करता है, जैसा कि नीचे दी गई टेबल में दिखाया गया है.
एन्कोडर के आंकड़े का नाम | ब्यौरा |
---|---|
हर फ़्रेम के लिए औसत ब्लॉक क्यूपी | बिटरस्ट्रीम में एन्कोड किए गए वीडियो फ़्रेम में मौजूद सभी ब्लॉक क्यूपी का औसत |
इमेज का टाइप | I या P या B टाइप करें |
डेवलपर, MediaFormat
डेवलपर क्लास का इस्तेमाल करके, हर फ़्रेम के लिए आंकड़ों की जानकारी हासिल कर सकते हैं.
वीडियो एन्कोडर ड्राइवर से जुड़े अपडेट
वीडियो एन्कोडिंग के आंकड़ों को एक्सपोर्ट करने के लिए, SoC वेंडर को वीडियो एन्कोडर ड्राइवर बदलना होगा. Android 13 में कोडेक 2.0 बेस में ये कुंजियां जोड़ी गई हैं:
KEY_VIDEO_QP_AVERAGE
से हर फ़्रेम के लिए, औसत ब्लॉक क्यूपी के बारे में पता चलता है.KEY_VIDEO_QP_AVERAGE
की को लागू करने के लिए, ये नियम लागू होते हैं:SoC एन्कोडर को कोडेक 2.0 में भेजने से पहले, ब्लॉक क्यूपी के औसत को सबसे नज़दीकी पूर्णांक पर राउंड करना होगा.
औसत वैल्यू का हिसाब सिर्फ़ ल्यूमा प्लेन से लगाया जाता है.
अगर मौजूदा फ़्रेम के सभी ब्लॉक, स्किप किए गए मोड में हैं, तो SoC एन्कोडर को
INT_MAX
दिखाना चाहिए. यह स्थिति तब होती है, जब कोई गुणांक एन्कोड नहीं किया जाता और फ़्रेम में कोई अहम क्यूपी जानकारी एन्कोड नहीं की जाती.
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
पर जाएं.
पुष्टि करें
VideoEncodingStatisticsTest
सीटीएस टेस्ट चलाकर पुष्टि करें कि वीडियो को एन्कोड करने के आंकड़ों में, औसत क्यूपी का हिस्सा सही तरीके से काम कर रहा है या नहीं: सीटीएस, एक ही इनपुट वीडियो की दो एन्कोडिंग करता है. एक एन्कोडिंग में ज़्यादा बिटरेट और दूसरी में कम बिटरेट होता है. इसके बाद, CTS दो एन्कोडिंग से एक्सपोर्ट की गई औसत QP वैल्यू की तुलना करता है. अगर कम बिटरेट वाले वीडियो को एन्कोड करने पर मिलने वाला औसत क्यूपी, ज़्यादा बिटरेट वाले वीडियो को एन्कोड करने पर मिलने वाले औसत क्यूपी से ज़्यादा है, तो सीटीएस पास हो जाता है.
वीडियो एन्कोडिंग के आंकड़े एक्सपोर्ट करने की सुविधा चालू होने पर, उसे बंद करने की पुष्टि करने के लिए, VIDEO_ENCODING_STATISTICS_LEVEL_NONE
बटन का इस्तेमाल इस तरह करें:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);