/** * Reload the configuration settings from the main object. Useful for resetting to defaults. */ void NoiseGateSettings::RefreshConfig() { float val; HWND ctrlHwnd; // Gate enabled SendMessage(GetDlgItem(hwnd, IDC_ENABLEGATE), BM_SETCHECK, parent->isEnabled ? BST_CHECKED : BST_UNCHECKED, 0); // Attack, hold and release times SetWindowText(GetDlgItem(hwnd, IDC_ATTACKTIME_EDIT), IntString((int)(parent->attackTime * 1000.0f))); SetWindowText(GetDlgItem(hwnd, IDC_HOLDTIME_EDIT), IntString((int)(parent->holdTime * 1000.0f))); SetWindowText(GetDlgItem(hwnd, IDC_RELEASETIME_EDIT), IntString((int)(parent->releaseTime * 1000.0f))); // Close threshold trackbar (Control uses positive values) val = rmsToDb(parent->closeThreshold); SetTrackbarCaption(IDC_CLOSETHRES_DB, (int)val); ctrlHwnd = GetDlgItem(hwnd, IDC_CLOSETHRES_SLIDER); SendMessage(ctrlHwnd, TBM_SETRANGEMIN, FALSE, 0); SendMessage(ctrlHwnd, TBM_SETRANGEMAX, FALSE, 96); SendMessage(ctrlHwnd, TBM_SETPOS, TRUE, -(int)val); // Open threshold trackbar (Control uses positive values) val = rmsToDb(parent->openThreshold); SetTrackbarCaption(IDC_OPENTHRES_DB, (int)val); ctrlHwnd = GetDlgItem(hwnd, IDC_OPENTHRES_SLIDER); SendMessage(ctrlHwnd, TBM_SETRANGEMIN, FALSE, 0); SendMessage(ctrlHwnd, TBM_SETRANGEMAX, FALSE, 96); SendMessage(ctrlHwnd, TBM_SETPOS, TRUE, -(int)val); }
void SettingsVideo::RefreshDownscales(HWND hwnd, int cx, int cy) { int lastID = (int)SendMessage(hwnd, CB_GETCURSEL, 0, 0); SendMessage(hwnd, CB_RESETCONTENT, 0, 0); float downscale = AppConfig->GetFloat(TEXT("Video"), TEXT("Downscale")); bool bFoundVal = false; for(int i=0; i<multiplierCount; i++) { float multiplier = downscaleMultipliers[i]; int scaleCX = int(float(cx)/multiplier) & 0xFFFFFFFE; int scaleCY = int(float(cy)/multiplier) & 0xFFFFFFFE; String strText; if(i == 0) 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(")"); int id = (int)SendMessage(hwnd, CB_ADDSTRING, 0, (LPARAM)strText.Array()); SendMessage(hwnd, CB_SETITEMDATA, id, (LPARAM)*(DWORD*)&multiplier); if(CloseFloat(downscale, multiplier)) { if(lastID == CB_ERR) SendMessage(hwnd, CB_SETCURSEL, id, 0); downscale = multiplier; bFoundVal = true; } } if(!bFoundVal) { AppConfig->SetFloat(TEXT("Video"), TEXT("Downscale"), 1.0f); if(lastID == CB_ERR) SendMessage(hwnd, CB_SETCURSEL, 0, 0); SetChangedSettings(true); } if(lastID != CB_ERR) SendMessage(hwnd, CB_SETCURSEL, lastID, 0); }
String GetInfoString() const { String strInfo; strInfo << TEXT("Audio Encoding: MP3") << TEXT("\r\n bitrate: ") << IntString(curBitRate); return strInfo; }
void XElement::AddHex(CTSTR lpName, DWORD hex) { assert(lpName); String hexStr; hexStr << TEXT("0x") << IntString(hex, 16); SubItems << new XDataItem(lpName, hexStr); }
String GetInfoString() const { String strInfo; strInfo << TEXT("Video Encoding: QSV") << TEXT("\r\n fps: ") << IntString(fps) << TEXT("\r\n width: ") << IntString(width) << TEXT(", height: ") << IntString(height) << TEXT("\r\n target-usage: ") << usageStr[target_usage] << TEXT("\r\n CBR: ") << CTSTR((bUseCBR) ? TEXT("yes") : TEXT("no")) << TEXT("\r\n CFR: ") << CTSTR((bUseCFR) ? TEXT("yes") : TEXT("no")) << TEXT("\r\n max bitrate: ") << IntString(max_bitrate); if(!bUseCBR) { strInfo << TEXT("\r\n buffer size: ") << IntString(encode_tasks[0].bs.MaxLength*8/1000); } return strInfo; }
String GetInfoString() const { String strInfo; strInfo << TEXT("Video Encoding: QSV") << TEXT("\r\n fps: ") << IntString(fps) << TEXT("\r\n width: ") << IntString(width) << TEXT(", height: ") << IntString(height) << TEXT("\r\n target-usage: ") << usageStr[params.mfx.TargetUsage] << TEXT("\r\n CBR: ") << CTSTR((bUseCBR) ? TEXT("yes") : TEXT("no")) << TEXT("\r\n CFR: ") << CTSTR((bUseCFR) ? TEXT("yes") : TEXT("no")) << TEXT("\r\n max bitrate: ") << IntString(params.mfx.MaxKbps); if(!bUseCBR) { strInfo << TEXT("\r\n buffer size: ") << IntString(params.mfx.BufferSizeInKB*1000*8/1024); } return strInfo; }
static string GetD3D9D3DPPFlagsString(DWORD flags) { if (!flags) return string("None"); stringstream ss; if (flags & D3DPRESENTFLAG_LOCKABLE_BACKBUFFER) { ss << "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER "; flags &= ~D3DPRESENTFLAG_LOCKABLE_BACKBUFFER; } if (flags & D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL) { ss << "D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL "; flags &= ~D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL; } if (flags & D3DPRESENTFLAG_DEVICECLIP) { ss << "D3DPRESENTFLAG_DEVICECLIP "; flags &= ~D3DPRESENTFLAG_DEVICECLIP; } if (flags & D3DPRESENTFLAG_VIDEO) { ss << "D3DPRESENTFLAG_VIDEO "; flags &= ~D3DPRESENTFLAG_VIDEO; } if (flags & D3DPRESENTFLAG_NOAUTOROTATE) { ss << "D3DPRESENTFLAG_NOAUTOROTATE "; flags &= ~D3DPRESENTFLAG_NOAUTOROTATE; } if (flags & D3DPRESENTFLAG_UNPRUNEDMODE) { ss << "D3DPRESENTFLAG_UNPRUNEDMODE "; flags &= ~D3DPRESENTFLAG_UNPRUNEDMODE; } if (flags & D3DPRESENTFLAG_OVERLAY_LIMITEDRGB) { ss << "D3DPRESENTFLAG_OVERLAY_LIMITEDRGB "; flags &= ~D3DPRESENTFLAG_OVERLAY_LIMITEDRGB; } if (flags & D3DPRESENTFLAG_OVERLAY_YCbCr_BT709) { ss << "D3DPRESENTFLAG_OVERLAY_YCbCr_BT709 "; flags &= ~D3DPRESENTFLAG_OVERLAY_YCbCr_BT709; } if (flags & D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC) { ss << "D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC "; flags &= ~D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC; } if (flags & D3DPRESENTFLAG_RESTRICTED_CONTENT) { ss << "D3DPRESENTFLAG_RESTRICTED_CONTENT "; flags &= ~D3DPRESENTFLAG_RESTRICTED_CONTENT; } if (flags & D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER) { ss << "D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER "; flags &= ~D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER; } if (flags) ss << IntString(flags) << " "; return ss.str(); }
static string GetD3D9PoolName(DWORD pool) { switch(pool) { case D3DPOOL_DEFAULT : return string("D3DPOOL_DEFAULT"); case D3DPOOL_MANAGED : return string("D3DPOOL_MANAGED"); case D3DPOOL_SYSTEMMEM: return string("D3DPOOL_SYSTEMMEM"); case D3DPOOL_SCRATCH : return string("D3DPOOL_SCRATCH"); } return IntString(pool); }
static string GetD3D9SwapEffectName(DWORD se) { switch(se) { case D3DSWAPEFFECT_DISCARD: return string("D3DSWAPEFFECT_DISCARD"); case D3DSWAPEFFECT_FLIP : return string("D3DSWAPEFFECT_FLIP"); case D3DSWAPEFFECT_COPY : return string("D3DSWAPEFFECT_COPY"); case D3DSWAPEFFECT_OVERLAY: return string("D3DSWAPEFFECT_OVERLAY"); case D3DSWAPEFFECT_FLIPEX : return string("D3DSWAPEFFECT_FLIPEX"); } return IntString(se); }
String GetInfoString() const { String strInfo; strInfo << TEXT("Video Encoding: x264") << TEXT("\r\n fps: ") << IntString(paramData.i_fps_num) << TEXT("\r\n width: ") << IntString(width) << TEXT(", height: ") << IntString(height) << TEXT("\r\n preset: ") << curPreset << TEXT("\r\n profile: ") << curProfile << TEXT("\r\n keyint: ") << paramData.i_keyint_max << TEXT("\r\n CBR: ") << CTSTR((bUseCBR) ? TEXT("yes") : TEXT("no")) << TEXT("\r\n CFR: ") << CTSTR((bUseCFR) ? TEXT("yes") : TEXT("no")) << TEXT("\r\n max bitrate: ") << IntString(paramData.rc.i_vbv_max_bitrate) << TEXT("\r\n buffer size: ") << IntString(paramData.rc.i_vbv_buffer_size); if(!bUseCBR) { strInfo << TEXT("\r\n quality: ") << IntString(10-int(paramData.rc.f_rf_constant-baseCRF)); } return strInfo; }
static string GetD3D9ResourceTypeName(DWORD rt) { switch(rt) { case D3DRTYPE_SURFACE : return string("D3DRTYPE_SURFACE"); case D3DRTYPE_VOLUME : return string("D3DRTYPE_VOLUME"); case D3DRTYPE_TEXTURE : return string("D3DRTYPE_TEXTURE"); case D3DRTYPE_VOLUMETEXTURE: return string("D3DRTYPE_VOLUMETEXTURE"); case D3DRTYPE_CUBETEXTURE : return string("D3DRTYPE_CUBETEXTURE"); case D3DRTYPE_VERTEXBUFFER : return string("D3DRTYPE_VERTEXBUFFER"); case D3DRTYPE_INDEXBUFFER : return string("D3DRTYPE_INDEXBUFFER"); } return IntString(rt); }
int LoadSettingEditInt(HWND hwnd, CTSTR lpConfigSection, CTSTR lpConfigName, int defVal) { int iLoadVal; if(!AppConfig->HasKey(lpConfigSection, lpConfigName)) { AppConfig->SetInt(lpConfigSection, lpConfigName, defVal); iLoadVal = defVal; } else iLoadVal = AppConfig->GetInt(lpConfigSection, lpConfigName, defVal); SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM)IntString(iLoadVal).Array()); return iLoadVal; }
void XElement::SetInt(CTSTR lpName, int number) { assert(lpName); String intStr = IntString(number); XDataItem *item = GetDataItem(lpName); if(item) { item->strData = intStr; return; } SubItems << new XDataItem(lpName, intStr); }
void XElement::SetHex(CTSTR lpName, DWORD hex) { assert(lpName); String hexStr; hexStr << TEXT("0x") << IntString(hex, 16); XDataItem *item = GetDataItem(lpName); if(item) { item->strData = hexStr; return; } SubItems << new XDataItem(lpName, hexStr); }
static string GetD3D9MultiSampleTypeName(DWORD mst) { switch(mst) { case D3DMULTISAMPLE_NONE : return string("D3DMULTISAMPLE_NONE"); case D3DMULTISAMPLE_NONMASKABLE : return string("D3DMULTISAMPLE_NONMASKABLE"); case D3DMULTISAMPLE_2_SAMPLES : return string("D3DMULTISAMPLE_2_SAMPLES"); case D3DMULTISAMPLE_3_SAMPLES : return string("D3DMULTISAMPLE_3_SAMPLES"); case D3DMULTISAMPLE_4_SAMPLES : return string("D3DMULTISAMPLE_4_SAMPLES"); case D3DMULTISAMPLE_5_SAMPLES : return string("D3DMULTISAMPLE_5_SAMPLES"); case D3DMULTISAMPLE_6_SAMPLES : return string("D3DMULTISAMPLE_6_SAMPLES"); case D3DMULTISAMPLE_7_SAMPLES : return string("D3DMULTISAMPLE_7_SAMPLES"); case D3DMULTISAMPLE_8_SAMPLES : return string("D3DMULTISAMPLE_8_SAMPLES"); case D3DMULTISAMPLE_9_SAMPLES : return string("D3DMULTISAMPLE_9_SAMPLES"); case D3DMULTISAMPLE_10_SAMPLES : return string("D3DMULTISAMPLE_10_SAMPLES"); case D3DMULTISAMPLE_11_SAMPLES : return string("D3DMULTISAMPLE_11_SAMPLES"); case D3DMULTISAMPLE_12_SAMPLES : return string("D3DMULTISAMPLE_12_SAMPLES"); case D3DMULTISAMPLE_13_SAMPLES : return string("D3DMULTISAMPLE_13_SAMPLES"); case D3DMULTISAMPLE_14_SAMPLES : return string("D3DMULTISAMPLE_14_SAMPLES"); case D3DMULTISAMPLE_15_SAMPLES : return string("D3DMULTISAMPLE_15_SAMPLES"); case D3DMULTISAMPLE_16_SAMPLES : return string("D3DMULTISAMPLE_16_SAMPLES"); } return IntString(mst); }
void Compiler::CreateSourceClass(ClassDefinition *classDef) { if(classDef->classData->bPureScriptClass) return; String str; String parentName = classDef->Parent ? classDef->Parent->classData->name : TEXT("OrphanageWorker"); str << TEXT("\r\nclass ") << classDef->classData->name; str << TEXT(" : public ") << parentName; str << TEXT("\r\n{\r\n "); str << TEXT("DeclareClass("); str << classDef->classData->name << TEXT(", ") << parentName << TEXT(");\r\n"); BOOL bFoundNativeClassLinks = FALSE; if(classDef->Variables.Num() || classDef->Functions.Num()) str << TEXT("\r\npublic:\r\n"); BOOL bFoundSomething = FALSE; BOOL bFoundVars = FALSE; if(classDef->Variables.Num()) { if(strNativeClassLinks.IsEmpty()) strNativeClassLinks << TEXT("\r\n Class* curClass;\r\n"); strNativeClassLinks << TEXT("\r\n curClass = GetClass(") << classDef->classData->name << TEXT(");\r\n assert(curClass);\r\n\r\n if(curClass)\r\n {\r\n"); bFoundNativeClassLinks = TRUE; bFoundVars = TRUE; if(!bFoundSomething) { str << TEXT(" //<Script module=\"") << curModule << TEXT("\" classdecs=\"") << classDef->classData->name << ("\">"); bFoundSomething = TRUE; } for(int i=0; i<classDef->Variables.Num(); i++) { DefaultVariable *var = &classDef->Variables[i]; str << TEXT("\r\n "); str << ConvertTypeToString(var->typeInfo) << TEXT(" ") << var->name; if(var->numElements) str << FormattedString(TEXT("[%d]"), var->numElements); str << TEXT(";"); strNativeClassLinks << TEXT(" curClass->DefineNativeVariable(offsetof(") << classDef->classData->name << TEXT(", ") << var->name << TEXT("), ") << IntString(i) << TEXT(");\r\n"); } } String classDecs; String internalDecs; BOOL bFoundInternalFunc = FALSE; BOOL bFoundImplementable = FALSE; for(int i=0; i<classDef->Functions.Num(); i++) { FunctionDefinition *func = &classDef->Functions[i]; if(func->flags & FUNC_IMPLEMENTABLE) { if(!bFoundSomething) { classDecs << TEXT(" //<Script module=\"") << curModule << TEXT("\" classdecs=\"") << classDef->classData->name << ("\">"); bFoundSomething = TRUE; } if(!bFoundImplementable) { if(bFoundVars) classDecs << TEXT("\r\n"); bFoundImplementable = TRUE; } classDecs << TEXT("\r\n ") << ConvertTypeToString(func->returnType) << TEXT(" script") << func->name << TEXT("("); for(int j=0; j<func->Params.Num(); j++) { if(j) classDecs << TEXT(", "); DefaultVariable *var = &func->Params[j]; classDecs << ConvertParamTypeToString(var) << TEXT(" ") << var->name; } if(func->Params.Num()) classDecs << TEXT(")\r\n {\r\n CallStruct cs;\r\n cs.SetNumParams(") << UIntString(func->Params.Num()) << TEXT(");\r\n"); else classDecs << TEXT(")\r\n {\r\n CallStruct cs;"); for(int j=0; j<func->Params.Num(); j++) { DefaultVariable *var = &func->Params[j]; classDecs << TEXT(" cs.Set"); switch(var->typeInfo.type) { case DataType_Integer: classDecs << TEXT("Int"); break; case DataType_Float: classDecs << TEXT("Float"); break; case DataType_Handle: classDecs << TEXT("Handle"); break; case DataType_Object: classDecs << TEXT("Object"); break; case DataType_String: classDecs << TEXT("String"); break; case DataType_Struct: classDecs << TEXT("Struct"); break; case DataType_Type: classDecs << TEXT("TypeDataInfo"); break; } classDecs << TEXT("(") << UIntString(j) << TEXT(", "); if(var->typeInfo.type == DataType_Object) classDecs << TEXT("(Object*)"); else if((var->typeInfo.type == DataType_Integer) && (scmp(var->typeInfo.name, TEXT("int")) != 0)) classDecs << TEXT("(int)"); if(var->typeInfo.type == DataType_Struct) classDecs << TEXT("&") << var->name << TEXT(", ") << UIntString(var->typeInfo.size); else classDecs << var->name; classDecs << TEXT(");\r\n"); } classDecs << TEXT("\r\n GetLocalClass()->CallScriptMember(this, ") << UIntString(func->funcOffset-classDef->functionStartIndex) << TEXT(", cs);\r\n"); if(func->returnType.type != DataType_Void) { classDecs << TEXT("\r\n return "); if(func->returnType.type == DataType_Struct) classDecs << TEXT("(") << func->returnType.name << TEXT("&)cs.GetStruct(RETURNVAL);\r\n"); else { classDecs << TEXT("cs.Get"); switch(func->returnType.type) { case DataType_Integer: classDecs << TEXT("Int"); break; case DataType_Float: classDecs << TEXT("Float"); break; case DataType_Struct: classDecs << TEXT("Struct"); break; case DataType_Handle: classDecs << TEXT("Handle"); break; case DataType_Object: classDecs << TEXT("Object"); break; case DataType_String: classDecs << TEXT("String"); break; case DataType_Type: classDecs << TEXT("TypeInfo"); break; } classDecs << TEXT("(RETURNVAL);\r\n"); } } classDecs << TEXT(" }\r\n"); } if(func->flags & FUNC_INTERNAL) { if(!bFoundSomething) { classDecs << TEXT(" //<Script module=\"") << curModule << TEXT("\" classdecs=\"") << classDef->classData->name << ("\">"); bFoundSomething = TRUE; } String funcName; funcName << TEXT("native_"); if(func->name.IsEmpty()) //constructor funcName << classDef->classData->name; else funcName << func->name; CreateSourceNativeFuncDef(classDef, NULL, func, funcName); if(!bFoundNativeClassLinks) { if(strNativeClassLinks.IsEmpty()) strNativeClassLinks << TEXT("\r\n Class* curClass;\r\n"); strNativeClassLinks << TEXT("\r\n curClass = GetClass(") << classDef->classData->name << TEXT(");\r\n assert(curClass);\r\n\r\n if(curClass)\r\n {\r\n"); bFoundNativeClassLinks = TRUE; } else if(!bFoundInternalFunc) strNativeClassLinks << TEXT("\r\n"); if(func->flags & FUNC_STATIC) { strNativeClassLinks << FormattedString(TEXT(" curClass->DefineNativeStaticMember((NATIVECALLBACK)&%s::%s, 0x%lX);\r\n"), classDef->classData->name, funcName.Array(), i); internalDecs << TEXT(" Declare_Internal_StaticMember(") << funcName << TEXT(");\r\n"); } else { strNativeClassLinks << FormattedString(TEXT(" curClass->DefineNativeMember((OBJECTCALLBACK)&%s::%s, 0x%lX);\r\n"), classDef->classData->name, funcName.Array(), i); internalDecs << TEXT(" Declare_Internal_Member(") << funcName << TEXT(");\r\n"); } bFoundInternalFunc = TRUE; } } if(bFoundNativeClassLinks) { strNativeClassLinks << TEXT(" }\r\n"); if(bFoundVars && !bFoundImplementable && internalDecs.IsValid()) classDecs << TEXT("\r\n"); classDecs << TEXT("\r\n") << internalDecs; } if(bFoundSomething) { classDecs << TEXT(" //</Script>"); str << classDecs; } str << TEXT("\r\n};\r\n"); //---------------------------------- strCurClasses << str; //---------------------------------- strForwards << TEXT("class ") << classDef->classData->name << TEXT(";\r\n"); //---------------------------------- if(classDef->classData->IsAbstract()) strCurClassDefs << TEXT("DefineAbstractClass("); else strCurClassDefs << TEXT("DefineClass("); strCurClassDefs << classDef->classData->name << TEXT(");\r\n"); }
INT_PTR SettingsVideo::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam) { HWND hwndTemp; switch(message) { case WM_INITDIALOG: { LocalizeWindow(hwnd); if (LocaleIsRTL()) { RECT xRect, yRect; GetWindowRect(GetDlgItem(hwnd, IDC_SIZEX), &xRect); MapWindowPoints(HWND_DESKTOP, hwnd, (LPPOINT)&xRect.left, 2); GetWindowRect(GetDlgItem(hwnd, IDC_SIZEY), &yRect); MapWindowPoints(HWND_DESKTOP, hwnd, (LPPOINT)&yRect.left, 2); SetWindowPos(GetDlgItem(hwnd, IDC_SIZEX), nullptr, yRect.left, yRect.top, 0, 0, SWP_NOSIZE); SetWindowPos(GetDlgItem(hwnd, IDC_SIZEY), nullptr, xRect.left, xRect.top, 0, 0, SWP_NOSIZE); } //-------------------------------------------- HWND hwndToolTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, WS_POPUP|TTS_NOPREFIX|TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, NULL, hinstMain, NULL); TOOLINFO ti; zero(&ti, sizeof(ti)); ti.cbSize = sizeof(ti); ti.uFlags = TTF_SUBCLASS|TTF_IDISHWND; ti.hwnd = hwnd; if (LocaleIsRTL()) ti.uFlags |= TTF_RTLREADING; SendMessage(hwndToolTip, TTM_SETMAXTIPWIDTH, 0, 500); SendMessage(hwndToolTip, TTM_SETDELAYTIME, TTDT_AUTOPOP, 8000); //-------------------------------------------- DeviceOutputs outputs; GetDisplayDevices(outputs); hwndTemp = GetDlgItem(hwnd, IDC_DEVICE); for (UINT i=0; i<outputs.devices.Num(); i++) { SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)outputs.devices[i].strDevice.Array()); } UINT adapterID = GlobalConfig->GetInt(TEXT("Video"), TEXT("Adapter"), 0); if (adapterID >= outputs.devices.Num()) adapterID = 0; SendMessage(hwndTemp, CB_SETCURSEL, adapterID, 0); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_MONITOR); App->monitors.Clear(); EnumDisplayMonitors(NULL, NULL, (MONITORENUMPROC)MonitorInfoEnumProc, (LPARAM)&App->monitors); for(UINT i=0; i<App->monitors.Num(); i++) SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)IntString(i+1).Array()); int monitorID = LoadSettingComboInt(hwndTemp, TEXT("Video"), TEXT("Monitor"), 0, App->monitors.Num()-1); if(monitorID > (int)App->monitors.Num()) monitorID = 0; //-------------------------------------------- SendMessage(GetDlgItem(hwnd, IDC_USECUSTOM), BM_SETCHECK, BST_CHECKED, 0); EnableWindow(GetDlgItem(hwnd, IDC_MONITOR), FALSE); //-------------------------------------------- int cx, cy; if(!AppConfig->HasKey(TEXT("Video"), TEXT("BaseWidth")) || !AppConfig->HasKey(TEXT("Video"), TEXT("BaseHeight"))) { cx = App->monitors[monitorID].rect.right - App->monitors[monitorID].rect.left; cy = App->monitors[monitorID].rect.bottom - App->monitors[monitorID].rect.top; AppConfig->SetInt(TEXT("Video"), TEXT("BaseWidth"), cx); AppConfig->SetInt(TEXT("Video"), TEXT("BaseHeight"), cy); } else { cx = AppConfig->GetInt(TEXT("Video"), TEXT("BaseWidth")); cy = AppConfig->GetInt(TEXT("Video"), TEXT("BaseHeight")); if(cx < 128) cx = 128; else if(cx > 4096) cx = 4096; if(cy < 128) cy = 128; else if(cy > 4096) cy = 4096; } RefreshAspect(hwnd, cx, cy); hwndTemp = GetDlgItem(hwnd, IDC_SIZEX); editProc = (FARPROC)GetWindowLongPtr(hwndTemp, GWLP_WNDPROC); SetWindowLongPtr(hwndTemp, GWLP_WNDPROC, (LONG_PTR)ResolutionEditSubclassProc); SetWindowText(hwndTemp, IntString(cx).Array()); hwndTemp = GetDlgItem(hwnd, IDC_SIZEY); SetWindowLongPtr(hwndTemp, GWLP_WNDPROC, (LONG_PTR)ResolutionEditSubclassProc); SetWindowText(hwndTemp, IntString(cy).Array()); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_DISABLEAERO); if(OSGetVersion() == 8) EnableWindow(hwndTemp, FALSE); BOOL bDisableAero = AppConfig->GetInt(TEXT("Video"), TEXT("DisableAero"), 0); SendMessage(hwndTemp, BM_SETCHECK, bDisableAero ? BST_CHECKED : 0, 0); ti.lpszText = (LPWSTR)Str("Settings.Video.DisableAeroTooltip"); ti.uId = (UINT_PTR)hwndTemp; SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); //-------------------------------------------- BOOL bUnlockFPS = AppConfig->GetInt(TEXT("Video"), TEXT("UnlockFPS")); int topFPS = bUnlockFPS ? 120 : 60; hwndTemp = GetDlgItem(hwnd, IDC_FPS); SendMessage(hwndTemp, UDM_SETRANGE32, 1, topFPS); int fps = AppConfig->GetInt(TEXT("Video"), TEXT("FPS"), 30); if(!AppConfig->HasKey(TEXT("Video"), TEXT("FPS"))) { AppConfig->SetInt(TEXT("Video"), TEXT("FPS"), 30); fps = 30; } else if(fps < 1) { AppConfig->SetInt(TEXT("Video"), TEXT("FPS"), 1); fps = 1; } else if(fps > topFPS) { AppConfig->SetInt(TEXT("Video"), TEXT("FPS"), topFPS); fps = topFPS; } SendMessage(hwndTemp, UDM_SETPOS32, 0, fps); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_DOWNSCALE); RefreshDownscales(hwndTemp, cx, cy); ti.lpszText = (LPWSTR)Str("Settings.Video.DownscaleTooltip"); ti.uId = (UINT_PTR)hwndTemp; SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); //-------------------------------------------- RefreshFilters(hwnd, true); //-------------------------------------------- ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_HIDE); SetChangedSettings(false); return TRUE; } case WM_COMMAND: { bool bDataChanged = false; switch(LOWORD(wParam)) { case IDC_MONITOR: { if(HIWORD(wParam) != CBN_SELCHANGE) break; int sel = (int)SendMessage(GetDlgItem(hwnd, IDC_MONITOR), CB_GETCURSEL, 0, 0); if(sel != CB_ERR) { if(sel >= (int)App->monitors.Num()) sel = 0; MonitorInfo &monitor = App->monitors[sel]; int cx, cy; cx = monitor.rect.right - monitor.rect.left; cy = monitor.rect.bottom - monitor.rect.top; SetWindowText(GetDlgItem(hwnd, IDC_SIZEX), IntString(cx).Array()); SetWindowText(GetDlgItem(hwnd, IDC_SIZEY), IntString(cy).Array()); RefreshAspect(hwnd, cx, cy); } break; } case IDC_USECUSTOM: SendMessage(GetDlgItem(hwnd, IDC_SIZEX), EM_SETREADONLY, FALSE, 0); SendMessage(GetDlgItem(hwnd, IDC_SIZEY), EM_SETREADONLY, FALSE, 0); EnableWindow(GetDlgItem(hwnd, IDC_MONITOR), FALSE); break; case IDC_USEMONITOR: { SendMessage(GetDlgItem(hwnd, IDC_SIZEX), EM_SETREADONLY, TRUE, 0); SendMessage(GetDlgItem(hwnd, IDC_SIZEY), EM_SETREADONLY, TRUE, 0); EnableWindow(GetDlgItem(hwnd, IDC_MONITOR), TRUE); int sel = (int)SendMessage(GetDlgItem(hwnd, IDC_MONITOR), CB_GETCURSEL, 0, 0); if(sel != CB_ERR) { if(sel >= (int)App->monitors.Num()) sel = 0; MonitorInfo &monitor = App->monitors[sel]; int cx, cy; cx = monitor.rect.right - monitor.rect.left; cy = monitor.rect.bottom - monitor.rect.top; SetWindowText(GetDlgItem(hwnd, IDC_SIZEX), IntString(cx).Array()); SetWindowText(GetDlgItem(hwnd, IDC_SIZEY), IntString(cy).Array()); RefreshAspect(hwnd, cx, cy); } break; } case IDC_SIZEX: case IDC_SIZEY: { if(HIWORD(wParam) != EN_CHANGE) break; int cx = GetEditText(GetDlgItem(hwnd, IDC_SIZEX)).ToInt(); int cy = GetEditText(GetDlgItem(hwnd, IDC_SIZEY)).ToInt(); if(cx < 128) cx = 128; else if(cx > 4096) cx = 4096; if(cy < 128) cy = 128; else if(cy > 4096) cy = 4096; RefreshDownscales(GetDlgItem(hwnd, IDC_DOWNSCALE), cx, cy); RefreshAspect(hwnd, cx, cy); bDataChanged = true; break; } case IDC_DISABLEAERO: if(HIWORD(wParam) == BN_CLICKED) bDataChanged = true; break; case IDC_FPS_EDIT: if(HIWORD(wParam) == EN_CHANGE) bDataChanged = true; break; case IDC_DEVICE: case IDC_FILTER: if(HIWORD(wParam) == CBN_SELCHANGE) bDataChanged = true; break; case IDC_DOWNSCALE: if(HIWORD(wParam) == CBN_SELCHANGE) { bDataChanged = true; RefreshFilters(hwnd, false); } break; } if(bDataChanged) { if (App->GetVideoEncoder()) ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW); SetChangedSettings(true); } break; } } return FALSE; }
void OBS::DrawStatusBar(DRAWITEMSTRUCT &dis) { if(!App->bRunning) return; HDC hdcTemp = CreateCompatibleDC(dis.hDC); HBITMAP hbmpTemp = CreateCompatibleBitmap(dis.hDC, dis.rcItem.right-dis.rcItem.left, dis.rcItem.bottom-dis.rcItem.top); SelectObject(hdcTemp, hbmpTemp); SelectObject(hdcTemp, GetCurrentObject(dis.hDC, OBJ_FONT)); //HBRUSH hColorBrush = CreateSolidBrush((green<<8)|red); RECT rc; mcpy(&rc, &dis.rcItem, sizeof(rc)); rc.left -= dis.rcItem.left; rc.right -= dis.rcItem.left; rc.top -= dis.rcItem.top; rc.bottom -= dis.rcItem.top; FillRect(hdcTemp, &rc, (HBRUSH)(COLOR_BTNFACE+1)); //DeleteObject(hColorBrush); //-------------------------------- if(dis.itemID == 4) { DWORD green = 0xFF, red = 0xFF; statusBarData.bytesPerSec = App->bytesPerSec; statusBarData.strain = App->curStrain; //statusBarData.strain = rand()%101; if(statusBarData.strain > 50.0) green = DWORD(((50.0-(statusBarData.strain-50.0))/50.0)*255.0); double redStrain = statusBarData.strain/50.0; if(redStrain > 1.0) redStrain = 1.0; red = DWORD(redStrain*255.0); //-------------------------------- HBRUSH hColorBrush = CreateSolidBrush((green<<8)|red); RECT rcBox = {0, 0, 20, 20}; /*rc.left += dis.rcItem.left; rc.right += dis.rcItem.left; rc.top += dis.rcItem.top; rc.bottom += dis.rcItem.top;*/ FillRect(hdcTemp, &rcBox, hColorBrush); DeleteObject(hColorBrush); //-------------------------------- SetBkMode(hdcTemp, TRANSPARENT); rc.left += 22; String strKBPS; strKBPS << IntString((statusBarData.bytesPerSec*8) / 1000) << TEXT("kb/s"); //strKBPS << IntString(rand()) << TEXT("kb/s"); DrawText(hdcTemp, strKBPS, strKBPS.Length(), &rc, DT_VCENTER|DT_SINGLELINE|DT_LEFT); } else { String strOutString; switch(dis.itemID) { case 0: strOutString << App->GetMostImportantInfo(); break; case 1: { DWORD streamTimeSecondsTotal = App->totalStreamTime/1000; DWORD streamTimeMinutesTotal = streamTimeSecondsTotal/60; DWORD streamTimeSeconds = streamTimeSecondsTotal%60; DWORD streamTimeHours = streamTimeMinutesTotal/60; DWORD streamTimeMinutes = streamTimeMinutesTotal%60; strOutString = FormattedString(TEXT("%u:%02u:%02u"), streamTimeHours, streamTimeMinutes, streamTimeSeconds); } break; case 2: { double percentageDropped = 0.0; if (OSTryEnterMutex(App->hStartupShutdownMutex)) { if(App->network) { UINT numTotalFrames = App->network->NumTotalVideoFrames(); if(numTotalFrames) percentageDropped = (double(App->network->NumDroppedFrames())/double(numTotalFrames))*100.0; } OSLeaveMutex(App->hStartupShutdownMutex); } strOutString << Str("MainWindow.DroppedFrames") << FormattedString(TEXT(" %u (%0.2f%%)"), App->curFramesDropped, percentageDropped); } break; case 3: strOutString << TEXT("FPS: ") << IntString(App->captureFPS); break; } if(strOutString.IsValid()) { SetBkMode(hdcTemp, TRANSPARENT); DrawText(hdcTemp, strOutString, strOutString.Length(), &rc, DT_VCENTER|DT_SINGLELINE|DT_LEFT); } } //-------------------------------- BitBlt(dis.hDC, dis.rcItem.left, dis.rcItem.top, dis.rcItem.right-dis.rcItem.left, dis.rcItem.bottom-dis.rcItem.top, hdcTemp, 0, 0, SRCCOPY); DeleteObject(hdcTemp); DeleteObject(hbmpTemp); }
String NVENCEncoder::GetInfoString() const { String strInfo; String preset = "unknown"; if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_HP_GUID)) preset = "hp"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_HQ_GUID)) preset = "hq"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_BD_GUID)) preset = "bd"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID)) preset = "ll"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_LOW_LATENCY_HP_GUID)) preset = "llhp"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_LOW_LATENCY_HQ_GUID)) preset = "llhq"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_LOSSLESS_DEFAULT_GUID)) preset = "lossless"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_LOSSLESS_HP_GUID)) preset = "losslesshp"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_DEFAULT_GUID)) preset = "default"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_STREAMING)) preset = "streaming"; String profile = "unknown"; if (dataEqual(encodeConfig.profileGUID, NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID)) profile = "autoselect"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_BASELINE_GUID)) profile = "baseline"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_MAIN_GUID)) profile = "main"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_HIGH_GUID)) profile = "high"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_HIGH_444_GUID)) profile = "high444"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_STEREO_GUID)) profile = "stereo"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_SVC_TEMPORAL_SCALABILTY)) profile = "svc temporal"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_CONSTRAINED_HIGH_GUID)) profile = "constrained high"; String cbr = "no"; switch (encodeConfig.rcParams.rateControlMode) { case NV_ENC_PARAMS_RC_CBR: cbr = "yes"; break; case NV_ENC_PARAMS_RC_2_PASS_QUALITY: case NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP: cbr = "yes (2pass)"; break; case NV_ENC_PARAMS_RC_2_PASS_VBR: cbr = "no (2pass)"; break; } String cfr = "yes"; if (encodeConfig.encodeCodecConfig.h264Config.enableVFR) cfr = "no"; String level = "unknown"; if (encodeConfig.encodeCodecConfig.h264Config.level == 0) { level = "autoselect"; } else if (encodeConfig.encodeCodecConfig.h264Config.level <= 51) { level = IntString(encodeConfig.encodeCodecConfig.h264Config.level / 10); level << "."; level << IntString(encodeConfig.encodeCodecConfig.h264Config.level % 10); } strInfo << TEXT("Video Encoding: NVENC") << TEXT("\r\n fps: ") << IntString(initEncodeParams.frameRateNum / initEncodeParams.frameRateDen) << TEXT("\r\n width: ") << IntString(initEncodeParams.encodeWidth) << TEXT(", height: ") << IntString(initEncodeParams.encodeHeight) << TEXT("\r\n preset: ") << preset << TEXT("\r\n profile: ") << profile << TEXT("\r\n level: ") << level << TEXT("\r\n keyint: ") << IntString(encodeConfig.gopLength) << TEXT("\r\n CBR: ") << cbr << TEXT("\r\n CFR: ") << cfr << TEXT("\r\n max bitrate: ") << IntString(encodeConfig.rcParams.maxBitRate / 1000) << TEXT("\r\n avg bitrate: ") << IntString(encodeConfig.rcParams.averageBitRate / 1000) << TEXT("\r\n buffer size: ") << IntString(encodeConfig.rcParams.vbvBufferSize / 1000); if (!bUseCBR) { strInfo << TEXT("\r\n quality: ") << IntString(quality); } return strInfo; }
INT_PTR SettingsEncoding::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: { HWND hwndTemp; LocalizeWindow(hwnd); //-------------------------------------------- HWND hwndToolTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, WS_POPUP|TTS_NOPREFIX|TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, NULL, hinstMain, NULL); TOOLINFO ti; zero(&ti, sizeof(ti)); ti.cbSize = sizeof(ti); ti.uFlags = TTF_SUBCLASS|TTF_IDISHWND; ti.hwnd = hwnd; SendMessage(hwndToolTip, TTM_SETMAXTIPWIDTH, 0, 500); SendMessage(hwndToolTip, TTM_SETDELAYTIME, TTDT_AUTOPOP, 8000); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_QUALITY); for(int i=0; i<=10; i++) SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)IntString(i).Array()); LoadSettingComboString(hwndTemp, TEXT("Video Encoding"), TEXT("Quality"), TEXT("8")); ti.lpszText = (LPWSTR)Str("Settings.Encoding.Video.QualityTooltip"); ti.uId = (UINT_PTR)hwndTemp; SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); //-------------------------------------------- bool bUseCBR = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseCBR"), 1) != 0; bool bPadCBR = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("PadCBR"), 1) != 0; SendMessage(GetDlgItem(hwnd, IDC_USECBR), BM_SETCHECK, bUseCBR ? BST_CHECKED : BST_UNCHECKED, 0); SendMessage(GetDlgItem(hwnd, IDC_PADCBR), BM_SETCHECK, bPadCBR ? BST_CHECKED : BST_UNCHECKED, 0); EnableWindow(GetDlgItem(hwnd, IDC_QUALITY), !bUseCBR); EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), bUseCBR); ti.lpszText = (LPWSTR)Str("Settings.Advanced.PadCBRToolTip"); ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_PADCBR); SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); //-------------------------------------------- int bitrate = LoadSettingEditInt(GetDlgItem(hwnd, IDC_MAXBITRATE), TEXT("Video Encoding"), TEXT("MaxBitrate"), 1000); int buffersize = LoadSettingEditInt(GetDlgItem(hwnd, IDC_BUFFERSIZE), TEXT("Video Encoding"), TEXT("BufferSize"), 1000); ti.lpszText = (LPWSTR)Str("Settings.Encoding.Video.MaxBitRateTooltip"); ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_MAXBITRATE); SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); ti.lpszText = (LPWSTR)Str("Settings.Encoding.Video.BufferSizeTooltip"); ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_BUFFERSIZE); SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); //-------------------------------------------- bool bHasUseBufferSizeValue = AppConfig->HasKey(TEXT("Video Encoding"), TEXT("UseBufferSize")) != 0; bool bUseBufferSize; if(!bHasUseBufferSizeValue) bUseBufferSize = buffersize != bitrate; else bUseBufferSize = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseBufferSize"), 0) != 0; SendMessage(GetDlgItem(hwnd, IDC_CUSTOMBUFFER), BM_SETCHECK, bUseBufferSize ? BST_CHECKED : BST_UNCHECKED, 0); EnableWindow(GetDlgItem(hwnd, IDC_BUFFERSIZE), bUseBufferSize); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_AUDIOCODEC); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("MP3")); #ifdef USE_AAC if(1)//OSGetVersion() >= 7) { SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("AAC")); LoadSettingComboString(hwndTemp, TEXT("Audio Encoding"), TEXT("Codec"), TEXT("AAC")); } else LoadSettingComboString(hwndTemp, TEXT("Audio Encoding"), TEXT("Codec"), TEXT("MP3")); #else LoadSettingComboString(hwndTemp, TEXT("Audio Encoding"), TEXT("Codec"), TEXT("MP3")); #endif //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_AUDIOBITRATE); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("48")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("64")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("80")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("96")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("112")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("128")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("160")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("192")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("256")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("320")); LoadSettingComboString(hwndTemp, TEXT("Audio Encoding"), TEXT("Bitrate"), TEXT("96")); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_AUDIOFORMAT); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("44.1khz mono")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("44.1khz stereo")); LoadSettingComboInt(hwndTemp, TEXT("Audio Encoding"), TEXT("Format"), 1, 1); //-------------------------------------------- ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_HIDE); SetChangedSettings(false); return TRUE; } case WM_COMMAND: { bool bDataChanged = false; switch(LOWORD(wParam)) { case IDC_QUALITY: case IDC_AUDIOCODEC: case IDC_AUDIOBITRATE: case IDC_AUDIOFORMAT: if(HIWORD(wParam) == CBN_SELCHANGE) bDataChanged = true; break; case IDC_MAXBITRATE: if(HIWORD(wParam) == EN_CHANGE) { bool bCustomBuffer = SendMessage(GetDlgItem(hwnd, IDC_CUSTOMBUFFER), BM_GETCHECK, 0, 0) == BST_CHECKED; if (!bCustomBuffer) { String strText = GetEditText((HWND)lParam); SetWindowText(GetDlgItem(hwnd, IDC_BUFFERSIZE), strText); } bDataChanged = true; } break; case IDC_BUFFERSIZE: if(HIWORD(wParam) == EN_CHANGE) bDataChanged = true; break; case IDC_CUSTOMBUFFER: case IDC_USECBR: case IDC_PADCBR: if (HIWORD(wParam) == BN_CLICKED) { bool bChecked = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) == BST_CHECKED; if(LOWORD(wParam) == IDC_CUSTOMBUFFER) { EnableWindow(GetDlgItem(hwnd, IDC_BUFFERSIZE), bChecked); if(!bChecked) SetWindowText(GetDlgItem(hwnd, IDC_BUFFERSIZE), GetEditText(GetDlgItem(hwnd, IDC_MAXBITRATE))); } else if(LOWORD(wParam) == IDC_USECBR) { EnableWindow(GetDlgItem(hwnd, IDC_QUALITY), !bChecked); EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), bChecked); } bDataChanged = true; } break; } if(bDataChanged) { ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW); SetChangedSettings(true); } break; } } return FALSE; }
void XElement::AddInt(CTSTR lpName, int number) { assert(lpName); SubItems << new XDataItem(lpName, IntString(number)); }
static string GetD3D9UsageString(DWORD flags) { if (!flags) return string("None"); stringstream ss; if (flags & D3DUSAGE_RENDERTARGET) { ss << "D3DUSAGE_RENDERTARGET "; flags &= ~D3DUSAGE_RENDERTARGET; } if (flags & D3DUSAGE_DEPTHSTENCIL) { ss << "D3DUSAGE_DEPTHSTENCIL "; flags &= ~D3DUSAGE_DEPTHSTENCIL; } if (flags & D3DUSAGE_DYNAMIC) { ss << "D3DUSAGE_DYNAMIC "; flags &= ~D3DUSAGE_DYNAMIC; } if (flags & D3DUSAGE_NONSECURE) { ss << "D3DUSAGE_NONSECURE "; flags &= ~D3DUSAGE_NONSECURE; } if (flags & D3DUSAGE_AUTOGENMIPMAP) { ss << "D3DUSAGE_AUTOGENMIPMAP "; flags &= ~D3DUSAGE_AUTOGENMIPMAP; } if (flags & D3DUSAGE_DMAP) { ss << "D3DUSAGE_DMAP "; flags &= ~D3DUSAGE_DMAP; } if (flags & D3DUSAGE_QUERY_LEGACYBUMPMAP) { ss << "D3DUSAGE_QUERY_LEGACYBUMPMAP "; flags &= ~D3DUSAGE_QUERY_LEGACYBUMPMAP; } if (flags & D3DUSAGE_QUERY_SRGBREAD) { ss << "D3DUSAGE_QUERY_SRGBREAD "; flags &= ~D3DUSAGE_QUERY_SRGBREAD; } if (flags & D3DUSAGE_QUERY_FILTER) { ss << "D3DUSAGE_QUERY_FILTER "; flags &= ~D3DUSAGE_QUERY_FILTER; } if (flags & D3DUSAGE_QUERY_SRGBWRITE) { ss << "D3DUSAGE_QUERY_SRGBWRITE "; flags &= ~D3DUSAGE_QUERY_SRGBWRITE; } if (flags & D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING) { ss << "D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING "; flags &= ~D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING; } if (flags & D3DUSAGE_QUERY_VERTEXTEXTURE) { ss << "D3DUSAGE_QUERY_VERTEXTEXTURE "; flags &= ~D3DUSAGE_QUERY_VERTEXTEXTURE; } if (flags & D3DUSAGE_QUERY_WRAPANDMIP) { ss << "D3DUSAGE_QUERY_WRAPANDMIP "; flags &= ~D3DUSAGE_QUERY_WRAPANDMIP; } if (flags & D3DUSAGE_DYNAMIC) { ss << "D3DUSAGE_DYNAMIC "; flags &= ~D3DUSAGE_DYNAMIC; } if (flags & D3DUSAGE_WRITEONLY) { ss << "D3DUSAGE_WRITEONLY "; flags &= ~D3DUSAGE_WRITEONLY; } if (flags & D3DUSAGE_SOFTWAREPROCESSING) { ss << "D3DUSAGE_SOFTWAREPROCESSING "; flags &= ~D3DUSAGE_SOFTWAREPROCESSING; } if (flags & D3DUSAGE_DONOTCLIP) { ss << "D3DUSAGE_DONOTCLIP "; flags &= ~D3DUSAGE_DONOTCLIP; } if (flags & D3DUSAGE_POINTS) { ss << "D3DUSAGE_POINTS "; flags &= ~D3DUSAGE_POINTS; } if (flags & D3DUSAGE_RTPATCHES) { ss << "D3DUSAGE_RTPATCHES "; flags &= ~D3DUSAGE_RTPATCHES; } if (flags & D3DUSAGE_NPATCHES) { ss << "D3DUSAGE_NPATCHES "; flags &= ~D3DUSAGE_NPATCHES; } if (flags & D3DUSAGE_TEXTAPI) { ss << "D3DUSAGE_TEXTAPI "; flags &= ~D3DUSAGE_TEXTAPI; } if (flags & D3DUSAGE_RESTRICTED_CONTENT) { ss << "D3DUSAGE_RESTRICTED_CONTENT "; flags &= ~D3DUSAGE_RESTRICTED_CONTENT; } if (flags & D3DUSAGE_RESTRICT_SHARED_RESOURCE) { ss << "D3DUSAGE_RESTRICT_SHARED_RESOURCE "; flags &= ~D3DUSAGE_RESTRICT_SHARED_RESOURCE; } if (flags & D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER) { ss << "D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER "; flags &= ~D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER; } if (flags) ss << IntString(flags) << " "; return ss.str(); }
INT_PTR SettingsEncoding::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: { HWND hwndTemp; LocalizeWindow(hwnd); //-------------------------------------------- bool showQSVConfigurationWarning = false; hasQSV = CheckQSVHardwareSupport(false, &showQSVConfigurationWarning); hasNVENC = CheckNVENCHardwareSupport(false); String vcodec = AppConfig->GetString(L"Video Encoding", L"Encoder"); bool useQSV = !!(vcodec == L"QSV"); bool useNVENC = !!(vcodec == L"NVENC"); bool usex264 = !useQSV && !useNVENC; SendMessage(GetDlgItem(hwnd, IDC_ENCODERX264), BM_SETCHECK, usex264, 0); SendMessage(GetDlgItem(hwnd, IDC_ENCODERQSV), BM_SETCHECK, useQSV, 0); SendMessage(GetDlgItem(hwnd, IDC_ENCODERNVENC), BM_SETCHECK, useNVENC, 0); EnableWindow(GetDlgItem(hwnd, IDC_ENCODERQSV), hasQSV || useQSV); EnableWindow(GetDlgItem(hwnd, IDC_ENCODERNVENC), hasNVENC || useNVENC); bool QSVOnUnsupportedWinVer = OSGetVersion() < 7 && IsKnownQSVCPUPlatform() && !hasQSV; ShowWindow(GetDlgItem(hwnd, IDC_QSV_WINVER_WARNING), QSVOnUnsupportedWinVer ? SW_SHOW : SW_HIDE); ShowWindow(GetDlgItem(hwnd, IDC_QSV_CONFIG_WARNING), !QSVOnUnsupportedWinVer && showQSVConfigurationWarning ? SW_SHOW : SW_HIDE); //-------------------------------------------- HWND hwndToolTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, WS_POPUP|TTS_NOPREFIX|TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, NULL, hinstMain, NULL); TOOLINFO ti; zero(&ti, sizeof(ti)); ti.cbSize = sizeof(ti); ti.uFlags = TTF_SUBCLASS|TTF_IDISHWND; ti.hwnd = hwnd; if (LocaleIsRTL()) ti.uFlags |= TTF_RTLREADING; SendMessage(hwndToolTip, TTM_SETMAXTIPWIDTH, 0, 500); SendMessage(hwndToolTip, TTM_SETDELAYTIME, TTDT_AUTOPOP, 8000); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_QUALITY); for(int i=0; i<=10; i++) SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)IntString(i).Array()); LoadSettingComboString(hwndTemp, TEXT("Video Encoding"), TEXT("Quality"), TEXT("8")); ti.lpszText = (LPWSTR)Str("Settings.Encoding.Video.QualityTooltip"); ti.uId = (UINT_PTR)hwndTemp; SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); //-------------------------------------------- bool bUseCBR = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseCBR"), 1) != 0; bool bPadCBR = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("PadCBR"), 1) != 0; SendMessage(GetDlgItem(hwnd, IDC_USECBR), BM_SETCHECK, bUseCBR ? BST_CHECKED : BST_UNCHECKED, 0); SendMessage(GetDlgItem(hwnd, IDC_PADCBR), BM_SETCHECK, bPadCBR ? BST_CHECKED : BST_UNCHECKED, 0); EnableWindow(GetDlgItem(hwnd, IDC_QUALITY), !bUseCBR && (usex264 || useNVENC)); EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), bUseCBR && (usex264 || useNVENC)); ti.lpszText = (LPWSTR)Str("Settings.Advanced.PadCBRToolTip"); ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_PADCBR); SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); //-------------------------------------------- int bitrate = LoadSettingEditInt(GetDlgItem(hwnd, IDC_MAXBITRATE), TEXT("Video Encoding"), TEXT("MaxBitrate"), 1000); int buffersize = LoadSettingEditInt(GetDlgItem(hwnd, IDC_BUFFERSIZE), TEXT("Video Encoding"), TEXT("BufferSize"), 1000); ti.lpszText = (LPWSTR)Str("Settings.Encoding.Video.MaxBitRateTooltip"); ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_MAXBITRATE); SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); ti.lpszText = (LPWSTR)Str("Settings.Encoding.Video.BufferSizeTooltip"); ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_BUFFERSIZE); SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti); //-------------------------------------------- bool bUseBufferSize = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseBufferSize"), 0) != 0; SendMessage(GetDlgItem(hwnd, IDC_CUSTOMBUFFER), BM_SETCHECK, bUseBufferSize ? BST_CHECKED : BST_UNCHECKED, 0); EnableWindow(GetDlgItem(hwnd, IDC_BUFFERSIZE), bUseBufferSize); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_AUDIOCODEC); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("MP3")); #ifdef USE_AAC if(1)//OSGetVersion() >= 7) { SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("AAC")); LoadSettingComboString(hwndTemp, TEXT("Audio Encoding"), TEXT("Codec"), TEXT("AAC")); } else LoadSettingComboString(hwndTemp, TEXT("Audio Encoding"), TEXT("Codec"), TEXT("MP3")); #else LoadSettingComboString(hwndTemp, TEXT("Audio Encoding"), TEXT("Codec"), TEXT("MP3")); #endif //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_AUDIOFORMAT); BOOL isAAC = SendMessage(GetDlgItem(hwnd, IDC_AUDIOCODEC), CB_GETCURSEL, 0, 0) == 1; if (isAAC) { SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("44.1kHz")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("48kHz")); } else { SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("44.1kHz")); } LoadSettingComboInt(hwndTemp, TEXT("Audio Encoding"), TEXT("Format"), 1, isAAC ? 1 : 0); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_AUDIOCHANNEL); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("mono")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("stereo")); LoadSettingComboInt(hwndTemp, TEXT("Audio Encoding"), TEXT("isStereo"), 1, 1); //-------------------------------------------- hwndTemp = GetDlgItem(hwnd, IDC_AUDIOBITRATE); BOOL isStereo = SendMessage(GetDlgItem(hwnd, IDC_AUDIOCHANNEL), CB_GETCURSEL, 0, 0) == 1; if (isStereo) { SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("48")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("64")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("80")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("96"));//default SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("112")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("128")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("160")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("192")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("256")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("320")); } else { SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("32")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("40")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("48"));//default SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("56")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("64")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("80")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("96")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("128")); SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("160")); } LoadSettingComboString(hwndTemp, TEXT("Audio Encoding"), TEXT("Bitrate"), isStereo ? TEXT("96") : TEXT("48")); //-------------------------------------------- ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_HIDE); SetChangedSettings(false); return TRUE; } case WM_COMMAND: { bool bDataChanged = false; bool useQSV = SendMessage(GetDlgItem(hwnd, IDC_ENCODERQSV), BM_GETCHECK, 0, 0) == BST_CHECKED; bool useNVENC = SendMessage(GetDlgItem(hwnd, IDC_ENCODERNVENC), BM_GETCHECK, 0, 0) == BST_CHECKED; bool usex264 = !useQSV && !useNVENC; bool useCBR = SendMessage(GetDlgItem(hwnd, IDC_USECBR), BM_GETCHECK, 0, 0) == BST_CHECKED; switch(LOWORD(wParam)) { case IDC_QUALITY: case IDC_AUDIOBITRATE: if(HIWORD(wParam) == CBN_SELCHANGE) { bDataChanged = true; } break; case IDC_AUDIOFORMAT: if(HIWORD(wParam) == CBN_SELCHANGE) { bDataChanged = true; } break; case IDC_AUDIOCHANNEL: if(HIWORD(wParam) == CBN_SELCHANGE) { HWND hwndAudioBitrate = GetDlgItem(hwnd, IDC_AUDIOBITRATE); SendMessage(hwndAudioBitrate, CB_RESETCONTENT, 0, 0); BOOL isStereo = SendMessage(GetDlgItem(hwnd, IDC_AUDIOCHANNEL), CB_GETCURSEL, 0, 0) == 1; if (isStereo) { SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("48")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("64")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("80")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("96"));//default SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("112")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("128")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("160")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("192")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("256")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("320")); } else { SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("32")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("40")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("48"));//default SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("56")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("64")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("80")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("96")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("128")); SendMessage(hwndAudioBitrate, CB_ADDSTRING, 0, (LPARAM)TEXT("160")); } SendMessage(hwndAudioBitrate, CB_SETCURSEL, isStereo ? 3 : 2, 0); bDataChanged = true; } break; case IDC_AUDIOCODEC: if(HIWORD(wParam) == CBN_SELCHANGE) { HWND hwndAudioFormat = GetDlgItem(hwnd, IDC_AUDIOFORMAT); SendMessage(hwndAudioFormat, CB_RESETCONTENT, 0, 0); BOOL isAAC = SendMessage(GetDlgItem(hwnd, IDC_AUDIOCODEC), CB_GETCURSEL, 0, 0) == 1; if (isAAC) { SendMessage(hwndAudioFormat, CB_ADDSTRING, 0, (LPARAM)TEXT("44.1kHz")); SendMessage(hwndAudioFormat, CB_ADDSTRING, 0, (LPARAM)TEXT("48kHz")); } else { SendMessage(hwndAudioFormat, CB_ADDSTRING, 0, (LPARAM)TEXT("44.1kHz")); } SendMessage(hwndAudioFormat, CB_SETCURSEL, isAAC ? 1 : 0, 0); bDataChanged = true; } break; case IDC_MAXBITRATE: if(HIWORD(wParam) == EN_CHANGE) { bool bCustomBuffer = SendMessage(GetDlgItem(hwnd, IDC_CUSTOMBUFFER), BM_GETCHECK, 0, 0) == BST_CHECKED; if (!bCustomBuffer) { String strText = GetEditText((HWND)lParam); SetWindowText(GetDlgItem(hwnd, IDC_BUFFERSIZE), strText); } if (App->GetVideoEncoder() && App->GetVideoEncoder()->DynamicBitrateSupported()) SetChangedSettings(true); else bDataChanged = true; } break; case IDC_BUFFERSIZE: if (HIWORD(wParam) == EN_CHANGE) { if (App->GetVideoEncoder() && App->GetVideoEncoder()->DynamicBitrateSupported()) SetChangedSettings(true); else bDataChanged = true; } break; case IDC_ENCODERX264: case IDC_ENCODERQSV: case IDC_ENCODERNVENC: if (HIWORD(wParam) == BN_CLICKED) bDataChanged = true; EnableWindow(GetDlgItem(hwnd, IDC_QUALITY), !useCBR && (usex264 || useNVENC)); EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), useCBR && (usex264 || useNVENC)); break; case IDC_CUSTOMBUFFER: case IDC_USECBR: case IDC_PADCBR: if (HIWORD(wParam) == BN_CLICKED) { bool bChecked = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) == BST_CHECKED; if(LOWORD(wParam) == IDC_CUSTOMBUFFER) EnableWindow(GetDlgItem(hwnd, IDC_BUFFERSIZE), bChecked); else if(LOWORD(wParam) == IDC_USECBR) { EnableWindow(GetDlgItem(hwnd, IDC_QUALITY), !bChecked && (usex264 || useNVENC)); EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), bChecked && (usex264 || useNVENC)); } bDataChanged = true; } break; } if(bDataChanged) { if (App->GetVideoEncoder()) ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW); SetChangedSettings(true); } break; } } return FALSE; }
static string GetD3D9FormatName(DWORD format) { switch(format) { case D3DFMT_UNKNOWN : return string("D3DFMT_UNKNOWN"); case D3DFMT_R8G8B8 : return string("D3DFMT_R8G8B8"); case D3DFMT_A8R8G8B8 : return string("D3DFMT_A8R8G8B8"); case D3DFMT_X8R8G8B8 : return string("D3DFMT_X8R8G8B8"); case D3DFMT_R5G6B5 : return string("D3DFMT_R5G6B5"); case D3DFMT_X1R5G5B5 : return string("D3DFMT_X1R5G5B5"); case D3DFMT_A1R5G5B5 : return string("D3DFMT_A1R5G5B5"); case D3DFMT_A4R4G4B4 : return string("D3DFMT_A4R4G4B4"); case D3DFMT_R3G3B2 : return string("D3DFMT_R3G3B2"); case D3DFMT_A8 : return string("D3DFMT_A8"); case D3DFMT_A8R3G3B2 : return string("D3DFMT_A8R3G3B2"); case D3DFMT_X4R4G4B4 : return string("D3DFMT_X4R4G4B4"); case D3DFMT_A2B10G10R10 : return string("D3DFMT_A2B10G10R10"); case D3DFMT_A8B8G8R8 : return string("D3DFMT_A8B8G8R8"); case D3DFMT_X8B8G8R8 : return string("D3DFMT_X8B8G8R8"); case D3DFMT_G16R16 : return string("D3DFMT_G16R16"); case D3DFMT_A2R10G10B10 : return string("D3DFMT_A2R10G10B10"); case D3DFMT_A16B16G16R16 : return string("D3DFMT_A16B16G16R16"); case D3DFMT_A8P8 : return string("D3DFMT_A8P8"); case D3DFMT_P8 : return string("D3DFMT_P8"); case D3DFMT_L8 : return string("D3DFMT_L8"); case D3DFMT_A8L8 : return string("D3DFMT_A8L8"); case D3DFMT_A4L4 : return string("D3DFMT_A4L4"); case D3DFMT_V8U8 : return string("D3DFMT_V8U8"); case D3DFMT_L6V5U5 : return string("D3DFMT_L6V5U5"); case D3DFMT_X8L8V8U8 : return string("D3DFMT_X8L8V8U8"); case D3DFMT_Q8W8V8U8 : return string("D3DFMT_Q8W8V8U8"); case D3DFMT_V16U16 : return string("D3DFMT_V16U16"); case D3DFMT_A2W10V10U10 : return string("D3DFMT_A2W10V10U10"); case D3DFMT_UYVY : return string("D3DFMT_UYVY"); case D3DFMT_R8G8_B8G8 : return string("D3DFMT_R8G8_B8G8"); case D3DFMT_YUY2 : return string("D3DFMT_YUY2"); case D3DFMT_G8R8_G8B8 : return string("D3DFMT_G8R8_G8B8"); case D3DFMT_DXT1 : return string("D3DFMT_DXT1"); case D3DFMT_DXT2 : return string("D3DFMT_DXT2"); case D3DFMT_DXT3 : return string("D3DFMT_DXT3"); case D3DFMT_DXT4 : return string("D3DFMT_DXT4"); case D3DFMT_DXT5 : return string("D3DFMT_DXT5"); case D3DFMT_D16_LOCKABLE : return string("D3DFMT_D16_LOCKABLE"); case D3DFMT_D32 : return string("D3DFMT_D32"); case D3DFMT_D15S1 : return string("D3DFMT_D15S1"); case D3DFMT_D24S8 : return string("D3DFMT_D24S8"); case D3DFMT_D24X8 : return string("D3DFMT_D24X8"); case D3DFMT_D24X4S4 : return string("D3DFMT_D24X4S4"); case D3DFMT_D16 : return string("D3DFMT_D16"); case D3DFMT_D32F_LOCKABLE : return string("D3DFMT_D32F_LOCKABLE"); case D3DFMT_D24FS8 : return string("D3DFMT_D24FS8"); case D3DFMT_D32_LOCKABLE : return string("D3DFMT_D32_LOCKABLE"); case D3DFMT_S8_LOCKABLE : return string("D3DFMT_S8_LOCKABLE"); case D3DFMT_L16 : return string("D3DFMT_L16"); case D3DFMT_VERTEXDATA : return string("D3DFMT_VERTEXDATA"); case D3DFMT_INDEX16 : return string("D3DFMT_INDEX16"); case D3DFMT_INDEX32 : return string("D3DFMT_INDEX32"); case D3DFMT_Q16W16V16U16 : return string("D3DFMT_Q16W16V16U16"); case D3DFMT_MULTI2_ARGB8 : return string("D3DFMT_MULTI2_ARGB8"); case D3DFMT_R16F : return string("D3DFMT_R16F"); case D3DFMT_G16R16F : return string("D3DFMT_G16R16F"); case D3DFMT_A16B16G16R16F : return string("D3DFMT_A16B16G16R16F"); case D3DFMT_R32F : return string("D3DFMT_R32F"); case D3DFMT_G32R32F : return string("D3DFMT_G32R32F"); case D3DFMT_A32B32G32R32F : return string("D3DFMT_A32B32G32R32F"); case D3DFMT_CxV8U8 : return string("D3DFMT_CxV8U8"); case D3DFMT_A1 : return string("D3DFMT_A1"); case D3DFMT_A2B10G10R10_XR_BIAS : return string("D3DFMT_A2B10G10R10_XR_BIAS"); case D3DFMT_BINARYBUFFER : return string("D3DFMT_BINARYBUFFER"); } return IntString(format); }
BOOL CodeTokenizer::GetNextTokenEval(String &token, BOOL *bFloatOccurance, int curPrecedence) { TSTR lpLastSafePos = lpTemp; String curVal, curToken; BOOL bFoundNumber = FALSE; BOOL bUsedBracers = FALSE; if(!GetNextToken(curToken)) return FALSE; if(curToken == TEXT("(")) { TSTR lpPrevPos = lpTemp; int newPrecedence = GetTokenPrecedence(curToken); if(!GetNextTokenEval(curToken, bFloatOccurance, newPrecedence)) return FALSE; if(!ValidFloatString(curToken)) { lpTemp = lpPrevPos; token = TEXT("("); return TRUE; } String nextToken; if(!GetNextToken(nextToken)) return FALSE; if(nextToken != TEXT(")")) { lpTemp = lpPrevPos; token = TEXT("("); return TRUE; } bUsedBracers = TRUE; } if(curToken == TEXT("-") && iswdigit(*lpTemp)) { String nextToken; if(!GetNextToken(nextToken)) return FALSE; curToken << nextToken; } if(ValidFloatString(curToken)) { bFoundNumber = TRUE; curVal = curToken; if(!ValidIntString(curVal) && bFloatOccurance) *bFloatOccurance = TRUE; } else { if(bFoundNumber) { lpTemp = lpLastSafePos; token = curVal; return TRUE; } else { token = curToken; return TRUE; } } lpLastSafePos = lpTemp; String operatorToken; while(GetNextToken(operatorToken)) { int newPrecedence = GetTokenPrecedence(operatorToken); if(newPrecedence <= curPrecedence) { lpTemp = lpLastSafePos; token = curVal; return TRUE; } String nextVal; if(!GetNextTokenEval(nextVal, bFloatOccurance, newPrecedence)) return FALSE; if(!ValidFloatString(nextVal)) { lpTemp = lpLastSafePos; token = curVal; return TRUE; } if(operatorToken == TEXT("<<")) { int val1 = tstoi(curVal); int val2 = tstoi(nextVal); val1 <<= val2; curVal = IntString(val1); } else if(operatorToken == TEXT(">>")) { int val1 = tstoi(curVal); int val2 = tstoi(nextVal); val1 >>= val2; curVal = IntString(val1); } else if(operatorToken == TEXT("*"))
String NVENCEncoder::GetInfoString() const { String strInfo; String preset = "unknown"; if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_HP_GUID)) preset = "hp"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_HQ_GUID)) preset = "hq"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_BD_GUID)) preset = "bd"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID)) preset = "ll"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_LOW_LATENCY_HP_GUID)) preset = "llhp"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_LOW_LATENCY_HQ_GUID)) preset = "llhq"; else if (dataEqual(initEncodeParams.presetGUID, NV_ENC_PRESET_DEFAULT_GUID)) preset = "default"; String profile = "unknown"; if (dataEqual(encodeConfig.profileGUID, NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID)) profile = "autoselect"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_BASELINE_GUID)) profile = "baseline"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_MAIN_GUID)) profile = "main"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_HIGH_GUID)) profile = "high"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_STEREO_GUID)) profile = "stereo"; else if (dataEqual(encodeConfig.profileGUID, NV_ENC_H264_PROFILE_SVC_TEMPORAL_SCALABILTY)) profile = "svc temporal"; String cbr = "no"; if (encodeConfig.rcParams.rateControlMode == NV_ENC_PARAMS_RC_CBR || encodeConfig.rcParams.rateControlMode == NV_ENC_PARAMS_RC_CBR2) { cbr = "yes"; } String cfr = "yes"; if (encodeConfig.encodeCodecConfig.h264Config.enableVFR) cfr = "no"; String level = "unknown"; if (encodeConfig.encodeCodecConfig.h264Config.level == 0) level = "autoselect"; else if (encodeConfig.encodeCodecConfig.h264Config.level <= 51) { level = IntString(encodeConfig.encodeCodecConfig.h264Config.level / 10); level << "."; level << IntString(encodeConfig.encodeCodecConfig.h264Config.level % 10); } strInfo << TEXT("Video Encoding: NVENC") << TEXT("\r\n fps: ") << IntString(initEncodeParams.frameRateNum / initEncodeParams.frameRateDen) << TEXT("\r\n width: ") << IntString(initEncodeParams.encodeWidth) << TEXT(", height: ") << IntString(initEncodeParams.encodeHeight) << TEXT("\r\n preset: ") << preset << TEXT("\r\n profile: ") << profile << TEXT("\r\n level: ") << level << TEXT("\r\n keyint: ") << IntString(encodeConfig.gopLength) << TEXT("\r\n CBR: ") << cbr << TEXT("\r\n CFR: ") << cfr << TEXT("\r\n max bitrate: ") << IntString(encodeConfig.rcParams.maxBitRate / 1000) << TEXT("\r\n buffer size: ") << IntString(encodeConfig.rcParams.vbvBufferSize / 1000); return strInfo; }