عن المشروع
libplacebo مكتبة مستقلة لخوارزميات معالجة الفيديو وعرضه المُسرّعة بواسطة GPU، نشأت أصلاً من mpv. صُممت لإخفاء تفاصيل برمجة GPU ومساحات الألوان والتنميط الفرعي وبيانات الصور خلف واجهات برمجية متعددة الطبقات، مع إبقاء التحكم على مستوى منخفض متاحاً للتطبيقات الأكبر.
تشمل قدرات العرض فيها تحسين التوسيع والانخفاض باستخدام مرشحات قطبية مثل Jinc، ومكافحة التشويه، وكبح الرنين، والتوسيع المصحح غالكتياً. وهي توفّر تحويل نغمة HDR ديناميكياً مع قياس هيستوغرام المشاهد في الوقت الفعلي، وكشف تغيير المشاهد، والتحكم في التعريض، وتمدّد مجال الألوان الإدراكي، واستعادة التباين. ويشمل دعم Dolby Vision تحويل Profile 5 إلى HDR/PQ أو SDR، وقراءة بيانات الجانب، وإعادة التشكيل عند بناؤه بالاعتماد على الحزمة ذات الصلة.
يدعم محرك إدارة الألوان رسمياً تمثيل مجال الألوان الناعم، وملفات ICC، ومحاكاة ITU-R BT.1886، والتعويض عند النقطة السوداء، وملفات LUT ثلاثية الأبعاد مخصصة بصيغة .cube. ويمكن لنظام الشفرات المخصص استيعاب شفرات GLSL أو شفرات mpv .hook، مما يتيح استخدام شفرات المستخدمين مثل RAVU وFSRCNNX وAnime4K. وتوفّر المكتبة أيضاً تركيب حبيبات الفيلم AV1 وH.274، وإزالة حواف التدرج، وإزالة الترقيم بنمط YADIF، والتخميط المصحح غالكتياً بما في ذلك انتشار الخطأ.
تشمل خلفيات الرسومات المدعومة Vulkan 1.2، بما فيها MoltenVK، وOpenGL مع GLSL 130 أو أحدث، وOpenGL ES 3.0 أو أحدث، وDirect3D 11 بمستوى ميزات 9_1 أو أحدث. وتُصدّر أيضاً واجهة وهمية مخصصة للوحيدة المعالجة المركزية. وتشمل المساعدات عالية المستوى pl_render_image والتكامل مع أطر الوسائط المعتمدة على AVFrame.
تنظّم واجهة API العامة إلى مستويات. يوفر المستوى 0 أدوات مساعدة للتسجيل، والتخزين المؤقت، ورياضيات مساحات الألوان، والمرشحات، وتحويل النغمة، وتمثيل مجال الألوان، والتخميط. ويوفر المستوى 1 تجريدات GPU وswapchain، إلى جانب تطبيقات Vulkan وOpenGL وD3D11 والواجهة الوهمية. ويكشف المستوى 2 توليد GLSL وإجراءات الشفرات الخاصة بتحويل مساحات الألوان، والشفرات المخصصة، وإزالة الترقيم، والتخميط، وحبيبات الفيلم، وملفات ICC، وLUTs، والعينة، وإزالة حواف التدرج، والتوسيع. بينما يقوم المستوى 3 بإرسال الشفرات الكاملة وتخزينها مؤقتاً، ويوفر المستوى 4 المحرك عالي المستوى، وإطار الخيارات، وصف الإطارات، ومساعد تحميل النسيج، والتكامل مع Dav1dPicture، والتكامل مع libav في FFmpeg.
يشمل المشروع برنامجاً تجريبياً باسم plplay، وأمثلة ضمن مجلّتي demos وtests. وقد اعتمدته VLC كمسار اختياري لإخراج الفيديو يعتمد على Vulkan، واعتمده FFmpeg كمرشح فيديو يعتمد على Vulkan.
يستخدم libplacebo نظام البناء Meson مع Ninja. ويجلب الاستنساخ المتكرر التبعيات المرفّقة، على الرغم من أن معظم التبعيات اختيارية. ومن المكونات الاختيارية المفيدة glslang أو shaderc، وlcms2، وlibdovi، ودعم Vulkan مع Python Jinja2 لتوليد الشفرات، ودعم OpenGL عبر glad2، وxxhash. وأهداف الاختبار والمعايير خيارات Meson قابلة للتكوين. وتوزّع المكتبة بموجب LGPLv2.1 أو أحدث، مع ملاحظة في README أنه يمكن النظر في ترخيص BSD2 أكثر تساهلاً لحالات استخدام محددة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.