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