الخلاصة

  • تبدأ كل حمولة RTP من نوع CellB بأربع قيم غير موقّعة من 16 بت: إحداثيا X وY لأول خلية 4×4، ثم عرض الصورة وارتفاعها بالبكسل.
  • يجب أن تبقى كل شيفرة متعددة البايتات كاملة داخل حزمة واحدة. بعد فقد حزمة، تبدأ الحزمة السليمة التالية عند حد شيفرة معروف وتعلن موضعها في الصورة.
  • يحصر هذا التصميم أثر الفقد ولا يعيد البيانات الغائبة. ولا تثبت الإحداثيات أو الأبعاد أو الطابع الزمني المشترك أو علامة Marker اكتمال الخلايا أو تطابق جداول التكميم أو نجاح فك الترميز أو استمرارية العرض.

قد تُفقد من الفيديو المضغوط حزمة واحدة، لكن الضرر يمكن أن يتجاوز محتواها. فإذا بدأ ما بعدها في منتصف تعليمة، أو ضاع الموضع الذي يجب أن توضع فيه البايتات التالية، تصبح البيانات الواصلة لاحقاً بلا سياق كافٍ.

عالجت RFC 2029 هذه المشكلة في أكتوبر 1996 عند تعريف نقل CellB عبر RTP. لم تحاول الوثيقة اختراع الصورة التي اختفت. بل كررت في كل حزمة قدراً صغيراً من السياق حتى لا يبقى تفسيرها مرهوناً بنهاية الحزمة السابقة.

عنوان داخل الصورة في كل حمولة

يتكون رأس CellB من ثمانية بايتات: Cell X Location وCell Y Location وWidth of Image وHeight of Image. كل حقل عدد صحيح غير موقّع من 16 بت بترتيب بايتات الشبكة.

لا يقيس X وY عدد البكسلات، بل عدد الخلايا؛ وتمثل الخلية الواحدة كتلة من 4×4 بكسل. أما العرض والارتفاع فيقاسان بالبكسل. وهكذا تعرف الحزمة نقطة البداية على شبكة الخلايا وحدود اللوحة التي تنتمي إليها.

لا تتغير أبعاد الصورة إلا بين إطارين، ومع ذلك تُكرَّر في كل حزمة. فإذا ضاعت حمولة سابقة، لا يحتاج ما يليها إلى استرجاع الأبعاد منها. هذا التكرار البسيط يقلل اعتماد الحزم بعضها على بعض.

لكن الرأس إعلان من المرسل، لا شهادة اكتمال. فهو لا يسرد الخلايا المتوقع وصولها، ولا يثبت أن المساحة السابقة وصلت، أو أن الإحداثيات غير متداخلة، أو أن جميع أجزاء الصورة ستُغطّى. إنه يحدد أين يبدأ التفسير، لا ما إذا كانت الصورة كلها موجودة.

لا يجوز أن يقع حد الحزمة في منتصف تعليمة

يحتوي تيار CellB على شيفرات بأطوال مختلفة. تصف الشيفرة العادية، بطول أربعة بايتات، خلية واحدة. وتطلب شيفرة skip، بطول بايت واحد، تجاوز خلية إلى 32 خلية. وتعلن تعليمتان أخريان جدولاً جديداً من 512 بايت لقيم Y/Y أو U/V.

يختار المنفذ حجم الحزمة، وقد يصل إلى إطار كامل. غير أن RFC 2029 تشترط بقاء كل شيفرة متعددة البايتات في حزمة واحدة. فلا يمكن تقسيم شيفرة خلية من أربعة بايتات، ولا تحديث جدول، على حُزمتين.

نتيجة ذلك أن الحزمة الكاملة التي تصل بعد الفقد لا تبدأ بذيل تعليمة ضاع رأسها. حد الشيفرة يعيد السياق النحوي، والإحداثيات تعيد السياق المكاني. يستطيع المستقبِل أن يجد نقطة دخول جديدة.

هذا استئناف محلي، وليس استعادة للمحتوى. لا يضيف التنسيق إعادة إرسال أو تصحيح أخطاء أمامياً أو خلايا احتياطية. تبقى المنطقة التي حملتها الحزمة الضائعة مفقودة؛ الذي يتوقف هو انتشار الغموض تلقائياً إلى كل ما بعدها.

الطابع الزمني يجمع الحزم وMarker لا يحصيها

يستخدم CellB ساعة RTP بتردد 90 كيلوهرتز. تحمل حزم الإطار نفسه الطابع الزمني نفسه، وتحدد علامة Marker آخر حزمة فيه. بذلك تحصل الأجزاء المكانية على إطار زمني مشترك.

لكن الطابع الزمني لا يذكر عدد الحزم المطلوبة. وتقول Marker إن المرسل اعتبر هذه الحزمة الأخيرة، لا إن كل ما قبلها وصل. يستطيع رقم تسلسل RTP كشف فجوة والمساعدة في استعادة ترتيب الإرسال، بينما تنص مواصفة RTP الأساسية على أن البروتوكول لا يضمن التسليم أو الوصول في الوقت أو ترتيب الوصول أو جودة الخدمة.

قد تصل حزمة أخيرة بإحداثيات معقولة فيما تبقى فجوة في وسط الإطار. تثبت البيانات الوصفية كيفية وسم الحزمة الواصلة؛ ولا تثبت غياب الحزم المفقودة.

فقد جدول واحد قد يبقي المكان صحيحاً واللون خاطئاً

حقلا U/V وY/Y في شيفرة الخلية هما فهرسان إلى جدولي متجهات اللون والسطوع. لذلك تعتمد قيمة البكسلات على نسخة الجدول الموجودة لدى مفكك الترميز.

تصف RFC 2029 تعليمات تستبدل كل جدول بـ512 بايت جديدة. لم ينفذ زوج التشفير وفك التشفير النموذجي هذه الخاصية، لكن النص أتاحها لبرامج codec لاحقة. ويضمن منع التقسيم ألا يصل تحديث مقطوع بين حُزمتين.

أما إذا ضاعت حزمة التحديث كلها، فقد تصل الحزمة التالية عند حد صحيح، وبإحداثيات سليمة وطابع زمني متوقع، ثم تُفسَّر فهارسها بجدول قديم. يكون موضع الخلية معروفاً، فيما تكون قيمها اللونية غير صحيحة.

هذا استنتاج من بنيتين في الوثيقة، وليس رواية حادثة مسجلة فيها. وهو يوضح حدود الاستقلال: تستطيع الحزمة أن تستقل في موضعها وبداية شيفرتها، من دون أن تستقل عن كل تغيير سابق في حالة المفكك.

ما بين الحزمة والمشاهدة سلسلة من الأدلة

ينبغي فصل أربع طبقات عند التحقيق: أرقام التسلسل للنقل، وإحداثيات X/Y والأبعاد للمكان المعلن، وحدود الشيفرة لصحة البداية النحوية، والطابع الزمني وMarker للانتماء إلى الإطار ونهايته المعلنة.

بعدها تأتي نسخة جداول التكميم، ونتيجة مفكك الترميز، وتغطية الصورة، وتوقيت العرض، وما ظهر على الجهاز النهائي. لا يمكن الادعاء بإطار كامل من دون الحمولات الفعلية وخريطة التغطية، ولا الادعاء ببكسلات صحيحة من دون حالة الجداول وخرج المفكك، ولا الادعاء بجودة المشاهدة من دون قياس عند الطرف.

لا يزال سجل IANA يدرج CelB بوصفه نوع حمولة RTP ثابتاً رقم 25 للفيديو عند 90,000 هرتز، مع إحالة إلى RFC 2029. يثبت ذلك تخصيص المعلمة، لا وجود حركة حديثة أو انتشار عملي. كما أن بقاء الوثيقة في حالة Proposed Standard لا يثبت نجاح تنفيذ بعينه.

كانت قيمة RFC 2029 التاريخية محددة: أعطت الحزمة السليمة التالية موضعاً ونقطة شيفرة يمكن العودة إليهما. جعلت أثر الفقد قابلاً للحصر، لا قابلاً للمحو. وهذه هي أيضاً قاعدة قراءة الدليل: معرفة مكان الكتلة التالية لا تعني معرفة أن الصورة وصلت كاملة.

المصادر