I am wondering, is it sufficient for the capture plugin to copy the pixeldata into the buffers created by InitializeSharedMemoryCPUCapture and setting the MemoryCopyData::lastRendered parameter to 0 or 1? Cause I've done that and hooked into DDraw's Flip method, mapped the surface data to client memory and fed the data to the created buffers, but OBS preview window stays black. (the hook itself however works)
Edit: Never mind, got it working. A bit slow though. It's so sad that D3D10 does not support R5G6B5 format. :(
Edit2: I made a fork and added a rudimentary implementation for DDraw capture, you can obtain it from
https://github.com/Bl00drav3n/OBS. The current big issue I have is my lack of experience with multithreaded applications, but I am happy that it captures anything at all. xD Next things to improve are stability and perfromance, for the latter one I will have a look into D3D and the possibilities to use GPU memory capture with DirectDrawSurfaces, as CPU memory capture is obviously pretty slow.