HDMI 的規格裡面有一個 auto lips sync, 以便 HDMI 的 source 或是 repeater 送出符合 repeater 或是 sink 的 AV 訊號. 當這台 sink 的 HDMI device 處理 audio 比 video 快的時候 (通常如此), 希望上游可以晚一點送出 audio 的資料 (raw data 或 PCM), 使得最終在 HDMI sink 上面可以做到視訊、音訊的同步輸出.
至於怎麼做到 auto 呢? 其實對 sink device 是 auto, 但是對 source device 卻不然. 根本就是 source 要做苦工去迎合 sink. Sink 只要大剌剌地把它處理 audio 和 video 的絕對延遲時間, 用 EDID回送給 source 端就好了.
由於 sink 端可能對於解不同的 video/audio format 的速度不同, 因此就算不插拔訊號線, 它還是會穿插地送出不同的 audio latency 與 video latency. 特別是 video 在 progressive mode 和 interlace mode 的速度差了不少, 因此 sink 有時會送出第二組 latency: Interleave audio/vide latency 給 source. 在 source 的 HDMI driver 裡面, 就要依據 max 和 min 的 latency, 去計算 audio 與 video 的 avearge latency.
audio 的絕對 delay 值 = (max_latency + 2*min_latency)/3
video 的絕對 delay 值 = (2 * max_latency + min_latency)/3
而 Audio 的相對 delay 值 = video 的絕對 delay 值 – audio 的絕對 delay 值.
這是因為人類對於 “audio 比 video 快" 比較難容忍, 所以 audio 多 delay 一些比較安全.