الخلاصة

  • حدّدت RFC 2343 حمولة BMPEG تتضمن شرائح فيديو كاملة وأطراً صوتية كاملة وخاتم صورة بتردد 90 kHz وطول الصوت وإزاحته الموقعة.
  • وصفت هذه الحقول ادعاء المرسل بشأن التغليف؛ أما الوصول الكامل وحالة decoder والتزامن الفعلي والإخراج ووجود الجمهور فاحتاجت إلى أدلة مستقلة.

حزمة تبدو كأنها برنامج كامل

كان شكل BMPEG مقنعاً. يأتي الفيديو أولاً، ثم صوت يكفي لتغطية مدة المقطع المرئي. يحدد رأس RTP ترتيب النقل وزمن الصورة ونهايتها. ويضيف الرأس الخاص نوع الصورة I أو P أو B، وما إذا تغيرت رؤوس MPEG، وعدد بايتات الصوت، والمسافة بين بداية الإطار الصوتي وخاتم الحزمة.

في بيئة VOD عام 1998، حقق ذلك فوائد مباشرة. يمكن للبرنامج استعمال منفذ واحد، ويمكن للخادم إرسال مادة مخزنة بصورة متداخلة من دون فصلها إلى جلستين. يقل عبء الرؤوس، وقد يصغر buffer المطلوب. قدّرت الوثيقة في مثال بسرعة 4 Mbps وفراً يقارب 1%.

سمّت RFC هذه العلاقة implicit synchronization. المقصود أن الحزمة تحمل إحداثيات مشتركة، لا أن جهازاً في الطرف الآخر قاس تزامن ما خرج من الشاشة والسماعة.

الكفاءة جاءت مقابل modularity

كانت RFC 2343 وثيقة Experimental وصرّحت بأنها لا تحدد Internet standard. اقترحت bundling عندما تستحق فوائده التضحية بفصل مساري الصوت والفيديو.

وحّدت البنية أيضاً مجال الفشل. فقدان حزمة قد يضر الصوت والصورة معاً. يصعب اختيار وسيط واحد بصورة مستقلة. وقد تصبح الحزمة الكبيرة عرضة لتجاوز path MTU والتجزئة في طبقة أدنى.

حذف BMPEG معلومات من طبقة MPEG systems عدّها مكررة مع RTP. لم تختف الوظائف التي كانت تؤديها؛ انتقلت مسؤوليتها إلى packetizer والمستقبل والتطبيق. يمكن لنظامين قبول البنية نفسها ثم الاختلاف في التخزين المؤقت أو إعادة الترتيب أو إخفاء الضرر.

وضع حدود التطبيق في مواضع معروفة

إذا ظهر Video_Sequence_Header وجب أن يبدأ الحمولة. يبدأ GOP_header الحمولة أو يتبع sequence header، ويبدأ Picture_Header الحمولة أو يتبع GOP. وكل حزمة تحتوي عدداً صحيحاً من video slices.

تجعل هذه القواعد نقطة الاستئناف أوضح، لكنها لا تمنع IP fragmentation. على التطبيق ضبط حجم الشرائح وعددها كي يبقى تحت MTU. وإذا تجاوزه، اعتمد التنسيق على التجزئة الأدنى، وهو ما قد يزيد أثر الفقد ويعقّد تصنيف RSVP.

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

قد يوافق parser على كل ذلك من دون أن يعرف أن fragment فُقد أو أن الصوت المكرر أصبح مسموعاً أو أن buffer فرغ قبل وصول المادة التالية.

الزمن المعلن ليس زمناً خرج من الجهاز

استخدم timestamp قيمة 32-bit بتردد 90 kHz لزمن أخذ عينة الصورة. تشترك كل حزم الصورة في القيمة، ويحدد Marker الحزمة التي تحتوي نهاية الصورة.

مع B pictures، يختلف ترتيب النقل عن ترتيب العرض، لذلك لا يلزم أن يكون timestamp متزايداً. وتستعير الحزم التي تحمل رؤوساً فقط زمن الصورة التالية. أما sequence number فيصف ترتيب النقل.

يسجل Audio Offset بعدد عينات موقع بداية الصوت نسبة إلى timestamp. عند 44.1 kHz يغطي نحو ±750 ms. اعترفت RFC بأن معدل فيديو منخفضاً جداً، مثل صورة واحدة في الثانية، قد يجعل المدى غير كافٍ.

لا يعاد ترتيب الصوت مع B pictures؛ يبقى في ترتيب النقل ويحدد offset موضع العرض المقصود. القيمة الصحيحة إحداثي للجدولة، وليست دليلاً على تحويل clock أو latency الجهاز أو تزامن ما سمعه وشاهده الإنسان.

كشف الضرر لم يستعد البيانات

تكشف الفجوات في sequence وtimestamp فقد الحزم، ويساعد slice number وموقع أول macroblock في تقدير النطاق. إذا اقتصر الفقد على صورة واحدة، قد يكرر decoder pixels من صورة سابقة. وقد يحقن صوتاً بديلاً مثل ضجيج الخلفية ليخفي الفراغ ويحافظ على lip-sync.

هذه استمرارية مصطنعة لا استعادة للمحتوى. البكسلات السابقة ليست المفقودة، والصوت البديل ليس التسجيل الأصلي.

يحذر N bit من تغير بيانات رؤوس sequence أو extension أو GOP أو picture. إذا ضاع state الجديد، قد يكون حذف البيانات حتى picture start جديد أكثر أماناً. وبعد فقد كثيف قد يلزم انتظار sequence header جديد.

لم يتضمن BMPEG عداد picture خاصاً مثل temporal reference المشار إليه في RFC 2250. قد يضيع GOP_header من دون اكتشاف، فتُفك B pictures التالية بصورة خاطئة. قابلية parsing لا تثبت صحة السياق.

بعد التنسيق بقيت سلسلة من الإيصالات

يلزم إثبات الوصول في الموعد، اكتمال fragments وحزم الصورة، صحة headers، نجاح decode، تحويل timestamps إلى مواعيد خرج، توافق clocks، نجاح renderer، وصول الصورة والصوت إلى hardware، وعدم mute أو hidden state، ثم وجود مشاهد فعلي.

RTP لا يحجز الموارد ولا يضمن QoS. قد تصل حزمة صالحة متأخرة. قد تعتمد صورة كاملة على state سابق مفقود. قد ينتج decoder إطاراً يسقطه renderer. وقد تقول الواجهة «playing» وهي في الخلفية. حتى الشاشة المضاءة قد تواجه مقعداً خالياً.

أهمية RFC 2343 التاريخية أنها رسمت بوضوح تصريح التغليف. هذا الوضوح يحدد نهاية سلطتها أيضاً: الحزمة تشهد على ترتيب البايتات، لا على تجربة المشاهدة.