कॉन्टेक्स्ट-एडेप्टिव वेरिएबल-लेन्थ कोडिंग
This article needs additional citations for verification. (December 2022) (Learn how and when to remove this template message) |
संदर्भ-अनुकूली चर-लंबाई कोड | चर-लंबाई कोडिंग (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 लुक-अप तालिका की पसंद को अनुकूलित करके इसका लाभ उठाता है।
कोडित तत्व
जिन पैरामीटर्स को एन्कोड और ट्रांसमिट करने की आवश्यकता है उनमें निम्नलिखित तालिका शामिल है:
| Parameters | Description |
|---|---|
| Macroblock type | Prediction method for each coded macroblock |
| Coded block pattern | Indicates which blocks within a macroblock contain coded coefficients |
| Quantizer parameter reference frame | Transmitted as a delta value from the previous value of QP |
| Reference frame index | Identify reference frame(s) for inter prediction |
| Motion vector | Transmitted as a difference (mvd) from predicted motion vector |
| Residual data | Coefficient data for each 4×4 or 2×2 block |
CAVLC उदाहरण
| Element | Value | Code |
|---|---|---|
| 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. |
| Code | Element | Value | Output array |
|---|---|---|---|
| 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 (एन्ट्रॉपी कोडिंग)
- आधार - सामग्री संकोचन
- दोषरहित संपीड़न
बाहरी संबंध