RoI uygulaması için OEM kılavuzu

Android 15, ilgi alanı (ROI) kullanıcı yapılandırmalarını Android video kodlama çerçevesine entegre etmek için standartlaştırılmış bir süreç sunar. Bu özellik, kullanıcı yapılandırmalarını video kodlayıcıya entegre edip analiz etmek için herkese açık API'ler sunarak YG'ler için daha iyi sıkıştırma kalitesi sağlar.

Uygulama

SoC tedarikçileri ve OEM'ler, FEATURE_Roi tıklayın. FEATURE_Roi etkinleştirilmemişse video kodlayıcı davranışında herhangi bir değişiklik olmaz.

Video çerçevesinde yapılan değişiklikler

Bu bölümde, bu özelliğin uygulanması için video çerçevesinde yapılan değişiklikler ayrıntılı olarak açıklanmıştır.

Codec2'deki anahtarlar

Android 15'te niceleme parametresi eşlemesi (QP_map) ve dikdörtgen yapılandırma (rect), YG olarak tanımlanır yapılandırma türleri. Ayrıca, bu yeni türleri desteklemek için Codec2'de (C2) iki anahtar kullanıma sunulmuştur. Her iki anahtarın kullanımı, genel API'lerle aynıdır. Kodlayıcının çerçeve döngüsü içinde yapılandırma, çalışma aşamasında, giriş arabelleğinin sıraya eklenmesinden önce dinamik olarak ayarlanır. Bu işlem aşağıdaki gibi açıklanır:

  • Yapışkan bir senaryoda, geçerli kare için ROI yapılandırması sağlanmazsa kodlayıcı önceki kareyle aynı yapılandırmayı kullanır.

  • Dinamik bir senaryoda YG yapılandırma türleri dinamik olarak değişebilir.

C2'deki yeni anahtarlar aşağıdaki bölümlerde açıklanmıştır.

kParamIndexQpOffsetMapBuffer

kParamIndexQpOffsetMapBuffer tuşu, bir kare için qp-offset haritasını işaret eder. Bu değer, giriş kullanılarak ayarlanır PARAMETER_KEY_QP_OFFSET_MAP parametresi kalkış: setParameters.

kParamIndexQpOffsetMapBuffer, C2InfoBuffer, şu özelliklere sahip:

  • Uzunluk: Bir karedeki 16x16 blok sayısı.

  • Değer: Dizinin her değeri, -51~51 bölgesindeki 16x16 blokun QP ofsetidir. Hedef en büyük kodlama biriminin (LCU) QP değeri, kodlayıcı hız kontrolü ve ofset ile hesaplanır. Hesaplanan sonuç 0-51 aralığını aşarsa değer 0-51 olarak kısaltılır.

    • 0 ise: QP ofseti yoktur, QP'ye orijinal bit hızı kontrolü karar verir.
    • Sıfır değilse: QP, orijinal ücret kontrolü artı ofsettir.
    • Negatifse: Video kalitesi, hedef HDCU'da artırılır.
    • Pozitifse: Video kalitesi, hedef LCU'da düşmüştür.
  • Kullanım: Kullanıcı bu anahtarı 16x16 blok olarak yapılandırmalıdır. Kodlayıcı, 16x16 değerlerinin ortalamasını alarak yapılandırmayı gerçek LCU boyutuna için 10-15 dakika.

C2_PARAMKEY_QP_OFFSET_RECTS

C2_PARAMKEY_QP_OFFSET_RECTS anahtarı (coding.qp-offset-rects olarak ayarlanır) YG'yi QpOffset-Rects olarak ayarlar. Değeri, setParameters kaynağındaki PARAMETER_KEY_QP_OFFSET_RECTS giriş parametresi kullanılarak belirlenir.

Bu anahtarı desteklemek için aşağıdaki yapı C2QpOffsetRectStruct tanıtıldı:

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")
}

Nerede:

  • top ve left: YG'nin dikdörtgen şeklindeki koordinatları. YG genişletildi. Bu değer, herhangi bir pikselin sol üst köşesine dokunun. Böylece ((0,0), (16, 16)) tam 16x16 blok.

  • qpOffset: Dizinin her değeri, hedefin QP ofsetini temsil eder rect alanı. Tanımı ve kullanımı, kParamIndexQpOffsetMapBuffer değer.

Eşleme algoritması

Aşağıdaki tabloda, ortak anahtarlardan videoya yapılan eşleme gösterilmektedir çerçeve:

Genel anahtarlar veya API'ler Video çerçevesinde eşleme
PARAMETER_KEY_QP_OFFSET_MAP Değer, kParamIndexQpOffsetMapBuffer örneği olarak C2InfoBuffer'e iletilir.
PARAMETER_KEY_QP_OFFSET_RECTS String değeri, şuna dönüştürülür: Struct C2QpOffsetRectStruct ve tarihinde geçti C2_PARAMKEY_QP_OFFSET_RECTS.

Hata işleme

OEM uygulaması aşağıdaki hata durumlarını ele almalıdır:

Hata durumu Örnek Kullanım
YG'yi etkinleştirmek için hem tedarikçi firma anahtarı hem de standartlaştırılmış anahtar kullanılır. Kullanıcı hem setFeatureEnabled(FEATURE_ROI) hem de YG'yi açmak için tedarikçi firma anahtarı. YG etkinleştirilmelidir.
QP ofseti aralıkta ancak SoC tedarikçileri tarafından desteklenmiyor. Kullanıcı, QP ofsetini 12 olarak ayarlar ancak SoC yalnızca 10'a kadar QP ofsetini destekler. Desteklenen QP ofset aralığı en iyi seçenek olarak bırakıldı. Değer sınırlı soC'nin desteklediği aralığa göre ayarlayın.
Birden fazla YG yapılandırması (standartlaştırılmış anahtar veya tedarikçiye özgü anahtar) tek bir kareye ayarlanır. Kullanıcı, çerçeve 1 için hem standartlaştırılmış anahtar hem de tedarikçi anahtarı kullanır. Varsa çerçeve, standartlaştırılmış ilk rect sürümünü korur. ilk standart QP_map yapılandırması, veya her ikisini birden seçebilirsiniz. Her kategoride, çerçeve yalnızca tek bir standartlaştırılmış soC'ye yapılandırma ve standartlaştırılmış yapılandırma varsa SoC uygulaması, tedarikçi firma yapılandırmalarını yoksaymalıdır. SoC'ye birden fazla yapılandırma gönderilirse SoC tedarikçisi yalnızca bir YG yapılandırmasını saklamalı ve yapılandırmaların geri kalanını yok saymalıdır.

Yapılandırmalar şu öncelik sırasına göre saklanır:

  1. Standart rect
  2. Standartlaştırılmış QP_map
  3. Tedarikçi firma rect
  4. Satıcı QP_map