ترميز متغير الطول متكيف مع السياق

يُعدّ ترميز الطول المتغير التكيفي مع السياق ( CAVLC ) أحد أشكال ترميز الإنتروبيا المستخدم في ترميز الفيديو H.264/MPEG-4 AVC . وهو تقنية ضغط غير ضائعة بطبيعتها ، كغيرها من تقنيات ترميز الإنتروبيا. في H.264/MPEG-4 AVC، يُستخدم لترميز كتل معاملات التحويل المتبقية ذات الترتيب المتعرج. وهو بديل لترميز الحساب الثنائي التكيفي مع السياق (CABAC). يتطلب CAVLC معالجة أقل بكثير لفك التشفير مقارنةً بـ CABAC، على الرغم من أنه لا يضغط البيانات بنفس الكفاءة. يدعم CAVLC جميع ملفات تعريف H.264، على عكس CABAC غير المدعوم في ملفي التعريف الأساسي والموسع.

تُستخدم خوارزمية CAVLC لترميز كتل معاملات التحويل المتبقية والمرتبة بشكل متعرج بحجم 4×4 (و2×2). صُممت CAVLC للاستفادة من عدة خصائص للكتل الكمية بحجم 4×4:

  • بعد التنبؤ والتحويل والتكميم، تكون الكتل عادةً متفرقة (تحتوي في الغالب على أصفار).
  • غالباً ما تكون أعلى المعاملات غير الصفرية بعد المسح المتعرج عبارة عن سلاسل من +/− 1. يشير CAVLC إلى عدد معاملات +/−1 عالية التردد بطريقة مختصرة.
  • يرتبط عدد المعاملات غير الصفرية في الكتل المتجاورة. ويتم ترميز عدد المعاملات باستخدام جدول بحث؛ ويعتمد اختيار جدول البحث على عدد المعاملات غير الصفرية في الكتل المتجاورة.
  • يميل مستوى (قيمة) المعاملات غير الصفرية إلى أن يكون أعلى في بداية المصفوفة المعاد ترتيبها (بالقرب من معامل التيار المستمر) وأقل باتجاه الترددات الأعلى. يستفيد برنامج CAVLC من ذلك عن طريق تعديل اختيار جدول البحث الخاص بتقنية VLC لمعامل "المستوى" بناءً على قيم المستويات المشفرة حديثًا.

العناصر المشفرة

تتضمن المعلمات التي يجب ترميزها وإرسالها الجدول التالي:

حدودوصف
نوع الكتلة الكبيرةطريقة التنبؤ لكل كتلة ماكرو مشفرة
نمط الكتلة المشفرةيشير إلى الكتل التي تحتوي على معاملات مشفرة داخل كتلة ماكرو
إطار مرجعي لمعاملات المُكمِّميتم إرسالها كقيمة دلتا من القيمة السابقة لـ QP
فهرس الإطار المرجعيتحديد الإطار (الأطر) المرجعي للتنبؤ المتبادل
متجه الحركةيتم إرسالها كفرق (mvd) من متجه الحركة المتوقع
البيانات المتبقيةبيانات المعاملات لكل كتلة 4×4 أو 2×2

أمثلة CAVLC

عنصرقيمةشفرة
رمز المعاملإجمالي المعاملات = 5، T1s = 30000100
إشارة T1 (4)+0
إشارة T1 (3)-1
إشارة T1 (2)-1
المستوى (1)+1 (استخدم Level_VLC0)1
المستوى (0)+3 (استخدم Level_VLC1)٠٠١٠
توتال زيروس3111
تشغيل_قبل(4)ZerosLeft=3; run_before=110
run_before(3)ZerosLeft=2; run_before=01
تشغيل_قبل(2)ZerosLeft=2; run_before=01
تشغيل_قبل(1)ZerosLeft=2; run_before=101
تشغيل_قبل(0)ZerosLeft=1; run_before=1لا حاجة إلى رمز؛ المعامل الأخير.
شفرةعنصرقيمةمصفوفة الإخراج
0000100رمز المعاملإجمالي المعاملات = 5، T1s = 3فارغ
0علامة T1+1
1علامة T1--1 ، 1
1علامة T1--1 ، -1، 1
1مستوى+11 ، -1، -1، 1
٠٠١٠مستوى+33 ، 1، -1، -1، 1
111توتال زيروس33، 1، -1، -1، 1
10تشغيل قبل13، 1، -1، -1، 0 ، 1
1تشغيل قبل03، 1، -1، -1، 0، 1
1تشغيل قبل03، 1، -1، -1، 0، 1
01تشغيل قبل10 ، 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، لذا يتم إدخال صفر آخر قبل أصغر معامل، مما يجعل مصفوفة الإخراج النهائية: 0، 3، 0، 1، -1، -1، 0، 1

انظر أيضاً

مراجع