Ejemplo n.º 1
0
/**
 * 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);
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
    String GetInfoString() const
    {
        String strInfo;
        strInfo << TEXT("Audio Encoding: MP3") <<
                   TEXT("\r\n    bitrate: ") << IntString(curBitRate);

        return strInfo;
    }
Ejemplo n.º 4
0
void  XElement::AddHex(CTSTR lpName, DWORD hex)
{
    assert(lpName);

    String hexStr;
    hexStr << TEXT("0x") << IntString(hex, 16);

    SubItems << new XDataItem(lpName, hexStr);
}
Ejemplo n.º 5
0
    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;
    }
Ejemplo n.º 6
0
    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);
}
Ejemplo n.º 10
0
    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);
}
Ejemplo n.º 12
0
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;
}
Ejemplo n.º 13
0
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);
}
Ejemplo n.º 14
0
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);
}
Ejemplo n.º 16
0
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");
}
Ejemplo n.º 17
0
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;
}
Ejemplo n.º 18
0
Archivo: OBS.cpp Proyecto: SeargeDP/OBS
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);
}
Ejemplo n.º 19
0
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;
}
Ejemplo n.º 20
0
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;
}
Ejemplo n.º 21
0
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);
}
Ejemplo n.º 25
0
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("*"))
Ejemplo n.º 26
0
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;
}