深入看 SDR 與 HDR:PQ、HLG、色調映射與 HDR10 編碼
PQ 和 HLG 怎麼記錄光線、HDR 為什麼需要 10 位元、HDR10 元資料寫了什麼、色調映射如何運作,附實測過的 x265、SVT-AV1 與 FFmpeg 指令。
重點速覽
SDR 和 HDR 的差別,在於影片怎麼把碼值轉成光。SDR 用以 100 nits 顯示器為基準的 gamma 曲線和 BT.709 色彩;HDR 用 ITU-R BT.2100 的 PQ 或 HLG 曲線、BT.2020 色彩、至少 10 位元,而且常帶有元資料,告訴顯示器母帶有多亮。
- SDR 和 HDR 的差別在四個層面:轉換函數、色彩原色、位元深度和元資料。
- PQ 把每個碼值對應到一個固定的亮度,最高 10,000 nits。HLG 則是相對於顯示器的峰值,所以不需要母帶元資料。
- PQ 至少需要 10 位元:依我們的計算,在 100 nits 附近,8 位元 PQ 每一階的亮度跳動是 4.7%,10 位元是 1.1%。
- 色調映射把 HDR 的高光塞進較暗的顯示器,可以整部片用一條靜態曲線,也可以靠動態元資料(HDR10+、Dolby Vision)逐場景調整。
- 標記只是替像素貼標籤。要改變像素的意義,得真正做轉換;兩者都可以用 ffprobe 檢查。
什麼樣的影片才算 HDR?
HDR 影片的碼值描述的光線範圍遠比 SDR 寬,以 ITU-R BT.2100 的 PQ 或 HLG 轉換函數編碼,搭配 BT.2020 原色,位元深度為 10 或 12 位元。
| 層面 | SDR | HDR |
|---|---|---|
| 轉換函數 | BT.709 攝影機曲線、BT.1886 顯示曲線(gamma 2.4) | PQ(SMPTE ST 2084)或 HLG(ARIB STD-B67),兩者都在 BT.2100 中 |
| 參考峰值 | 100 nits | PQ 最高 10,000 nits;HLG 為相對值,以 1,000 nits 為參考 |
| 參考白 | 調色後的 SDR 約在訊號的 90% | 203 nits:PQ 訊號的 58%,HLG 的 75% |
| 原色 | BT.709 | BT.2020 |
| 位元深度 | 交付時常見 8 位元 | 10 或 12 位元 |
| 元資料 | 無 | 靜態(HDR10)、動態(HDR10+、Dolby Vision),或沒有(HLG) |
這些層面彼此獨立:一個檔案可以是 10 位元的 SDR,也可以是不帶元資料的 PQ。每一層都有自己的標記,播放器讀的是標記,而不是從像素去猜。
轉換函數:BT.1886、PQ 與 HLG
轉換函數把訊號值對應到光。ITU-R BT.1886 把 SDR 顯示曲線定義為 2.4 次方函數,參考白為 100 nits;BT.709 攝影機曲線是它的另一半,為 0.45 次方,接近黑色處有一段線性區間。
PQ(SMPTE ST 2084) 以顯示為基準:每個碼值代表一個特定亮度,最高 10,000 nits。BT.2100 指出,PQ 以貼合人眼視覺的曲線,在給定的位元深度下涵蓋非常寬的亮度範圍。照它的公式算,100 nits 位於訊號的 51%,203 nits 位於 58%,1,000 nits 位於 75%;訊號範圍的下半段涵蓋 0 到約 92 nits。
HLG(ARIB STD-B67) 以場景為基準:訊號描述的是相對的場景光線,要顯示多亮由顯示器決定。ITU-R BT.2390 報告說明,HLG 在訊號下半段是接近 SDR 的平方根曲線,上半段是對數曲線。BT.2100 把顯示器的系統 gamma 在 1,000 nits 時設為 1.2,其他峰值再依公式調整(γ = 1.2 + 0.42 log10(Lw / 1000)),所以同一個 HLG 訊號不需要元資料,就能適應 600 nits 的電視或 1,500 nits 的螢幕。

補充: BT.2100 要求製作時一致採用同一套系統,不要混用 PQ 和 HLG。兩者之間的切換是轉換,不是改標籤。
色彩原色:BT.709 與 BT.2020
原色決定了訊號能描述的最紅的紅、最綠的綠、最藍的藍。BT.709 在 CIE 1931 xy 色度圖上的原色是 (0.640, 0.330)、(0.300, 0.600) 和 (0.150, 0.060);BT.2100 使用 BT.2020 原色 (0.708, 0.292)、(0.170, 0.797) 和 (0.131, 0.046)。兩者都用 D65 白點。依我們的計算,BT.2020 三角形的面積約為 BT.709 的 1.9 倍,但很少有母帶能填滿它:調色監視器多半是 P3-D65,這也是 x265 自己的母帶參數範例描述的是 P3-D65 監視器的原因。

同一個顏色在不同的色彩容器裡碼值不同:BT.709 的純紅放到 BT.2020 裡,線性 RGB 約為 (0.627, 0.069, 0.016)。把 BT.709 的像素直接標成 BT.2020 而不轉換,每個顏色都會變得更飽和;YouTube 也提醒,標成 Rec. 2020 原色的 P3 母帶看起來會過度飽和、色相偏移。
位元深度:PQ 為什麼至少需要 10 位元
相鄰碼值之間的亮度跳動大到看得出來,就會出現色帶;而 PQ 把 0 到 10,000 nits 分配在 SDR 用來表示 0 到 100 nits 的碼值範圍上。以下是我們依 BT.2100 與 BT.1886 公式、以窄範圍碼值算出的結果:
| 亮度 | 8 位元 PQ | 10 位元 PQ | 12 位元 PQ | 8 位元 SDR,gamma 2.4 |
|---|---|---|---|---|
| 1 nit | 每階 9.4% | 每階 2.3% | 每階 0.56% | 每階 7.7% |
| 100 nits | 每階 4.7% | 每階 1.1% | 每階 0.28% | 每階 1.1% |
| 1,000 nits | 每階 4.3% | 每階 1.1% | 每階 0.26% | 超出 SDR 範圍 |
在 100 nits 附近,10 位元 PQ 的精細度和 8 位元 SDR 在白色處差不多,同時還涵蓋到 10,000 nits。BT.2390 把這些階距和 Barten 模型的可見門檻比較:12 位元 PQ 從 10,000 nits 一路到 0.001 nits 以下都低於門檻,10 位元 PQ 則略高於門檻,實際上會被攝影機本身的雜訊掩蓋。

所以中間步驟要保持 10 位元以上,降到 8 位元時要加抖動(dither)。在我們的測試中,zscale 的 d=error_diffusion 在一段經過色調映射的暗部漸層上保留了相同的色階,但把筆直的色帶邊緣打散成細微的雜訊。去色帶的方法請見 8 位元與 10 位元影片。
HDR 元資料:靜態與動態
HDR10 是 PQ 加上 BT.2020 原色、10 位元,再加上靜態元資料:整部片只用一份描述。
| 元資料 | 描述的內容 | 定義來源 |
|---|---|---|
| 母帶顯示器 | 調色監視器的原色、白點、峰值與黑位 | SMPTE ST 2086(x265 master-display) |
| MaxCLL | 整部片最亮像素的亮度,單位 nits | CTA-861.3(max-cll 的第一個值) |
| MaxFALL | 單幀平均亮度的最高值,單位 nits | CTA-861.3(max-cll 的第二個值) |
| HDR10+ | 逐場景或逐幀的亮度、對比與色彩 | SMPTE ST 2094-40(x265 dhdr10-info) |
| Dolby Vision | 每一個畫面的動態元資料,最高 12 位元色彩 | Dolby |
使用靜態元資料時,一部大半很暗、只有一場明亮爆炸的電影,只能用一條以那場爆炸為準的曲線。HDR10+ 把它的動態元資料形容為讓顯示器即時調整色調映射的指令,Dolby 則說 Dolby Vision 會把每個畫面對應到電視的能力。HLG 不帶母帶元資料,由顯示器的系統 gamma 負責適應。
技巧: 填寫你實際用的調色監視器和量測到的數值。量不到 MaxCLL 的話,x265 允許填 0 表示「未標示最大值」,總比用猜的好。
色調映射:把 HDR 塞進較暗的顯示器
色調映射把畫面的動態範圍縮小到顯示器能呈現的程度;ITU-R BT.2446 報告把反過來的處理稱為反向色調映射。靜態映射整部片用一條曲線,通常依母帶峰值或 MaxCLL 選定。動態映射則隨時間變化,依據元資料或量測畫面而定;BT.2390 指出,它可以依場景最大值等統計數據調整。
| 曲線 | 做法 | 取捨 |
|---|---|---|
| Clip | 保留範圍內的值,其餘截掉 | 高光變成一片平坦的色塊 |
| Reinhard | 簡單的滾降,L / (L + c) | 亮度過渡均勻,細節和色彩較平 |
| Hable(filmic) | 帶趾部與肩部的 S 曲線 | 兩端都保有細節,畫面略暗 |
| Möbius | 拐點以下不動,以上滾降 | 保住範圍內的對比與色彩 |
| BT.2390 EETF | 在 PQ 訊號上,拐點以下 1:1,以上用 Hermite 樣條 | 專為比母帶暗的 PQ 顯示器設計 |
EETF 先把 PQ 訊號正規化到母帶範圍,拐點設在 KS = 1.5 × maxLum − 0.5(maxLum 是目標峰值在這個尺度上的值),再把頂端彎下來,讓來源峰值剛好落在顯示器峰值上。以 1,000 nits 的母帶來說,在 100 nits 的顯示器上拐點約在 28 nits,在 300 nits 的顯示器上約在 161 nits。

FFmpeg 的 tonemap 濾鏡實作了 clip、linear、gamma、Reinhard、Hable 和 Möbius。它的文件說明這些曲線只能在浮點線性光上運作,所以處理鏈要先用 zscale 線性化,做色調映射,再轉回來:
ffmpeg -i hdr10.mp4 -vf "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=mobius:peak=10:desat=0,zscale=t=bt709:m=bt709:r=tv:d=error_diffusion,format=yuv420p" -c:v libx264 -crf 18 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range tv -c:a copy sdr.mp4npl=100 讓線性值 1.0 等於 100 nits,所以 peak=10 代表 1,000 nits;設為 0 時,峰值取自檔案的元資料。desat=0 關掉預設會把極亮像素往白色淡化的處理。在一段 0 到 1,000 nits 的合成 PQ 漸層上,8 位元輸出的碼值如下(取平均,窄範圍,所以 235 是白):
| 來源亮度 | clip | reinhard | hable | mobius |
|---|---|---|---|---|
| 25 nits | 碼值 139 | 碼值 133 | 碼值 98 | 碼值 139 |
| 100 nits | 碼值 235 | 碼值 187 | 碼值 151 | 碼值 201 |
| 204 nits | 碼值 235 | 碼值 209 | 碼值 182 | 碼值 218 |
| 1,000 nits | 碼值 235 | 碼值 235 | 碼值 235 | 碼值 235 |
Clip 把 100 nits 以上全變成同一個白;Hable 保留了最多的高光層次,中間調也壓得最暗;Möbius 對拐點以下的值原封不動。請用你自己的素材判斷。SDR 端的症狀請見 影片匯出後為什麼看起來發灰。
補充: tonemap 沒有 BT.2390 模式,而我們測試的 FFmpeg 8.1 版本沒有 libplacebo、tonemap_opencl 或 tonemap_vaapi 濾鏡,所以這些我們沒有測。
SDR 轉 HDR:放置與擴展
放置 保留畫面原本的動態範圍,重新以 PQ 或 HLG 編碼,讓 SDR 素材能放進 HDR 節目裡。BT.2446 在這部分引用 ITU-R BT.2408 報告,錨點是 HDR 參考白,BT.2100 把它定義為 203 nits:
ffmpeg -i input_sdr.mp4 -vf "zscale=t=linear:npl=203,format=gbrpf32le,zscale=p=bt2020:t=smpte2084:m=bt2020nc:r=tv:npl=203,format=yuv420p10le" -c:v libx265 -preset slow -crf 18 -profile:v main10 -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv -tag:v hvc1 -c:a copy sdr_in_pq.mp4在我們的測試中,SDR 的滿白輸出為 10 位元碼值 573,也就是 PQ 的 203 nits;npl=100 得到碼值 509(100 nits),npl=1000 得到 723(1,000 nits)。這個檔案是有效的 PQ,但裡面沒有任何東西比參考白更亮。
擴展 就是反向色調映射:把高光拉到參考白以上,並擴大色域。BT.2446 要求暗部和中間調保持接近,平均亮度不要拉高到讓人看了不舒服,並提醒擴展可能放大素材裡原有的瑕疵。它列出的方法都是靜態曲線;報告也提到還有自適應、依畫面區域變化的方法,以 AI 為基礎的 SDR 轉 HDR 就屬於這一類。它和其他處理步驟怎麼搭配,請見 SDR 轉 HDR 與流暢動態。
補充: 只改標記,兩者都不算。10 位元 SDR 的滿白(碼值 940)被當成 PQ 讀取時,等於要求顯示器輸出 10,000 nits。
用 x265 和 SVT-AV1 編碼 HDR10
編碼器必須寫入 10 位元的 profile、色彩描述和靜態元資料。
x265(HEVC Main 10)
ffmpeg -i master_pq.mov -c:v libx265 -preset slow -crf 18 -pix_fmt yuv420p10le -x265-params "profile=main10:colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc:range=limited:hdr10=1:repeat-headers=1:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50):max-cll=1000,400" -tag:v hvc1 -c:a copy hdr10.mp4-x265-params 的每個鍵都對應一個 x265 選項(--colorprim、--hdr10、--master-display 等):
| 設定 | 作用 |
|---|---|
colorprim、transfer、colormatrix | 把 BT.2020、PQ 和非恆定亮度矩陣寫成串流標記 |
master-display | ST 2086 的數值:x、y 以 0.00002 為單位,亮度以 0.0001 nits 為單位,所以 L(10000000,50) 是峰值 1,000 nits、黑位 0.005 nits |
max-cll=1000,400 | MaxCLL 和 MaxFALL,單位 nits |
hdr10=1 | 強制寫入 HDR10 訊息;設定了 master-display 或 max-cll 時,x265 也會自動開啟 |
repeat-headers=1 | 在每個關鍵幀重複寫入串流標頭 |
這組原色是 x265 文件中 P3-D65、1,000 nits 監視器的範例;請換成你自己的數值。HLG 則設 transfer=arib-std-b67,拿掉母帶數值,並加上 atc-sei=18,x265 把它列為 HLG 必需的設定;完整指令請見 YouTube HDR 上傳指南。hdr10-opt=1 會針對 10 位元 4:2:0 BT.2020 PQ 輸入,加上 x265 的區塊層級 QP 調整。
SVT-AV1(AV1,10 位元)
ffmpeg -i master_pq.mov -c:v libsvtav1 -preset 6 -crf 30 -pix_fmt yuv420p10le -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv -svtav1-params "mastering-display=G(0.265,0.690)B(0.150,0.060)R(0.680,0.320)WP(0.3127,0.3290)L(1000,0.005):content-light=1000,400" -c:a copy hdr10_av1.mkvSVT-AV1 的 CIE x、y 用小數,亮度用 nits;FFmpeg 會把 -color_* 參數傳給編碼器的色彩選項。用 FFmpeg 8.1 和 SVT-AV1 4.0.1,兩行指令產出的都是 10 位元檔案,標記為 BT.2020、PQ 和 BT.2020 NCL,第一幀帶有母帶與亮度元資料。
不重新編碼就補上缺少的標記。 如果像素本來就是 PQ,hevc_metadata 位元流濾鏡會改寫色彩描述,畫面本身不動:
ffmpeg -i untagged.mp4 -c copy -bsf:v "hevc_metadata=colour_primaries=9:transfer_characteristics=16:matrix_coefficients=9" retagged.mp4在我們 MP4 封裝的 HEVC 測試檔上,處理前後解碼出的畫面校驗和相同,標記則從 unknown 變成 BT.2020、PQ 和 BT.2020 NCL(代碼 9、16、9;HLG 是 18)。它不會加入 ST 2086 或 MaxCLL,那些需要重新編碼。
用 ffprobe 驗證檔案
ffprobe -v error -select_streams v:0 -show_entries stream=profile,pix_fmt,color_range,color_space,color_transfer,color_primaries:frame=side_data_list -read_intervals "%+#1" -show_frames -of json hdr10.mp4一次呼叫就能取得色彩標記和第一幀的附帶資料。上面的 x265 檔案結果如下:
| 欄位 | 值 | 意義 |
|---|---|---|
profile、pix_fmt | Main 10、yuv420p10le | 10 位元 HEVC、4:2:0 |
color_primaries、color_transfer、color_space | bt2020、smpte2084、bt2020nc | BT.2020、PQ、非恆定亮度 |
color_range | tv | 有限(窄)範圍 |
| 母帶顯示器元資料 | max_luminance=10000000/10000、min_luminance=50/10000 | 峰值 1,000 nits、黑位 0.005 nits |
| 內容亮度元資料 | max_content=1000、max_average=400 | MaxCLL 與 MaxFALL |
數值會以各編碼格式的單位、用分數形式列出:我們的 AV1 檔案顯示 max_luminance=256000/256,同樣是 1,000 nits。HLG 檔案會顯示 arib-std-b67,通常沒有母帶資料。以 HDR 調色的檔案如果讀出來是 bt709 或 unknown,播放時就會被當成 SDR。
KwaFlux 怎麼處理 HDR
- SDR 轉 HDR 就是反向色調映射。 在 AI 調色 中,SDR 轉 HDR 用 AI 模型擴展 SDR 片段,讓動態範圍更寬、高光更亮、暗部更清楚。場景 決定風格:風光(預設)、夜景,或 自訂,搭配 2.0 到 5.0 的 亮度強度 滑桿(預設 3.8)。
- 匯出選項。 色彩空間 提供 HDR PQ (Rec.2020)(預設)、HDR HLG (Rec.2020) 和 SDR (BT.709),編碼可選 H.265(建議)或 AV1,封裝建議用 MKV。HDR 匯出為 10 位元,SDR 為 8 位元,匯出設定會為每個選項配上對應的轉換函數、BT.2020 原色與矩陣,以及有限範圍的標記。
- 交付前先檢查。 對匯出的檔案執行上面的 ffprobe 指令;如果平台需要的 ST 2086 和 MaxCLL 數值不在檔案裡,就用 x265 的設定重新編碼。
- 在 SDR 螢幕上預覽 HDR。 預覽渲染器會解碼 PQ 和 HLG,把 BT.2020 色彩轉成 BT.709,再用 Reinhard 式曲線壓縮高光;另外也有供 HDR 輸出用的 HDR 直通模式。
- 修復與多步驟任務。 畫質修復 的匯出沒有色彩空間選項,所以修復後的 HDR 檔案請檢查標記。多步驟任務的各步驟之間,KwaFlux 傳遞的是 10 位元中間檔,8 位元的捨入誤差不會累積成色帶。
問題排解
| 問題 | 可能原因 | 解決方法 |
|---|---|---|
| HDR 檔案看起來灰灰平平的 | 缺少標記,或播放器不支援 HDR | 檢查標記;只有像素確實是 PQ 時才重新標記;另做一份色調映射後的 SDR 版本 |
| 標成 PQ 的 SDR 片段看起來很刺眼 | 只改了標記,沒有轉換 | 用 zscale 放置或反向色調映射重新編碼 |
| 顏色過度飽和 | BT.709 或 P3 的像素被標成 BT.2020 | 先用 zscale p=bt2020 轉換原色 |
| SDR 版本的天空出現色帶 | 8 位元輸出沒有加抖動 | 加上 d=error_diffusion;中間檔保持 10 位元 |
| 高光變成平坦的白色色塊 | 用了 clip 曲線,或 peak 設太低 | 改用 Möbius、Reinhard 或 Hable,並填實際峰值 |
| 沒有母帶元資料 | 沒設定 master-display 和 max-cll | 在 x265 或 SVT-AV1 中加上,並檢查第一幀 |
做不到的事
- 色調映射無法在 100 nits 的螢幕上顯示 1,000 nits。 它只能選擇要保住什麼:高光細節、中間調對比,或色彩。
- 反向色調映射找不回已經截掉的細節, BT.2446 也提醒它可能讓壓縮瑕疵變得明顯。
- 元資料修不了調色。 它只是描述母帶,讓顯示器能據此調整。
- 標記無法轉換像素。 沒有轉換就改標記,改變的是畫面。
結語
SDR 和 HDR 的差別不是一個決定,而是四個:曲線、原色、位元深度和元資料。每一項都要刻意設定,用 ffprobe 檢查;畫面要在 SDR 和 HDR 之間轉換時,請真正做轉換,不要只改標籤。
KwaFlux 在你自己的 GPU 上執行AI 調色,包括以 PQ 或 HLG 匯出 SDR 轉 HDR。AI 處理在你自己的 GPU 上執行,媒體檔案不會為了處理而上傳。可在 Windows 10(64 位元,1809 或更新版本)、Windows 11,以及搭載 Apple Silicon 的 macOS 12 或更新版本上執行。預覽不需要帳號:任何片段都能渲染 1、3 或 5 秒的預覽。僅在匯出、轉換、檔案修復和從連結下載檔案時需要登入並購買付費方案。
用你自己的真實素材實測效果
下載 KwaFlux,付費前先在自己的素材上免費預覽效果——無需註冊,在你的 GPU 上處理,媒體檔案不上傳。 影片預覽可選 1、3或5 秒;防抖預覽可選 5、15或30 秒。
常見問題
PQ 為什麼比 SDR gamma 需要更多位元?
因為 PQ 把 0 到 10,000 nits 分配在 SDR 用來表示 0 到 100 nits 的碼值範圍上。依我們的計算,在 100 nits 附近,8 位元 PQ 每一階的亮度變化約 4.7%,會出現明顯色帶;10 位元則降到約 1.1%。修正色帶的方法請見 8 位元與 10 位元影片。
HLG 能在 SDR 電視上正常播放嗎?
部分可以。ITU-R BT.2390 報告指出,HLG 的設計在 SDR 顯示器上有相當程度的相容性,但僅限於能接受 BT.2020 色彩容器的顯示器。只支援 BT.709 的螢幕,仍然需要另外轉好的 SDR 版本。
MaxCLL 和 MaxFALL 是什麼?
MaxCLL 是整部片最亮像素的亮度,MaxFALL 是任一幀平均亮度的最高值,單位都是 nits。兩者來自 CTA-861.3,以靜態元資料的形式隨 HDR10 一起傳遞,播放器可以據此選擇色調映射曲線。
HDR 轉 SDR 能不損失高光細節嗎?
部分可以。Hable、Möbius 或 BT.2390 EETF 這類滾降曲線會保留高光的層次,而不是直接截掉。多出來的亮度在 100 nits 的顯示器上留不住,而且每條曲線都要犧牲一些中間調對比或色彩,才能保住那些細節。
只改色彩標記,SDR 就能變成 HDR 嗎?
不行。標記只告訴播放器怎麼解讀數值,10 位元 SDR 的滿白被當成 PQ 讀取時,等於要求 10,000 nits。請用真正的轉換把 SDR 放進 PQ 容器,或用反向色調映射擴展;請見 SDR 轉 HDR 與流暢動態。
參考資料
- ITU-R, Recommendation BT.2100-3 (PQ constants, HLG system gamma, BT.2020 primaries, 203-nit reference white) (2026-10-21 查閱)
- ITU-R, Recommendation BT.1886 (gamma 2.4 display curve, 100 cd/m² white, BT.709 camera curve and primaries) (2026-10-21 查閱)
- ITU-R, Report BT.2390-12 (PQ bit depth against the Barten threshold, HLG curve and compatibility) (2026-10-21 查閱)
- ITU-R, Report BT.2390-8, sections 5.4.1 and 7.4 (EETF; clip, static, and dynamic mapping) (2026-10-21 查閱)
- ITU-R, Report BT.2446-1 (tone mapping and inverse tone mapping, reference white levels, artifact amplification) (2026-10-21 查閱)
- x265 Documentation, "Command Line Options" (color, HDR10, and HLG options) (2026-10-21 查閱)
- SVT-AV1, "Parameters" (color description, mastering-display, content-light) (2026-10-21 查閱)
- FFmpeg Filters Documentation (`tonemap`, `zscale`) (2026-10-21 查閱)
- FFmpeg source, vf_tonemap.c (curve formulas for our chart) (2026-10-21 查閱)
- FFmpeg Bitstream Filters Documentation (`hevc_metadata`) (2026-10-21 查閱)
- YouTube Help, "Upload High Dynamic Range (HDR) videos" (P3 masters tagged as Rec. 2020) (2026-10-21 查閱)
- Dolby Professional, "Dolby Vision HDR at Home" (dynamic metadata, 12-bit color) (2026-10-21 查閱)
- HDR10+, "How does dynamic metadata in HDR10+ improve upon this?" (2026-10-21 查閱)
- CVRL, CIE 1931 2-degree colour matching functions (spectral locus for our chart) (2026-10-21 查閱)

