कॉन्टेक्स्ट-एडेप्टिव वेरिएबल-लेन्थ कोडिंग: Difference between revisions

From Vigyanwiki
(Created page with "{{More citations needed|date=December 2022}} संदर्भ-अनुकूली चर-लंबाई कोड | चर-लंबाई कोडिंग (CAVLC)...")
 
No edit summary
Line 1: Line 1:
{{More citations needed|date=December 2022}}
'''संदर्भ-एडेप्टिव वेरिएबल-लेन्थ कोडिंग''' '''(CAVLC)''' H.264/MPEG-4 AVC वीडियो एन्कोडिंग में उपयोग की जाने वाली [[एन्ट्रापी कोडिंग]] का एक रूप है। यह लगभग सभी एन्ट्रापी-कोडर्स की तरह एक स्वाभाविक रूप से [[दोषरहित संपीड़न]] तकनीक है। H.264/MPEG-4 AVC में, इसका उपयोग अवशिष्ट, ज़िग-ज़ैग ऑर्डर, ट्रांसफ़ॉर्म गुणांक के ब्लॉक को एनकोड करने के लिए किया जाता है। यह संदर्भ-आधारित अनुकूली बाइनरी अंकगणित कोडिंग (सीएबीएसी) का एक विकल्प है। सीएवीएलसी को सीएबीएसी की तुलना में डिकोड करने के लिए काफी कम प्रसंस्करण की आवश्यकता होती है, हालांकि यह आँकड़े को प्रभावी ढंग से संपीड़ित नहीं करता है। CAVLC सभी H.264 प्रोफाइल में समर्थित है, CABAC के विपरीत जो बेसलाइन और विस्तारित प्रोफाइल में समर्थित नहीं है।
 
संदर्भ-अनुकूली [[चर-लंबाई कोड]] | चर-लंबाई कोडिंग (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 गुणांक की संख्या का संकेत देता है।
* ज़िग-ज़ैग स्कैन के बाद उच्चतम गैर-शून्य गुणांक अक्सर +/− 1 के अनुक्रम होते हैं। CAVLC एक संहत तरीके से उच्च आवृत्ति +/−1 गुणांक की संख्या का संकेत देता है।
* पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या सहसंबद्ध है। गुणांकों की संख्या को लुक-अप तालिका का उपयोग करके एन्कोड किया गया है; लुक-अप तालिका का चुनाव पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या पर निर्भर करता है।
* पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या सहसंबद्ध है। गुणांकों की संख्या को लुक-अप तालिका का उपयोग करके एन्कोड किया गया है; लुक-अप तालिका का चुनाव पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या पर निर्भर करता है।
* गैर-शून्य गुणांक का स्तर (परिमाण) पुन: व्यवस्थित सरणी की शुरुआत में अधिक होता है (डीसी गुणांक के पास) और उच्च आवृत्तियों की ओर कम होता है। CAVLC हाल ही में कोडित स्तर परिमाण के आधार पर "स्तर" पैरामीटर के लिए VLC लुक-अप तालिका की पसंद को अनुकूलित करके इसका लाभ उठाता है।
* गैर-शून्य गुणांक का लेवल (परिमाण) पुन: व्यवस्थित सरणी की शुरुआत में अधिक होता है (डीसी गुणांक के पास) और उच्च आवृत्तियों की ओर कम होता है। CAVLC हाल ही में कोडित लेवल परिमाण के आधार पर "लेवल" पैरामीटर के लिए VLC लुक-अप तालिका की पसंद को अनुकूलित करके इसका लाभ उठाता है।


==कोडित तत्व==
==कोडित तत्व==
Line 16: Line 14:
{| class="wikitable"
{| class="wikitable"
|-
|-
!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
| 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
| प्रत्येक 4×4 या 2×2 ब्लॉक के लिए गुणांक डेटा
|}
|}


Line 42: Line 40:


{| class="wikitable floatright"
{| class="wikitable floatright"
! Element
! एलिमेन्ट
! Value
! मान
! Code
! कोड
|-
|-
| coeff_token
| coeff_token
Line 96: Line 94:


{| class="wikitable floatright"
{| class="wikitable floatright"
! Code
! कोड
! Element
! एलिमेन्ट
! Value
! मान
! Output array
! आउटपुट सरणी
|-
|-
| 0000100
| 0000100
Line 161: Line 159:
कुल गुणांक = 5 (उच्चतम आवृत्ति [4] से न्यूनतम आवृत्ति [0] तक अनुक्रमित)
कुल गुणांक = 5 (उच्चतम आवृत्ति [4] से न्यूनतम आवृत्ति [0] तक अनुक्रमित)


कुलशून्य = 3
टोटलज़ीरोस = 3


T1s = 3 (वास्तव में 4 अनुगामी हैं लेकिन केवल 3 को "विशेष" के रूप में एन्कोड किया जा सकता है
T1s = 3 (वास्तव में 4 अनुगामी हैं लेकिन केवल 3 को "विशेष" के रूप में एन्कोड किया जा सकता है)
मामला")


एन्कोडिंग:
एन्कोडिंग:

Revision as of 18:26, 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 को एनकोड करने के लिए किया जाता है।

4x4CAVLC.svg

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

यह भी देखें

बाहरी संबंध