متطلبات الوسائط في "ميزة التحقّق من صحة المستندات"

يجب تفسير الكلمات الرئيسية MUST وMUST NOT وSHOULD وSTRONGLY RECOMMENDED الواردة في هذا المستند على النحو الموضّح في RFC 2119.

نظام الضيف (صورة الجهاز الافتراضي)

تنطبق المتطلبات الواردة في هذا القسم على نظام التشغيل الضيف.

الذاكرة

يجب أن يوفّر النظام ذاكرة بسعة 2 غيغابايت على الأقل لكل جهاز افتراضي.

واجهات التطبيق الثنائية

عمليات تنفيذ الجهاز:

  • يجب أن يكون متوافقًا مع واحد أو أكثر من واجهات التطبيق الثنائية (ABI) في Android NDK المحدّدة.
  • يجب استخدام واجهة التطبيق الثنائية (ABI) لحزمة تطوير البرامج (NDK) لنظام التشغيل Android نفسها لجميع صور الأجهزة الافتراضية على الجهاز نفسه.
  • يجب أن يكون متوافقًا مع المصدر (على سبيل المثال، متوافقًا مع العناوين) ومتوافقًا مع الرمز الثنائي (بالنسبة إلى واجهة التطبيق الثنائية) مع كل مكتبة مطلوبة في القائمة التالية.
  • يجب إتاحة جميع المكتبات التالية التي توفّر واجهات برمجة تطبيقات مدمجة للتطبيقات التي تعمل في البيئات الخاصة بـ SDV:
    • libc (مكتبة C)
    • libdl (رابط ديناميكي)
    • libdrm.so (مكتبة مساحة مستخدم Direct Rendering Manager)
    • libgbm.so (إدارة المخزن المؤقت العام)
    • libEGL.so (إدارة مساحة عرض OpenGL الأصلية)
    • libGLESv1_CM.so (OpenGL ES 1.x)
    • libGLESv2.so (OpenGL ES 2.0)
    • libGLESv3.so (OpenGL ES 3.x)
    • liblog (تسجيل البيانات على Android)
    • libtinyalsav2.so (تسجيل الصوت وتشغيله)
    • libvulkan.so (Vulkan)
  • يجب عدم إضافة أو إزالة الدوال البرمجية المتاحة للجميع في المكتبات الأصلية السابقة.
  • يجب تصدير جميع رموز الدوال في OpenGL ES 3.1 وAndroid Extension Pack، كما هو محدّد في NDK، من خلال مكتبة libGLESv3.so. يُرجى العِلم أنّه يجب توفُّر جميع الرموز، ولكن يقدّم OpenGL ES وصفًا أكثر تفصيلاً للمتطلبات المتعلقة بالحالات التي يُتوقّع فيها التنفيذ الكامل لكل دالة مقابلة.
  • يجب تصدير رموز وظائف Vulkan 1.1 الأساسية، بالإضافة إلى الإضافات VK_KHR_surface وVK_KHR_swapchain وVK_KHR_maintenance1 وVK_KHR_get_physical_device_properties2 من خلال مكتبة libvulkan.so. يُرجى العِلم أنّه على الرغم من ضرورة توفّر جميع الرموز، يوضّح Vulkan بالتفصيل متطلبات توقّع التنفيذ الكامل لكل وظيفة مقابلة.
  • يجب إنشاؤها باستخدام الرمز المصدر وملفات العناوين المتوفرة في مشروع مفتوح المصدر لنظام Android.

الرسومات

  • يجب أن يستخدم النظام virtio-gpu للرسومات المسرَّعة على الأجهزة. يجب أن يستخدم برنامج التشغيل على جانب الضيف gfxstream للعرض.

الإدخال

يجب أن يتضمّن نظام الضيف إمكانية معالجة أحداث الإدخال التي يتم إعادة توجيهها من النظام المضيف باستخدام virtio-input.

OpenGL ES

عمليات تنفيذ الجهاز:

  • يجب أن تحدّد بشكل صحيح إصدارات OpenGL ES المتوافقة (1.1 و2.0 و3.0 و3.1 و3.2) من خلال واجهات برمجة التطبيقات الأصلية.
  • يجب أن تتضمّن دعمًا لجميع واجهات برمجة التطبيقات الأصلية المتوافقة مع كل إصدار من OpenGL ES.
  • يجب أن يتوافق مع كلّ من OpenGL ES 1.1 و2.0.
  • يُنصح بشدة بأن تتوافق مع OpenGL ES 3.1.
  • يجب أن يتوافق مع OpenGL ES 3.2.
  • يجب الإبلاغ باستخدام واجهات برمجة التطبيقات المُدارة وواجهات برمجة التطبيقات الأصلية في OpenGL ES عن أي إضافات أخرى في OpenGL ES تم تنفيذها، ويجب عدم الإبلاغ عن سلاسل الإضافات التي لا تتوافق معها.
  • يجب أن تتوافق مع الإضافات التالية:
    • EGL_EXT_image_dma_buf_import
    • EGL_EXT_image_dma_buf_import_modifiers
    • EGL_KHR_fence_sync
    • EGL_KHR_image_base
    • EGL_KHR_wait_sync
    • GL_OES_EGL_image

يُنصح بشدة بأن تنفِّذ الأجهزة OpenGL ES باستخدام مكتبة ANGLE مع برنامج Vulkan.

Vulkan

عمليات تنفيذ الجهاز:

  • يُنصح بشدة بتوفير إمكانية استخدام Vulkan 1.3.
  • يجب ألا يتوافق مع إصدار مختلف من Vulkan (أي يجب أن يكون الجزء المختلف من إصدار Vulkan الأساسي صفرًا).
  • يجب أن تتوافق مع الإضافات التالية:
    • VK_ANDROID_external_memory_android_hardware_buffer
    • VK_EXT_external_memory_dma_buf
    • VK_EXT_queue_family_foreign
    • VK_KHR_external_memory_fd
    • VK_KHR_external_semaphore_fd

التوافق مع الوسائط المتعددة

  • يجب أن تسمح عمليات تنفيذ الأجهزة بتشغيل محتوى صوتي أولي يتضمّن الخصائص التالية:

    • تنسيقات المصدر: Linear PCM، و16 بت، و8 بت، وfloat
    • القنوات: أحادية، أو استريو، أو إعدادات صالحة لقنوات متعددة مع ما يصل إلى ثماني قنوات
    • معدّلات أخذ العيّنات (بالهرتز):
      • ‫8000 و11025 و16000 و22050 و24000 و32000 و44100 و48000 في إعدادات القنوات المذكورة سابقًا
      • ‫96000 في الصوت الأحادي والاستيريو
  • يجب أن تسمح عمليات تنفيذ الأجهزة بتسجيل محتوى صوتي أولي. ويجب أن تتوافق عمليات تنفيذ الأجهزة مع الخصائص التالية كحد أدنى:

    • التنسيق: Linear PCM، ‏16 بت
    • معدّلات البيانات في الملف الصوتي: 8000 و11025 و16000 و44100 و48000 هرتز
    • القنوات: أحادية
  • يجب أن تسمح عمليات تنفيذ الأجهزة بالتقاط محتوى صوتي أولي يتضمّن الخصائص التالية:

    • التنسيق: Linear PCM، ‏16 بت و24 بت
    • معدّلات أخذ العينات: 8000 و11025 و16000 و22050 و24000 و32000 و44100 و48000 هرتز
    • القنوات: عدد القنوات يساوي عدد الميكروفونات على الجهاز
  • يجب أن توفّر عمليات تنفيذ الأجهزة إمكانية تشغيل الصوت وتسجيله من خلال واجهة برمجة التطبيقات libtinyalsav2.so، وذلك باستخدام الجهاز virtio-sound للوصول إلى الأجهزة، ويجب أن تتوافق مع واجهة برمجة تطبيقات ALSA.

  • يجب أن تتوافق أجهزة ترميز الفيديو وفك ترميزه مع تنسيق ألوان YUV420 8:8:8 مسطّح أو شبه مسطّح واحد على الأقل.

  • يجب أن تتوافق برامج فك ترميز الفيديو وبرامج ترميز الفيديو مع برنامج ترميز H.264 AVC.

  • يجب أن تتوافق عمليات تنفيذ الأجهزة مع المستوى 3.1 من الملف الشخصي الرئيسي H.264 والملف الشخصي للمرجع. إنّ دعم ترتيب الشرائح العشوائي (ASO) وترتيب وحدات الماكرو المرن (FMO) والشرائح المكرّرة (RS) هو أمر اختياري.

  • برامج ترميز الفيديو:

    • يجب أن تتوافق مع ملفات تعريف ترميز الفيديو بالدقة العادية (SD) الواردة في الجدول أدناه.
    • يجب أن تتوافق مع ملفات ترميز الفيديو العالي الدقة (HD) كما هو موضّح في الجدول التالي.

      الدقة العادية (جودة منخفضة) الدقة العادية (جودة عالية) دقة عالية 720p دقة عالية 1080p
      درجة دقة الفيديو ‫320 × 240 بكسل ‫720 × 480 بكسل ‫1280 × 720 بكسل ‫‎1920 × 1080 بكسل
      عدد اللقطات في الثانية للفيديو ‫20 لقطة في الثانية ‫30 لقطة في الثانية ‫30 لقطة في الثانية ‫30 لقطة في الثانية
      معدل نقل بيانات الفيديو ‫384 كيلوبت في الثانية ‫2 ميغابت في الثانية ‫4 ميغابت في الثانية ‫10 ميغابت في الثانية
  • أدوات فك ترميز الفيديو:

    • يجب أن تتوافق مع ملفات فك ترميز الفيديو بدقة 720p عالية الدقة الواردة في الجدول التالي.
    • يجب أن تتوافق مع ملفات تعريف فك ترميز الفيديو بدقة 1080p عالية الوضوح الموضّحة في الجدول التالي.

      الدقة العادية (جودة منخفضة) الدقة العادية (جودة عالية) دقة عالية 720p دقة عالية 1080p
      درجة دقة الفيديو ‫320 × 240 بكسل ‫720 × 480 بكسل ‫1280 × 720 بكسل ‫‎1920 × 1080 بكسل
      عدد اللقطات في الثانية للفيديو ‫30 لقطة في الثانية ‫30 لقطة في الثانية ‫60 لقطة في الثانية ‫30 لقطة في الثانية
      معدل نقل بيانات الفيديو ‫800 كيلوبت في الثانية ‫2 ميغابت في الثانية ‫8 ميغابت في الثانية ‫20 ميغابت في الثانية
  • يجب أن توفّر عمليات تنفيذ الأجهزة إمكانية استخدام برامج ترميز الوسائط من خلال واجهة برمجة التطبيقات Video4Linux.

  • يجب أن توفّر عمليات تنفيذ الأجهزة إمكانية الوصول إلى برنامج فك ترميز الفيديو على الجهاز باستخدام واجهة برمجة التطبيقات Video4Linux.

  • يجب أن تتوافق جميع برامج ترميز الفيديو والصور المسرَّعة للأجهزة مع ترميز اللقطات من كاميرات الأجهزة. يجب أن توفّر عمليات تنفيذ الأجهزة إمكانية الوصول إلى الأجهزة لترميز الفيديو وفك ترميزه من خلال virtio-media.

  • يجب أن توفّر عمليات تنفيذ الأجهزة إمكانية الوصول إلى كاميرا فيديو باستخدام واجهة برمجة التطبيقات Video4Linux.

نظام المضيف (برنامج Hypervisor والأجهزة)

تنطبق المتطلبات الواردة في هذا القسم على نظام التشغيل الأساسي وبيئة برنامج مراقبة الأجهزة الافتراضية.

المحاكاة الافتراضية

  • بالإضافة إلى أجهزة virtio المطلوبة في الملف الشخصي الأساسي، يجب أن يوفّر نظام المضيف ما يلي:
    • virtio-gpu: لوحدة معالجة الرسومات الافتراضية والشاشة
    • virtio-input: لإعادة توجيه أحداث الإدخال (مثل اللمس أو لوحة المفاتيح)
    • virtio-sound: للأجهزة الصوتية الافتراضية
    • virtio-video أو virtio-media: لأجهزة ترميز الفيديو الافتراضية

الإدخال

  • يجب أن يتيح الجهاز استخدام أجهزة الإدخال وإعادة توجيه الأحداث إلى أنظمة الضيوف باستخدام virtio-input. ويجب أن يتيح الجهاز استخدام المؤشر والأزرار وأجهزة التحكّم الدوّارة.