يقدّم نظام التشغيل Android 15 عملية موحّدة لتكامل إعدادات المستخدم الخاصة بمنطقة الاهتمام (RoI) في إطار عمل ترميز الفيديو في Android. تتيح هذه الميزة جودة ضغط أفضل لنقاط الاهتمام من خلال توفير واجهات برمجة تطبيقات عامة لدمج إعدادات المستخدم وتحليلها في رمز ترميز الفيديو.
التنفيذ
يمكن لمورّدي وحدات المعالجة المركزية (SoC) والمصنّعين الأصليّين للأجهزة التحكّم في إتاحة ميزة "منطقة الاهتمام" لترميز الفيديو باستخدام العلامة
FEATURE_Roi
. إذا لم يكن الخيار FEATURE_Roi
مفعّلاً، لن يحدث أي تغيير في سلوك برنامج ترميز الفيديو.
التغييرات في إطار الفيديو
يوضح هذا القسم بالتفصيل التغييرات في إطار عمل الفيديو اللازم لتنفيذ ذلك الجديدة.
المفاتيح في برنامج الترميز 2
في Android 15، يتم تعريف خريطة مَعلمة التقطيع
(QP_map
) وإعدادات الشكل المستطيل (rect
) كأنواع إعدادات منطقة الاهتمام
. بالإضافة إلى ذلك، يتم تقديم مفتاحين في برنامج الترميز 2 (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. يضبط برنامج الترميز الإعدادات إلى حجم 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
: إحداثيات منطقة الاهتمام، في شكل مستطيل عائد الاستثمار هو موسَّعة لتتوافق مع حدود LCU. تمثّل القيمة الزاوية العلوية اليمنى لكل بكسل، بحيث تحدِّد ((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 |
خطأ أثناء المعالجة
يجب أن تعالج عملية التنفيذ الخاصة بالمصنّع الأصلي للجهاز حالات الخطأ التالية:
حالة الخطأ | مثال | التعامل مع الجهاز |
---|---|---|
يُستخدَم كل من مفتاح المورّد والمفتاح الموحّد لتفعيل عائد الاستثمار (RoI). | يستدعي المستخدم كلاً من setFeatureEnabled(FEATURE_ROI) و
مفتاح البائع لتفعيل عائد الاستثمار. |
يجب تفعيل ميزة "عائد الاستثمار". |
يقع إزاحة QP ضمن النطاق، ولكنّه غير متوافق مع مورّدي شرائح المعالجة المركزية. | يضبط المستخدم إزاحة QP على القيمة 12، إلا أنّ المنظومة على الرقاقة (SoC) تتيح إزاحة QP لما يصل إلى 10 قيم. | يتم ترك نطاق إزاحة QP المتوافق على أنّه أقصى جهد. القيمة هي مثبت إلى النطاق المتوافق مع المنظومة على الرقاقة (SoC). |
عمليات ضبط عائد الاستثمار المتعددة (سواء كان مفتاحًا موحّدًا أو مفتاح خاص بالمورد) على إطار واحد. | يستخدم المستخدم المفتاح العادي ومفتاح المورّد للإطار 1. | يحتفظ إطار العمل بأول إعداد rect
معياري أو أول إعداد QP_map معياري
أو كليهما، إذا كانا متوفّرين. وفي كل فئة، يرسل إطار العمل رسالة موحدة واحدة
التكوين على المنظومة على الرقاقة (SoC) وإذا كانت التكوينات الموحدة متوفرة،
يجب أن يتجاهل تنفيذ المنظومة على الرقاقة (SoC) إعدادات المورِّدين. في حال حذف
إرسال العديد من الإعدادات إلى المنظومة على الرقاقة (SoC)، فيجب على مورِّد المنظومة على الرقاقة (SoC) الاحتفاظ
تهيئة واحدة فقط لعائد الإنفاق الإعلاني (RoI) وتتجاهل بقية الإعدادات.يتم الاحتفاظ بالإعدادات بترتيب الأولوية التالي:
|