إرشادات لمصنّعي المعدّات الأصلية بشأن تنفيذ ميزة "عائد الاستثمار"

يقدّم Android 15 عملية موحّدة لدمج إعدادات المستخدمين لمنطقة الاهتمام (RoI) في إطار ترميز الفيديو في Android. تتيح هذه الميزة تحسين جودة الضغط لمناطق الاهتمام من خلال توفير واجهات برمجة تطبيقات عامة لدمج إعدادات المستخدمين وتحليلها في أداة ترميز الفيديو.

التنفيذ

يمكن لمورّدي أنظمة SoC ومصنّعي المعدات الأصلية التحكّم في إمكانية استخدام مناطق الاهتمام لترميز الفيديو من خلال العلامة FEATURE_Roi. إذا لم يتم تفعيل العلامة FEATURE_Roi، لن يكون هناك أي تغيير في سلوك أداة ترميز الفيديو.

التغييرات في إطار الفيديو

يوضّح هذا القسم التغييرات في إطار عمل الفيديو اللازمة لتنفيذ هذه الميزة.

المفاتيح في Codec2

في Android 15، يتم تحديد خريطة مَعلمة التكميم (QP_map) والإعداد المستطيل (rect) كنوعَين من إعدادات منطقة الاهتمام. بالإضافة إلى ذلك، يتم تقديم مفتاحَين في Codec2 (C2) لدعم هذَين النوعَين الجديدَين. يكون استخدام كلا المفتاحَين هو نفسه استخدام واجهات برمجة التطبيقات العامة. ضمن حلقة إطار أداة الترميز، يتم تعديل الإعداد بشكل ديناميكي خلال مرحلة التشغيل، قبل وضع المخزن المؤقت للإدخال في قائمة الانتظار، كما هو موضّح أدناه:

  • في سيناريو ثابت، إذا لم يتم توفير إعدادات منطقة اهتمام للإطار الحالي، تستخدم أداة الترميز الإعدادات نفسها الخاصة بالإطار السابق.

  • في سيناريو ديناميكي، يمكن أن تتغيّر أنواع إعدادات منطقة الاهتمام بشكل ديناميكي.

يتم وصف المفاتيح الجديدة في C2 في الأقسام التالية.

kParamIndexQpOffsetMapBuffer

تشير العلامة kParamIndexQpOffsetMapBuffer إلى خريطة qp-offset لإطار معيّن. يتم ضبط قيمتها باستخدام مَعلمة الإدخال PARAMETER_KEY_QP_OFFSET_MAP من setParameters.

kParamIndexQpOffsetMapBuffer هي صفيف بايت في C2InfoBuffer، مع السمات التالية:

  • الطول: عدد مربّعات 16×16 في إطار واحد.

  • القيمة: كل قيمة في الصفيف هي إزاحة QP لمربّع 16×16، في النطاق ‎-51~51. تحتسب أداة التحكّم في المعدّل الخاصة بأداة الترميز قيمة QP لأكبر وحدة ترميز (LCU) مستهدَفة بالإضافة إلى الإزاحة. إذا تجاوزت النتيجة المحتسَبة النطاق ‎0~51، يتم اقتطاع القيمة إلى ‎0~51.

    • إذا كانت القيمة 0: لا يتم استخدام إزاحة QP، وتحدّد أداة التحكّم في المعدّل الأصلية قيمة QP.
    • إذا كانت القيمة غير صفرية: تكون قيمة QP هي أداة التحكّم في المعدّل الأصلية بالإضافة إلى الإزاحة.
    • إذا كانت القيمة سالبة: يتم تحسين جودة الفيديو في أكبر وحدة ترميز مستهدَفة.
    • إذا كانت القيمة موجبة: تنخفض جودة الفيديو في أكبر وحدة ترميز مستهدَفة.
  • الاستخدام: على المستخدم ضبط هذا المفتاح كمربّعات 16×16. تعدّل أداة الترميز الإعدادات لتناسب حجم أكبر وحدة ترميز الفعلي من خلال حساب متوسّط قيم مربّعات 16×16 في أكبر وحدة ترميز.

C2_PARAMKEY_QP_OFFSET_RECTS

يؤدي ضبط المفتاح C2_PARAMKEY_QP_OFFSET_RECTS على coding.qp-offset-rects إلى ضبط منطقة الاهتمام على QpOffset-Rects. يتم ضبط قيمته باستخدام مَعلمة الإدخال PARAMETER_KEY_QP_OFFSET_RECTS من setParameters.

لدعم هذا المفتاح، يتم تقديم البنية التالية C2QpOffsetRectStruct

struct C2QpOffsetRectStruct : C2Rect {
  int32_t qpOffset;

  DEFINE_AND_DESCRIBE_C2STRUCT(QpOffsetRect)
  C2FIELD(width, "width")
  C2FIELD(height, "height")
  C2FIELD(left, "left")
  C2FIELD(top, "top")
  C2FIELD(qpOffset, "qp-offset")
}

المكان:

  • top وleft: إحداثيات منطقة الاهتمام، على شكل مستطيل. يتم توسيع منطقة الاهتمام لتتطابق مع حدود أكبر وحدة ترميز. تمثّل القيمة الزاوية العليا اليمنى لكل بكسل، بحيث يحدّد ((0,0)، (16, 16)) مربّعًا كاملاً بحجم 16×16.

  • qpOffset: تمثّل كل قيمة في الصفيف إزاحة QP لمنطقة rect المستهدَفة. يكون تعريفها واستخدامها هما نفس تعريف واستخدام قيمة kParamIndexQpOffsetMapBuffer.

خوارزمية الربط

يوضّح الجدول التالي عملية الربط من المفاتيح العامة إلى إطار عمل الفيديو:

المفاتيح العامة أو واجهات برمجة التطبيقات الربط في إطار الفيديو
PARAMETER_KEY_QP_OFFSET_MAP يتم تمرير القيمة إلى kParamIndexQpOffsetMapBuffer ككائن C2InfoBuffer.
PARAMETER_KEY_QP_OFFSET_RECTS يتم تحويل القيمة من String إلى Struct C2QpOffsetRectStruct وتمريرها إلى C2_PARAMKEY_QP_OFFSET_RECTS.

معالجة الأخطاء

يجب أن تعالج عملية التنفيذ الخاصة بمصنّع المعدات الأصلية حالات الأخطاء التالية:

حالة الخطأ مثال التعامل مع الجهاز
يتم استخدام كل من مفتاح المورّد والمفتاح الموحّد لتفعيل منطقة الاهتمام. يطلب المستخدم كلاً من setFeatureEnabled(FEATURE_ROI) ومفتاح المورّد لتفعيل منطقة الاهتمام. يجب تفعيل منطقة الاهتمام.
تكون إزاحة QP ضمن النطاق ولكن لا يتيحها مورّدو أنظمة SoC. يضبط المستخدم إزاحة QP على 12، ولكن لا يتيح نظام SoC إزاحة QP إلا حتى 10. يتم ترك نطاق إزاحة QP المتاح على أساس أفضل جهد. يتم حصر القيمة في النطاق الذي يتيحه نظام SoC.
يتم ضبط إعدادات متعدّدة لمنطقة الاهتمام (سواء كان ذلك باستخدام مفتاح موحّد أو مفتاح خاص بالمورّد ) لإطار واحد. يستخدم المستخدم كلاً من المفتاح الموحّد ومفتاح المورّد للإطار 1. إذا كان ذلك متاحًا، يحتفظ إطار الفيديو بأول إعداد rect موحّد أو أول إعداد QP_map موحّد، أو كليهما. في كل فئة، يرسل إطار العمل إعدادًا موحّدًا واحدًا فقط إلى منظومة على رقاقة (SoC)، وإذا كان الإعداد الموحّد متاحًا، يجب أن تتجاهل عملية تنفيذ منظومة على رقاقة (SoC) إعدادات المورّد. إذا تم إرسال إعدادات متعدّدة إلى نظام SoC، يجب أن يحتفظ مورّد نظام SoC بإعداد واحد فقط لمنطقة الاهتمام ويتجاهل بقية الإعدادات.

يتم الاحتفاظ بالإعدادات بهذا الترتيب حسب الأولوية:

  1. rect الموحّد
  2. QP_map الموحّد
  3. rect الخاص بالمورّد
  4. QP_map الخاص بالمورّد