A partire da Android 13, i client dell'app possono richiedere al codificatore video di esportare le statistiche di codifica per ogni fotogramma video codificato. Con le statistiche ottenute dal codificatore video, le app possono ottimizzare le attività di codifica video come la codifica multipass e la preelaborazione dei frame prima della codifica.
Per esportare le statistiche di codifica video, i fornitori di SoC devono modificare il driver del codificatore video come descritto in Aggiornamenti al driver del codificatore video .
Dati statistici sulla codifica video
Con Android 13, il codificatore video esporta i dati statistici come mostrato nella tabella seguente.
Nome delle statistiche del codificatore | Descrizione |
---|---|
QP medio del blocco per frame | La media di tutti i QP di blocco nel fotogramma video codificati nel flusso di bit |
Tipo di immagine | Tipo I o P o B |
Gli sviluppatori possono recuperare informazioni statistiche per ogni frame utilizzando la classe sviluppatore MediaFormat
.
Aggiornamenti al driver del codificatore video
Per supportare l'esportazione delle statistiche di codifica video, i fornitori di SoC devono modificare il driver del codificatore video. Le seguenti chiavi vengono aggiunte nella base Codec 2.0 in Android 13:
KEY_VIDEO_QP_AVERAGE
descrive il QP medio del blocco per fotogramma.Le seguenti regole si applicano all'implementazione della chiave
KEY_VIDEO_QP_AVERAGE
:L'encoder SoC deve arrotondare la media dei QP del blocco all'intero più vicino prima di emettere il Codec 2.0.
Il valore medio è calcolato solo da un piano luma.
L'encoder SoC deve restituire
INT_MAX
se tutti i blocchi nel frame corrente sono in modalità saltata. Questa condizione si verifica quando non vengono codificati coefficienti e nel frame non vengono codificate informazioni QP significative.
KEY_PICTURE_TYPE
descrive il tipo di immagine del frame codificato comePICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
oPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
descrive il livello di codifica delle informazioni statistiche emesse dal codificatore video, come segue:Quando il codificatore non genera informazioni sulle statistiche di codifica, questa chiave è impostata su
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Quando il codificatore genera
KEY_VIDEO_QP_AVERAGE
eKEY_PICTURE_TYPE
per ogni fotogramma, questa chiave è impostata suVIDEO_ENCODING_STATISTICS_LEVEL_1
.
Vedi VideoEncodingStatisticsTest
per un'implementazione di riferimento.
Validazione
Esegui il test CTS VideoEncodingStatisticsTest
per verificare che la parte QP media delle statistiche di codifica video funzioni correttamente: CTS esegue due codifiche dello stesso video di input, una con un bitrate più alto e un'altra con un bitrate più basso. CTS confronta quindi i due valori QP medi esportati dalle due codifiche. Se il QP medio della codifica con il bitrate più basso è superiore al QP medio della codifica con il bitrate più alto, CTS passa.
Per convalidare la disattivazione della funzione di esportazione delle statistiche di codifica video quando abilitata, utilizzare la chiave VIDEO_ENCODING_STATISTICS_LEVEL_NONE
come segue:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);