自從推出高動態範圍 (HDR) 影片後,串流服務就開始串流 HDR 影片,並著重於全螢幕體驗。近期,社群媒體應用程式已推出 HDR 影片和 Ultra HDR 支援功能,顯示各式應用程式對 HDR 採用率的興趣日益增加。
Android 支援 HDR
以下是 Android 多年來支援 HDR 技術的里程碑:
Android 7
- 初步支援 HDR 影片解碼和顯示功能。
- 持續改善 HDR 功能。
Android 13
- 端對端支援 HDR 影片擷取、編碼和顯示功能。
- 推出混合 SDR 和 HDR 合成的功能,可在 SDR 和 HDR 之間定義不同的可顯示亮度範圍。
Android 14
- 支援 HDR 圖片和 Ultra HDR。
HDR 螢幕截圖支援功能也不斷演進,並在多年後經歷了許多變化。
HDR 螢幕截圖功能的進展
本節將追蹤 HDR 螢幕截圖功能在近期 Android 更新中的進展。
Android 9
Android 的圖形合成器 SurfaceFlinger 推出 HDR 影片支援功能。複雜的多項式色調對應器支援 GPU 算繪 HDR 影片和螢幕截圖。這個色調對應曲線不一定等同於顯示器色調對應器,因此螢幕截圖與螢幕上的內容會有所差異。
Android 13
色調對應外掛程式已新增至 SurfaceFlinger 的 GPU 轉譯區塊,讓原始設備製造商 (OEM) 提供 GPU 著色器,以符合其螢幕的色調對應曲線。螢幕截圖幾乎與畫面上的內容相符,但有以下差異:
- 螢幕截圖仍會以 SDR 格式顯示。因此,當 HDR 場景與螢幕截圖一同顯示時,螢幕截圖中的 HDR 區域會顯得較暗。
- 未管理 SDR 亮度,導致螢幕截圖中的 SDR 內容看起來與 HDR 內容一樣亮。
換句話說,任何在螢幕截圖中擷取的 HDR 影片都會轉換為 SDR 影片。
Android 14
要擷取 Ultra HDR 畫面相當困難,與影片不同,圖片通常會在 UI Framebuffer 中轉譯,這有兩個主要意涵:
- 圖片不得進行圖片處理作業 (包括色調對應),以免與周圍 UI 不同。
- 應用程式在轉譯 UI 時,必須負責執行以來源為準的色調對應作業。
為瞭解決這個問題,有三種可能的螢幕截圖實作方式:
- 保留 Ultra HDR 圖片的 HDR 細節,導致螢幕截圖中的應用程式 UI 變暗。
- 保留應用程式 UI 詳細資料,導致 Ultra HDR 圖片裁剪。
- 在 HDR 高光部分裁剪的同時,提高應用程式 UI 的亮度。
Android 14 實作第三種方法,即將應用程式 UI 調亮,並裁剪 HDR 亮點。
Android 15-QPR1
SurfaceFlinger 包含螢幕截圖的本機色調對應演算法。這項程序包括:
- 將輸入圖片分割成較小的圖片。
- 計算每張圖片的最大亮度,並捨棄各個區段中的低亮度值。
- 透過模糊處理和重新取樣,對計算的亮度進行內插。
- 根據內插的亮度值,將參數化 Reinhard 色調轉換器套用至輸入圖片。
這個演算法顯示 Android 14 和 Android 15-QPR1 之間的螢幕截圖有顯著改善,如下列範例所示:
範例 1 是 HDR 影片的螢幕截圖,疊加在含有 Ultra HDR 的 Chrome 頁面上。在新的實作方式中,UI 顏色幾乎都會保留,且圖片不會再遭到裁剪。
Android 14 Android 15-QPR1 圖 1. 範例 1 的 Android 14 和 Android 15-QPR1 比較。
範例 2 是 HDR 影片疊加在「設定」畫面上的螢幕截圖,後續的螢幕截圖也是如此。在 Android 14 中,螢幕截圖的顏色會逐漸變暗。在 Android 15-QPR1 中,tonemapper 會正確複製及保留 UI 顏色。
Android 14 Android 15-QPR1 圖 2. 範例 2 中 Android 14 和 Android 15-QPR1 的比較。
Android 16
與 Ultra HDR 類似,HDR 螢幕截圖會在螢幕截圖檔案中儲存增益圖,以便在算繪期間復原 HDR 表示法。不過,與 Ultra HDR 不同的是,螢幕截圖仍會以 PNG 格式儲存,以便與攝入 PNG 螢幕截圖的系統相容。
螢幕截圖產生詳細資料如下:
- 當 HDR 內容顯示在裝置上時,系統會使用 FP16 像素產生螢幕截圖。
- Android 15-QPR1 中所述的本機色調轉換器會產生 8 位元基本 SDR 轉譯。
- 將 SDR 基本轉譯結果與 HDR 轉譯結果結合,即可產生 8 位元增益圖。
- SDR 基本轉譯和增益圖會編碼為單一 PNG 檔案。
PNG 編碼詳細資料如下:
- 增益圖會編碼為 PNG 圖片,其中包含 gmAP 區塊,內含增益圖的 ISO 21496-1 中繼資料。
- SDR 基礎呈現會編碼為 PNG 圖片,其中包含 gmAP 區塊,其中包含 ISO 21496-1 中繼資料的版本。這個 PNG 圖片也包含 gdAT 區塊,其中包含已編碼的增益圖 PNG 的完整內容。
下圖顯示 PNG 區塊的版面配置:
圖 3. PNG 區塊的版面配置。
在 Android 16 中,PNG 編解碼器支援這些 PNG 的編碼和解碼。應用程式可以以與 Ultra HDR 相同的方式,顯示含有增益圖的 PNG。