updated hotkey code, settings tweaks, added hotkey for stopping stream, and got rid of the text message in software capture
parent
a623c310b1
commit
9271b73d93
62
OBS.rc
62
OBS.rc
|
@ -85,11 +85,14 @@ BEGIN
|
|||
RTEXT "Settings.Publish.AutoReconnectTimeout",IDC_AUTORECONNECT_TIMEOUT_STATIC,7,115,133,8
|
||||
EDITTEXT IDC_AUTORECONNECT_TIMEOUT_EDIT,143,112,40,14,ES_AUTOHSCROLL | ES_READONLY
|
||||
CONTROL "",IDC_AUTORECONNECT_TIMEOUT,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,185,112,11,14
|
||||
LTEXT "Settings.Info",IDC_INFO,7,171,408,37,NOT WS_VISIBLE
|
||||
LTEXT "Settings.Info",IDC_INFO,7,197,408,37,NOT WS_VISIBLE
|
||||
CONTROL "Settings.Publish.SaveToFile",IDC_SAVETOFILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,132,145,10,WS_EX_RIGHT
|
||||
RTEXT "Settings.Publish.SavePath",IDC_SAVEPATH_STATIC,7,150,133,8
|
||||
EDITTEXT IDC_SAVEPATH,143,147,148,14,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "Browse",IDC_BROWSE,295,147,63,14
|
||||
RTEXT "Settings.Publish.StopStreamHotkey",IDC_STOPSTREAMHOTKEY_STATIC,7,168,133,8
|
||||
CONTROL "カスタム1",IDC_STOPSTREAMHOTKEY,"OBSHotkeyControlEx",WS_TABSTOP,144,165,80,14
|
||||
PUSHBUTTON "ClearHotkey",IDC_CLEARHOTKEY,225,165,66,14
|
||||
END
|
||||
|
||||
IDD_SETTINGS_ENCODING DIALOGEX 0, 0, 427, 287
|
||||
|
@ -97,24 +100,21 @@ STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_SYSMENU
|
|||
EXSTYLE WS_EX_CONTROLPARENT
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Settings.Encoding.Video",IDC_STATIC,4,2,417,64
|
||||
GROUPBOX "Settings.Encoding.Video",IDC_STATIC,4,2,417,50
|
||||
RTEXT "Settings.Encoding.Video.Quality",IDC_STATIC,10,15,138,8
|
||||
COMBOBOX IDC_QUALITY,152,13,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Encoding.Video.Tradeoff",IDC_STATIC,221,15,128,8
|
||||
COMBOBOX IDC_PRESET,354,13,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Encoding.Video.MaxBitRate",IDC_STATIC,10,31,138,8
|
||||
EDITTEXT IDC_MAXBITRATE,152,29,61,14,ES_AUTOHSCROLL | ES_NUMBER
|
||||
RTEXT "Settings.Encoding.Video.BufferSize",IDC_STATIC,221,31,128,8
|
||||
EDITTEXT IDC_BUFFERSIZE,354,29,61,14,ES_AUTOHSCROLL | ES_NUMBER
|
||||
GROUPBOX "Settings.Encoding.Audio",IDC_STATIC,4,73,417,50
|
||||
RTEXT "Settings.Encoding.Audio.Codec",IDC_STATIC,10,89,138,8
|
||||
COMBOBOX IDC_AUDIOCODEC,152,87,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Encoding.Audio.Bitrate",IDC_STATIC,221,89,128,8
|
||||
COMBOBOX IDC_AUDIOBITRATE,354,87,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Encoding.Audio.Format",IDC_STATIC,10,105,138,8
|
||||
COMBOBOX IDC_AUDIOFORMAT,152,103,264,62,CBS_DROPDOWNLIST | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Settings.Info",IDC_INFO,4,131,417,37,NOT WS_VISIBLE
|
||||
CONTROL "Settings.Encoding.Video.UseI444",IDC_USEI444,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | NOT WS_VISIBLE | WS_TABSTOP,10,48,151,10,WS_EX_RIGHT
|
||||
GROUPBOX "Settings.Encoding.Audio",IDC_STATIC,4,58,417,50
|
||||
RTEXT "Settings.Encoding.Audio.Codec",IDC_STATIC,10,74,138,8
|
||||
COMBOBOX IDC_AUDIOCODEC,152,72,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Encoding.Audio.Bitrate",IDC_STATIC,221,74,128,8
|
||||
COMBOBOX IDC_AUDIOBITRATE,354,72,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Encoding.Audio.Format",IDC_STATIC,10,90,138,8
|
||||
COMBOBOX IDC_AUDIOFORMAT,152,88,264,62,CBS_DROPDOWNLIST | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Settings.Info",IDC_INFO,4,116,417,37,NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_SETTINGS_VIDEO DIALOGEX 0, 0, 427, 287
|
||||
|
@ -161,14 +161,14 @@ BEGIN
|
|||
RTEXT "Settings.Audio.Device",IDC_STATIC,4,12,138,8
|
||||
COMBOBOX IDC_MICDEVICES,144,10,226,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Settings.Audio.PushToTalkHotkey",IDC_PUSHTOTALK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,31,143,10,WS_EX_RIGHT
|
||||
CONTROL "",IDC_PUSHTOTALKHOTKEY,"msctls_hotkey32",WS_BORDER | WS_TABSTOP,159,29,80,14
|
||||
CONTROL "",IDC_MUTEMICHOTKEY,"msctls_hotkey32",WS_BORDER | WS_TABSTOP,160,46,80,14
|
||||
CONTROL "",IDC_MUTEDESKTOPHOTKEY,"msctls_hotkey32",WS_BORDER | WS_TABSTOP,160,64,80,14
|
||||
RTEXT "Settings.Audio.MuteMicHotkey",IDC_STATIC,4,48,138,8
|
||||
RTEXT "Settings.Audio.MuteDesktopHotkey",IDC_STATIC,4,66,138,8
|
||||
PUSHBUTTON "ClearHotkey",IDC_CLEARPUSHTOTALK,240,29,73,14
|
||||
PUSHBUTTON "ClearHotkey",IDC_CLEARMUTEMIC,240,46,73,14
|
||||
PUSHBUTTON "ClearHotkey",IDC_CLEARMUTEDESKTOP,240,64,73,14
|
||||
PUSHBUTTON "ClearHotkey",IDC_CLEARPUSHTOTALK,241,29,73,14
|
||||
PUSHBUTTON "ClearHotkey",IDC_CLEARMUTEMIC,241,46,73,14
|
||||
PUSHBUTTON "ClearHotkey",IDC_CLEARMUTEDESKTOP,241,64,73,14
|
||||
CONTROL "カスタム1",IDC_PUSHTOTALKHOTKEY,"OBSHotkeyControlEx",WS_TABSTOP,160,29,80,14
|
||||
CONTROL "カスタム1",IDC_MUTEMICHOTKEY,"OBSHotkeyControlEx",WS_TABSTOP,160,46,80,14
|
||||
CONTROL "カスタム1",IDC_MUTEDESKTOPHOTKEY,"OBSHotkeyControlEx",WS_TABSTOP,160,64,80,14
|
||||
END
|
||||
|
||||
IDD_ENTERNAME DIALOGEX 0, 0, 265, 49
|
||||
|
@ -255,10 +255,10 @@ CAPTION "Scene.Hotkey"
|
|||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
RTEXT "Scene.Hotkey.Hotkey",IDC_STATIC,7,10,82,8
|
||||
CONTROL "",IDC_HOTKEY,"msctls_hotkey32",WS_BORDER | WS_TABSTOP,94,7,80,14
|
||||
DEFPUSHBUTTON "OK",IDOK,130,28,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,183,28,50,14
|
||||
PUSHBUTTON "ClearHotkey",IDC_CLEAR,177,7,56,14
|
||||
CONTROL "カスタム1",IDC_HOTKEY,"OBSHotkeyControlEx",WS_TABSTOP,93,7,80,14
|
||||
END
|
||||
|
||||
IDD_RECONNECTING DIALOGEX 0, 0, 179, 50
|
||||
|
@ -274,17 +274,19 @@ IDD_SETTINGS_ADVANCED DIALOGEX 0, 0, 427, 287
|
|||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Settings.Video",IDC_STATIC,4,2,418,66
|
||||
GROUPBOX "Settings.Video",IDC_STATIC,4,2,418,82
|
||||
CONTROL "Settings.Advanced.VideoEncoderSettings",IDC_USEVIDEOENCODERSETTINGS,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,14,203,10
|
||||
EDITTEXT IDC_VIDEOENCODERSETTINGS,33,29,373,14,ES_AUTOHSCROLL
|
||||
CONTROL "Settings.Advanced.UseSyncFix",IDC_USESYNCFIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,49,203,10
|
||||
LTEXT "Settings.Info",IDC_INFO,4,136,418,37,NOT WS_VISIBLE
|
||||
GROUPBOX "Settings.Advanced.Network",IDC_STATIC,4,73,418,52
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,30,149,10
|
||||
EDITTEXT IDC_VIDEOENCODERSETTINGS,33,43,373,14,ES_AUTOHSCROLL
|
||||
CONTROL "Settings.Advanced.UseSyncFix",IDC_USESYNCFIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,63,149,10
|
||||
LTEXT "Settings.Info",IDC_INFO,4,153,418,37,NOT WS_VISIBLE
|
||||
GROUPBOX "Settings.Advanced.Network",IDC_STATIC,4,90,418,52
|
||||
CONTROL "Settings.Advanced.UseSendBuffer",IDC_USESENDBUFFER,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,87,203,10
|
||||
COMBOBOX IDC_SENDBUFFERSIZE,144,101,158,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Advanced.SendBufferSize",IDC_STATIC,4,103,138,8
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,105,149,10
|
||||
COMBOBOX IDC_SENDBUFFERSIZE,145,118,158,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Advanced.SendBufferSize",IDC_STATIC,5,120,138,8
|
||||
RTEXT "Settings.Advanced.VideoEncoderCPUTradeoff",IDC_STATIC,5,14,138,8
|
||||
COMBOBOX IDC_PRESET,145,12,82,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
||||
|
@ -429,7 +431,7 @@ IDI_SOUND_DESKTOP_MUTED ICON "ui\\speaker-muted.ico"
|
|||
// Dialog Info
|
||||
//
|
||||
|
||||
IDD_SETTINGS_ENCODING DLGINIT
|
||||
IDD_SETTINGS_ADVANCED DLGINIT
|
||||
BEGIN
|
||||
IDC_PRESET, 0x403, 8, 0
|
||||
0x6466, 0x6673, 0x7364, 0x0066,
|
||||
|
|
|
@ -0,0 +1,387 @@
|
|||
/********************************************************************************
|
||||
Copyright (C) 2012 Hugh Bailey <obs.jim@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
********************************************************************************/
|
||||
|
||||
|
||||
#include "OBSAPI.h"
|
||||
|
||||
|
||||
struct HotkeyControlExData
|
||||
{
|
||||
DWORD hotkeyVK, modifiers;
|
||||
|
||||
bool bHasFocus;
|
||||
long cx,cy;
|
||||
|
||||
HFONT hFont;
|
||||
int fontHeight;
|
||||
|
||||
bool bExtendedKey;
|
||||
|
||||
void DrawHotkeyControlEx(HWND hwnd, HDC hDC);
|
||||
};
|
||||
|
||||
inline HotkeyControlExData* GetHotkeyControlExData(HWND hwnd)
|
||||
{
|
||||
return (HotkeyControlExData*)GetWindowLongPtr(hwnd, 0);
|
||||
}
|
||||
|
||||
|
||||
LRESULT CALLBACK HotkeyExProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HotkeyControlExData *control;
|
||||
|
||||
switch(message)
|
||||
{
|
||||
case WM_NCCREATE:
|
||||
{
|
||||
CREATESTRUCT *pCreateData = (CREATESTRUCT*)lParam;
|
||||
|
||||
SetWindowLongPtr(hwnd, GWL_EXSTYLE, WS_EX_STATICEDGE);
|
||||
|
||||
control = (HotkeyControlExData*)malloc(sizeof(HotkeyControlExData));
|
||||
zero(control, sizeof(HotkeyControlExData));
|
||||
SetWindowLongPtr(hwnd, 0, (LONG_PTR)control);
|
||||
|
||||
control->hotkeyVK = 0;
|
||||
control->modifiers = 0;
|
||||
|
||||
control->cx = pCreateData->cx;
|
||||
control->cy = pCreateData->cy;
|
||||
|
||||
control->hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
case WM_CREATE:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
HDC hDC = GetDC(hwnd);
|
||||
SIZE size;
|
||||
|
||||
SelectObject(hDC, control->hFont);
|
||||
GetTextExtentPoint32(hDC, TEXT("C"), 1, &size);
|
||||
control->fontHeight = size.cy;
|
||||
ReleaseDC(hwnd, hDC);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_SETFOCUS:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
CreateCaret(hwnd, NULL, 0, control->fontHeight);
|
||||
control->bHasFocus = true;
|
||||
int x = GetSystemMetrics(SM_CXEDGE);
|
||||
int y = GetSystemMetrics(SM_CYEDGE);
|
||||
SetCaretPos(x-1, y);
|
||||
ShowCaret(hwnd);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
control->bHasFocus = false;
|
||||
DestroyCaret();
|
||||
|
||||
if(!control->hotkeyVK)
|
||||
{
|
||||
control->modifiers = 0;
|
||||
control->bExtendedKey = false;
|
||||
}
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_GETDLGCODE:
|
||||
return DLGC_WANTCHARS | DLGC_WANTARROWS;
|
||||
|
||||
case HKM_SETHOTKEY:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
control->hotkeyVK = LOBYTE(wParam);
|
||||
control->modifiers = HIBYTE(wParam);
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
case HKM_GETHOTKEY:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
return MAKEWORD(control->hotkeyVK, control->modifiers);
|
||||
}
|
||||
|
||||
case WM_SYSKEYDOWN:
|
||||
case WM_KEYDOWN:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
|
||||
switch(wParam)
|
||||
{
|
||||
case VK_RETURN:
|
||||
case VK_TAB:
|
||||
case VK_DELETE:
|
||||
case VK_ESCAPE:
|
||||
case VK_LWIN:
|
||||
case VK_RWIN:
|
||||
case VK_APPS:
|
||||
if(control->hotkeyVK != 0 || control->modifiers != 0)
|
||||
{
|
||||
control->hotkeyVK = 0;
|
||||
control->modifiers = 0;
|
||||
control->bExtendedKey = 0;
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
PostMessage(GetParent(hwnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), EN_CHANGE), (LPARAM)hwnd);
|
||||
}
|
||||
|
||||
return DefWindowProc(hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
DWORD hotkeyVK = 0;
|
||||
if(wParam != VK_MENU && wParam != VK_SHIFT && wParam != VK_CONTROL)
|
||||
hotkeyVK = (DWORD)wParam;
|
||||
|
||||
DWORD modifiers = 0;
|
||||
if((GetKeyState(VK_CONTROL) & 0x8000) != 0)
|
||||
modifiers |= HOTKEYF_CONTROL;
|
||||
if((GetKeyState(VK_SHIFT) & 0x8000) != 0)
|
||||
modifiers |= HOTKEYF_SHIFT;
|
||||
if((GetKeyState(VK_MENU) & 0x8000) != 0)
|
||||
modifiers |= HOTKEYF_ALT;
|
||||
|
||||
bool bExtendedKey = (lParam & 0x01000000) != 0;
|
||||
|
||||
if((hotkeyVK && control->hotkeyVK != hotkeyVK) || control->bExtendedKey != bExtendedKey || control->modifiers != modifiers)
|
||||
{
|
||||
control->hotkeyVK = hotkeyVK;
|
||||
|
||||
control->modifiers = modifiers;
|
||||
control->bExtendedKey = bExtendedKey;
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
PostMessage(GetParent(hwnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), EN_CHANGE), (LPARAM)hwnd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
if(!control->bHasFocus)
|
||||
{
|
||||
SetFocus(hwnd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_MBUTTONDOWN:
|
||||
case WM_XBUTTONDOWN:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
|
||||
DWORD modifiers = 0;
|
||||
if((GetKeyState(VK_CONTROL) & 0x8000) != 0)
|
||||
modifiers |= HOTKEYF_CONTROL;
|
||||
if((GetKeyState(VK_SHIFT) & 0x8000) != 0)
|
||||
modifiers |= HOTKEYF_SHIFT;
|
||||
if((GetKeyState(VK_MENU) & 0x8000) != 0)
|
||||
modifiers |= HOTKEYF_ALT;
|
||||
|
||||
DWORD hotkeyVK = 0;
|
||||
switch(message)
|
||||
{
|
||||
case WM_LBUTTONDOWN: hotkeyVK = VK_LBUTTON; break;
|
||||
case WM_RBUTTONDOWN: hotkeyVK = VK_RBUTTON; break;
|
||||
case WM_MBUTTONDOWN: hotkeyVK = VK_MBUTTON; break;
|
||||
case WM_XBUTTONDOWN:
|
||||
if(GET_XBUTTON_WPARAM(wParam) == XBUTTON1)
|
||||
hotkeyVK = VK_XBUTTON1;
|
||||
else if(GET_XBUTTON_WPARAM(wParam) == XBUTTON2)
|
||||
hotkeyVK = VK_XBUTTON2;
|
||||
}
|
||||
|
||||
if(control->hotkeyVK != hotkeyVK || control->modifiers != modifiers)
|
||||
{
|
||||
control->hotkeyVK = hotkeyVK;
|
||||
control->modifiers = modifiers;
|
||||
control->bExtendedKey = false;
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
PostMessage(GetParent(hwnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), EN_CHANGE), (LPARAM)hwnd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_PAINT:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
|
||||
PAINTSTRUCT ps;
|
||||
|
||||
HDC hDC = BeginPaint(hwnd, &ps);
|
||||
control->DrawHotkeyControlEx(hwnd, hDC);
|
||||
EndPaint(hwnd, &ps);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_ERASEBKGND:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
|
||||
HideCaret(hwnd);
|
||||
|
||||
RECT rc;
|
||||
|
||||
HDC hDC = GetDC(hwnd);
|
||||
GetClientRect(hwnd, &rc);
|
||||
if(IsWindowEnabled(hwnd))
|
||||
FillRect(hDC, &rc, (HBRUSH)(COLOR_WINDOW+1));
|
||||
else
|
||||
FillRect(hDC, &rc, (HBRUSH)(COLOR_BTNFACE+1));
|
||||
ReleaseDC(hwnd, hDC);
|
||||
|
||||
ShowCaret(hwnd);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_GETFONT:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
return control->fontHeight;
|
||||
}
|
||||
|
||||
case WM_SETFONT:
|
||||
{
|
||||
control = GetHotkeyControlExData(hwnd);
|
||||
control->hFont = (HFONT)wParam;
|
||||
|
||||
HDC hDC = GetDC(hwnd);
|
||||
SIZE size;
|
||||
|
||||
SelectObject(hDC, control->hFont);
|
||||
GetTextExtentPoint32(hDC, TEXT("C"), 1, &size);
|
||||
control->fontHeight = size.cy;
|
||||
|
||||
control->DrawHotkeyControlEx(hwnd, hDC);
|
||||
ReleaseDC(hwnd, hDC);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_ENABLE:
|
||||
{
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
}
|
||||
|
||||
default:
|
||||
return DefWindowProc(hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void HotkeyControlExData::DrawHotkeyControlEx(HWND hwnd, HDC hDC)
|
||||
{
|
||||
TCHAR lpName[128];
|
||||
String strText;
|
||||
|
||||
if(hotkeyVK || modifiers)
|
||||
{
|
||||
if(modifiers & HOTKEYF_CONTROL)
|
||||
{
|
||||
GetKeyNameText((LONG)MapVirtualKey(VK_CONTROL, 0) << 16, lpName, 127);
|
||||
strText << lpName << TEXT(" + ");
|
||||
}
|
||||
if(modifiers & HOTKEYF_SHIFT)
|
||||
{
|
||||
GetKeyNameText((LONG)MapVirtualKey(VK_SHIFT, 0) << 16, lpName, 127);
|
||||
strText << lpName << TEXT(" + ");
|
||||
}
|
||||
if(modifiers & HOTKEYF_ALT)
|
||||
{
|
||||
GetKeyNameText((LONG)MapVirtualKey(VK_MENU, 0) << 16, lpName, 127);
|
||||
strText << lpName << TEXT(" + ");
|
||||
}
|
||||
|
||||
if(hotkeyVK)
|
||||
{
|
||||
if(hotkeyVK <= VK_RBUTTON)
|
||||
strText << TEXT("Mouse ") << UIntString(hotkeyVK);
|
||||
else if(hotkeyVK > VK_CANCEL && hotkeyVK <= VK_XBUTTON2)
|
||||
strText << TEXT("Mouse ") << UIntString(hotkeyVK-1);
|
||||
else
|
||||
{
|
||||
UINT scanCode = MapVirtualKey(hotkeyVK, 0) << 16;
|
||||
if(bExtendedKey)
|
||||
scanCode |= 0x01000000;
|
||||
|
||||
GetKeyNameText(scanCode, lpName, 128);
|
||||
strText << lpName;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
strText << Str("None");
|
||||
|
||||
if(bHasFocus)
|
||||
HideCaret(hwnd);
|
||||
|
||||
int x = GetSystemMetrics(SM_CXEDGE);
|
||||
int y = GetSystemMetrics(SM_CYEDGE);
|
||||
|
||||
SelectObject(hDC, hFont);
|
||||
if(IsWindowEnabled(hwnd))
|
||||
{
|
||||
SetBkColor(hDC, GetSysColor(COLOR_WINDOW));
|
||||
SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT));
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBkColor(hDC, GetSysColor(COLOR_BTNFACE));
|
||||
SetTextColor(hDC, GetSysColor(COLOR_GRAYTEXT));
|
||||
}
|
||||
|
||||
TextOut(hDC, x, y, strText, strText.Length());
|
||||
|
||||
if(bHasFocus)
|
||||
ShowCaret(hwnd);
|
||||
}
|
||||
|
||||
|
||||
void InitHotkeyExControl(HINSTANCE hInstance)
|
||||
{
|
||||
WNDCLASS wnd;
|
||||
|
||||
wnd.cbClsExtra = 0;
|
||||
wnd.cbWndExtra = sizeof(LPVOID);
|
||||
wnd.hbrBackground = NULL;
|
||||
wnd.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wnd.hIcon = NULL;
|
||||
wnd.hInstance = hInstance;
|
||||
wnd.lpfnWndProc = HotkeyExProc;
|
||||
wnd.lpszClassName = HOTKEY_CONTROL_EX_CLASS;
|
||||
wnd.lpszMenuName = NULL;
|
||||
wnd.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
|
||||
|
||||
if(!RegisterClass(&wnd))
|
||||
CrashError(TEXT("Could not register volume control class"));
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
/********************************************************************************
|
||||
Copyright (C) 2012 Hugh Bailey <obs.jim@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
********************************************************************************/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HOTKEY_CONTROL_EX_CLASS TEXT("OBSHotkeyControlEx")
|
||||
|
||||
|
||||
BASE_EXPORT void InitHotkeyExControl(HINSTANCE hInstance);
|
||||
|
|
@ -82,4 +82,5 @@ inline void SSECopy(void *lpDest, void *lpSource, UINT size)
|
|||
#include "GraphicsSystem.h"
|
||||
#include "Scene.h"
|
||||
#include "APIInterface.h"
|
||||
#include "HotkeyControlEx.h"
|
||||
|
||||
|
|
|
@ -332,6 +332,10 @@
|
|||
RelativePath=".\GraphicsSystem.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\HotkeyControlEx.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\OBSApi.cpp"
|
||||
>
|
||||
|
@ -354,6 +358,10 @@
|
|||
RelativePath=".\GraphicsSystem.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\HotkeyControlEx.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\OBSApi.h"
|
||||
>
|
||||
|
|
|
@ -116,16 +116,16 @@ public:
|
|||
|
||||
if(bWindowMinimized || bWindowNotFound)
|
||||
{
|
||||
CTSTR lpStr;
|
||||
/*CTSTR lpStr;
|
||||
if(bWindowMinimized)
|
||||
lpStr = Str("Sources.SoftwareCaptureSource.WindowMinimized");
|
||||
else if(bWindowNotFound)
|
||||
lpStr = Str("Sources.SoftwareCaptureSource.WindowNotFound");
|
||||
lpStr = Str("Sources.SoftwareCaptureSource.WindowNotFound");*/
|
||||
|
||||
RECT rc = {0, 0, width, height};
|
||||
FillRect(hDC, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH));
|
||||
|
||||
HFONT hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
|
||||
/*HFONT hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
|
||||
HFONT hfontOld = (HFONT)SelectObject(hDC, hFont);
|
||||
|
||||
SetBkColor(hDC, 0x000000);
|
||||
|
@ -133,7 +133,7 @@ public:
|
|||
SetTextAlign(hDC, TA_CENTER);
|
||||
TextOut(hDC, width/2, height/2, lpStr, slen(lpStr));
|
||||
|
||||
SelectObject(hDC, hfontOld);
|
||||
SelectObject(hDC, hfontOld);*/
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -354,6 +354,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
|
||||
//--------------------------------------------
|
||||
|
||||
GlobalConfig->SetInt(TEXT("General"), TEXT("LastAppVersion"), OBS_VERSION);
|
||||
|
||||
delete AppConfig;
|
||||
delete GlobalConfig;
|
||||
|
||||
|
|
|
@ -61,8 +61,9 @@ extern ConfigFile *AppConfig;
|
|||
extern OBS *App;
|
||||
extern TCHAR lpAppDataPath[MAX_PATH];
|
||||
|
||||
#define OBS_VERSION 0x000401
|
||||
#define OBS_VERSION_STRING_ANSI "Open Broadcaster Software v0.401a"
|
||||
#define OBS_VERSION_STRING TEXT(OBS_VERSION_STRING_ANSI)
|
||||
#define OBS_VERSION_STRING TEXT(OBS_VERSION_STRING_ANSI)
|
||||
|
||||
#define OBS_WINDOW_CLASS TEXT("OBSWindowClass")
|
||||
#define OBS_RENDERFRAME_CLASS TEXT("RenderFrame")
|
||||
|
|
|
@ -291,7 +291,7 @@ struct HotkeyInfo
|
|||
DWORD hotkey;
|
||||
OBSHOTKEYPROC hotkeyProc;
|
||||
UPARAM param;
|
||||
bool bDown;
|
||||
bool bModifiersDown, bHotkeyDown, bDownSent;
|
||||
};
|
||||
|
||||
class OBSAPIInterface : public APIInterface
|
||||
|
@ -396,6 +396,7 @@ OBS::OBS()
|
|||
if(!InitCommonControlsEx(&ecce))
|
||||
CrashError(TEXT("Could not initalize common shell controls"));
|
||||
|
||||
InitHotkeyExControl(hinstMain);
|
||||
InitVolumeControl();
|
||||
InitBandwidthMeter();
|
||||
|
||||
|
@ -727,6 +728,10 @@ OBS::OBS()
|
|||
if(hotkey)
|
||||
muteDesktopHotkeyID = API->CreateHotkey(hotkey, OBS::MuteDesktopHotkey, NULL);
|
||||
|
||||
hotkey = AppConfig->GetInt(TEXT("Publish"), TEXT("StopStreamHotkey"));
|
||||
if(hotkey)
|
||||
stopStreamHotkeyID = API->CreateHotkey(hotkey, OBS::StopStreamHotkey, NULL);
|
||||
|
||||
//-----------------------------------------------------
|
||||
// load plugins
|
||||
|
||||
|
@ -859,11 +864,18 @@ void STDCALL SceneHotkey(DWORD hotkey, UPARAM param, bool bDown)
|
|||
}
|
||||
}
|
||||
|
||||
void STDCALL OBS::StopStreamHotkey(DWORD hotkey, UPARAM param, bool bDown)
|
||||
{
|
||||
if(!bDown) return;
|
||||
App->Stop();
|
||||
}
|
||||
|
||||
void STDCALL OBS::PushToTalkHotkey(DWORD hotkey, UPARAM param, bool bDown)
|
||||
{
|
||||
App->bPushToTalkOn = bDown;
|
||||
}
|
||||
|
||||
|
||||
void STDCALL OBS::MuteMicHotkey(DWORD hotkey, UPARAM param, bool bDown)
|
||||
{
|
||||
if(!bDown) return;
|
||||
|
@ -2158,8 +2170,8 @@ UINT OBSAPIInterface::CreateHotkey(DWORD hotkey, OBSHOTKEYPROC hotkeyProc, UPARA
|
|||
if(!hotkey)
|
||||
return 0;
|
||||
|
||||
DWORD vk = LOWORD(hotkey);
|
||||
DWORD modifier = HIWORD(hotkey);
|
||||
DWORD vk = LOBYTE(hotkey);
|
||||
DWORD modifier = HIBYTE(hotkey);
|
||||
DWORD fsModifiers = 0;
|
||||
|
||||
if(modifier & HOTKEYF_ALT)
|
||||
|
@ -2170,12 +2182,13 @@ UINT OBSAPIInterface::CreateHotkey(DWORD hotkey, OBSHOTKEYPROC hotkeyProc, UPARA
|
|||
fsModifiers |= MOD_SHIFT;
|
||||
|
||||
OSEnterMutex(App->hHotkeyMutex);
|
||||
HotkeyInfo &hi = *hotkeys.CreateNew();
|
||||
hi.hotkeyID = ++curHotkeyIDVal;
|
||||
hi.hotkey = hotkey;
|
||||
hi.hotkeyProc = hotkeyProc;
|
||||
hi.param = param;
|
||||
hi.bDown = false;
|
||||
HotkeyInfo &hi = *hotkeys.CreateNew();
|
||||
hi.hotkeyID = ++curHotkeyIDVal;
|
||||
hi.hotkey = hotkey;
|
||||
hi.hotkeyProc = hotkeyProc;
|
||||
hi.param = param;
|
||||
hi.bModifiersDown = false;
|
||||
hi.bHotkeyDown = false;
|
||||
OSLeaveMutex(App->hHotkeyMutex);
|
||||
|
||||
return curHotkeyIDVal;
|
||||
|
@ -2213,8 +2226,8 @@ void OBSAPIInterface::HandleHotkeys()
|
|||
{
|
||||
HotkeyInfo &info = hotkeys[i];
|
||||
|
||||
DWORD hotkeyVK = LOWORD(info.hotkey);
|
||||
DWORD hotkeyModifiers = HIWORD(info.hotkey);
|
||||
DWORD hotkeyVK = LOBYTE(info.hotkey);
|
||||
DWORD hotkeyModifiers = HIBYTE(info.hotkey);
|
||||
|
||||
bool bModifiersMatch = (hotkeyModifiers == modifiers);
|
||||
if(bModifiersMatch)
|
||||
|
@ -2223,27 +2236,31 @@ void OBSAPIInterface::HandleHotkeys()
|
|||
bool bDown = (keyState & 0x8000) != 0;
|
||||
bool bWasPressed = (keyState & 0x1) != 0;
|
||||
|
||||
if(bDown)
|
||||
if(bDown || bWasPressed)
|
||||
{
|
||||
if(!info.bDown)
|
||||
if(!info.bHotkeyDown && info.bModifiersDown) //only triggers the hotkey if the actual main key was pressed second
|
||||
{
|
||||
PostMessage(hwndMain, OBS_CALLHOTKEY, TRUE, info.hotkeyID);
|
||||
info.bDownSent = true;
|
||||
}
|
||||
|
||||
info.bDown = bDown;
|
||||
continue;
|
||||
}
|
||||
else if(bWasPressed)
|
||||
{
|
||||
if(!info.bDown)
|
||||
PostMessage(hwndMain, OBS_CALLHOTKEY, TRUE, info.hotkeyID);
|
||||
|
||||
info.bDown = true;
|
||||
info.bHotkeyDown = true;
|
||||
if(bDown)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(info.bDown) //key up
|
||||
info.bModifiersDown = bModifiersMatch;
|
||||
|
||||
if(info.bHotkeyDown) //key up
|
||||
{
|
||||
PostMessage(hwndMain, OBS_CALLHOTKEY, FALSE, info.hotkeyID);
|
||||
info.bDown = false;
|
||||
if(info.bDownSent)
|
||||
{
|
||||
PostMessage(hwndMain, OBS_CALLHOTKEY, FALSE, info.hotkeyID);
|
||||
info.bDownSent = false;
|
||||
}
|
||||
|
||||
info.bHotkeyDown = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -432,6 +432,7 @@ class OBS
|
|||
UINT pushToTalkHotkeyID;
|
||||
UINT muteMicHotkeyID;
|
||||
UINT muteDesktopHotkeyID;
|
||||
UINT stopStreamHotkeyID;
|
||||
|
||||
bool bWriteToFile;
|
||||
VideoFileStream *fileStream;
|
||||
|
@ -504,6 +505,8 @@ class OBS
|
|||
void MainAudioLoop();
|
||||
static DWORD STDCALL MainAudioThread(LPVOID lpUnused);
|
||||
|
||||
static void STDCALL StopStreamHotkey(DWORD hotkey, UPARAM param, bool bDown);
|
||||
|
||||
static void STDCALL PushToTalkHotkey(DWORD hotkey, UPARAM param, bool bDown);
|
||||
static void STDCALL MuteMicHotkey(DWORD hotkey, UPARAM param, bool bDown);
|
||||
static void STDCALL MuteDesktopHotkey(DWORD hotkey, UPARAM param, bool bDown);
|
||||
|
|
|
@ -201,6 +201,9 @@ INT_PTR CALLBACK OBS::GeneralSettingsProc(HWND hwnd, UINT message, WPARAM wParam
|
|||
|
||||
UINT numItems = (UINT)SendMessage(GetDlgItem(hwnd, IDC_PROFILE), CB_GETCOUNT, 0, 0);
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_REMOVE), (numItems > 1));
|
||||
|
||||
if(!App->bRunning)
|
||||
App->ResizeWindow(false);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -423,18 +426,6 @@ INT_PTR CALLBACK OBS::EncoderSettingsProc(HWND hwnd, UINT message, WPARAM wParam
|
|||
|
||||
//--------------------------------------------
|
||||
|
||||
hwndTemp = GetDlgItem(hwnd, IDC_PRESET);
|
||||
for(int i=0; i<10; i++)
|
||||
SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)preset_names[i]);
|
||||
|
||||
LoadSettingComboString(hwndTemp, TEXT("Video Encoding"), TEXT("Preset"), TEXT("veryfast"));
|
||||
|
||||
ti.lpszText = (LPWSTR)Str("Settings.Encoding.Video.TradeoffTooltip");
|
||||
ti.uId = (UINT_PTR)hwndTemp;
|
||||
SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti);
|
||||
|
||||
//--------------------------------------------
|
||||
|
||||
LoadSettingEditInt(GetDlgItem(hwnd, IDC_MAXBITRATE), TEXT("Video Encoding"), TEXT("MaxBitrate"), 2000);
|
||||
LoadSettingEditInt(GetDlgItem(hwnd, IDC_BUFFERSIZE), TEXT("Video Encoding"), TEXT("BufferSize"), 1000);
|
||||
|
||||
|
@ -448,11 +439,6 @@ INT_PTR CALLBACK OBS::EncoderSettingsProc(HWND hwnd, UINT message, WPARAM wParam
|
|||
|
||||
//--------------------------------------------
|
||||
|
||||
BOOL bUse444 = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("Use444"), 0);
|
||||
SendMessage(GetDlgItem(hwnd, IDC_USEI444), BM_SETCHECK, bUse444 ? BST_CHECKED : 0, 0);
|
||||
|
||||
//--------------------------------------------
|
||||
|
||||
hwndTemp = GetDlgItem(hwnd, IDC_AUDIOCODEC);
|
||||
SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("AAC"));
|
||||
SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("MP3"));
|
||||
|
@ -494,7 +480,6 @@ INT_PTR CALLBACK OBS::EncoderSettingsProc(HWND hwnd, UINT message, WPARAM wParam
|
|||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_QUALITY:
|
||||
case IDC_PRESET:
|
||||
case IDC_AUDIOCODEC:
|
||||
case IDC_AUDIOBITRATE:
|
||||
case IDC_AUDIOFORMAT:
|
||||
|
@ -507,10 +492,6 @@ INT_PTR CALLBACK OBS::EncoderSettingsProc(HWND hwnd, UINT message, WPARAM wParam
|
|||
if(HIWORD(wParam) == EN_CHANGE)
|
||||
bDataChanged = true;
|
||||
break;
|
||||
case IDC_USEI444:
|
||||
if(HIWORD(wParam) == BN_CLICKED)
|
||||
bDataChanged = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if(bDataChanged)
|
||||
|
@ -698,10 +679,18 @@ INT_PTR CALLBACK OBS::PublishSettingsProc(HWND hwnd, UINT message, WPARAM wParam
|
|||
AdjustWindowPos(GetDlgItem(hwnd, IDC_SAVEPATH_STATIC), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_SAVEPATH), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_BROWSE), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_STOPSTREAMHOTKEY_STATIC), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_STOPSTREAMHOTKEY), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_CLEARHOTKEY), 0, -data->fileControlOffset);
|
||||
}
|
||||
|
||||
//--------------------------------------------
|
||||
|
||||
DWORD stopHotkey = AppConfig->GetInt(TEXT("Publish"), TEXT("StopStreamHotkey"));
|
||||
SendMessage(GetDlgItem(hwnd, IDC_STOPSTREAMHOTKEY), HKM_SETHOTKEY, stopHotkey, 0);
|
||||
|
||||
//--------------------------------------------
|
||||
|
||||
BOOL bSaveToFile = AppConfig->GetInt(TEXT("Publish"), TEXT("SaveToFile"));
|
||||
SendMessage(GetDlgItem(hwnd, IDC_SAVETOFILE), BM_SETCHECK, bSaveToFile ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||
|
||||
|
@ -781,12 +770,18 @@ INT_PTR CALLBACK OBS::PublishSettingsProc(HWND hwnd, UINT message, WPARAM wParam
|
|||
AdjustWindowPos(GetDlgItem(hwnd, IDC_SAVEPATH_STATIC), 0, data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_SAVEPATH), 0, data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_BROWSE), 0, data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_STOPSTREAMHOTKEY_STATIC), 0, data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_STOPSTREAMHOTKEY), 0, data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_CLEARHOTKEY), 0, data->fileControlOffset);
|
||||
}
|
||||
else if(mode == 1 && data->mode == 0)
|
||||
{
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_SAVEPATH_STATIC), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_SAVEPATH), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_BROWSE), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_STOPSTREAMHOTKEY_STATIC), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_STOPSTREAMHOTKEY), 0, -data->fileControlOffset);
|
||||
AdjustWindowPos(GetDlgItem(hwnd, IDC_CLEARHOTKEY), 0, -data->fileControlOffset);
|
||||
}
|
||||
|
||||
data->mode = mode;
|
||||
|
@ -958,10 +953,22 @@ INT_PTR CALLBACK OBS::PublishSettingsProc(HWND hwnd, UINT message, WPARAM wParam
|
|||
case IDC_CHANNELNAME:
|
||||
case IDC_SERVEREDIT:
|
||||
case IDC_SAVEPATH:
|
||||
case IDC_STOPSTREAMHOTKEY:
|
||||
if(HIWORD(wParam) == EN_CHANGE)
|
||||
bDataChanged = true;
|
||||
break;
|
||||
|
||||
case IDC_CLEARHOTKEY:
|
||||
if(HIWORD(wParam) == BN_CLICKED)
|
||||
{
|
||||
if(SendMessage(GetDlgItem(hwnd, IDC_STOPSTREAMHOTKEY), HKM_GETHOTKEY, 0, 0))
|
||||
{
|
||||
SendMessage(GetDlgItem(hwnd, IDC_STOPSTREAMHOTKEY), HKM_SETHOTKEY, 0, 0);
|
||||
bDataChanged = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_SERVERLIST:
|
||||
if(HIWORD(wParam) == CBN_EDITCHANGE || HIWORD(wParam) == CBN_SELCHANGE)
|
||||
bDataChanged = true;
|
||||
|
@ -1001,7 +1008,7 @@ void OBS::RefreshDownscales(HWND hwnd, int cx, int cy)
|
|||
|
||||
String strText;
|
||||
if(i == 0)
|
||||
strText << Str("Settings.Video.Downscale.None") << TEXT(" (") << IntString(scaleCX) << TEXT("x") << IntString(scaleCY) << TEXT(")");
|
||||
strText << Str("None") << TEXT(" (") << IntString(scaleCX) << TEXT("x") << IntString(scaleCY) << TEXT(")");
|
||||
else
|
||||
strText << FormattedString(TEXT("%0.2f"), multiplier) << TEXT(" (") << IntString(scaleCX) << TEXT("x") << IntString(scaleCY) << TEXT(")");
|
||||
|
||||
|
@ -1434,6 +1441,18 @@ INT_PTR CALLBACK OBS::AdvancedSettingsProc(HWND hwnd, UINT message, WPARAM wPara
|
|||
SendMessage(hwndToolTip, TTM_SETMAXTIPWIDTH, 0, 500);
|
||||
SendMessage(hwndToolTip, TTM_SETDELAYTIME, TTDT_AUTOPOP, 14000);
|
||||
|
||||
//--------------------------------------------
|
||||
|
||||
HWND hwndTemp = GetDlgItem(hwnd, IDC_PRESET);
|
||||
for(int i=0; i<10; i++)
|
||||
SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)preset_names[i]);
|
||||
|
||||
LoadSettingComboString(hwndTemp, TEXT("Video Encoding"), TEXT("Preset"), TEXT("veryfast"));
|
||||
|
||||
ti.lpszText = (LPWSTR)Str("Settings.Advanced.VideoEncoderCPUTradeoffTooltip");
|
||||
ti.uId = (UINT_PTR)hwndTemp;
|
||||
SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti);
|
||||
|
||||
//------------------------------------
|
||||
|
||||
bool bUseCustomX264Settings = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseCustomSettings")) != 0;
|
||||
|
@ -1465,7 +1484,7 @@ INT_PTR CALLBACK OBS::AdvancedSettingsProc(HWND hwnd, UINT message, WPARAM wPara
|
|||
BOOL bUseSendBuffer = AppConfig->GetInt(TEXT("Publish"), TEXT("UseSendBuffer"), 1) != 0;
|
||||
SendMessage(GetDlgItem(hwnd, IDC_USESENDBUFFER), BM_SETCHECK, bUseSendBuffer ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||
|
||||
HWND hwndTemp = GetDlgItem(hwnd, IDC_SENDBUFFERSIZE);
|
||||
hwndTemp = GetDlgItem(hwnd, IDC_SENDBUFFERSIZE);
|
||||
EnableWindow(hwndTemp, bUseSendBuffer);
|
||||
SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("32768"));
|
||||
SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("16384"));
|
||||
|
@ -1516,6 +1535,14 @@ INT_PTR CALLBACK OBS::AdvancedSettingsProc(HWND hwnd, UINT message, WPARAM wPara
|
|||
}
|
||||
break;
|
||||
|
||||
case IDC_PRESET:
|
||||
if(HIWORD(wParam) == CBN_SELCHANGE)
|
||||
{
|
||||
ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW);
|
||||
App->SetChangedSettings(true);
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_USESYNCFIX:
|
||||
if(HIWORD(wParam) == BN_CLICKED)
|
||||
{
|
||||
|
@ -1540,9 +1567,6 @@ void OBS::ApplySettings()
|
|||
if(quality != CB_ERR)
|
||||
AppConfig->SetInt(TEXT("Video Encoding"), TEXT("Quality"), quality);
|
||||
|
||||
String strTemp = GetCBText(GetDlgItem(hwndCurrentSettings, IDC_PRESET));
|
||||
AppConfig->SetString(TEXT("Video Encoding"), TEXT("Preset"), strTemp);
|
||||
|
||||
UINT bitrate = GetEditText(GetDlgItem(hwndCurrentSettings, IDC_MAXBITRATE)).ToInt();
|
||||
if(bitrate < 100) bitrate = 100;
|
||||
AppConfig->SetInt(TEXT("Video Encoding"), TEXT("MaxBitrate"), bitrate);
|
||||
|
@ -1554,7 +1578,7 @@ void OBS::ApplySettings()
|
|||
BOOL bUse444 = SendMessage(GetDlgItem(hwndCurrentSettings, IDC_USEI444), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||
AppConfig->SetInt(TEXT("Video Encoding"), TEXT("Use444"), bUse444);
|
||||
|
||||
strTemp = GetCBText(GetDlgItem(hwndCurrentSettings, IDC_AUDIOCODEC));
|
||||
String strTemp = GetCBText(GetDlgItem(hwndCurrentSettings, IDC_AUDIOCODEC));
|
||||
AppConfig->SetString(TEXT("Audio Encoding"), TEXT("Codec"), strTemp);
|
||||
|
||||
strTemp = GetCBText(GetDlgItem(hwndCurrentSettings, IDC_AUDIOBITRATE));
|
||||
|
@ -1619,6 +1643,20 @@ void OBS::ApplySettings()
|
|||
AppConfig->SetInt (TEXT("Publish"), TEXT("SaveToFile"), bSaveToFile);
|
||||
AppConfig->SetString(TEXT("Publish"), TEXT("SavePath"), strSavePath);
|
||||
|
||||
//------------------------------------------
|
||||
|
||||
DWORD stopStreamHotkey = (DWORD)SendMessage(GetDlgItem(hwndCurrentSettings, IDC_STOPSTREAMHOTKEY), HKM_GETHOTKEY, 0, 0);
|
||||
AppConfig->SetInt(TEXT("Publish"), TEXT("StopStreamHotkey"), stopStreamHotkey);
|
||||
|
||||
if(App->stopStreamHotkeyID)
|
||||
{
|
||||
API->DeleteHotkey(App->stopStreamHotkeyID);
|
||||
App->stopStreamHotkeyID = 0;
|
||||
}
|
||||
|
||||
if(stopStreamHotkey)
|
||||
App->stopStreamHotkeyID = API->CreateHotkey(stopStreamHotkey, OBS::StopStreamHotkey, NULL);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1680,7 +1718,10 @@ void OBS::ApplySettings()
|
|||
AppConfig->SetInt(TEXT("Audio"), TEXT("PushToTalkHotkey"), hotkey);
|
||||
|
||||
if(App->pushToTalkHotkeyID)
|
||||
{
|
||||
API->DeleteHotkey(App->pushToTalkHotkeyID);
|
||||
App->pushToTalkHotkeyID = 0;
|
||||
}
|
||||
|
||||
if(App->bUsingPushToTalk && hotkey)
|
||||
pushToTalkHotkeyID = API->CreateHotkey(hotkey, OBS::PushToTalkHotkey, NULL);
|
||||
|
@ -1691,7 +1732,10 @@ void OBS::ApplySettings()
|
|||
AppConfig->SetInt(TEXT("Audio"), TEXT("MuteMicHotkey"), hotkey);
|
||||
|
||||
if(App->muteMicHotkeyID)
|
||||
{
|
||||
API->DeleteHotkey(App->muteMicHotkeyID);
|
||||
App->muteDesktopHotkeyID = 0;
|
||||
}
|
||||
|
||||
if(hotkey)
|
||||
muteMicHotkeyID = API->CreateHotkey(hotkey, OBS::MuteMicHotkey, NULL);
|
||||
|
@ -1702,7 +1746,10 @@ void OBS::ApplySettings()
|
|||
AppConfig->SetInt(TEXT("Audio"), TEXT("MuteDesktopHotkey"), hotkey);
|
||||
|
||||
if(App->muteDesktopHotkeyID)
|
||||
{
|
||||
API->DeleteHotkey(App->muteDesktopHotkeyID);
|
||||
App->muteDesktopHotkeyID = 0;
|
||||
}
|
||||
|
||||
if(hotkey)
|
||||
muteDesktopHotkeyID = API->CreateHotkey(hotkey, OBS::MuteDesktopHotkey, NULL);
|
||||
|
@ -1712,6 +1759,11 @@ void OBS::ApplySettings()
|
|||
|
||||
case Settings_Advanced:
|
||||
{
|
||||
String strTemp = GetCBText(GetDlgItem(hwndCurrentSettings, IDC_PRESET));
|
||||
AppConfig->SetString(TEXT("Video Encoding"), TEXT("Preset"), strTemp);
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
BOOL bUseCustomX264Settings = SendMessage(GetDlgItem(hwndCurrentSettings, IDC_USEVIDEOENCODERSETTINGS), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||
String strCustomX264Settings = GetEditText(GetDlgItem(hwndCurrentSettings, IDC_VIDEOENCODERSETTINGS));
|
||||
|
||||
|
|
|
@ -120,6 +120,10 @@
|
|||
#define IDC_SENDBUFFERSIZE 1089
|
||||
#define IDC_CLEARMUTEDESKTOP 1090
|
||||
#define IDC_LIST1 1090
|
||||
#define IDC_CUSTOM1 1093
|
||||
#define IDC_STOPSTREAMHOTKEY 1093
|
||||
#define IDC_CLEARHOTKEY 1094
|
||||
#define IDC_STOPSTREAMHOTKEY_STATIC 1095
|
||||
#define IDA_SOURCE_MOVEUP 40018
|
||||
#define IDA_SOURCE_MOVEDOWN 40019
|
||||
#define IDA_SOURCE_MOVETOTOP 40020
|
||||
|
@ -148,7 +152,7 @@
|
|||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 134
|
||||
#define _APS_NEXT_COMMAND_VALUE 40042
|
||||
#define _APS_NEXT_CONTROL_VALUE 1091
|
||||
#define _APS_NEXT_CONTROL_VALUE 1096
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Add "Добави"
|
||||
Add "Добави"
|
||||
Apply "Приложи"
|
||||
Browse "Търси"
|
||||
Cancel "Откажи"
|
||||
|
@ -9,6 +9,7 @@ Disable "Деактивирай"
|
|||
EnterName "Моля въведете име"
|
||||
GlobalSources "Глобални Източници"
|
||||
NameExists "'$1' вече съществува. Моля въведете различно име"
|
||||
None "Никакво"
|
||||
OK "OK"
|
||||
Plugins "Плъгини"
|
||||
Scene "Сцена"
|
||||
|
@ -68,8 +69,6 @@ Settings.Encoding.Audio.Format "Формат:"
|
|||
Settings.Encoding.Video.BufferSize "Размер на бъфер (kbit):"
|
||||
Settings.Encoding.Video.MaxBitRate "Макс битрейт (kb/s):"
|
||||
Settings.Encoding.Video.Quality "Качество:"
|
||||
Settings.Encoding.Video.Tradeoff "CPU настройка:"
|
||||
Settings.Encoding.Video.UseI444 "Използвай YUV 4:4:4"
|
||||
|
||||
Settings.General.Language "Език:"
|
||||
Settings.General.Restart "Сменянето на езика изисква рестарт на OBS.\r\n\r\n..Но предполагам че щом сменяш езика не можеш да разбереш това."
|
||||
|
@ -94,9 +93,7 @@ Settings.Video.Monitor "Монитор:"
|
|||
Settings.Video.Recommended "(Препоръчано ако снимате)"
|
||||
Settings.Video.Resolution "Базова резолюция:"
|
||||
|
||||
Settings.Video.Downscale.None "Никакво"
|
||||
|
||||
Sources.BitmapSource "Битмап"
|
||||
Sources.GlobalSource "Глобален източник"
|
||||
|
||||
Sources.BitmapSource.Empty "Няма избран битмап. Моля селектирайте валиден битмап файл."
|
||||
Sources.BitmapSource.Empty "Няма избран битмап. Моля селектирайте валиден битмап файл."
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Add "Hinzufügen"
|
||||
Add "Hinzufügen"
|
||||
Apply "Übernehmen"
|
||||
Browse "Durchsuchen"
|
||||
Cancel "Abbrechen"
|
||||
|
@ -9,6 +9,7 @@ Disable "Deaktivieren"
|
|||
EnterName "Bitte geben sie einen Namen ein"
|
||||
GlobalSources "Globale Quellen"
|
||||
NameExists "'$1' ist bereits in Benutzung, bitte benutzen sie einen anderen Namen."
|
||||
None "Keine"
|
||||
OK "OK"
|
||||
Plugins "Plugins"
|
||||
Scene "Szene"
|
||||
|
@ -68,8 +69,6 @@ Settings.Encoding.Audio.Format "Format:"
|
|||
Settings.Encoding.Video.BufferSize "Buffer Größe (kbit):"
|
||||
Settings.Encoding.Video.MaxBitRate "Max Bitrate (kb/s):"
|
||||
Settings.Encoding.Video.Quality "Qualität:"
|
||||
Settings.Encoding.Video.Tradeoff "CPU Preset:"
|
||||
Settings.Encoding.Video.UseI444 "Use YUV 4:4:4"
|
||||
|
||||
Settings.General.Language "Sprache:"
|
||||
Settings.General.Restart "Um die Sprache zu ändern müssen sie OBS neustarten."
|
||||
|
@ -93,9 +92,7 @@ Settings.Video.FPS "FPS:"
|
|||
Settings.Video.Monitor "Monitor:"
|
||||
Settings.Video.Resolution "Basis Auflösung:"
|
||||
|
||||
Settings.Video.Downscale.None "Keine"
|
||||
|
||||
Sources.BitmapSource "Bitmap"
|
||||
Sources.GlobalSource "Globale Quelle"
|
||||
|
||||
Sources.BitmapSource.Empty "keine Bitmap angegeben. Bitte wählen sie eine Bitmap aus."
|
||||
Sources.BitmapSource.Empty "keine Bitmap angegeben. Bitte wählen sie eine Bitmap aus."
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Add "Προσθήκη"
|
||||
Add "Προσθήκη"
|
||||
Apply "Εφαρμογή"
|
||||
Browse "Αναζήτηση"
|
||||
Cancel "Ακύρωση"
|
||||
|
@ -9,6 +9,7 @@ Disable "Απενεργοποίηση"
|
|||
EnterName "Παρακαλούμε εισάγετε το όνομά σας"
|
||||
GlobalSources "Καθολικές Πηγές"
|
||||
NameExists "'$1' υπάρχει ήδη. Παρακαλούμε επιλέξτε ένα άλλο όνομα"
|
||||
None "Κανένα"
|
||||
OK "OK"
|
||||
Plugins "Πρόσθετα"
|
||||
Scene "Σκηνή"
|
||||
|
@ -68,8 +69,6 @@ Settings.Encoding.Audio.Format "Διαμόρφωση (Format):"
|
|||
Settings.Encoding.Video.BufferSize "Μέγεθος προσωρινής μνήμης (Buffer) (kbit):"
|
||||
Settings.Encoding.Video.MaxBitRate "Μέγιστο Bitrate (kb/s):"
|
||||
Settings.Encoding.Video.Quality "Ποιότητα:"
|
||||
Settings.Encoding.Video.Tradeoff "Προκαθορισμένη CPU:"
|
||||
Settings.Encoding.Video.UseI444 "Χρήση YUV 4:4:4"
|
||||
|
||||
Settings.General.Language "Γλώσσα:"
|
||||
Settings.General.Restart "Η αλλαγή γλώσσας προαπαιτεί επανεκκίνηση του OBS.\r\n\r\n... Αν και υποθέτω οτι αν ανλλάξετε την γλώσσα δεν θα μπορείτε να καταλάβετε το μήνυμα πλέον"
|
||||
|
@ -93,10 +92,8 @@ Settings.Video.FPS "Καρέ ανά δευτερόλεπτο (FPS):"
|
|||
Settings.Video.Monitor "Οθόνη:"
|
||||
Settings.Video.Resolution "Βασική Ανάλυση:"
|
||||
|
||||
Settings.Video.Downscale.None "Κανένα"
|
||||
|
||||
Sources.BitmapSource "Bitmap"
|
||||
Sources.DesktopSource "Σύλληψη Επιφάνειας Εργασίας"
|
||||
Sources.GlobalSource "Καθολική Πηγή"
|
||||
|
||||
Sources.BitmapSource.Empty "Δεν έχει επιλεχθεί εικόνα bitmap. Παρακαλούμε κάντε αναζήτηση και επιλέξτε μια εικόνα bitmap"
|
||||
Sources.BitmapSource.Empty "Δεν έχει επιλεχθεί εικόνα bitmap. Παρακαλούμε κάντε αναζήτηση και επιλέξτε μια εικόνα bitmap"
|
||||
|
|
|
@ -10,6 +10,7 @@ Disable "Disable"
|
|||
EnterName "Please enter a name"
|
||||
GlobalSources "Global Sources"
|
||||
NameExists "'$1' already exists. Please enter a different name"
|
||||
None "None"
|
||||
OK "OK"
|
||||
Plugins "Plugins"
|
||||
Reconnecting "Reconnecting..."
|
||||
|
@ -74,14 +75,16 @@ Settings.SaveChangesPrompt "Would you like to save and apply your changes?"
|
|||
Settings.SaveChangesTitle "Apply settings?"
|
||||
Settings.Video "Video"
|
||||
|
||||
Settings.Advanced.Network "Network"
|
||||
Settings.Advanced.SendBufferSize "Send Buffer Size:"
|
||||
Settings.Advanced.UseSendBuffer "Use Send Buffer"
|
||||
Settings.Advanced.UseSendBufferTooltip "The send buffer causes all network data to be buffered to specific packet sizes before sending. Using this greatly increases network throughput, but will make the stream a bit more delayed.\r\n\r\nRecommended: On, at 32768"
|
||||
Settings.Advanced.UseSyncFix "Use Video/Audio Sync Fix"
|
||||
Settings.Advanced.UseSyncFixTooltip "In rare cases, certain CPUs and motherboards have timing bugs. Using this fix ensures that audio/video sync will always be correct, but is less accurate than proper timing. Due to that fact, do not use this unless you are having audio/video sync issues."
|
||||
Settings.Advanced.VideoEncoderSettings "Custom x264 Encoder Settings"
|
||||
Settings.Advanced.VideoEncoderSettingsTooltip "This allows you to set custom x264 encoder settings. In the form of [parameter]=[value] (e.g. \"vbv-maxrate=1000 vbv-bufsize=1000\")."
|
||||
Settings.Advanced.Network "Network"
|
||||
Settings.Advanced.SendBufferSize "Send Buffer Size:"
|
||||
Settings.Advanced.UseSendBuffer "Use Send Buffer"
|
||||
Settings.Advanced.UseSendBufferTooltip "The send buffer causes all network data to be buffered to specific packet sizes before sending. Using this greatly increases network throughput, but will make the stream a bit more delayed.\r\n\r\nRecommended: On, at 32768"
|
||||
Settings.Advanced.UseSyncFix "Use Video/Audio Sync Fix"
|
||||
Settings.Advanced.UseSyncFixTooltip "In rare cases, certain CPUs and motherboards have timing bugs. Using this fix ensures that audio/video sync will always be correct, but is less accurate than proper timing. Due to that fact, do not use this unless you are having audio/video sync issues."
|
||||
Settings.Advanced.VideoEncoderCPUTradeoff "x264 CPU Preset:"
|
||||
Settings.Advanced.VideoEncoderCPUTradeoffToolTip "Setting this value higher reduces CPU usage by sacrificing certain aspects of quality. On the other hand, setting this value lower increases quality at the cost of more CPU.\r\n\r\nRecommended: Very Fast"
|
||||
Settings.Advanced.VideoEncoderSettings "Custom x264 Encoder Settings"
|
||||
Settings.Advanced.VideoEncoderSettingsTooltip "This allows you to set custom x264 encoder settings. In the form of [parameter]=[value] (e.g. \"vbv-maxrate=1000 vbv-bufsize=1000\")."
|
||||
|
||||
Settings.Audio.Device "Microphone/Auxilary Audio Device:"
|
||||
Settings.Audio.MuteDesktopHotkey "Mute/Unmute Desktop Hotkey:"
|
||||
|
@ -96,13 +99,11 @@ Settings.Encoding.Audio.Codec "Codec:"
|
|||
Settings.Encoding.Audio.Format "Format:"
|
||||
|
||||
Settings.Encoding.Video.BufferSize "Buffer Size (kbit):"
|
||||
Settings.Encoding.Video.BufferSizeTooltip "The buffer size determines how much data is buffered before being sent. Setting this to a higher value than your bitrate can improve motion quality, but can also cause the data rate to become less consistent, with the possibility of sending out more data than you may be able to handle at once.\r\n\r\nRecommended: Same as or less than your bitrate."
|
||||
Settings.Encoding.Video.BufferSizeTooltip "The buffer size determines how much data is buffered. This value particularly affects high motion scenes. If you don't know what to use, set it to the same as your bitrate. See the help file for more information."
|
||||
Settings.Encoding.Video.MaxBitRate "Max Bitrate (kb/s):"
|
||||
Settings.Encoding.Video.MaxBitRateTooltip "This sets the maximum bitrate used for video. Note that although your average bitrate will be at this value, this value is based on your buffer size. You generally want to set this to a value below your upload bitrate.\r\n\r\nUse a site such as speedtest.net to determine your upload bitrate."
|
||||
Settings.Encoding.Video.Quality "Quality:"
|
||||
Settings.Encoding.Video.QualityTooltip "This settings will attempt to target a certain quality depending on your bitrate and buffer size. Setting this to a high value with a low bitrate it will sacrifice the quality of high motion scenes in favor of non-moving scenes, causing inconsistent quality."
|
||||
Settings.Encoding.Video.Tradeoff "CPU Preset:"
|
||||
Settings.Encoding.Video.TradeoffTooltip "Setting this value higher reduces CPU usage by sacrificing certain aspects of quality. On the other hand, setting this value lower increases quality at the cost of more CPU.\r\n\r\nRecommended: Very Fast"
|
||||
|
||||
Settings.General.Add "Add New"
|
||||
Settings.General.ConfirmDelete "Are you sure you wish to remove the profile '$1'?"
|
||||
|
@ -123,6 +124,7 @@ Settings.Publish.SavePath "File Path:"
|
|||
Settings.Publish.SaveToFile "Save to file:"
|
||||
Settings.Publish.Server "Server:"
|
||||
Settings.Publish.Service "Streaming Service:"
|
||||
Settings.Publish.StopStreamHotkey "Stop Stream Hotkey:"
|
||||
Settings.Publish.Username "User Name (if any):"
|
||||
|
||||
Settings.Publish.Mode.FileOnly "File Output Only"
|
||||
|
@ -137,8 +139,6 @@ Settings.Video.FPS "FPS:"
|
|||
Settings.Video.Monitor "Monitor:"
|
||||
Settings.Video.Resolution "Base Resolution:"
|
||||
|
||||
Settings.Video.Downscale.None "None"
|
||||
|
||||
Sources.BitmapSource "Bitmap"
|
||||
Sources.GlobalSource "Global Source"
|
||||
Sources.SoftwareCaptureSource "Software Capture Source"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Add "Lisa"
|
||||
Add "Lisa"
|
||||
Apply "Rakenda muutused"
|
||||
Browse "Sirvi"
|
||||
Cancel "Katkesta"
|
||||
|
@ -9,6 +9,7 @@ Disable "Vaigista"
|
|||
EnterName "Palun sisesta nimi"
|
||||
GlobalSources "Globaalsed allikad"
|
||||
NameExists "'$1' on olemas juba. Palun sisesta teistsugune nimi."
|
||||
None "Puudub"
|
||||
OK "OK"
|
||||
Plugins "Pluginad"
|
||||
Scene "Stseen"
|
||||
|
@ -68,8 +69,6 @@ Settings.Encoding.Audio.Format "Formaat:"
|
|||
Settings.Encoding.Video.BufferSize "Puhvri suurus (kbit):"
|
||||
Settings.Encoding.Video.MaxBitRate "Maksimaalne bitikiirus (kb/s):"
|
||||
Settings.Encoding.Video.Quality "Kvaliteet:"
|
||||
Settings.Encoding.Video.Tradeoff "CPU valmisprofiil:"
|
||||
Settings.Encoding.Video.UseI444 "Kasuta YUV 4:4:4"
|
||||
|
||||
Settings.General.Language "Keel:"
|
||||
Settings.General.Restart "Keele vahetamine nõuab OBS taaskäivitust."
|
||||
|
@ -94,9 +93,7 @@ Settings.Video.Monitor "Monitor:"
|
|||
Settings.Video.Recommended "(Soovitatav, kui lindistad)"
|
||||
Settings.Video.Resolution "Baasresolutsioon:"
|
||||
|
||||
Settings.Video.Downscale.None "Puudub"
|
||||
|
||||
Sources.BitmapSource "Bitikaart"
|
||||
Sources.GlobalSource "Globaalne allikas"
|
||||
|
||||
Sources.BitmapSource.Empty "Bitikaart pole sisestatud. Palun sisesta bitikaart."
|
||||
Sources.BitmapSource.Empty "Bitikaart pole sisestatud. Palun sisesta bitikaart."
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Add "Ajouter"
|
||||
Add "Ajouter"
|
||||
Apply "Appliquer"
|
||||
Browse "Naviger"
|
||||
Cancel "Annuler"
|
||||
|
@ -9,6 +9,7 @@ Disable "Désactiver"
|
|||
EnterName "Entrer un nom"
|
||||
GlobalSources "Ressources globales"
|
||||
NameExists "'$1' existe déja. entrez un nom différent"
|
||||
None "Aucune"
|
||||
OK "OK"
|
||||
Plugins "Plugins"
|
||||
Scene "Scene"
|
||||
|
@ -68,8 +69,6 @@ Settings.Encoding.Audio.Format "Format:"
|
|||
Settings.Encoding.Video.BufferSize "Taille du Buffer (kbit):"
|
||||
Settings.Encoding.Video.MaxBitRate "Bitrate Max (kb/s):"
|
||||
Settings.Encoding.Video.Quality "Qualitée:"
|
||||
Settings.Encoding.Video.Tradeoff " Préraglage CPU:"
|
||||
Settings.Encoding.Video.UseI444 "Utiliser YUV 4:4:4"
|
||||
|
||||
Settings.General.Language "Langue:"
|
||||
Settings.General.Restart "Changer le langage requiert un redémarage de OBS.\r\n\r\n..Mais je suppose que si vous changez le langage vous ne comprendrez pas ça"
|
||||
|
@ -93,9 +92,7 @@ Settings.Video.FPS "FPS:"
|
|||
Settings.Video.Monitor "Ecran:"
|
||||
Settings.Video.Resolution "Résolution de base:"
|
||||
|
||||
Settings.Video.Downscale.None "Aucune"
|
||||
|
||||
Sources.BitmapSource "Bitmap"
|
||||
Sources.GlobalSource "Source Globale"
|
||||
|
||||
Sources.BitmapSource.Empty "Aucune bitmap entrée. Veuillez choisir une bitmap"
|
||||
Sources.BitmapSource.Empty "Aucune bitmap entrée. Veuillez choisir une bitmap"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Add "追加"
|
||||
Add "追加"
|
||||
Apply "適用"
|
||||
Browse "参照"
|
||||
Cancel "キャンセル"
|
||||
|
@ -10,6 +10,7 @@ Disable "無効にする"
|
|||
EnterName "名前を入力してください"
|
||||
GlobalSources "グローバル ソース"
|
||||
NameExists "'$1'という項目は既にあります。別の名前を入力してください"
|
||||
None "なし"
|
||||
OK "OK"
|
||||
Plugins "プラグイン"
|
||||
Reconnecting "再接続しています"
|
||||
|
@ -74,11 +75,13 @@ Settings.SaveChangesPrompt "設定を保存しますか?"
|
|||
Settings.SaveChangesTitle "保存しますか?"
|
||||
Settings.Video "動画"
|
||||
|
||||
Settings.Advanced.Network "ネットワーク"
|
||||
Settings.Advanced.SendBufferSize "送信バッファー大きさ:"
|
||||
Settings.Advanced.UseSendBuffer "送信バッファーを使う"
|
||||
Settings.Advanced.UseSyncFix "サウンドと動画の同期解決"
|
||||
Settings.Advanced.VideoEncoderSettings "x264詳細設定"
|
||||
Settings.Advanced.Network "ネットワーク"
|
||||
Settings.Advanced.SendBufferSize "送信バッファー大きさ:"
|
||||
Settings.Advanced.UseSendBuffer "送信バッファーを使う"
|
||||
Settings.Advanced.UseSyncFix "サウンドと動画の同期解決"
|
||||
Settings.Advanced.VideoEncoderCPUTradeoff "x264のCPUプリセット:"
|
||||
Settings.Advanced.VideoEncoderCPUTradeoffTooltip "CPUの利用を調整するための設定です。「superfast」や「ultrafast」を使ってはCPU使用を減らすために品質を犠牲にするのです。一方、「faster」や「fast」以下はCPU利用を増やしますことで品質を優先しようとします。\r\n\r\n推奨:「veryfast」"
|
||||
Settings.Advanced.VideoEncoderSettings "x264詳細設定"
|
||||
|
||||
Settings.Audio.Device "マイク/他のサウンド デバイス:"
|
||||
Settings.Audio.MuteDesktopHotkey "デスクトップをミュートするホットキー:"
|
||||
|
@ -92,11 +95,9 @@ Settings.Encoding.Audio.Bitrate "ビットレート:"
|
|||
Settings.Encoding.Audio.Codec "コーデック:"
|
||||
Settings.Encoding.Audio.Format "フォーマット:"
|
||||
|
||||
Settings.Encoding.Video.BufferSize "バッファー 大きさ (kbit):"
|
||||
Settings.Encoding.Video.MaxBitRate "ビットレート 最大限 (kbit/秒):"
|
||||
Settings.Encoding.Video.Quality "動画質:"
|
||||
Settings.Encoding.Video.Tradeoff "CPU プリセット:"
|
||||
Settings.Encoding.Video.TradeoffTooltip "CPUの利用を調整するための設定です。「superfast」や「ultrafast」を使ってはCPU使用を減らすために品質を犠牲にする。一方、「faster」や「fast」以下はCPU利用を増やしますことで品質を優先しようとします。\r\n\r\n推奨:「veryfast」"
|
||||
Settings.Encoding.Video.BufferSize "バッファー 大きさ (kbit):"
|
||||
Settings.Encoding.Video.MaxBitRate "ビットレート 最大限 (kbit/秒):"
|
||||
Settings.Encoding.Video.Quality "動画質:"
|
||||
|
||||
Settings.General.Add "追加"
|
||||
Settings.General.ConfirmDelete "'$1'を削除してよろしいですか?"
|
||||
|
@ -117,6 +118,7 @@ Settings.Publish.SavePath "ファイル パス:"
|
|||
Settings.Publish.SaveToFile "ファイルを保存:"
|
||||
Settings.Publish.Server "サーバー:"
|
||||
Settings.Publish.Service "サービス:"
|
||||
Settings.Publish.StopStreamHotkey "ストリームを停止するホットキー:"
|
||||
Settings.Publish.Username "ユーザ名 (もしあれば):"
|
||||
|
||||
Settings.Publish.Mode.FileOnly "ファイル出力だけ"
|
||||
|
@ -130,8 +132,6 @@ Settings.Video.FPS "FPS:"
|
|||
Settings.Video.Monitor "画面:"
|
||||
Settings.Video.Resolution "解像度:"
|
||||
|
||||
Settings.Video.Downscale.None "なし"
|
||||
|
||||
Sources.BitmapSource "ビットマップ画像"
|
||||
Sources.GlobalSource "グローバル ソース"
|
||||
Sources.SoftwareCaptureSource "ソフトウェア キャプチャー ソース"
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
Add "Legg til"
|
||||
Add "Legg til"
|
||||
Apply "Bruk"
|
||||
Browse "Bla gjennom"
|
||||
Browse "Bla i gjennom"
|
||||
Cancel "Avbryt"
|
||||
Default "Forh蚣dsvalg"
|
||||
DeleteConfirm "Er du sikker p・at du vil forkaste de valgte elementene?"
|
||||
Default "Forhåndsvalg"
|
||||
DeleteConfirm "Er du sikker på at du vil forkaste de valgte elementene?"
|
||||
Desktop "Skrivebord"
|
||||
Disable "Skru av"
|
||||
EnterName "Vennligst skriv inn ditt navn"
|
||||
|
@ -17,7 +17,9 @@ StreamReport "Stream-rapportering"
|
|||
|
||||
DeleteConfirm.Title "Slette valgte elementer?"
|
||||
|
||||
GlobalSources.DeleteConfirm "Hvis du sletter en global kilde, vil den bli fjernet fra hvilken som helst scene som benytter den. Er du sikker p・at du vil fortsette?"
|
||||
DesktopImageSource.CannotDuplicate "Kan ikke ha mer enn én skrivebordsbildekilde i scenen om gangen"
|
||||
|
||||
GlobalSources.DeleteConfirm "Hvis du sletter en global kilde, vil den bli fjernet fra hvilken som helst scene som benytter den. Er du sikker på at du vil fortsette?"
|
||||
|
||||
Listbox.Add "Legg til $1"
|
||||
Listbox.Center "Sentrer"
|
||||
|
@ -28,7 +30,7 @@ Listbox.MoveToTop "Flytt til topp"
|
|||
Listbox.MoveUp "Flytt opp"
|
||||
Listbox.Remove "Fjern"
|
||||
Listbox.Rename "Rediger navn"
|
||||
Listbox.ResetSize "Tilbakestill st<EFBFBD>relse"
|
||||
Listbox.ResetSize "Tilbakestill størrelse"
|
||||
|
||||
MainWindow.Exit "Lukk"
|
||||
MainWindow.Plugins "Programvareutvidelse"
|
||||
|
@ -37,20 +39,17 @@ MainWindow.Scenes "Scener:"
|
|||
MainWindow.Sources "Kilder:"
|
||||
MainWindow.StartStream "Start streamingen"
|
||||
MainWindow.StopStream "Stopp streamingen"
|
||||
MainWindow.StopTest "Stopp test"
|
||||
MainWindow.TestStream "Test stream"
|
||||
|
||||
Plugins.Configure "Konfigurer"
|
||||
Plugins.Description "Beskrivelse:"
|
||||
Plugins.Filename "Filnavn:"
|
||||
|
||||
Scene.MissingSources "Mislyktes i ・laste alle bildekildene p・grunn av enten feilinnstillinger eller frav誡ende programvareutvidelser"
|
||||
Scene.MissingSources "Mislyktes i å laste alle bildekildene på grunn av enten feilinnstillinger eller fraværende programvareutvidelser"
|
||||
|
||||
Settings.Audio "Lyd"
|
||||
Settings.Encoding "Koding"
|
||||
Settings.General "Generelt"
|
||||
Settings.Hotkeys "Tastatursnarveier"
|
||||
Settings.Info "Disse instillingene vil ikke gjelde f<> neste gang du starter ・streame"
|
||||
Settings.Info "Disse instillingene vil ikke gjelde før neste gang du starter å streame"
|
||||
Settings.Publish "Instillinger for kringkasting"
|
||||
Settings.SaveChangesPrompt "Vil du lagre og bruke dine endringer?"
|
||||
Settings.SaveChangesTitle "Bruk instillinger?"
|
||||
|
@ -65,38 +64,39 @@ Settings.Encoding.Audio.Bitrate "Bitrate:"
|
|||
Settings.Encoding.Audio.Codec "Codec:"
|
||||
Settings.Encoding.Audio.Format "Format:"
|
||||
|
||||
Settings.Encoding.Video.BufferSize "Bufferst<EFBFBD>relse (kbit):"
|
||||
Settings.Encoding.Video.BufferSize "Bufferstørrelse (kbit):"
|
||||
Settings.Encoding.Video.MaxBitRate "Maks bitrate (kb/s):"
|
||||
Settings.Encoding.Video.Quality "Kvalitet:"
|
||||
Settings.Encoding.Video.Tradeoff "CPU forh蚣dsinnstilling:"
|
||||
Settings.Encoding.Video.UseI444 "Bruk YUV 4:4:4"
|
||||
|
||||
Settings.General.Language "Spr虧:"
|
||||
Settings.General.Language "Språk:"
|
||||
Settings.General.Restart "Changing the language will require restarting OBS.\r\n\r\n..Though I suppose if you're changing the language you can't understand this"
|
||||
Settings.General.Restart "Spr虧endring vil kreve en ny oppstart av OBS.\r\n\r\n.. Men om du vil forandre spr虧 skj<6B>ner du vel ikke dette"
|
||||
Settings.General.Restart "Språkendring vil kreve en ny oppstart av OBS.\r\n\r\n.. Men om du vil forandre språk skjønner du vel ikke dette"
|
||||
|
||||
Settings.Publish.ChannelName "Kanalnavn:"
|
||||
Settings.Publish.Mode "Modus:"
|
||||
Settings.Publish.Password "Eventuelt passord:"
|
||||
Settings.Publish.Playpath "Kj<EFBFBD> Path/Stream-Key (hvis det er noen):"
|
||||
Settings.Publish.Playpath "Kjør Path/Stream-Key (hvis det er noen):"
|
||||
Settings.Publish.Server "Server:"
|
||||
Settings.Publish.Service "Streamingapparat:"
|
||||
Settings.Publish.Username "Brukernavn (hvis det er et):"
|
||||
|
||||
Settings.Publish.Mode.BandwidthInfo "B蚣dbreddeinformasjon"
|
||||
Settings.Publish.Mode.LiveStream "Direkte stream"
|
||||
Settings.Publish.Mode.Serve "Lokal RTMP Server"
|
||||
|
||||
Settings.Video.Custom "Spesiell:"
|
||||
Settings.Video.DisableAero "Skru av Aero ved oppstart:"
|
||||
Settings.Video.Downscale "Nedskaler oppl<EFBFBD>ning:"
|
||||
Settings.Video.Downscale "Nedskaler oppløsning:"
|
||||
Settings.Video.FPS "Bilder per sekund:"
|
||||
Settings.Video.Monitor "Skjerm:"
|
||||
Settings.Video.Resolution "Grunnoppl<70>ning"
|
||||
Settings.Video.Recommended "(Høyt rekommendert hvis opptak)"
|
||||
Settings.Video.Resolution "Grunnoppløsning"
|
||||
|
||||
Settings.Video.Downscale.None "Ingen"
|
||||
|
||||
Sources.BitmapSource "Bitmap"
|
||||
Sources.DesktopSource "Skrivebordsopptak"
|
||||
Sources.GlobalSource "Global kilde"
|
||||
|
||||
Sources.BitmapSource.Empty "Ingen bitmap skrivd inn. Vennligst bla gjennom og velg bitmap"
|
||||
Sources.BitmapSource.Empty "Ingen bitmap skrivd inn. Vennligst bla i gjennom og velg bitmap"
|
||||
Sources.BitmapSource.ResetSize "Gjenninnstill størrelse"
|
||||
|
||||
Sources.DesktopSource.Monitor "Opptaksskjerm:"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Add "Добавить"
|
||||
Add "Добавить"
|
||||
Apply "Применить"
|
||||
Browse "Найти"
|
||||
Cancel "Отменить"
|
||||
|
@ -10,6 +10,7 @@ Disable "Отключено"
|
|||
EnterName "Пожалуйста введите имя"
|
||||
GlobalSources "Глобальные источники"
|
||||
NameExists "'$1' уже занято. Пожалуйста введите другое имя"
|
||||
None "Отсутствует"
|
||||
OK "OK"
|
||||
Plugins "Плагины"
|
||||
Scene "Сцену"
|
||||
|
@ -69,6 +70,9 @@ Settings.SaveChangesPrompt "Сохранить и применить измен
|
|||
Settings.SaveChangesTitle "Применить настройки?"
|
||||
Settings.Video "Видео"
|
||||
|
||||
Settings.Advanced.VideoEncoderCPUTradeoff "CPU пресет:"
|
||||
Settings.Advanced.VideoEncoderCPUTradeoffTooltip "Установка более быстрого (высокого) значения уменьшает нагрузку процессора, жертвуя некоторыми акпектами качества. С другой стороны, установка медленного (низкого) значения повышает качество за счет увеличения нагрузки на процессор.\r\n\r\nРекомендуется: Very Fast"
|
||||
|
||||
Settings.Audio.Device "Микрофон:"
|
||||
|
||||
Settings.Encoding.Audio "Кодирование Аудио"
|
||||
|
@ -84,9 +88,6 @@ Settings.Encoding.Video.MaxBitRate "Максимальный битре
|
|||
Settings.Encoding.Video.MaxBitRateTooltip "Установка максимального значения битрейта для видео. Напрямую зависит от вашей исходящей скорости интернета. Отметим, что заданный битрейт будет средним значением, но так же на него будет влиять размера буфера.\r\n\r\nВоспользуйтесь сайтом, например speedtest.net, чтобы узнать свою исходящую скорость интернета."
|
||||
Settings.Encoding.Video.Quality "Качество:"
|
||||
Settings.Encoding.Video.QualityTooltip "Эта опция будет подстраивать качество в зависимости от установленных битрейта и буфера. При установки высокого значения и низкого битрейта будет жертвоваться качеством в динамичных сценах в пользу статичных."
|
||||
Settings.Encoding.Video.Tradeoff "CPU пресет:"
|
||||
Settings.Encoding.Video.TradeoffTooltip "Установка более быстрого (высокого) значения уменьшает нагрузку процессора, жертвуя некоторыми акпектами качества. С другой стороны, установка медленного (низкого) значения повышает качество за счет увеличения нагрузки на процессор.\r\n\r\nРекомендуется: Very Fast"
|
||||
Settings.Encoding.Video.UseI444 "Использовать YUV 4:4:4"
|
||||
|
||||
Settings.General.Add "Добавить"
|
||||
Settings.General.ConfirmDelete "Вы уверены, что хотите удалить профиль '$1'?"
|
||||
|
@ -115,8 +116,6 @@ Settings.Video.FPS "Кадры в секунду (FPS):"
|
|||
Settings.Video.Monitor "Монитор:"
|
||||
Settings.Video.Resolution "Базовое разрешение:"
|
||||
|
||||
Settings.Video.Downscale.None "Отсутствует"
|
||||
|
||||
Sources.BitmapSource "Изображение"
|
||||
Sources.GlobalSource "Глобальный источник"
|
||||
Sources.SoftwareCaptureSource "Программный источник захвата"
|
||||
|
|
Loading…
Reference in New Issue