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);