הדרישות לגבי מדיה של SDV

מילות המפתח MUST,‏ MUST NOT,‏ SHOULD ו-STRONGLY RECOMMENDED בדף הזה צריכות להתפרש כמו שמתואר ב-RFC 2119.

מערכת אורחת (תמונת מכונה וירטואלית)

הדרישות שבקטע הזה חלות על מערכת האורחים.

זיכרון

המערכת צריכה לספק לפחות 2 GB של זיכרון לכל מכונה וירטואלית.

ממשקי בינאריים של אפליקציות

הטמעות במכשירים:

  • חייב להיות תואם לאחד או יותר מממשקי ה-ABI של Android NDK שהוגדרו.
  • חובה להשתמש באותו Android NDK ABI לכל תמונות מכונות וירטואליות באותו מכשיר.
  • חייבת להיות תאימות לקוד המקור (לדוגמה, תאימות לכותרת) ותאימות בינארית (לממשק ABI) לכל ספרייה נדרשת ברשימה הבאה.
  • חובה להפוך את כל הספריות הבאות, שמספקות ממשקי API מקוריים, לזמינות לאפליקציות של Software Defined Vehicle ‏ (SDV):

    • libc (C library)
    • libdl (dynamic linker)
    • libdrm.so (Direct Rendering Manager userspace library)
    • libgbm.so (ניהול כללי של מאגר נתונים זמני)
    • libEGL.so (native OpenGL surface management)
    • 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 Open Source Project (AOSP) במעלה הזרם.

גרפיקה

המערכת חייבת להשתמש ב-virtio-gpu לעיבוד גרפי עם שיפור מהירות באמצעות חומרה. הדרייבר בצד האורח צריך להשתמש ב-gfxstream לצורך רינדור.

קלט

מערכת האורחים חייבת לכלול תמיכה באירועי קלט שמועברים ממערכת המארח באמצעות virtio-input.

OpenGL ES

הטמעות במכשירים:

  • חייב לזהות בצורה נכונה את הגרסאות הנתמכות של OpenGL ES ‏ (1.1, ‏ 2.0, ‏ 3.0,‏ 3.1, ‏ 3.2) באמצעות ממשקי ה-API המקוריים.
  • חייבים לכלול תמיכה בכל ממשקי ה-API המקוריים התואמים לכל גרסה של OpenGL ES שהם תומכים בה.
  • חייב לתמוך ב-OpenGL ES 1.1 וב-2.0.
  • מומלץ מאוד לתמוך ב-OpenGL ES 3.1.
  • צריך לתמוך ב-OpenGL ES 3.2.
  • חובה לדווח באמצעות ממשקי ה-API המנוהלים של OpenGL ES וממשקי ה-API המקוריים על כל תוספי 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
    • ערוצים: מונו, סטריאו, הגדרות תקינות של ריבוי ערוצים עם עד שמונה ערוצים
    • תדירויות דגימה (ב-Hz):
      • ‫8,000, ‏11,025, ‏16,000, ‏22,050, ‏24,000, ‏32,000, ‏44,100, ‏48,000 בהגדרות הערוץ שצוינו קודם
      • ‫96,000 במונו ובסטריאו
  • הטמעות של מכשירים חייבות לאפשר הקלטה של תוכן אודיו גולמי. לפחות, הטמעות של מכשירים חייבות לתמוך במאפיינים הבאים:

    • פורמט: Linear PCM, ‏ 16 ביט
    • תדירויות דגימה: 8,000,‏ 11,025,‏ 16,000,‏ 44,100,‏ 48,000 Hz
    • ערוצים: מונו
  • הטמעות של מכשירים צריכות לאפשר לכידה של תוכן אודיו גולמי עם המאפיינים הבאים:

    • פורמט: Linear PCM, ‏ 16 ביט ו-24 ביט
    • תדירויות דגימה: 8000, ‏ 11025, ‏ 16000, ‏ 22050, ‏ 24000, ‏ 32000, ‏ 44100,‏ 48000 Hz
    • ערוצים: מספר הערוצים שווה למספר המיקרופונים במכשיר
  • הטמעות של מכשירים חייבות לספק תמיכה בהפעלה ובשמירה של אודיו דרך libtinyalsav2.so API, באמצעות מכשיר virtio-sound לגישה לחומרה, וחייבות לתמוך ב-ALSA API.

  • מקודדים ומפענחים של וידאו חייבים לתמוך לפחות באחד מפורמטי הצבעים YUV420 8:8:8 planar או semiplanar.

  • מפענחי וידאו ומקודדי וידאו חייבים לתמוך בקודק H.264 AVC.

  • הטמעות של מכשירים חייבות לתמוך בפרופיל הראשי של H.264 ברמה 3.1 ובפרופיל Baseline. התמיכה בסדר פרוסות שרירותי (ASO), בסדר גמיש של בלוקים גדולים (FMO) ובפרוסות מיותרות (RS) היא אופציונלית.

  • מקודדי וידאו:

    • חובה לתמוך בפרופילים של קידוד וידאו באיכות רגילה (SD) שמפורטים בטבלה הבאה.
    • צריכה להיות תמיכה בפרופילים של קידוד סרטונים באיכות HD, כמו שמופיע בטבלה הבאה.

      איכות רגילה (SD) איכות רגילה (SD) HD 720p HD 1080p
      רזולוציית הווידאו ‫320 x 240 px ‫720 x 480 פיקסלים ‫‎1280 x 720 פיקסלים ‫‎1,920 x 1,080 פיקסלים
      קצב פריימים של סרטון ‫20 פריימים לשנייה ‫30 פריימים לשנייה ‫30 פריימים לשנייה ‫30 פריימים לשנייה
      קצב העברת נתונים של סרטון ‫384 Kbps ‫2 Mbps ‫4 Mbps ‫10 Mbps
  • מפענחי וידאו:

    • חייב לתמוך בפרופילים של פענוח וידאו באיכות HD 720p שמופיעים בטבלה הבאה.
    • חובה לתמוך בפרופילים של פענוח וידאו באיכות HD 1080p שמופיעים בטבלה הבאה.

      איכות רגילה (SD) איכות רגילה (SD) HD 720p HD 1080p
      רזולוציית הווידאו ‫320 x 240 px ‫720 x 480 פיקסלים ‫‎1280 x 720 פיקסלים ‫‎1,920 x 1,080 פיקסלים
      קצב פריימים של סרטון ‫30 פריימים לשנייה ‫30 פריימים לשנייה ‫60 fps ‫30 פריימים לשנייה
      קצב העברת נתונים של סרטון ‫800 Kbps ‫2 Mbps ‫8 Mbps ‫20 Mbps
  • הטמעות במכשירים חייבות לספק תמיכה ברכיבי codec של מדיה באמצעות Video4Linux API.

  • הטמעות של מכשירים חייבות לספק גישה למפענח וידאו באמצעות חומרה באמצעות Video4Linux API.

  • כל מקודדי הווידאו והתמונות שמופעלת בהם האצת חומרה חייבים לתמוך בקידוד של פריימים ממצלמות החומרה. הטמעות של מכשירים חייבות לספק גישה לחומרה לקידוד ולפענוח של סרטונים באמצעות virtio-media.

  • הטמעות של מכשירים חייבות לספק גישה למצלמת וידאו באמצעות Video4Linux API.

מערכת המארח (היפר-ויז'ור וחומרה)

הדרישות שבקטע הזה חלות על מערכת המארח ועל סביבת ההיפר-ויז'ור.

וירטואליזציה

  • בנוסף למכשירי virtio שנדרשים בפרופיל הליבה, מערכת המארח חייבת לספק את הפריטים הבאים:
    • virtio-gpu: עבור GPU וירטואלי ותצוגה
    • virtio-input: להעברת אירועי קלט (לדוגמה, מגע, מקלדת)
    • virtio-sound: למכשירי אודיו וירטואליים
    • virtio-video או virtio-media: למכשירי קודק וידאו וירטואליים

קלט

  • המכשיר חייב לתמוך במכשירי קלט ולהעביר אירועים למערכות אורחות באמצעות virtio-input. המכשיר צריך לתמוך בקלט של מצביע, לחצן ובקר סיבובי.