Android 15, kullanıcıların ilgilenilen bölge (RoI) kullanıcı yapılandırmalarını Android videosuna entegre etme kodlama çerçevesidir. Bu özellik, YG'ler için daha iyi sıkıştırma kalitesi sağlar. Kullanıcı yapılandırmalarını videoya entegre edip analiz etmek için herkese açık API'ler sunmak kodlayıcıdan yararlanırsınız.
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, bunu uygulamak için video çerçevesinde yapılması gereken değişiklikler özelliğini kullanabilirsiniz.
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. Ek olarak Codec2'de (C2) kullanılan iki anahtarın
destekler. Her iki anahtarın kullanımı, genel API'lerle aynıdır.
Kodlayıcının çerçeve döngüsünde, yapılandırma dinamik olarak ayarlanır.
sırasında, giriş arabelleği sıraya alınmadan önce
şöyle olur:
Yapışkan senaryoda, geçerli öğe için RoI yapılandırması sağlanmamışsa bir önceki kareyle aynı yapılandırmayı kullanır.
Dinamik 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.
kParamIndexQpKapalısetHaritaBuffer
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 blokların sayısı.
Değer: Dizinin her değeri, bölgedeki 16x16 bloğunun QP ofsetidir -51~51. Hedef en büyük kodlama biriminin (LCU) QP'si şu şekilde hesaplanır: kodlayıcı hız kontrolü ve ofset. Hesaplanan sonuç 0~51 değerini aşarsa bölge, değer 0~51 olacak şekilde kısaltılır.
- 0 ise: QP ofseti yoksa QP'ye orijinal ücret 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 bloklar halinde 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
tuşu (coding.qp-offset-rects
olarak ayarlandı
YG'yi QpOffset-Rects
olarak ayarlar. Değeri, setParameters
ürünündeki PARAMETER_KEY_QP_OFFSET_RECTS
giriş parametresi kullanılarak ayarlanır.
Bu anahtarı desteklemek için C2QpOffsetRectStruct
yapısında mevcuttur.
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
veleft
: RoI'nin dikdörtgen biçiminde 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 ederrect
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:
Ortak anahtarlar veya API'ler | Video çerçevesinde haritalama |
---|---|
PARAMETER_KEY_QP_OFFSET_MAP |
Değer kParamIndexQpOffsetMapBuffer öğesine
C2InfoBuffer örneği. |
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ında işlem yapmalı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 açık olmalıdır. |
QP ofseti aralık dahilinde ancak SoC tedarikçi firmaları 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. Eğer
SoC'ye birden fazla yapılandırma gönderilirse SoC'yi tedarikçinin
diğer yapılandırmaları yoksayın.Yapılandırmalar şu öncelik sırasına göre saklanır:
|