yuv覆蓋

YUV 覆蓋(Overlay)
多媒體領域中,尤其在涉及到 MPEG 播放時,通常使用 YUV 顏色空間來表示顏色,如果要在螢幕上顯示一副 MPEG 解壓之後的圖片,則需要進行 YUV 顏色空間到 RGB 顏色空間的轉換。YUV 覆蓋最初來自一些顯示晶片的加速功能。這種顯示晶片能夠在硬體基礎上完成 YUV 到 RGB 的轉換,免去軟體轉換帶來的性能損失。在這種顯示晶片上建立了 YUV 覆蓋之後,可以直接將 YUV 信息寫入緩衝區,硬體能夠自動完成 YUV 到 RGB 的轉換,從而在 RGB 顯示器上顯示出來。在不支持 YUV 覆蓋的顯示晶片上,MiniGUI 也能夠通過軟體實現 YUV 覆蓋,這時,需要調用 DisplayYUVOverlay 函式將 YUV 信息轉換並縮放顯示在建立 YUV 覆蓋的 DC 設備上。
MiniGUI 提供的 YUV 覆蓋操作函式原型如下:
/***************************** YUV overlay support ***************************/
/* 最常見的視頻覆蓋格式.
*/
#define GAL_YV12_OVERLAY 0x32315659 /* Planar mode: Y + V + U (3 planes) */
#define GAL_IYUV_OVERLAY 0x56555949 /* Planar mode: Y + U + V (3 planes) */
#define GAL_YUY2_OVERLAY 0x32595559 /* Packed mode: Y0+U0+Y1+V0 (1 plane) */
#define GAL_UYVY_OVERLAY 0x59565955 /* Packed mode: U0+Y0+V0+Y1 (1 plane) */
#define GAL_YVYU_OVERLAY 0x55595659 /* Packed mode: Y0+V0+Y1+U0 (1 plane) */
/* 該函式創建一個視頻輸出覆蓋
*/
GAL_Overlay* GUIAPI CreateYUVOverlay (int width, int height,
Uint32 format, HDC hdc);
/* 鎖定覆蓋進行直接的緩衝區讀寫,結束後解鎖 */
int GAL_LockYUVOverlay (GAL_Overlay *overlay);
void GAL_UnlockYUVOverlay (GAL_Overlay *overlay);
#define LockYUVOverlay GAL_LockYUVOverlay
#define UnlockYUVOverlay GAL_UnlockYUVOverlay
/* 釋放視頻覆蓋 */
void GAL_FreeYUVOverlay (GAL_Overlay *overlay);
#define FreeYUVOverlay GAL_FreeYUVOverlay
/* 將視頻覆蓋傳送到指定 DC 設備上。該函式能夠進行 2 維縮放
*/
void GUIAPI DisplayYUVOverlay (GAL_Overlay* overlay, const RECT* dstrect);

相關詞條

熱門詞條

聯絡我們