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

From Vigyanwiki
(Created page with "{{More citations needed|date=December 2022}} संदर्भ-अनुकूली चर-लंबाई कोड | चर-लंबाई कोडिंग (CAVLC)...")
 
No edit summary
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{More citations needed|date=December 2022}}
'''कॉन्टेक्स्ट-एडेप्टिव वेरिएबल-लेन्थ कोडिंग''' '''(सीएवीएलसी)''' H.264/MPEG-4 AVC वीडियो एन्कोडिंग में उपयोग की जाने वाली [[एन्ट्रापी कोडिंग]] का एक रूप है। यह लगभग सभी एन्ट्रापी-कोडर्स की तरह एक स्वाभाविक रूप से [[दोषरहित संपीड़न]] तकनीक है। H.264/MPEG-4 AVC में, इसका उपयोग अवशिष्ट, ज़िग-ज़ैग ऑर्डर, ट्रांसफ़ॉर्म गुणांक के ब्लॉक को एनकोड करने के लिए किया जाता है। यह कॉन्टेक्स्ट-आधारित अनुकूली बाइनरी अंकगणित कोडिंग (सीएबीएसी) का एक विकल्प है। सीएवीएलसी को सीएबीएसी की तुलना में डिकोड करने के लिए काफी कम प्रसंस्करण की आवश्यकता होती है, चूंकि यह आँकड़े को प्रभावी ढंग से संपीड़ित नहीं करता है। सीएवीएलसी सभी H.264 प्रोफाइल में समर्थित है, CABAC के विपरीत जो बेसलाइन और विस्तारित प्रोफाइल में समर्थित नहीं है।


संदर्भ-अनुकूली [[चर-लंबाई कोड]] | चर-लंबाई कोडिंग (CAVLC) H.264/MPEG-4 AVC वीडियो एन्कोडिंग में उपयोग की जाने वाली [[एन्ट्रापी कोडिंग]] का एक रूप है। यह लगभग सभी एन्ट्रापी-कोडर्स की तरह एक स्वाभाविक रूप से [[दोषरहित संपीड़न]] तकनीक है। H.264/MPEG-4 AVC में, इसका उपयोग अवशिष्ट, ज़िग-ज़ैग ऑर्डर, ट्रांसफ़ॉर्म गुणांक के ब्लॉक को एनकोड करने के लिए किया जाता है। यह संदर्भ-आधारित अनुकूली बाइनरी अंकगणित कोडिंग (सीएबीएसी) का एक विकल्प है। सीएवीएलसी को सीएबीएसी की तुलना में डिकोड करने के लिए काफी कम प्रसंस्करण की आवश्यकता होती है, हालांकि यह डेटा को प्रभावी ढंग से संपीड़ित नहीं करता है। CAVLC सभी H.264 प्रोफाइल में समर्थित है, CABAC के विपरीत जो बेसलाइन और विस्तारित प्रोफाइल में समर्थित नहीं है।
सीएवीएलसी का उपयोग रूपांतरण गुणांक के अवशिष्ट, ज़िग-ज़ैग आदेशित 4×4 (और 2×2) ब्लॉक को एनकोड करने के लिए किया जाता है। सीएवीएलसी को परिमाणित 4×4 ब्लॉकों की कई विशेषताओं का लाभ उठाने के लिए डिज़ाइन किया गया है:


CAVLC का उपयोग रूपांतरण गुणांक के अवशिष्ट, ज़िग-ज़ैग आदेशित 4×4 (और 2×2) ब्लॉक को एनकोड करने के लिए किया जाता है। CAVLC को परिमाणित 4×4 ब्लॉकों की कई विशेषताओं का लाभ उठाने के लिए डिज़ाइन किया गया है:
* पूर्वानुमान, परिवर्तन और परिमाणीकरण के बाद, ब्लॉक सामान्यत: विरल होते हैं (ज्यादातर शून्य वाले)।
 
* ज़िग-ज़ैग स्कैन के बाद उच्चतम गैर-शून्य गुणांक अधिकांशत: +/− 1 के अनुक्रम होते हैं। सीएवीएलसी एक संहत तरीके से उच्च आवृत्ति +/−1 गुणांक की संख्या का संकेत देता है।
* भविष्यवाणी, परिवर्तन और परिमाणीकरण के बाद, ब्लॉक आमतौर पर विरल होते हैं (ज्यादातर शून्य वाले)।
* ज़िग-ज़ैग स्कैन के बाद उच्चतम गैर-शून्य गुणांक अक्सर +/− 1 के अनुक्रम होते हैं। CAVLC एक कॉम्पैक्ट तरीके से उच्च आवृत्ति +/−1 गुणांक की संख्या का संकेत देता है।
* पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या सहसंबद्ध है। गुणांकों की संख्या को लुक-अप तालिका का उपयोग करके एन्कोड किया गया है; लुक-अप तालिका का चुनाव पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या पर निर्भर करता है।
* पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या सहसंबद्ध है। गुणांकों की संख्या को लुक-अप तालिका का उपयोग करके एन्कोड किया गया है; लुक-अप तालिका का चुनाव पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या पर निर्भर करता है।
* गैर-शून्य गुणांक का स्तर (परिमाण) पुन: व्यवस्थित सरणी की शुरुआत में अधिक होता है (डीसी गुणांक के पास) और उच्च आवृत्तियों की ओर कम होता है। CAVLC हाल ही में कोडित स्तर परिमाण के आधार पर "स्तर" पैरामीटर के लिए VLC लुक-अप तालिका की पसंद को अनुकूलित करके इसका लाभ उठाता है।
* गैर-शून्य गुणांक का लेवल (परिमाण) पुन: व्यवस्थित सरणी के प्रारंभ में अधिक होता है (डीसी गुणांक के पास) और उच्च आवृत्तियों की ओर कम होता है। सीएवीएलसी हाल ही में कोडित लेवल परिमाण के आधार पर "लेवल" पैरामीटर के लिए VLC लुक-अप तालिका की पसंद को अनुकूलित करके इसका लाभ उठाता है।


==कोडित तत्व==
==कोडित तत्व==


जिन पैरामीटर्स को एन्कोड और ट्रांसमिट करने की आवश्यकता है उनमें निम्नलिखित तालिका शामिल है:
जिन पैरामीटर्स को एन्कोड और ट्रांसमिट करने की आवश्यकता है उनमें निम्नलिखित तालिका सम्मलित है:


{| 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 ब्लॉक के लिए गुणांक डेटा
|}
|}




==CAVLC उदाहरण==
==सीएवीएलसी उदाहरण==


{| 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 को "विशेष" के रूप में एन्कोड किया जा सकता है)
मामला")


एन्कोडिंग:
एन्कोडिंग:
Line 173: Line 170:
जैसा कि नीचे दिखाया गया है, आउटपुट ऐरे को डिकोड किए गए मानों से "निर्मित" किया गया है। प्रत्येक चरण में आउटपुट ऐरे में जोड़े गए मानों को रेखांकित किया गया है।
जैसा कि नीचे दिखाया गया है, आउटपुट ऐरे को डिकोड किए गए मानों से "निर्मित" किया गया है। प्रत्येक चरण में आउटपुट ऐरे में जोड़े गए मानों को रेखांकित किया गया है।


डिकोडर ने दो शून्य डाले हैं; हालाँकि, टोटलज़ीरोस 3 के बराबर है और इसलिए न्यूनतम गुणांक से पहले एक और 1 शून्य डाला जाता है, जिससे अंतिम आउटपुट सरणी बनती है: 0, 3, 0, 1, −1, −1, 0, 1
डिकोडर ने दो शून्य डाले हैं; चूंकि, टोटलज़ीरोस 3 के बराबर है और इसलिए न्यूनतम गुणांक से पहले एक और 1 शून्य डाला जाता है, जिससे अंतिम आउटपुट सरणी बनती है: 0, 3, 0, 1, −1, −1, 0, 1


==यह भी देखें==
==यह भी देखें==
Line 182: Line 179:
==बाहरी संबंध==
==बाहरी संबंध==
* [https://web.archive.org/web/20090126164755/http://vcodex.com/files/h264_vlc.pdf Context adaptive variable length coding tutorial (out of date)]
* [https://web.archive.org/web/20090126164755/http://vcodex.com/files/h264_vlc.pdf Context adaptive variable length coding tutorial (out of date)]
[[Category: दोषरहित संपीड़न एल्गोरिदम]] [[Category: एमपीईजी]] [[Category: वीडियो संपीड़न]]
 




{{comp-sci-stub}}
{{comp-sci-stub}}


 
[[Category:All stub articles]]
 
[[Category:Computer science stubs]]
[[Category: Machine Translated Page]]
[[Category:Created On 26/07/2023]]
[[Category:Created On 26/07/2023]]
[[Category:Machine Translated Page]]
[[Category:एमपीईजी]]
[[Category:दोषरहित संपीड़न एल्गोरिदम]]
[[Category:वीडियो संपीड़न]]

Latest revision as of 11:31, 12 August 2023

कॉन्टेक्स्ट-एडेप्टिव वेरिएबल-लेन्थ कोडिंग (सीएवीएलसी) H.264/MPEG-4 AVC वीडियो एन्कोडिंग में उपयोग की जाने वाली एन्ट्रापी कोडिंग का एक रूप है। यह लगभग सभी एन्ट्रापी-कोडर्स की तरह एक स्वाभाविक रूप से दोषरहित संपीड़न तकनीक है। H.264/MPEG-4 AVC में, इसका उपयोग अवशिष्ट, ज़िग-ज़ैग ऑर्डर, ट्रांसफ़ॉर्म गुणांक के ब्लॉक को एनकोड करने के लिए किया जाता है। यह कॉन्टेक्स्ट-आधारित अनुकूली बाइनरी अंकगणित कोडिंग (सीएबीएसी) का एक विकल्प है। सीएवीएलसी को सीएबीएसी की तुलना में डिकोड करने के लिए काफी कम प्रसंस्करण की आवश्यकता होती है, चूंकि यह आँकड़े को प्रभावी ढंग से संपीड़ित नहीं करता है। सीएवीएलसी सभी H.264 प्रोफाइल में समर्थित है, CABAC के विपरीत जो बेसलाइन और विस्तारित प्रोफाइल में समर्थित नहीं है।

सीएवीएलसी का उपयोग रूपांतरण गुणांक के अवशिष्ट, ज़िग-ज़ैग आदेशित 4×4 (और 2×2) ब्लॉक को एनकोड करने के लिए किया जाता है। सीएवीएलसी को परिमाणित 4×4 ब्लॉकों की कई विशेषताओं का लाभ उठाने के लिए डिज़ाइन किया गया है:

  • पूर्वानुमान, परिवर्तन और परिमाणीकरण के बाद, ब्लॉक सामान्यत: विरल होते हैं (ज्यादातर शून्य वाले)।
  • ज़िग-ज़ैग स्कैन के बाद उच्चतम गैर-शून्य गुणांक अधिकांशत: +/− 1 के अनुक्रम होते हैं। सीएवीएलसी एक संहत तरीके से उच्च आवृत्ति +/−1 गुणांक की संख्या का संकेत देता है।
  • पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या सहसंबद्ध है। गुणांकों की संख्या को लुक-अप तालिका का उपयोग करके एन्कोड किया गया है; लुक-अप तालिका का चुनाव पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या पर निर्भर करता है।
  • गैर-शून्य गुणांक का लेवल (परिमाण) पुन: व्यवस्थित सरणी के प्रारंभ में अधिक होता है (डीसी गुणांक के पास) और उच्च आवृत्तियों की ओर कम होता है। सीएवीएलसी हाल ही में कोडित लेवल परिमाण के आधार पर "लेवल" पैरामीटर के लिए VLC लुक-अप तालिका की पसंद को अनुकूलित करके इसका लाभ उठाता है।

कोडित तत्व

जिन पैरामीटर्स को एन्कोड और ट्रांसमिट करने की आवश्यकता है उनमें निम्नलिखित तालिका सम्मलित है:

मापदंड विवरण
मैक्रोब्लॉक प्रकार प्रत्येक कोडित मैक्रोब्लॉक के लिए पूर्वानुमान विधि
कोडित ब्लॉक पैटर्न इंगित करता है कि मैक्रोब्लॉक के भीतर कौन से ब्लॉक में कोडित गुणांक हैं
क्वांटाइज़र पैरामीटर कॉन्टेक्स्ट फ़्रेम QP के पिछले मान से डेल्टा मान के रूप में प्रेषित
कॉन्टेक्स्ट फ़्रेम सूचकांक अंतर-पूर्वानुमान के लिए कॉन्टेक्स्ट फ़्रेम की पहचान करें
मोशन वेक्टर अनुमानित गति वेक्टर से अंतर (एमवीडी) के रूप में प्रेषित
अवशिष्ट डेटा प्रत्येक 4×4 या 2×2 ब्लॉक के लिए गुणांक डेटा


सीएवीएलसी उदाहरण

एलिमेन्ट मान कोड
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

यह भी देखें

बाहरी संबंध