Skip to content

D3D Grabbing (x64 build)#44

Open
psieg wants to merge 55 commits intowoodenshark:masterfrom
psieg:d3d_grabbing_pr
Open

D3D Grabbing (x64 build)#44
psieg wants to merge 55 commits intowoodenshark:masterfrom
psieg:d3d_grabbing_pr

Conversation

@psieg
Copy link

@psieg psieg commented Jan 8, 2015

  • When built x64, this version can inject 32- and 64-bit DirectX Processes
  • Improved Injection stability, reduced overhead
  • Does not grab every frame, customizable grab frequency
  • Display a warning when DX hooking is enabled but not run as administrator
  • Inject only fullscreen DX programs
  • Un-Inject programs when quitting

Not tested on other platforms or with MinGW build
Includes #40

psieg added 30 commits December 21, 2014 18:34
@tkhduracell
Copy link

+1

psieg added 2 commits January 29, 2015 21:54
* Add option to skip d3d9 because of performance impact
* Fix GAPIProxyGrabber destructor trying to call overriden virtual free()
* Fix grabberType changed too often during SettingsWindow setup
* Properly cleanup and create D3D10Grabber because stop() does not stop it from injecting

Conflicts:
	Software/src/SettingsWindow.ui
@seergey
Copy link

seergey commented Feb 8, 2015

Actually, works for me with some extra hooking and compilation fixes. However, when fullscreen app has a resolution that differs from one Prismatik was launched against, hooking doesn't work:
qCritical() << Q_FUNC_INFO << "illegal state, screens don't match: qt " <<
grabbedScreens[0].screenInfo.rect << ", remote proc's " <<
m_memDesc.width << "x" << m_memDesc.

@psieg
Copy link
Author

psieg commented Feb 8, 2015

Indeed. I did not change that part, that's what the current master does too. One could add a mechanism to scale the image to the resolution prismatik expects
see https://github.com/woodenshark/Lightpack/blob/master/Software/grab/D3D10Grabber.cpp#L255

@seergey
Copy link

seergey commented Feb 8, 2015

Actually this is what GrabberBase::reallocate is for:
https://github.com/woodenshark/Lightpack/blob/master/Software/grab/GrabberBase.cpp#L122
It is called, when dimensions or grabbing widget positioning is changed.

@psieg
Copy link
Author

psieg commented Feb 8, 2015

In theory, whoever originally wrote the D3D10Grabber does not use the screensWithWidgets (and therefore the reallocate mechanism):
https://github.com/woodenshark/Lightpack/blob/master/Software/grab/D3D10Grabber.cpp#L531

I do not think the GrabberBase can handle a scenario where the screens returned by screensWithWidgets have a resolution different from the resolution the widgets are specified in. The grab mechanism can handle offsets but not entirely different sizes: https://github.com/woodenshark/Lightpack/blob/master/Software/grab/GrabberBase.cpp#L158

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants