Эта проблема не возникает при непосредственном использовании COM-объектов, например при установке EVR на скрытую панель, которая впоследствии отображается.Я бы предположил, что время, потраченное на избавление от TVideoWindow и прямое использование таких рендеров, как VMR9 и EVR, будет более продуктивным.Вам не нужно избавляться от DSPack, чтобы сделать это, что-то вроде
FDisplayControl: IMFVideoDisplayControl;
FEVR: IBaseFilter;
R: TNormalizedRect;
R: TRect;
hr := Succeeded(CoCreateInstance(CLSID_EnhancedVideoRenderer, nil, CLSCTX_INPROC, IID_IBaseFilter, FEVR));
if (hr <> S_OK) then
begin
showmessage(GetErrorString(hr) + ' (Could not create the enhanced video renderer : ' + inttohex(hr,8) + ')');
Exit;
end;
(FilterGraph as IFilterGraph2).AddFilter().AddFilter(FEVR, PWideChar(WideString('EVR')));
(FEVR as IMFGetService).GetService(MR_VIDEO_RENDER_SERVICE, IID_IMFVideoDisplayControl, FDisplayControl);
FDisplayControl.SetVideoWindow(Panel.Handle);
NR.Left := 0;
NR.Top := 0;
NR.Right := 1;
NR.Bottom := 1;
R := ClientRect;
FDisplayControl.SetVideoPosition(@nr, @r);
FDisplayControl.SetAspectRatioMode(MFVideoARMode_None);
Примечание: для вышеприведенного требуется EVR.pas