SDV মিডিয়া প্রয়োজনীয়তা

এই নথিতে ব্যবহৃত MUST, MUST NOT, SHOULD, এবং STRONGLY RECOMMENDED কীওয়ার্ডগুলোকে RFC 2119- এ বর্ণিত নিয়ম অনুযায়ী ব্যাখ্যা করতে হবে।

গেস্ট সিস্টেম (ভিএম ইমেজ)

এই বিভাগের শর্তাবলী গেস্ট সিস্টেমের ক্ষেত্রে প্রযোজ্য।

স্মৃতি

সিস্টেমটিকে অবশ্যই প্রতিটি ভিএম-এর জন্য ন্যূনতম ২ জিবি মেমরি সরবরাহ করতে হবে।

অ্যাপ্লিকেশন বাইনারি ইন্টারফেস

ডিভাইস বাস্তবায়ন:

  • এক বা একাধিক সংজ্ঞায়িত অ্যান্ড্রয়েড এনডিকে এবিআই (ABI)-এর সাথে অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে।
  • একই ডিভাইসের সমস্ত VM ইমেজের জন্য অবশ্যই একই Android NDK ABI ব্যবহার করতে হবে।
  • নিম্নলিখিত তালিকার প্রতিটি প্রয়োজনীয় লাইব্রেরির সাথে অবশ্যই সোর্স সামঞ্জস্যপূর্ণ (যেমন, হেডার সামঞ্জস্যপূর্ণ) এবং বাইনারি সামঞ্জস্যপূর্ণ (ABI-এর জন্য) হতে হবে।
  • অবশ্যই নিম্নলিখিত সমস্ত লাইব্রেরি, যেগুলো নেটিভ এপিআই প্রদান করে, এসডিভি অ্যাপের জন্য উপলব্ধ করতে হবে:
    • libc (সি লাইব্রেরি)
    • libdl (ডাইনামিক লিঙ্কার)
    • libdrm.so (ডাইরেক্ট রেন্ডারিং ম্যানেজার ইউজারস্পেস লাইব্রেরি)
    • 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 (অ্যান্ড্রয়েড লগিং)
    • libtinyalsav2.so (অডিও রেকর্ডিং এবং প্লেব্যাক)
    • libvulkan.so (ভুলকান)
  • পূর্ববর্তী নেটিভ লাইব্রেরিগুলির পাবলিক ফাংশনগুলি যোগ বা অপসারণ করা যাবে না।
  • অবশ্যই NDK-তে সংজ্ঞায়িত সমস্ত OpenGL ES 3.1 এবং Android Extension Pack ফাংশন সিম্বল libGLESv3.so লাইব্রেরির মাধ্যমে এক্সপোর্ট করতে হবে। উল্লেখ্য যে, যদিও সমস্ত সিম্বল অবশ্যই উপস্থিত থাকতে হবে, OpenGL ES আরও বিস্তারিতভাবে বর্ণনা করে যে কখন প্রতিটি সংশ্লিষ্ট ফাংশনের সম্পূর্ণ ইমপ্লিমেন্টেশন প্রত্যাশিত।
  • libvulkan.so লাইব্রেরির মাধ্যমে অবশ্যই কোর ভলকান ১.১ ফাংশন সিম্বলগুলো, সেইসাথে VK_KHR_surface , VK_KHR_swapchain , VK_KHR_maintenance1 , এবং VK_KHR_get_physical_device_properties2 এক্সটেনশনগুলো এক্সপোর্ট করতে হবে। উল্লেখ্য যে, যদিও সমস্ত সিম্বল অবশ্যই উপস্থিত থাকতে হবে, ভলকান আরও বিস্তারিতভাবে বর্ণনা করে যে কখন প্রতিটি সংশ্লিষ্ট ফাংশনের সম্পূর্ণ বাস্তবায়ন প্রত্যাশিত।
  • আপস্ট্রিম অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্টে উপলব্ধ সোর্স কোড এবং হেডার ফাইল ব্যবহার করে এটি বিল্ড করা উচিত।

গ্রাফিক্স

  • হার্ডওয়্যার-অ্যাক্সিলারেটেড গ্রাফিক্সের জন্য সিস্টেমে অবশ্যই virtio-gpu ব্যবহার করতে হবে। রেন্ডারিংয়ের জন্য গেস্ট-সাইড ড্রাইভারের gfxstream ব্যবহার করা উচিত।

ইনপুট

গেস্ট সিস্টেমে অবশ্যই virtio-input ব্যবহার করে হোস্ট সিস্টেম থেকে ফরোয়ার্ড করা ইনপুট ইভেন্টগুলির জন্য সমর্থন অন্তর্ভুক্ত থাকতে হবে।

ওপেনজিএল ইএস

ডিভাইস বাস্তবায়ন:

  • নেটিভ এপিআই-এর মাধ্যমে সমর্থিত OpenGL ES সংস্করণগুলো (1.1, 2.0, 3.0, 3.1, 3.2) অবশ্যই সঠিকভাবে শনাক্ত করতে হবে।
  • তাদের সমর্থিত প্রতিটি OpenGL ES সংস্করণের জন্য সংশ্লিষ্ট সমস্ত নেটিভ API-এর সমর্থন অবশ্যই অন্তর্ভুক্ত করতে হবে।
  • অবশ্যই OpenGL ES 1.1 এবং 2.0 উভয়কেই সমর্থন করতে হবে।
  • OpenGL ES 3.1 সমর্থন করার জন্য জোরালোভাবে সুপারিশ করা হচ্ছে।
  • OpenGL ES 3.2 সমর্থন করা উচিত।
  • তাদের দ্বারা বাস্তবায়িত OpenGL ES পরিচালিত API ও নেটিভ 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

ডিভাইস ইমপ্লিমেন্টেশনগুলোর জন্য ANGLE লাইব্রেরি ও Vulkan ব্যাকএন্ড ব্যবহার করে OpenGL ES প্রয়োগ করার জন্য জোরালোভাবে সুপারিশ করা হচ্ছে।

ভলকান

ডিভাইস বাস্তবায়ন:

  • Vulkan 1.3-এর জন্য সমর্থন অন্তর্ভুক্ত করার জন্য জোরালোভাবে সুপারিশ করা হচ্ছে।
  • কোনো ভলকান ভ্যারিয়েন্ট সংস্করণ সমর্থন করা যাবে না (অর্থাৎ, ভলকান কোর সংস্করণের ভ্যারিয়েন্ট অংশটি অবশ্যই শূন্য হতে হবে)।
  • নিম্নলিখিত এক্সটেনশনগুলিকে অবশ্যই সমর্থন করতে হবে:
    • 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

মাল্টিমিডিয়া সামঞ্জস্যতা

  • ডিভাইস বাস্তবায়নে অবশ্যই নিম্নলিখিত বৈশিষ্ট্যসহ র অডিও কন্টেন্ট প্লেব্যাকের অনুমতি থাকতে হবে:

    • উৎস ফরম্যাট: লিনিয়ার পিসিএম, ১৬-বিট, ৮-বিট, ফ্লোট
    • চ্যানেল: মনো, স্টেরিও, আটটি চ্যানেল পর্যন্ত কার্যকর মাল্টিচ্যানেল কনফিগারেশন।
    • স্যাম্পলিং রেট (হার্টজ এককে):
      • পূর্বে তালিকাভুক্ত চ্যানেল কনফিগারেশনগুলিতে 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000
      • মনো এবং স্টেরিওতে ৯৬০০০
  • ডিভাইস ইমপ্লিমেন্টেশনে অবশ্যই র অডিও কন্টেন্ট ক্যাপচার করার সুবিধা থাকতে হবে। ন্যূনতমভাবে, ডিভাইস ইমপ্লিমেন্টেশনে অবশ্যই নিম্নলিখিত বৈশিষ্ট্যগুলো থাকতে হবে:

    • ফরম্যাট: লিনিয়ার পিসিএম, ১৬-বিট
    • স্যাম্পলিং রেট: ৮০০০, ১১০২৫, ১৬০০০, ৪৪১০০, ৪৮০০০ হার্টজ
    • চ্যানেল: মোনো
  • ডিভাইস বাস্তবায়নে নিম্নলিখিত বৈশিষ্ট্যসহ র অডিও কন্টেন্ট ক্যাপচার করার সুবিধা থাকা উচিত:

    • ফরম্যাট: লিনিয়ার পিসিএম, ১৬-বিট এবং ২৪-বিট
    • স্যাম্পলিং রেট: ৮০০০, ১১০২৫, ১৬০০০, ২২০৫০, ২৪০০০, ৩২০০০০, ৪৪১০০, ৪৮০০০ হার্টজ
    • চ্যানেল: ডিভাইসে থাকা মাইক্রোফোনের সংখ্যার সমান সংখ্যক চ্যানেল।
  • ডিভাইস ইমপ্লিমেন্টেশনগুলোকে অবশ্যই libtinyalsav2.so API-এর মাধ্যমে অডিও প্লেব্যাক ও ক্যাপচারের সুবিধা দিতে হবে, হার্ডওয়্যার অ্যাক্সেসের জন্য virtio-sound ডিভাইস ব্যবহার করতে হবে এবং অবশ্যই ALSA API সাপোর্ট করতে হবে।

  • ভিডিও এনকোডার এবং ডিকোডারকে অবশ্যই প্ল্যানার অথবা সেমিপ্ল্যানার YUV420 8:8:8 কালার ফরম্যাটের মধ্যে অন্তত একটিকে সাপোর্ট করতে হবে।

  • ভিডিও ডিকোডার এবং এনকোডারকে অবশ্যই H.264 AVC কোডেক সমর্থন করতে হবে।

  • ডিভাইস ইমপ্লিমেন্টেশনকে অবশ্যই H.264 মেইন প্রোফাইল লেভেল ৩.১ এবং বেসলাইন প্রোফাইল সাপোর্ট করতে হবে। আর্বিট্রারি স্লাইস অর্ডারিং (ASO), ফ্লেক্সিবল ম্যাক্রোব্লক অর্ডারিং (FMO), এবং রিডানড্যান্ট স্লাইস (RS)-এর সাপোর্ট ঐচ্ছিক।

  • ভিডিও এনকোডার:

    • নিম্নলিখিত সারণীতে উল্লিখিত স্ট্যান্ডার্ড ডেফিনিশন (SD) ভিডিও এনকোডিং প্রোফাইলগুলো অবশ্যই সমর্থন করতে হবে।
    • নিম্নলিখিত সারণীতে নির্দেশিত হাই ডেফিনিশন (HD) ভিডিও এনকোডিং প্রোফাইলগুলো সমর্থন করা উচিত।

      এসডি (নিম্ন মানের) এসডি (উচ্চ গুণমান) এইচডি ৭২০পি এইচডি ১০৮০পি
      ভিডিও রেজোলিউশন ৩২০ x ২৪০ পিক্সেল ৭২০ x ৪৮০ পিক্সেল ১২৮০ x ৭২০ পিক্সেল ১৯২০ x ১০৮০ পিক্সেল
      ভিডিও ফ্রেম রেট ২০ এফপিএস ৩০ এফপিএস ৩০ এফপিএস ৩০ এফপিএস
      ভিডিও বিটরেট ৩৮৪ কেবিপিএস ২ এমবিপিএস ৪ এমবিপিএস ১০ এমবিপিএস
  • ভিডিও ডিকোডার:

    • নিম্নলিখিত সারণীতে উল্লিখিত HD 720p ভিডিও ডিকোডিং প্রোফাইলগুলো অবশ্যই সমর্থন করতে হবে।
    • নিম্নলিখিত সারণীতে উল্লিখিত HD 1080p ভিডিও ডিকোডিং প্রোফাইলগুলো অবশ্যই সমর্থন করতে হবে।

      এসডি (নিম্ন মানের) এসডি (উচ্চ গুণমান) এইচডি ৭২০পি এইচডি ১০৮০পি
      ভিডিও রেজোলিউশন ৩২০ x ২৪০ পিক্সেল ৭২০ x ৪৮০ পিক্সেল ১২৮০ x ৭২০ পিক্সেল ১৯২০ x ১০৮০ পিক্সেল
      ভিডিও ফ্রেম রেট ৩০ এফপিএস ৩০ এফপিএস ৬০ এফপিএস ৩০ এফপিএস
      ভিডিও বিটরেট ৮০০ কেবিপিএস ২ এমবিপিএস ৮ এমবিপিএস ২০ এমবিপিএস
  • ডিভাইস বাস্তবায়নে অবশ্যই Video4Linux API ব্যবহার করে মিডিয়া কোডেকগুলির জন্য সমর্থন প্রদান করতে হবে।

  • ডিভাইস ইমপ্লিমেন্টেশনগুলোকে অবশ্যই Video4Linux API ব্যবহার করে একটি হার্ডওয়্যার ভিডিও ডিকোডারে অ্যাক্সেসের সুযোগ দিতে হবে।

  • সমস্ত হার্ডওয়্যার অ্যাক্সিলারেটেড ভিডিও এবং ইমেজ এনকোডারকে অবশ্যই হার্ডওয়্যার ক্যামেরা থেকে ফ্রেম এনকোড করা সমর্থন করতে হবে। ডিভাইস ইমপ্লিমেন্টেশনকে অবশ্যই virtio-media মাধ্যমে ভিডিও এনকোডিং এবং ডিকোডিংয়ের জন্য হার্ডওয়্যার অ্যাক্সেস প্রদান করতে হবে।

  • ডিভাইস বাস্তবায়নে অবশ্যই Video4Linux API ব্যবহার করে একটি ভিডিও ক্যামেরায় অ্যাক্সেসের সুবিধা থাকতে হবে।

হোস্ট সিস্টেম (হাইপারভাইজর এবং হার্ডওয়্যার)

এই বিভাগের প্রয়োজনীয়তাগুলো হোস্ট সিস্টেম এবং হাইপারভাইজর এনভায়রনমেন্টের ক্ষেত্রে প্রযোজ্য।

ভার্চুয়ালাইজেশন

  • কোর প্রোফাইলের জন্য প্রয়োজনীয় virtio ডিভাইসগুলো ছাড়াও, হোস্ট সিস্টেমকে অবশ্যই নিম্নলিখিত বিষয়গুলো সরবরাহ করতে হবে:
    • virtio-gpu : ভার্চুয়াল জিপিইউ এবং ডিসপ্লের জন্য
    • virtio-input : ইনপুট ইভেন্ট (যেমন, টাচ, কিবোর্ড) ফরোয়ার্ড করার জন্য।
    • virtio-sound : ভার্চুয়াল অডিও ডিভাইসগুলির জন্য
    • virtio-video বা virtio-media : ভার্চুয়াল ভিডিও কোডেক ডিভাইসগুলির জন্য

ইনপুট

  • ডিভাইসটিকে অবশ্যই ইনপুট ডিভাইস সমর্থন করতে হবে এবং virtio-input ব্যবহার করে গেস্ট সিস্টেমে ইভেন্ট ফরোয়ার্ড করতে হবে। ডিভাইসটিতে পয়েন্টার, বাটন এবং রোটারি কন্ট্রোলার ইনপুট সমর্থন থাকা উচিত।