Dall'introduzione dei video HDR (High Dynamic Range), i servizi di streaming hanno iniziato a trasmettere video HDR, concentrandosi su esperienze a schermo intero. Di recente, le app di social media hanno avviato il supporto per i video HDR e Ultra HDR, indicando un crescente interesse per l'adozione dell'HDR in varie app.
Supporto di Android per l'HDR
Di seguito sono riportati i traguardi del supporto della tecnologia HDR da parte di Android nel corso di diversi anni:
Android 7
- Supporto iniziale per la decodifica e la visualizzazione di video HDR.
- Continui miglioramenti delle funzionalità HDR.
Android 13
- Supporto end-to-end per l'acquisizione, la codifica e la visualizzazione di video HDR.
- Introduzione della composizione mista SDR e HDR, che definisce diversi intervalli di luminanza visualizzabili tra SDR e HDR.
Android 14
- Supporto per le immagini HDR con Ultra HDR.
Anche il supporto degli screenshot con HDR è stato oggetto di un'evoluzione e di una serie di modifiche nel corso degli anni.
Progressi nelle funzionalità di screenshot HDR
Questa sezione monitora l'evoluzione della funzionalità di screenshot HDR negli aggiornamenti recenti di Android.
Android 9
SurfaceFlinger, il compositore grafico di Android, introduce il supporto dei video HDR. Il rendering GPU di screenshot e video HDR è supportato con un mapper di tonalità polinomiale complesso. Questa curva di mappatura tonale non è sempre equivalente a quella del visualizzatore, pertanto gli screenshot sono diversi dai contenuti sullo schermo.
Android 13
Un plug-in di mappatura tonale viene aggiunto al blocco di rendering della GPU di SurfaceFlinger, consentendo all'OEM di fornire uno shader GPU corrispondente alla curva di mappatura tonale del display. Gli screenshot corrispondono quasi a ciò che è sullo schermo, ma con le seguenti differenze:
- Gli screenshot rimangono in formato SDR. Di conseguenza, se visualizzate insieme a una scena HDR, le regioni HDR all'interno dello screenshot appaiono più sbiadite.
- La luminosità SDR non viene gestita, pertanto i contenuti SDR all'interno dello screenshot sembrano essere luminosi come i contenuti HDR.
In altre parole, qualsiasi video HDR acquisito nello screenshot viene convertito in video SDR.
Android 14
Ultra HDR rappresenta una sfida significativa per gli screenshot. A differenza dei video, le immagini vengono solitamente visualizzate all'interno del framebuffer dell'interfaccia utente, il che ha due implicazioni principali:
- Le immagini non possono avere un'elaborazione, inclusa la mappatura tonale, diversa da quella dell'interfaccia utente circostante.
- Le app sono responsabili della mappatura tonale basata sull'origine durante il rendering dell'interfaccia utente.
Per ovviare a questo problema, esistono tre potenziali implementazioni di screenshot:
- Mantieni i dettagli HDR di un'immagine Ultra HDR, con conseguente oscuramento dell'interfaccia utente dell'app nello screenshot.
- Mantieni i dettagli dell'interfaccia utente dell'app, causando il ritaglio delle immagini Ultra HDR.
- Trova un compromesso aumentando la luminosità dell'interfaccia utente dell'app e ritagliando gli elementi salienti HDR.
Android 14 implementa il terzo approccio, ovvero l'illuminazione dell'interfaccia utente dell'app e il ritaglio degli elementi in evidenza HDR.
Android 15-QPR1
SurfaceFlinger include un algoritmo di mappatura tonale locale per gli screenshot. Questa procedura prevede:
- Suddivisione dell'immagine di input in immagini più piccole.
- Calcolo della luminarietà massima in ogni immagine e rifiuto dei valori di luminarietà bassi all'interno di ogni sezione.
- Interpolazione delle luminanze calcolate tramite sfocatura e ricampionamento.
- Applicazione di un tonemapper Reinhard parametrizzato all'immagine di input, in base ai valori di luminanza interpolati.
Questo algoritmo mostra miglioramenti significativi degli screenshot tra Android 14 e Android 15-QPR1, come mostrato nei seguenti esempi:
L'esempio 1 è uno screenshot di un video HDR sovrapposto a una pagina di Chrome contenente Ultra HDR. I colori dell'interfaccia utente vengono conservati per la maggior parte nella nuova implementazione e l'immagine non viene più ritagliata.
Android 14 Android 15-QPR1 Figura 1. Confronto tra Android 14 e Android 15-QPR1 per l'esempio 1.
L'esempio 2 è uno screenshot di un video HDR sovrapposto a Impostazioni insieme ad altri screenshot. In Android 14, i colori degli screenshot sono successivamente più scuri. In Android 15-QPR1, il tonemapper replica e conserva correttamente i colori dell'interfaccia utente.
Android 14 Android 15-QPR1 Figura 2. Confronto tra Android 14 e Android 15-QPR1 per l'esempio 2.