वीडियो एन्कोडिंग के विवरण में बहुत अधिक जाने के बिना, आप एन्कोडेड फ्रेम की गुणवत्ता को व्यक्त करने के लिए क्वांटिज़ेशन पैरामीटर्स (QP) या लैम्बडा पैरामीटर दोनों को देख सकते हैं।
यह आंकड़ा Xiaoyin, चेंग से लिया गया था - विशेष रूप से अनुकूलित एचडीटीवी वीडियो कोडिंग, 2009 । आप दर-विकृति अनुकूलन प्रक्रिया में लैम्बडा के एक बहुस्तरीय गुणक के रूप में सोच सकते हैं ।
यदि आप एक मैक्रोब्लॉक लेते हैं और इसे कम क्यूपी के साथ एनकोड करते हैं, तो मूल छवि की तुलना में विरूपण ( डी ) कम होगा, लेकिन बिट दर ( आर ) उच्च होगा। इसी तरह, यदि आप एक उच्च QP चुनते हैं, तो विकृति अधिक होगी, लेकिन बिट दर कम होगी। तो, एक फ्रेम को संपीड़ित करने की लागत की गणना J = D + λR द्वारा की जाती है - और इस लागत को कम से कम करने की आवश्यकता है।
आपके विशिष्ट मामले में, मैं काफी हद तक निश्चित हूं कि enc->coded_frame->quality
एनकोडर से लैम्बडा मूल्यों को सौंपा गया है। FF_QP2LAMBDA
स्थिरांक के साथ आप लैंबडा इकाइयों में परिवर्तित कर सकते हैं, उदाहरण के लिए QP = 21 , फिर λ = 21 ×FF_QP2LAMBDA
। दूसरे तरीके से, आप QP = λ /FF_QP2LAMBDA
द्वारा QP प्राप्त करते हैं , जो कि आप आउटपुट में देख रहे हैं।
उदाहरण के लिए, H.264 में, मूल संबंध λ = 0.85 × 2 (QP-12) / 3 है । चूंकि QP मान 0 से 51 तक होता है, इसलिए आपको लैम्ब्डा मान 0.053 और 6,963.2 के बीच मिलता है - लेकिन FFmpeg, QP मानों को वैसे भी आउटपुट करेगा, जो लैम्ब्डा को वापस QP में परिवर्तित करता है।
अब, जब आप कहते हैं, "गुणवत्ता मूल्य की सीमा 1 से 32,767 है", तो आपका मतलब है कि संभावित लैंबडा मूल्यों की सीमा। चूंकि लैप्रिंजियन फ़ंक्शन केवल QP के कोडेड मैक्रोब्लॉक पर लागू होने के बाद ही चलन में आता है , इसलिए अधिकतम संख्या के लिए एक व्यावहारिक सीमा है जो coded_picture->quality
प्राप्त कर सकते हैं। उदाहरण के लिए, MPEG-4 भाग 2 में, QP मान 1-31 से जाते हैं, और जैसा मैंने ऊपर कहा, MPEG-4 भाग 10 में, यह 0–51 से है। बदले में, q=
सही क्यूपी को फिर से आउटपुट करेगा, क्योंकि संभव लैम्ब्डा मूल्य उस क्यूपी से सीमित हैं जिसे आपने पहले चुना था।