分析 VC++ Demo `VideoWin.cpp` 中 `OnPaint` → `StartVideoPreview` 的完整邏輯,為 C# 移植提供藍圖。
VC++ 關鍵代碼
// OnPaint
StartVideoPreview(&dc);
// StartVideoPreview
for (i=0; iFillRect(&previewWnd, &brush);
int numRects = GetTotalDSPs();
ZeroMemory(rectList, sizeof(rectList));
numRects = CacRects(GetTotalDSPs()); // 計算多畫面佈局矩形
for (i=0; i
代碼分析
- `OnInitDialog`:板卡初始化、服務端初始化、通道打開、編碼參數、註冊流回調、註冊消息通知、啟動服務端
- `StreamDirectReadCallback`:核心數據流回調,調用 `MP4_ServerWriteDataEx` 寫入發送緩衝,可選 `_write` 存文件
- 預覽觸發於 `OnPaint`,支持多畫面佈局(`CacRects` 計算矩形)
C# 移植策略
- 單通道場景大幅簡化:無需 `CacRects`、多通道循環
- 保留核心:`ChannelOpen`、`SetIBPMode`、`SetDefaultQuant`、`StartVideoPreview`
- 流回調註冊移至服務端啟動流程(見下篇)