Added point filtering option to the software capture source as well, useful for up/downscaling of emulators and other low resolution fixed pixel 2D stuff.
This commit is contained in:
parent
351b4089f0
commit
ee68ba6924
@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "DShowPlugin.h"
|
#include "DShowPlugin.h"
|
||||||
#include <D3D10.h>
|
|
||||||
|
|
||||||
DWORD STDCALL PackPlanarThread(ConvertData *data);
|
DWORD STDCALL PackPlanarThread(ConvertData *data);
|
||||||
|
|
||||||
|
2
OBS.rc
2
OBS.rc
@ -234,6 +234,8 @@ BEGIN
|
|||||||
RTEXT "Gamma",IDC_STATIC,4,147,90,8
|
RTEXT "Gamma",IDC_STATIC,4,147,90,8
|
||||||
CONTROL "",IDC_GAMMA,"msctls_trackbar32",TBS_BOTH | WS_TABSTOP,97,139,216,26
|
CONTROL "",IDC_GAMMA,"msctls_trackbar32",TBS_BOTH | WS_TABSTOP,97,139,216,26
|
||||||
LTEXT ".numbers!",IDC_GAMMAVAL,318,147,66,8
|
LTEXT ".numbers!",IDC_GAMMAVAL,318,147,66,8
|
||||||
|
CONTROL "Sources.SoftwareCaptureSource.PointFiltering",IDC_POINTFILTERING,
|
||||||
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,162,250,10
|
||||||
GROUPBOX "Sources.SoftwareCaptureSource.RegionCapture",IDC_STATIC,7,174,308,67
|
GROUPBOX "Sources.SoftwareCaptureSource.RegionCapture",IDC_STATIC,7,174,308,67
|
||||||
CONTROL "Sources.SoftwareCaptureSource.RegionCapture",IDC_REGIONCAPTURE,
|
CONTROL "Sources.SoftwareCaptureSource.RegionCapture",IDC_REGIONCAPTURE,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,185,130,10,WS_EX_RIGHT
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,185,130,10,WS_EX_RIGHT
|
||||||
|
@ -42,7 +42,7 @@ class DesktopImageSource : public ImageSource
|
|||||||
|
|
||||||
UINT warningID;
|
UINT warningID;
|
||||||
|
|
||||||
bool bUseColorKey;
|
bool bUseColorKey, bUsePointFiltering;
|
||||||
DWORD keyColor;
|
DWORD keyColor;
|
||||||
UINT keySimilarity, keyBlend;
|
UINT keySimilarity, keyBlend;
|
||||||
|
|
||||||
@ -467,6 +467,14 @@ public:
|
|||||||
alphaIgnoreShader->SetFloat(hGamma, fGamma);
|
alphaIgnoreShader->SetFloat(hGamma, fGamma);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(bUsePointFiltering) {
|
||||||
|
SamplerState *sampler;
|
||||||
|
SamplerInfo samplerinfo;
|
||||||
|
samplerinfo.filter = GS_FILTER_POINT;
|
||||||
|
sampler = CreateSamplerState(samplerinfo);
|
||||||
|
LoadSamplerState(sampler, 0);
|
||||||
|
}
|
||||||
|
|
||||||
if(bCompatibilityMode)
|
if(bCompatibilityMode)
|
||||||
DrawSpriteEx(lastRendered, (opacity255<<24) | 0xFFFFFF,
|
DrawSpriteEx(lastRendered, (opacity255<<24) | 0xFFFFFF,
|
||||||
pos.x, pos.y+size.y, pos.x+size.x, pos.y,
|
pos.x, pos.y+size.y, pos.x+size.x, pos.y,
|
||||||
@ -519,6 +527,8 @@ public:
|
|||||||
bCaptureMouse = data->GetInt(TEXT("captureMouse"), 1);
|
bCaptureMouse = data->GetInt(TEXT("captureMouse"), 1);
|
||||||
bCaptureLayered = data->GetInt(TEXT("captureLayered"), 0);
|
bCaptureLayered = data->GetInt(TEXT("captureLayered"), 0);
|
||||||
|
|
||||||
|
bool bNewUsePointFiltering = data->GetInt(TEXT("usePointFiltering"), 0) != 0;
|
||||||
|
|
||||||
int x = data->GetInt(TEXT("captureX"));
|
int x = data->GetInt(TEXT("captureX"));
|
||||||
int y = data->GetInt(TEXT("captureY"));
|
int y = data->GetInt(TEXT("captureY"));
|
||||||
int cx = data->GetInt(TEXT("captureCX"), 32);
|
int cx = data->GetInt(TEXT("captureCX"), 32);
|
||||||
@ -578,6 +588,7 @@ public:
|
|||||||
bClientCapture = bNewClientCapture;
|
bClientCapture = bNewClientCapture;
|
||||||
|
|
||||||
bCompatibilityMode = bNewCompatibleMode;
|
bCompatibilityMode = bNewCompatibleMode;
|
||||||
|
bUsePointFiltering = bNewUsePointFiltering;
|
||||||
|
|
||||||
captureRect.left = x;
|
captureRect.left = x;
|
||||||
captureRect.top = y;
|
captureRect.top = y;
|
||||||
@ -645,6 +656,7 @@ public:
|
|||||||
keyColor = data->GetInt(TEXT("keyColor"), 0xFFFFFFFF);
|
keyColor = data->GetInt(TEXT("keyColor"), 0xFFFFFFFF);
|
||||||
keySimilarity = data->GetInt(TEXT("keySimilarity"), 10);
|
keySimilarity = data->GetInt(TEXT("keySimilarity"), 10);
|
||||||
keyBlend = data->GetInt(TEXT("keyBlend"), 0);
|
keyBlend = data->GetInt(TEXT("keyBlend"), 0);
|
||||||
|
bUsePointFiltering = data->GetInt(TEXT("usePointFiltering"), 0) != 0;
|
||||||
|
|
||||||
bUseColorKey = bNewUseColorKey;
|
bUseColorKey = bNewUseColorKey;
|
||||||
|
|
||||||
@ -1346,6 +1358,9 @@ INT_PTR CALLBACK ConfigDesktopSourceProc(HWND hwnd, UINT message, WPARAM wParam,
|
|||||||
DWORD keyColor = data->GetInt(TEXT("keyColor"), 0xFFFFFFFF);
|
DWORD keyColor = data->GetInt(TEXT("keyColor"), 0xFFFFFFFF);
|
||||||
UINT similarity = data->GetInt(TEXT("keySimilarity"), 10);
|
UINT similarity = data->GetInt(TEXT("keySimilarity"), 10);
|
||||||
UINT blend = data->GetInt(TEXT("keyBlend"), 0);
|
UINT blend = data->GetInt(TEXT("keyBlend"), 0);
|
||||||
|
|
||||||
|
BOOL bUsePointFiltering = data->GetInt(TEXT("usePointFiltering"), 0);
|
||||||
|
SendMessage(GetDlgItem(hwnd, IDC_POINTFILTERING), BM_SETCHECK, bUsePointFiltering ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwnd, IDC_USECOLORKEY), BM_SETCHECK, bUseColorKey ? BST_CHECKED : BST_UNCHECKED, 0);
|
SendMessage(GetDlgItem(hwnd, IDC_USECOLORKEY), BM_SETCHECK, bUseColorKey ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||||
CCSetColor(GetDlgItem(hwnd, IDC_COLOR), keyColor);
|
CCSetColor(GetDlgItem(hwnd, IDC_COLOR), keyColor);
|
||||||
@ -1793,6 +1808,7 @@ INT_PTR CALLBACK ConfigDesktopSourceProc(HWND hwnd, UINT message, WPARAM wParam,
|
|||||||
BOOL bCaptureMouse = SendMessage(GetDlgItem(hwnd, IDC_CAPTUREMOUSE), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
BOOL bCaptureMouse = SendMessage(GetDlgItem(hwnd, IDC_CAPTUREMOUSE), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||||
BOOL bCaptureLayered = SendMessage(GetDlgItem(hwnd, IDC_CAPTURELAYERED), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
BOOL bCaptureLayered = SendMessage(GetDlgItem(hwnd, IDC_CAPTURELAYERED), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||||
BOOL bCompatibilityMode = SendMessage(GetDlgItem(hwnd, IDC_COMPATIBILITYMODE), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
BOOL bCompatibilityMode = SendMessage(GetDlgItem(hwnd, IDC_COMPATIBILITYMODE), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||||
|
BOOL bUsePointFiltering = SendMessage(GetDlgItem(hwnd, IDC_POINTFILTERING), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||||
|
|
||||||
//---------------------------------
|
//---------------------------------
|
||||||
|
|
||||||
@ -1818,6 +1834,8 @@ INT_PTR CALLBACK ConfigDesktopSourceProc(HWND hwnd, UINT message, WPARAM wParam,
|
|||||||
|
|
||||||
data->SetInt(TEXT("compatibilityMode"), bCompatibilityMode);
|
data->SetInt(TEXT("compatibilityMode"), bCompatibilityMode);
|
||||||
|
|
||||||
|
data->SetInt(TEXT("usePointFiltering"), bUsePointFiltering);
|
||||||
|
|
||||||
data->SetInt(TEXT("captureX"), posX);
|
data->SetInt(TEXT("captureX"), posX);
|
||||||
data->SetInt(TEXT("captureY"), posY);
|
data->SetInt(TEXT("captureY"), posY);
|
||||||
data->SetInt(TEXT("captureCX"), sizeX);
|
data->SetInt(TEXT("captureCX"), sizeX);
|
||||||
|
@ -67,6 +67,7 @@
|
|||||||
#define IDC_SIZEY 1034
|
#define IDC_SIZEY 1034
|
||||||
#define IDC_GAMMA 1035
|
#define IDC_GAMMA 1035
|
||||||
#define IDC_USECUSTOM 1036
|
#define IDC_USECUSTOM 1036
|
||||||
|
#define IDC_POINTFILTERING 1036
|
||||||
#define IDC_USEMONITOR 1037
|
#define IDC_USEMONITOR 1037
|
||||||
#define IDC_DISABLEAERO 1038
|
#define IDC_DISABLEAERO 1038
|
||||||
#define IDC_DISABLEMIC 1040
|
#define IDC_DISABLEMIC 1040
|
||||||
|
@ -233,6 +233,7 @@ Sources.SoftwareCaptureSource.Monitor "Monitor:"
|
|||||||
Sources.SoftwareCaptureSource.MonitorCapture "Monitor Capture"
|
Sources.SoftwareCaptureSource.MonitorCapture "Monitor Capture"
|
||||||
Sources.SoftwareCaptureSource.MonitorCaptureTooltip "Disable aero in video settings to maximize FPS"
|
Sources.SoftwareCaptureSource.MonitorCaptureTooltip "Disable aero in video settings to maximize FPS"
|
||||||
Sources.SoftwareCaptureSource.MouseCapture "Capture mouse cursor"
|
Sources.SoftwareCaptureSource.MouseCapture "Capture mouse cursor"
|
||||||
|
Sources.SoftwareCaptureSource.PointFiltering "Use point filtering"
|
||||||
Sources.SoftwareCaptureSource.Position "Position:"
|
Sources.SoftwareCaptureSource.Position "Position:"
|
||||||
Sources.SoftwareCaptureSource.RegionCapture "Sub-Region"
|
Sources.SoftwareCaptureSource.RegionCapture "Sub-Region"
|
||||||
Sources.SoftwareCaptureSource.RegionWindowText "Press Enter, Esc, or click outside this rectangle when complete."
|
Sources.SoftwareCaptureSource.RegionWindowText "Press Enter, Esc, or click outside this rectangle when complete."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user