قبل استخدام إطار عمل MediaPipe، تعرَّف على المفاهيم التالية.
الأساسيات
الحزمة
يشير ذلك المصطلح إلى وحدة تدفق البيانات الأساسية. تتكون الحزمة من طابع زمني رقمي ومؤشر مشترك لحمولة غير قابلة للتغيير. يمكن أن تكون الحمولة من أي نوع من أنواع C++ ، ويُشار أيضًا إلى نوع الحمولة باسم نوع الحزمة. الحزم عبارة عن فئات قيمة ويمكن نسخها بسعر زهيد. تشارك كل نسخة ملكية الحمولة، مع دلالات حساب المراجع. ولكل نسخة طابع زمني خاص بها. راجِع أيضًا حزمة.
رسم بياني للدالة
تتم معالجة MediaPipe داخل رسم بياني يحدد مسارات تدفق الحزم بين العُقد. يمكن أن يحتوي الرسم البياني على أي عدد من المدخلات والمخرجات، ويمكن أن يتفرع تدفق البيانات ويدمجه. بشكل عام تتدفق البيانات إلى الأمام، ولكن من الممكن استخدام التكرارات الحلقية للخلف. راجِع الرسوم البيانية لمزيد من التفاصيل.
العُقد
تنتج العُقد و/أو تستهلكها، وهي المكان الذي يتم فيه الجزء الأكبر من عمل الرسم البياني. تُعرف أيضًا باسم "الحاسبات"، لأسباب تاريخية. تحدِّد واجهة كل عقدة عددًا من ports الإدخال والإخراج، ويتم تحديدها بواسطة علامة و/أو فهرس. راجع الآلات الحاسبة لمزيد من التفاصيل.
عدد مرّات المشاهدة
البث هو اتصال بين نقطتين يحمل سلسلة من الحزم، والتي يجب أن تزيد طوابعها الزمنية بشكل رتيب.
الحزم الجانبية
يحمل اتصال الحزمة الجانبية بين العُقد حزمة واحدة (بطابع زمني غير محدد). ويمكن استخدامها لتوفير بعض البيانات التي ستظل ثابتة، في حين أن التدفق يمثل تدفقًا للبيانات التي تتغير بمرور الوقت.
منافذ الحزم
هناك نوع مرتبط بالمنفذ، وبالتالي يجب أن تكون الحزم التي تمر عبر المنفذ من هذا النوع. يمكن توصيل منفذ بث الإخراج بأي عدد من منافذ بث الإدخال من النوع نفسه، ويتلقى كل مستهلك نسخة منفصلة من حزم الإخراج، ويكون له قائمة انتظار خاصة به، حتى يتمكن من استهلاكها بالوتيرة التي تناسبه. وبالمثل، يمكن توصيل منفذ إخراج الحزمة الجانبية بأكبر عدد ممكن من منافذ إدخال الحزم الجانبية على النحو المطلوب.
قد يكون المنفذ مطلوبًا، ما يعني أنّه يجب إجراء اتصال حتى يكون الرسم البياني صالحًا أو اختياريًا، ما يعني أنّه قد يظل غير متصل.
الإدخال والإخراج
يمكن أن ينشأ تدفق البيانات من عُقد المصدر، التي ليس لها عمليات بث للإدخال، وتُنشئ حِزم البيانات تلقائيًا (على سبيل المثال، عن طريق القراءة من ملف)؛ أو من تدفقات إدخال الرسم البياني، التي تسمح لحِزم خلاصة التطبيق بتطبيق رسم بياني.
وبالمثل، هناك عُقد بالوعة تتلقى البيانات وتكتبها في وجهات مختلفة (على سبيل المثال، ملف ومخزن مؤقت في الذاكرة وما إلى ذلك)، ويمكن أيضًا لتطبيق أن يتلقى مخرجات من الرسم البياني باستخدام عمليات رد الاتصال.
سلوك وقت التشغيل
العمر الافتراضي للرسم البياني
بعد إعداد الرسم البياني، يمكن بدء ذلك لبدء معالجة البيانات، ويمكنه معالجة بث من حِزم البيانات حتى يتم إغلاق كل بث أو إلغاء الرسم البياني. وبعد ذلك، يمكن إتلاف الرسم البياني أو بدء عرضه مرة أخرى.
عمر العُقدة
هناك ثلاث طرق رئيسية منذ الإنشاء سيستدعيها إطار العمل على عقدة معيّنة:
- Open: يتم استدعاءه مرة واحدة قبل الطرق الأخرى. عند استدعائها، ستكون جميع حزم جانب الإدخال المطلوبة من العقدة متاحة.
- العملية: يتم استدعاء هذه العملية عدة مرات، عند توفّر مجموعة جديدة من المدخلات، وفقًا لسياسة إدخال العقدة.
- الإغلاق: يتم الاتصال مرة واحدة في النهاية.
بالإضافة إلى ذلك، يمكن لكل حاسبة تحديد الدالة الإنشائية والمدمرة، وهي مفيدة لإنشاء الموارد المستقلة عن البيانات التي تمت معالجتها.
سياسات الإدخال
تتمثّل سياسة الإدخال التلقائية في التجميع الحتمي للحِزم حسب الطابع الزمني. تتلقى العُقدة جميع المدخلات للطابع الزمني نفسه في الوقت نفسه، وذلك باستدعاء طريقة المعالجة الخاصة بها، ويتم استلام مجموعات الإدخالات المتتالية بترتيب الطابع الزمني. قد يتطلب ذلك تأخير معالجة بعض الحُزم إلى أن يتم استلام حزمة لها الطابع الزمني نفسه في جميع عمليات بث الإدخال، أو إلى ضمان عدم وصول حزمة ذات طابع زمني إلى مجموعات البث التي لم تتلقَّها.
تتوفر أيضًا سياسات أخرى، ويتم تنفيذها باستخدام نوع منفصل من المكوّنات يُعرف باسم enterStreamHandler.
راجع المزامنة للحصول على مزيد من التفاصيل.
أحداث البث في الوقت الفعلي
غالبًا ما تُستخدم الرسوم البيانية للحاسبة MediaPipe في معالجة مجموعات بث الفيديو أو الإطارات الصوتية للتطبيقات التفاعلية. عادةً ما يتم تشغيل كل حاسبة بمجرد إتاحة جميع حزم إدخالها لطابع زمني معين. تحتاج الحاسبات المستخدمة في الرسوم البيانية في الوقت الفعلي إلى تحديد حدود الطابع الزمني للمخرجات بناءً على حدود الطابع الزمني للإدخال، وذلك للسماح بجدولة الآلات الحاسبة لتنزيل البيانات على الفور. راجع مجموعات البث في الوقت الفعلي لمزيد من التفاصيل.