Рендеринг видео с поверхности Direct3D 9 дает туманный результат - PullRequest
0 голосов
/ 25 марта 2019

Я рендерил поток с камеры с помощью DirectX 9, но он отображает поток немного туманно, что-то вроде серого наложения на нем. Я выясняю это, когда мой результат сравнивают с VLC.

Я получаю массивы YUV через ffmpeg и использую прямоугольник блокировки Direct3DSurface9 для копирования из памяти. После копирования я получаю backbuffer и растягиваю его. Наконец представь это.

Я пробовал D3DMATERIAL9, но без эффектов для меня. Если я не ошибаюсь, материальные эффекты используются для вершины. Затем попытался SetDeviceGammaRamp снова не работает.

Так я создаю свою поверхность

d3d9Dev->CreateOffscreenPlainSurface(_srcWidth,_srcHeight,(D3DFORMAT)MAKEFOURCC('Y','V','1','2'), D3DPOLL_DEFAULT, &d3d9Surface, NULL);

EDIT

Я получаю поток с камеры в формате YUV и не преобразовал его в RGB. Весы формата YUV 16-235. Поэтому моя программа показывает туманные цвета. Я изменил свой формат BGRA через ffmpeg. Это решает мою проблему.

...