कॉन्टेक्स्ट-एडेप्टिव वेरिएबल-लेन्थ कोडिंग: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
'''संदर्भ-एडेप्टिव वेरिएबल-लेन्थ कोडिंग''' '''(CAVLC)''' H.264/MPEG-4 AVC वीडियो एन्कोडिंग में उपयोग की जाने वाली [[एन्ट्रापी कोडिंग]] का एक रूप है। यह लगभग सभी एन्ट्रापी-कोडर्स की तरह एक स्वाभाविक रूप से [[दोषरहित संपीड़न]] तकनीक है। H.264/MPEG-4 AVC में, इसका उपयोग अवशिष्ट, ज़िग-ज़ैग ऑर्डर, ट्रांसफ़ॉर्म गुणांक के ब्लॉक को एनकोड करने के लिए किया जाता है। यह संदर्भ-आधारित अनुकूली बाइनरी अंकगणित कोडिंग (सीएबीएसी) का एक विकल्प है। सीएवीएलसी को सीएबीएसी की तुलना में डिकोड करने के लिए काफी कम प्रसंस्करण की आवश्यकता होती है, | '''संदर्भ-एडेप्टिव वेरिएबल-लेन्थ कोडिंग''' '''(CAVLC)''' H.264/MPEG-4 AVC वीडियो एन्कोडिंग में उपयोग की जाने वाली [[एन्ट्रापी कोडिंग]] का एक रूप है। यह लगभग सभी एन्ट्रापी-कोडर्स की तरह एक स्वाभाविक रूप से [[दोषरहित संपीड़न]] तकनीक है। H.264/MPEG-4 AVC में, इसका उपयोग अवशिष्ट, ज़िग-ज़ैग ऑर्डर, ट्रांसफ़ॉर्म गुणांक के ब्लॉक को एनकोड करने के लिए किया जाता है। यह संदर्भ-आधारित अनुकूली बाइनरी अंकगणित कोडिंग (सीएबीएसी) का एक विकल्प है। सीएवीएलसी को सीएबीएसी की तुलना में डिकोड करने के लिए काफी कम प्रसंस्करण की आवश्यकता होती है, चूंकि यह आँकड़े को प्रभावी ढंग से संपीड़ित नहीं करता है। CAVLC सभी H.264 प्रोफाइल में समर्थित है, CABAC के विपरीत जो बेसलाइन और विस्तारित प्रोफाइल में समर्थित नहीं है। | ||
CAVLC का उपयोग रूपांतरण गुणांक के अवशिष्ट, ज़िग-ज़ैग आदेशित 4×4 (और 2×2) ब्लॉक को एनकोड करने के लिए किया जाता है। CAVLC को परिमाणित 4×4 ब्लॉकों की कई विशेषताओं का लाभ उठाने के लिए डिज़ाइन किया गया है: | CAVLC का उपयोग रूपांतरण गुणांक के अवशिष्ट, ज़िग-ज़ैग आदेशित 4×4 (और 2×2) ब्लॉक को एनकोड करने के लिए किया जाता है। CAVLC को परिमाणित 4×4 ब्लॉकों की कई विशेषताओं का लाभ उठाने के लिए डिज़ाइन किया गया है: | ||
* पूर्वानुमान, परिवर्तन और परिमाणीकरण के बाद, ब्लॉक | * पूर्वानुमान, परिवर्तन और परिमाणीकरण के बाद, ब्लॉक सामान्यत: विरल होते हैं (ज्यादातर शून्य वाले)। | ||
* ज़िग-ज़ैग स्कैन के बाद उच्चतम गैर-शून्य गुणांक | * ज़िग-ज़ैग स्कैन के बाद उच्चतम गैर-शून्य गुणांक अधिकांशत: +/− 1 के अनुक्रम होते हैं। CAVLC एक संहत तरीके से उच्च आवृत्ति +/−1 गुणांक की संख्या का संकेत देता है। | ||
* पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या सहसंबद्ध है। गुणांकों की संख्या को लुक-अप तालिका का उपयोग करके एन्कोड किया गया है; लुक-अप तालिका का चुनाव पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या पर निर्भर करता है। | * पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या सहसंबद्ध है। गुणांकों की संख्या को लुक-अप तालिका का उपयोग करके एन्कोड किया गया है; लुक-अप तालिका का चुनाव पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या पर निर्भर करता है। | ||
* गैर-शून्य गुणांक का लेवल (परिमाण) पुन: व्यवस्थित सरणी | * गैर-शून्य गुणांक का लेवल (परिमाण) पुन: व्यवस्थित सरणी के प्रारंभ में अधिक होता है (डीसी गुणांक के पास) और उच्च आवृत्तियों की ओर कम होता है। CAVLC हाल ही में कोडित लेवल परिमाण के आधार पर "लेवल" पैरामीटर के लिए VLC लुक-अप तालिका की पसंद को अनुकूलित करके इसका लाभ उठाता है। | ||
==कोडित तत्व== | ==कोडित तत्व== | ||
जिन पैरामीटर्स को एन्कोड और ट्रांसमिट करने की आवश्यकता है उनमें निम्नलिखित तालिका | जिन पैरामीटर्स को एन्कोड और ट्रांसमिट करने की आवश्यकता है उनमें निम्नलिखित तालिका सम्मलित है: | ||
{| class="wikitable" | {| class="wikitable" | ||
| Line 170: | Line 170: | ||
जैसा कि नीचे दिखाया गया है, आउटपुट ऐरे को डिकोड किए गए मानों से "निर्मित" किया गया है। प्रत्येक चरण में आउटपुट ऐरे में जोड़े गए मानों को रेखांकित किया गया है। | जैसा कि नीचे दिखाया गया है, आउटपुट ऐरे को डिकोड किए गए मानों से "निर्मित" किया गया है। प्रत्येक चरण में आउटपुट ऐरे में जोड़े गए मानों को रेखांकित किया गया है। | ||
डिकोडर ने दो शून्य डाले हैं; | डिकोडर ने दो शून्य डाले हैं; चूंकि, टोटलज़ीरोस 3 के बराबर है और इसलिए न्यूनतम गुणांक से पहले एक और 1 शून्य डाला जाता है, जिससे अंतिम आउटपुट सरणी बनती है: 0, 3, 0, 1, −1, −1, 0, 1 | ||
==यह भी देखें== | ==यह भी देखें== | ||
Revision as of 19:27, 6 August 2023
संदर्भ-एडेप्टिव वेरिएबल-लेन्थ कोडिंग (CAVLC) H.264/MPEG-4 AVC वीडियो एन्कोडिंग में उपयोग की जाने वाली एन्ट्रापी कोडिंग का एक रूप है। यह लगभग सभी एन्ट्रापी-कोडर्स की तरह एक स्वाभाविक रूप से दोषरहित संपीड़न तकनीक है। H.264/MPEG-4 AVC में, इसका उपयोग अवशिष्ट, ज़िग-ज़ैग ऑर्डर, ट्रांसफ़ॉर्म गुणांक के ब्लॉक को एनकोड करने के लिए किया जाता है। यह संदर्भ-आधारित अनुकूली बाइनरी अंकगणित कोडिंग (सीएबीएसी) का एक विकल्प है। सीएवीएलसी को सीएबीएसी की तुलना में डिकोड करने के लिए काफी कम प्रसंस्करण की आवश्यकता होती है, चूंकि यह आँकड़े को प्रभावी ढंग से संपीड़ित नहीं करता है। CAVLC सभी H.264 प्रोफाइल में समर्थित है, CABAC के विपरीत जो बेसलाइन और विस्तारित प्रोफाइल में समर्थित नहीं है।
CAVLC का उपयोग रूपांतरण गुणांक के अवशिष्ट, ज़िग-ज़ैग आदेशित 4×4 (और 2×2) ब्लॉक को एनकोड करने के लिए किया जाता है। CAVLC को परिमाणित 4×4 ब्लॉकों की कई विशेषताओं का लाभ उठाने के लिए डिज़ाइन किया गया है:
- पूर्वानुमान, परिवर्तन और परिमाणीकरण के बाद, ब्लॉक सामान्यत: विरल होते हैं (ज्यादातर शून्य वाले)।
- ज़िग-ज़ैग स्कैन के बाद उच्चतम गैर-शून्य गुणांक अधिकांशत: +/− 1 के अनुक्रम होते हैं। CAVLC एक संहत तरीके से उच्च आवृत्ति +/−1 गुणांक की संख्या का संकेत देता है।
- पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या सहसंबद्ध है। गुणांकों की संख्या को लुक-अप तालिका का उपयोग करके एन्कोड किया गया है; लुक-अप तालिका का चुनाव पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या पर निर्भर करता है।
- गैर-शून्य गुणांक का लेवल (परिमाण) पुन: व्यवस्थित सरणी के प्रारंभ में अधिक होता है (डीसी गुणांक के पास) और उच्च आवृत्तियों की ओर कम होता है। CAVLC हाल ही में कोडित लेवल परिमाण के आधार पर "लेवल" पैरामीटर के लिए VLC लुक-अप तालिका की पसंद को अनुकूलित करके इसका लाभ उठाता है।
कोडित तत्व
जिन पैरामीटर्स को एन्कोड और ट्रांसमिट करने की आवश्यकता है उनमें निम्नलिखित तालिका सम्मलित है:
| मापदंड | विवरण |
|---|---|
| मैक्रोब्लॉक प्रकार | प्रत्येक कोडित मैक्रोब्लॉक के लिए पूर्वानुमान विधि |
| कोडित ब्लॉक पैटर्न | इंगित करता है कि मैक्रोब्लॉक के भीतर कौन से ब्लॉक में कोडित गुणांक हैं |
| क्वांटाइज़र पैरामीटर संदर्भ फ़्रेम | QP के पिछले मान से डेल्टा मान के रूप में प्रेषित |
| संदर्भ फ़्रेम सूचकांक | अंतर-पूर्वानुमान के लिए संदर्भ फ़्रेम की पहचान करें |
| मोशन वेक्टर | अनुमानित गति वेक्टर से अंतर (एमवीडी) के रूप में प्रेषित |
| अवशिष्ट डेटा | प्रत्येक 4×4 या 2×2 ब्लॉक के लिए गुणांक डेटा |
CAVLC उदाहरण
| एलिमेन्ट | मान | कोड |
|---|---|---|
| coeff_token | TotalCoeffs=5, T1s=3 | 0000100 |
| T1 sign (4) | + | 0 |
| T1 sign (3) | - | 1 |
| T1 sign (2) | - | 1 |
| Level (1) | +1 (use Level_VLC0) | 1 |
| Level (0) | +3 (use Level_VLC1) | 0010 |
| TotalZeros | 3 | 111 |
| run_before(4) | ZerosLeft=3; run_before=1 | 10 |
| run_before(3) | ZerosLeft=2; run_before=0 | 1 |
| run_before(2) | ZerosLeft=2; run_before=0 | 1 |
| run_before(1) | ZerosLeft=2; run_before=1 | 01 |
| run_before(0) | ZerosLeft=1; run_before=1 | No code required; last coefficient. |
| कोड | एलिमेन्ट | मान | आउटपुट सरणी |
|---|---|---|---|
| 0000100 | coeff_token | Total Coeffs=5, T1s=3 | Empty |
| 0 | T1 sign | + | 1 |
| 1 | T1 sign | - | −1, 1 |
| 1 | T1 sign | - | −1, −1, 1 |
| 1 | Level | +1 | 1, −1, −1, 1 |
| 0010 | Level | +3 | 3, 1, −1, −1, 1 |
| 111 | TotalZeros | 3 | 3, 1, −1, −1, 1 |
| 10 | run_before | 1 | 3, 1, −1, −1, 0, 1 |
| 1 | run_before | 0 | 3, 1, −1, −1, 0, 1 |
| 1 | run_before | 0 | 3, 1, −1, −1, 0, 1 |
| 01 | run_before | 1 | 3, 0, 1, −1, −1, 0, 1 |
निम्नलिखित सभी उदाहरणों में, हम मानते हैं कि तालिका Num-VLC0 का उपयोग coeff_token को एनकोड करने के लिए किया जाता है।
0, 3, 0, 1, −1, −1, 0, 1, 0…
कुल गुणांक = 5 (उच्चतम आवृत्ति [4] से न्यूनतम आवृत्ति [0] तक अनुक्रमित)
टोटलज़ीरोस = 3
T1s = 3 (वास्तव में 4 अनुगामी हैं लेकिन केवल 3 को "विशेष" के रूप में एन्कोड किया जा सकता है)
एन्कोडिंग:
इस ब्लॉक के लिए प्रेषित बिटस्ट्रीम 000010001110010111101101 है।
डिकोडिंग: जैसा कि नीचे दिखाया गया है, आउटपुट ऐरे को डिकोड किए गए मानों से "निर्मित" किया गया है। प्रत्येक चरण में आउटपुट ऐरे में जोड़े गए मानों को रेखांकित किया गया है।
डिकोडर ने दो शून्य डाले हैं; चूंकि, टोटलज़ीरोस 3 के बराबर है और इसलिए न्यूनतम गुणांक से पहले एक और 1 शून्य डाला जाता है, जिससे अंतिम आउटपुट सरणी बनती है: 0, 3, 0, 1, −1, −1, 0, 1
यह भी देखें
- उन्नत वीडियो कोडिंग#विशेषताएं|H.264 (एन्ट्रॉपी कोडिंग)
- आधार - सामग्री संकोचन
- दोषरहित संपीड़न
बाहरी संबंध