HyperSnap 啟動 DX 擷取時,抓下來的是播放軟體存放在記憶體內的 DX Overlay or Surface or Offscreen 的東西。這個區段裡面的資料,視播放解碼的軟體不同而有不同。
例如 XviD Decoder 預設是輸出 YUY2,那麼這個記憶體內存的資料就是 YUY2。
HyperSnap 抓下來這個 YUY2 後,它會去 Decode 這個資料,upsampling 到 YUV 4:4:4,然後轉成 RGB。最後就是顯示在螢幕上你看到的圖檔。
也就是 upsampling,YUV -> RGB 轉換,都變成是由 HyperSnap 來做。
所以你用同一個播放軟體,以 HyperSnap 擷取,抓下來的畫面都會一樣,不會因為插的顯示卡不同而有所不同。
宗毛兄的那兩張圖檔會不同是因為不是同一個 Frame。
而一般播放的時候,upsampling,YUV -> RGB,還有加上放大到全螢幕時的 scaling 全部都是由硬體顯示卡來做的。所以你在螢幕上看到的畫面,和用 HyperSnap 抓下來看的畫面並不會相同。
正因為這個原因,所以 black penny 兄才會捨近求遠,用數位相機拍攝實際上螢幕放出來的畫面。
經由 DX Overlay -> 顯示卡硬體處理後的畫面,是無法返回系統記憶體,由其他軟體抓取下來的。當然,新一代的 VPE 可以... 除此之外,傳統的方式,我們是無法擷取經由顯示卡處理後的畫面,所以要比較顯示卡播放的差異,一定要用數位相機拍攝的方式。
那麼我們也可以知道為什麼有時候 HyperSnap 擷取畫面會失效,因為 DX Overlay 記憶體內存放的資料 HyperSnap 不會解,所以也無法顯示。例如 DivX Decoder 啟動 YUV Extended,會直接輸出 YV12 的資料,如果 HyperSanp 找不到 Decoder 可以解它抓下來的 YV12,這時擷取就會失敗。
比較的時候最好抓精確的同一張 Frame 比較,不然很難比較。
Zoom Player 這個播放軟體可以以 Frame 為單位單格前進,用這個軟體比較方便調整到同一格比較。