direct show plugin: removed the "disable audio" radio button, added a "disable" item in the audio devices list box instead

master
jp9000 2013-04-18 23:02:07 -07:00
parent 139a1119fd
commit 82eea21991
5 changed files with 49 additions and 54 deletions

View File

@ -1036,22 +1036,16 @@ INT_PTR CALLBACK ConfigureDialogProc(HWND hwnd, UINT message, WPARAM wParam, LPA
audioDeviceID = (UINT)SendMessage(hwndAudioList, CB_FINDSTRINGEXACT, -1, (LPARAM)strAudioDevice.Array());
if(audioDeviceID == CB_ERR)
{
SendMessage(hwndAudioList, CB_SETCURSEL, 0, 0);
ConfigureDialogProc(hwnd, WM_COMMAND, MAKEWPARAM(IDC_AUDIOLIST, CBN_SELCHANGE), (LPARAM)hwndAudioList);
}
SendMessage(hwndAudioList, CB_SETCURSEL, configData->bDeviceHasAudio ? 1 : 0, 0); //yes, I know, but the output is not a bool
else
{
SendMessage(hwndAudioList, CB_SETCURSEL, audioDeviceID, 0);
ConfigureDialogProc(hwnd, WM_COMMAND, MAKEWPARAM(IDC_AUDIOLIST, CBN_SELCHANGE), (LPARAM)hwndAudioList);
}
//------------------------------------------
HWND hwndTemp;
int soundOutputType = configData->data->GetInt(TEXT("soundOutputType"));
switch(soundOutputType)
{
case 0: hwndTemp = GetDlgItem(hwnd, IDC_NOSOUND); break;
int soundOutputType = configData->data->GetInt(TEXT("soundOutputType"), 1);
switch(soundOutputType) {
case 0:
case 1: hwndTemp = GetDlgItem(hwnd, IDC_OUTPUTSOUND); break;
case 2: hwndTemp = GetDlgItem(hwnd, IDC_PLAYDESKTOPSOUND); break;
}
@ -1062,6 +1056,11 @@ INT_PTR CALLBACK ConfigureDialogProc(HWND hwnd, UINT message, WPARAM wParam, LPA
EnableWindow(GetDlgItem(hwnd, IDC_TIMEOFFSET_EDIT), soundOutputType == 1);
EnableWindow(GetDlgItem(hwnd, IDC_VOLUME), soundOutputType != 0);
if (soundOutputType == 0)
SendMessage(hwndAudioList, CB_SETCURSEL, 0, 0);
ConfigureDialogProc(hwnd, WM_COMMAND, MAKEWPARAM(IDC_AUDIOLIST, CBN_SELCHANGE), (LPARAM)hwndAudioList);
//------------------------------------------
float fVol = configData->data->GetFloat(TEXT("volume"), 1.0f);
@ -1193,17 +1192,6 @@ INT_PTR CALLBACK ConfigureDialogProc(HWND hwnd, UINT message, WPARAM wParam, LPA
}
break;
case IDC_NOSOUND:
case IDC_PLAYDESKTOPSOUND:
case IDC_OUTPUTSOUND:
if(HIWORD(wParam) == BN_CLICKED)
{
EnableWindow(GetDlgItem(hwnd, IDC_TIMEOFFSET), LOWORD(wParam) == IDC_OUTPUTSOUND);
EnableWindow(GetDlgItem(hwnd, IDC_TIMEOFFSET_EDIT), LOWORD(wParam) == IDC_OUTPUTSOUND);
EnableWindow(GetDlgItem(hwnd, IDC_VOLUME), LOWORD(wParam) != IDC_NOSOUND);
}
break;
case IDC_VOLUME:
if(HIWORD(wParam) == VOLN_ADJUSTING || HIWORD(wParam) == VOLN_FINALVALUE)
{
@ -1229,14 +1217,14 @@ INT_PTR CALLBACK ConfigureDialogProc(HWND hwnd, UINT message, WPARAM wParam, LPA
if(source)
source->SetInt(TEXT("useChromaKey"), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_COLOR), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_SELECTCOLOR), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_BASETHRESHOLD_EDIT), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_BASETHRESHOLD), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_BLEND_EDIT), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_BLEND), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_COLOR), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_SELECTCOLOR), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_BASETHRESHOLD_EDIT), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_BASETHRESHOLD), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_BLEND_EDIT), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_BLEND), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_SPILLREDUCTION_EDIT), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_SPILLREDUCTION), bUseChromaKey);
EnableWindow(GetDlgItem(hwnd, IDC_SPILLREDUCTION), bUseChromaKey);
break;
}
@ -1474,27 +1462,29 @@ INT_PTR CALLBACK ConfigureDialogProc(HWND hwnd, UINT message, WPARAM wParam, LPA
configData->audioIDList.Insert(0, NULL);
}
CTSTR pDisabled = Str("Disable");
SendMessage(hwndAudioList, CB_INSERTSTRING, 0, (LPARAM)pDisabled);
configData->audioNameList.Insert(0, pDisabled);
configData->audioIDList.Insert(0, TEXT("Disabled"));
EnableWindow(hwndAudioList, bAudioDevicesPresent);
if (!bAudioDevicesPresent)
EnableWindow(GetDlgItem(hwnd, IDC_CONFIGAUDIO), FALSE);
bool bHasAudio = configData->bDeviceHasAudio || bAudioDevicesPresent;
bool bHasAudio = configData->bDeviceHasAudio;
EnableWindow(GetDlgItem(hwnd, IDC_NOSOUND), bHasAudio);
EnableWindow(GetDlgItem(hwnd, IDC_PLAYDESKTOPSOUND), bHasAudio);
EnableWindow(GetDlgItem(hwnd, IDC_OUTPUTSOUND), bHasAudio);
EnableWindow(GetDlgItem(hwnd, IDC_TIMEOFFSET), bHasAudio);
EnableWindow(GetDlgItem(hwnd, IDC_TIMEOFFSET_EDIT), bHasAudio);
if (bHasAudio) {
if (bHasAudio)
SendMessage(hwndAudioList, CB_SETCURSEL, 1, 0);
else
SendMessage(hwndAudioList, CB_SETCURSEL, 0, 0);
ConfigureDialogProc(hwnd, WM_COMMAND, MAKEWPARAM(IDC_AUDIOLIST, CBN_SELCHANGE), (LPARAM)hwndAudioList);
} else {
SendMessage(GetDlgItem(hwnd, IDC_NOSOUND), BM_SETCHECK, BST_CHECKED, 0);
SendMessage(GetDlgItem(hwnd, IDC_PLAYDESKTOPSOUND), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hwnd, IDC_OUTPUTSOUND), BM_SETCHECK, BST_UNCHECKED, 0);
}
ConfigureDialogProc(hwnd, WM_COMMAND, MAKEWPARAM(IDC_AUDIOLIST, CBN_SELCHANGE), (LPARAM)hwndAudioList);
}
}
break;
@ -1505,12 +1495,8 @@ INT_PTR CALLBACK ConfigureDialogProc(HWND hwnd, UINT message, WPARAM wParam, LPA
HWND hwndDevices = (HWND)lParam;
UINT id = (UINT)SendMessage(hwndDevices, CB_GETCURSEL, 0, 0);
if (id == CB_ERR) {
SendMessage(GetDlgItem(hwnd, IDC_NOSOUND), BM_SETCHECK, BST_CHECKED, 0);
SendMessage(GetDlgItem(hwnd, IDC_PLAYDESKTOPSOUND), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hwnd, IDC_OUTPUTSOUND), BM_SETCHECK, BST_UNCHECKED, 0);
EnableWindow(GetDlgItem(hwnd, IDC_NOSOUND), FALSE);
if (id == CB_ERR || id == 0) {
EnableWindow(GetDlgItem(hwnd, IDC_CONFIGAUDIO), FALSE);
EnableWindow(GetDlgItem(hwnd, IDC_PLAYDESKTOPSOUND), FALSE);
EnableWindow(GetDlgItem(hwnd, IDC_OUTPUTSOUND), FALSE);
EnableWindow(GetDlgItem(hwnd, IDC_TIMEOFFSET), FALSE);
@ -1528,7 +1514,6 @@ INT_PTR CALLBACK ConfigureDialogProc(HWND hwnd, UINT message, WPARAM wParam, LPA
EnableWindow(GetDlgItem(hwnd, IDC_CONFIGAUDIO), FALSE);
}
EnableWindow(GetDlgItem(hwnd, IDC_NOSOUND), TRUE);
EnableWindow(GetDlgItem(hwnd, IDC_PLAYDESKTOPSOUND), TRUE);
EnableWindow(GetDlgItem(hwnd, IDC_OUTPUTSOUND), TRUE);
EnableWindow(GetDlgItem(hwnd, IDC_TIMEOFFSET), TRUE);

View File

@ -81,18 +81,17 @@ BEGIN
CONTROL "DeviceSelection.UseBuffering",IDC_USEBUFFERING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,140,117,10,WS_EX_RIGHT
EDITTEXT IDC_DELAY_EDIT,138,137,40,14,ES_AUTOHSCROLL
CONTROL "",IDC_DELAY,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,178,137,10,14
GROUPBOX "DeviceSelection.Sound",IDC_STATIC,234,56,187,146,WS_GROUP
GROUPBOX "DeviceSelection.Sound",IDC_STATIC,234,56,187,136,WS_GROUP
LTEXT "DeviceSelection.AudioDevice",IDC_STATIC,243,73,117,8
COMBOBOX IDC_AUDIOLIST,243,85,169,12,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "DeviceSelection.Config",IDC_CONFIGAUDIO,335,101,78,13
CONTROL "ƒJƒXƒ^ƒ€1",IDC_VOLUME,"OBSVolumeControl",WS_TABSTOP,243,120,118,19
CONTROL "DeviceSelection.NoSound",IDC_NOSOUND,"Button",BS_AUTORADIOBUTTON,243,145,163,10
CONTROL "DeviceSelection.OutputSound",IDC_OUTPUTSOUND,"Button",BS_AUTORADIOBUTTON,243,156,163,10
LTEXT "DeviceSelection.SoundOffset",IDC_STATIC,239,171,117,8,NOT WS_GROUP,WS_EX_RIGHT
EDITTEXT IDC_TIMEOFFSET_EDIT,361,168,40,14,ES_AUTOHSCROLL
CONTROL "DeviceSelection.OutputSound",IDC_OUTPUTSOUND,"Button",BS_AUTORADIOBUTTON,243,145,163,10
LTEXT "DeviceSelection.SoundOffset",IDC_STATIC,239,160,117,8,NOT WS_GROUP,WS_EX_RIGHT
EDITTEXT IDC_TIMEOFFSET_EDIT,361,157,40,14,ES_AUTOHSCROLL
CONTROL "",IDC_TIMEOFFSET,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,401,168,11,14
CONTROL "DeviceSelection.PlayToDesktop",IDC_PLAYDESKTOPSOUND,
"Button",BS_AUTORADIOBUTTON,243,186,163,10
"Button",BS_AUTORADIOBUTTON,243,175,163,10
GROUPBOX "DeviceSelection.ChromaKey",IDC_STATIC,7,163,216,99
CONTROL "DeviceSelection.UseChromaKey",IDC_USECHROMAKEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,175,130,10,WS_EX_RIGHT
RTEXT "DeviceSelection.Color",IDC_STATIC,14,191,117,8

View File

@ -246,7 +246,9 @@ bool DeviceSource::LoadFilters()
goto cleanFinish;
}
soundOutputType = data->GetInt(TEXT("soundOutputType"));
soundOutputType = data->GetInt(TEXT("soundOutputType")); //0 is for backward-compatibility
if (strAudioID.CompareI(TEXT("Disabled")))
soundOutputType = 0;
if(soundOutputType != 0)
{

View File

@ -42,7 +42,6 @@
#define IDC_OPACITY 1028
#define IDC_OUTPUTSOUND 1029
#define IDC_PLAYDESKTOPSOUND 1030
#define IDC_NOSOUND 1031
#define IDC_EDIT1 1032
#define IDC_TIMEOFFSET_EDIT 1032
#define IDC_TIMEOFFSET 1033

View File

@ -97,6 +97,16 @@ public:
SubItems.SwapValues(i, SubItems.Num()-1-i);
}
inline bool HasItem(CTSTR lpName) const
{
for (UINT i=0; i<SubItems.Num(); i++) {
if (SubItems[i]->strName.CompareI(lpName))
return true;
}
return false;
}
CTSTR GetString(CTSTR lpName, TSTR def=NULL) const;
int GetInt(CTSTR lpName, int def=0) const;
float GetFloat(CTSTR lpName, float def=0.0f) const;