تعرض SDV Media الشاشات المتاحة لتطبيقات المصنّعين الأصليين للأجهزة باستخدام واجهة برمجة تطبيقات Linux DRM.
الشكل 1: التفاعل بين مكوّنات إدارة الحقوق الرقمية
مخزن مؤقت للإطارات هو مصدر لبيانات البكسل، ويتم الاحتفاظ بنسخة احتياطية منه في بعض مخازن الذاكرة المؤقتة المخصّصة خارجيًا.
الطائرة هي مصدر صور تستخدمه CRTC. وهي مرتبطة بمخزن مؤقت للإطارات، ويمكن أن تمثّل عرضًا تم اقتصاصه من المخزن المؤقت للإطارات.
تمثّل CRTC مسار عرض إجماليًا. ويمكنه دمج عدة طبقات لإنشاء الفيديو النهائي، وإرسال الناتج إلى عدة برامج ترميز.
يحوّل برنامج الترميز مخرجات الفيديو من CRTC إلى شكل مناسب لموصل معيّن.
يمثّل الموصّل موصّل شاشة متاحًا. على سبيل المثال، منفذ HDMI.
للحصول على وصف أكثر تفصيلاً، يُرجى الاطّلاع على:
مساحة عرض واجهة برمجة التطبيقات
توفّر شركة SDV Media واجهات إدارة الحقوق الرقمية (DRM) لنظام التشغيل Linux. مع أنّه يمكن استخدامها مباشرةً من خلال استدعاء النظام ioctl، ننصح باستخدام مكتبة مساعدة في مساحة المستخدم عند تطوير التطبيقات. على سبيل المثال:
-
drm-rscrate للغة Rust (يُنصح به)، libdrmللغة C/C++. يقدّمdrm-kmsصفحة الدليل نظرة عامة شاملة على واجهات برمجة التطبيقات واستخدامها.
إعداد العرض على شاشة واحدة
افتح جهاز إدارة الحقوق الرقمية (
/dev/dri/card*) واستخدِم واجهات برمجة تطبيقات إدارة الحقوق الرقمية في Linux، على سبيل المثال، من خلالlibdrm، في واصف الملف لاختيار الشاشة ووضعها.عادةً، يعرض نظام التشغيل المضيف جهازًا واحدًا فقط لوحدة معالجة الرسومات الافتراضية، ويظهر هذا الجهاز على النحو التالي:
/dev/dri/card0.تخصيص المخزن المؤقت الأمامي والخلفي باستخدام واجهة برمجة تطبيقات Linux DRM
يُنصح باستخدام
minigbmgbm_bo_create()والحصول على واصف ملف DMA-BUF باستخدامgbm_bo_get_fd().أنشِئ مخازن مؤقتة لإطارات GL تستند إلى المخازن المؤقتة المخصّصة.
أنشئ
EGLImageمن مخزن DRM المؤقت باستخدامeglCreateImageKHRمعEGL_LINUX_DMA_BUF_EXT(من إضافةEGL_EXT_image_dma_buf_import).أنشئ مادة GL واستخدِم
glEGLImageTargetTexture2DOES(من إضافةGL_OES_EGL_image) لضبط مساحة تخزين المادة علىEGLImageمن الخطوة السابقة.أنشِئ إطارًا مؤقتًا لـ GL واستخدِم
glFramebufferTexture2Dلضبط نسخ احتياطي للنسيج الذي تم إنشاؤه في الخطوة السابقة.
لعرض إطار:
اربط أحد مخازن الإطارات التي تم إنشاؤها في GL.
ارسم إطارًا باستخدام واجهات برمجة تطبيقات GLES العادية.
اعرض الإطار على الشاشة: استخدِم واجهة برمجة التطبيقات Linux DRM API (
drmModeAtomicCommit()) لإرسالDRM_MODE_PAGE_FLIP_EVENTمع واصف ملف DMA-BUF الذي يستخدمه إطار المخزن المؤقت GL المرتبط.
إنشاء ناتج فيديو من طبقات متعددة
بالنسبة إلى عملية إنشاء الطبقات المتعددة (اللوحات المتعددة) التي يتم تسريعها باستخدام الأجهزة، نعتمد على النظام المضيف الذي يعرض كل طبقة كأداة ربط منفصلة لإدارة الحقوق الرقمية (شاشة عرض افتراضية)، وربطها بالموقع الجغرافي أو مسار المعالجة الصحيحَين للأجهزة.
اطّلِع على مقالة إعداد العرض على شاشات متعددة لمعرفة التفاصيل.
إعداد العرض على شاشات متعددة
افتح جهاز
/dev/dri/card*DRM كما هو الحال في مسار العرض الفردي.تعرض هذه السمة قائمة بموصلات العرض المتاحة.
يتم عرض كل شاشة كموصل منفصل لإدارة الحقوق الرقمية (DRM) في جهاز إدارة الحقوق الرقمية.
لكل موصِّل شاشة:
اختَر جهاز تحكّم عن بُعد متوافقًا مع الموصّل. يتضمّن كل موصّل قائمة ببرامج الترميز المتاحة، ويشير كل برنامج ترميز إلى أنواع CRTC التي يمكن استخدامه معها. يتوفّر دائمًا جهاز تحكّم عن بُعد واحد على الأقل متوافق مع CRTC.
اختَر طائرة متوافقة مع هيئة CRTC.
إنشاء مخازن مؤقتة لإطارات إدارة الحقوق الرقمية (DRM) تستند إلى مخازن مؤقتة لوحدة معالجة الرسومات تبدو هذه العملية مماثلة لتلك الخاصة بخيار العرض الفردي.
وصِّل الطائرة وCRTC والموصّل، واضبط وضع الفيديو على CRTC.
يمكن ضبط وضع شاشات عرض متعددة في الوقت نفسه باستخدام واجهة برمجة التطبيقات الذرية لضبط خصائص إدارة الحقوق الرقمية التالية لكل موصّل وCRTC ومجموعة طائرات.
في ما يلي القائمة الكاملة بالسمات الضرورية:
الهدف الخاصية النوع الوصف رابط العلاقات CRTC_IDمعرّف CRTC معرّف CRTC المطلوب تعيينه للموصّل CRTC MODE_IDمعرّف Blob معرّف كائن ثنائي كبير الحجم خاص بموقع إلكتروني تم إنشاؤه باستخدام drmModeCreatePropertyBlob، ويحتوي على بنيةdrmModeModeInfoلوضع الفيديو المحدّدCRTC ACTIVEقيمة منطقية trueلوضع علامة "نشط" على CRTCطائرة FB_IDرقم تعريف مخزن الإطارات معرّف إطار العرض المؤقت لنظام إدارة الحقوق الرقمية (DRM) الذي سيتم عرضه على الشاشة طائرة SRC_Xصورة من البكسلات الإحداثي X لمستطيل الصورة المصدر لإطار التخزين المؤقت طائرة SRC_Yصورة من البكسلات الإحداثي Y لمستطيل الصورة المصدر في إطار المخزن المؤقت طائرة SRC_W16.16 fixed point عرض مستطيل صورة مصدر إطار العرض (وحدات البكسل التي تم نقلها إلى اليسار بمقدار 16 بت) طائرة SRC_H16.16 fixed point ارتفاع مستطيل صورة مصدر إطار العرض (وحدات البكسل التي تم نقلها إلى اليسار بمقدار 16 بت) طائرة CRTC_Xصورة من البكسلات الإحداثي السيني لمستطيل صورة الوجهة في CRTC طائرة CRTC_Yصورة من البكسلات الإحداثي Y لمستطيل صورة الوجهة في CRTC طائرة CRTC_Wصورة من البكسلات عرض مستطيل صورة الوجهة في CRTC طائرة CRTC_Hصورة من البكسلات ارتفاع مستطيل صورة وجهة CRTC أدخِل حلقة العرض:
انتظِر حدث تبديل الصفحة على CRTC قبل عرض الإطار التالي.
عرض إطار على الشاشة من خلال جدولة تبديل الصفحة لإطار CRTC+framebuffer معيّن