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

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

التنفيذ

يمكن لمورّدي المنظومة على الرقاقة (SoC) والمصنّعين الأصليين للأجهزة التحكّم في إتاحة عائد الاستثمار لترميز الفيديوهات باستخدام FEATURE_Roi . إذا لم يكن FEATURE_Roi مفعّلاً، لن يحدث أي تغيير في سلوك برنامج ترميز الفيديو.

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

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

المفاتيح في برنامج الترميز 2

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

  • في السيناريو الثابت، إذا لم يتم توفير إعدادات عائد الاستثمار (RoI) الحالية يستخدم برنامج التشفير الإعدادات نفسها المستخدمة في الإطار السابق.

  • في السيناريو الديناميكي، يمكن أن تتغيّر أنواع ضبط عائد الاستثمار الإعلاني ديناميكيًا.

يتم توضيح المفاتيح الجديدة في 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 هو عنصر التحكّم الأصلي في السعر بالإضافة إلى الإزاحة.
    • إذا كانت الإجابة سالبة، هذا يعني أنّه يتم تحسين جودة الفيديو في وحدة LCU المستهدَفة.
    • إذا كانت الإجابة إيجابية: تنخفض جودة الفيديو في وحدة LCU المستهدَفة.
  • الاستخدام: على المستخدم إعداد هذا المفتاح كقطعة بحجم 16x16. يضبط برنامج الترميز الإعدادات إلى حجم LCU الحقيقي من خلال متوسط قيم 16×16 الوحدات السكنية في LCU.

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: إحداثيات عائد الاستثمار (RoI) على شكل مستطيل. عائد الاستثمار هو موسَّعة لتتوافق مع حدود LCU. تمثل القيمة الزاوية العلوية اليسرى لكل بكسل، وهكذا تحدد ((0,0) و(16, 16)) كتلة كاملة 16x16.

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

خوارزمية تصميم الخرائط

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

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

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

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

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

ويتم الاحتفاظ بالإعدادات وفقًا لترتيب الأولوية التالي:

  1. rect موحّدة
  2. QP_map موحّدة
  3. المورّد rect
  4. المورّد QP_map