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