clsid2 / mpc-hc

Media Player Classic
GNU General Public License v3.0
10.94k stars 491 forks source link

Draft: Reorganizing Output Page #2453

Open xLn2 opened 8 months ago

xLn2 commented 8 months ago

Output page is getting older as far as player. Some settings takes unnecessary space (VMR-9 (renderless) and EVR (CP) settings), some supported abilities indicators lack of nowadays technologies like HDR, Pitch correction and others.

My suggestions:

  1. Adjustments for video, audio and subtitle renderers positions and sizes to take up as little space as possible but preserve detail (additionally, providing ease of access to decoder settings)
  2. Move to libass settings from Options > Subtitles > Default Style to Options > Output > Subtitle renderer block.
  3. Audio Renderers first renderer "System Default" name and order might be change.
  4. Adding some indicators of renderers supported abilities, like auto pitch correction and HDR.

extra

  1. Move VMR-9 (renderless) and EVR (CP) settings and Sync Renderer Settings to seperate window like Mpc-Vr has, so people can easily access these only when needed.

I tried to demonstrate how I imagine output page

Today Planned
image image

I only modificated mpc-hc.rc file and these are template codes for incase people are interested.

IDD_PPAGEOUTPUT DIALOGEX 0, 0, 355, 289
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
FONT 9, "Segoe UI", 400, 0, 0x1
BEGIN
    GROUPBOX        "DirectShow Video",IDC_STATIC,6,6,169,46
    COMBOBOX        IDC_VIDRND_COMBO,10,19,128,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    PUSHBUTTON      "⛭",IDC_BUTTON1,143,18,26,13
    PUSHBUTTON      "Video decoder",IDC_VIDEO_DEC_CONF,10,34,128,12
    GROUPBOX        "Audio",IDC_STATIC,181,6,169,46
    COMBOBOX        IDC_AUDRND_COMBO,185,19,128,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    PUSHBUTTON      "⛭",IDC_BUTTON2,318,18,26,13
    PUSHBUTTON      "Audio decoder",IDC_AUDIO_DEC_CONF,185,34,128,12
    GROUPBOX        "Subtitle Renderer",IDC_STATIC,6,58,344,37
    COMBOBOX        IDC_COMBO1,10,72,128,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    CONTROL         "Use libass for SSA/ASS",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,185,67,158,10
    CONTROL         "Use libass for SRT",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,185,80,158,10
    LTEXT           "DXVA",IDC_STATIC,27,113,36,8
    ICON            "",IDC_VIDRND_DXVA_SUPPORT,10,112,16,13
    LTEXT           "Subtitles",IDC_STATIC,81,113,54,8
    ICON            "",IDC_VIDRND_SUBTITLE_SUPPORT,63,112,16,13
    LTEXT           "Screenshot",IDC_STATIC,153,113,54,8
    ICON            "",IDC_VIDRND_SAVEIMAGE_SUPPORT,135,112,16,13
    LTEXT           "Shaders",IDC_STATIC,225,113,35,8
    ICON            "",IDC_VIDRND_SHADER_SUPPORT,207,112,16,13
    LTEXT           "Rotation",IDC_STATIC,286,113,54,8
    ICON            "",IDC_VIDRND_ROTATION_SUPPORT,268,112,16,13
    GROUPBOX        "VMR-9 (renderless) and EVR (CP) settings",IDC_STATIC,6,184,343,100
    CONTROL         "Select D3D9 Render Device",IDC_D3D9DEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,200,160,8
    COMBOBOX        IDC_D3D9DEVICE_COMBO,185,198,158,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    CONTROL         "VMR-9 Mixer Mode",IDC_DSVMR9LOADMIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,213,130,8
    CONTROL         "Alternative VSync",IDC_DSVMR9ALTERNATIVEVSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,226,130,8
    CONTROL         "D3D Fullscreen",IDC_FULLSCREEN_MONITOR_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,239,130,8
    CONTROL         "Reinitialize when changing display",IDC_RESETDEVICE,
                    "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,12,252,202,8
    CONTROL         "Cache compiled Shaders",IDC_CACHESHADERS,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,12,265,202,8                 
    RTEXT           "Surface:",IDC_STATIC,143,220,70,8
    COMBOBOX        IDC_DX_SURFACE,217,218,126,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    RTEXT           "Resizer:",IDC_STATIC,143,239,70,8
    COMBOBOX        IDC_DX9RESIZER_COMBO,217,237,126,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    RTEXT           "EVR Buffers:",IDC_EVR_BUFFERS_TXT,217,258,81,8
    COMBOBOX        IDC_EVR_BUFFERS,302,256,41,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
bibsp commented 8 months ago

Not related to this @xLn2 Could you please make setting page for all Yt-dlp related settings. Move everything from advanced page to a new page like Online Streaming. This one is really needed. Thanks.

clsid2 commented 8 months ago

No, because advanced settings currently has advantage of showing tooltips with crucial information. Plus those settings are already grouped together.

adipose commented 5 months ago

I tried this out.

Before: image

After: image

clsid2 commented 5 months ago

Putting video and audio next to each other doesn't look like an improvement to me. Those video renderer capability checkboxes should stay inside the video box to avoid more confusion.

Moving libass option here is ok. Although I think the SRT option should maybe be moved to advanced options, as that is not something that the average user should be (tempted) to enable by default.

VMR/EVR settings could be hidden when another renderer is selected. EVR buffers and Surface options could be removed. No reason to change those on currently supported OSes. Probably mixer mode as well. All legacy options for older WIndows.

adipose commented 5 months ago

Is there any point in the 5 green checkmarks?

clsid2 commented 5 months ago

Some renderers do not support all of those features.

adipose commented 5 months ago

Some renderers do not support all of those features.

Right. Are there any that don't support subtitles or rotation, for example?

clsid2 commented 5 months ago

Yes, for example vanilla EVR and VMR9 Windowed and VMR7.

adipose commented 5 months ago

OK, sounds good. I don't like where they sit on the new layout as they are video renderer specific, right?

There's also an issue with the checkmark assets that they look worse at higher res.

Perhaps an info popup is more useful.

Screenshot and subtitles are checked for all renderers except for the "null" ones (I see that it can also get unchecked if you choose a bad subtitle renderer).

clsid2 commented 5 months ago

We could put a textfield below the dropdown to show a note whenever a "bad" renderer is currently selected. As replacement for the checkmarks.

Something like "Note: the current selected video renderer does not support all advanced playback functionality."

And tooltip of each selected renderer could show a bit more details then it currently does.

adipose commented 5 months ago

That probably is cleanest. I was toying with this:

image

But I think the hover with the list of unsupported features is best.

I don't think we need anything for subtitles, because the "unavailable" renderers already list themselves as such.

bibsp commented 5 months ago

I have a suggestion: You can increase the height of video and audio renderer boxes and make them same. Inside video renderer box just show the unsupported features in text format horizontally. No need to show all features. And same in audio renderer box. Show unsupported feature like, automatic pitch correction is not supported. And the error message column is not necessary.

And if there is enough empty space, you can move misc page items in output page.

Edit: Another feature is HDR capabilities. That can be added.

adipose commented 5 months ago

https://github.com/clsid2/mpc-hc/pull/2732

Taken some ideas from here for this patch.

xLn2 commented 3 months ago

Edited unnecessary parts, layout may not be divided by half its just preference.

Added some archaic representor of indicator if it is liked it can be changed by some svg samples.

Some decoder settings are sometimes conflict video renderer settings like D11 / D9. It might be better align them for both warning user and their ease of access. Decoder buttons deleted

Tooltips or balloons might be applied on relative groupbox hover or any desired place.

libass renderer for text based subtitles (subrip) may be placed to advanced options or Right click option like Show percentage on Timer with some warning like "string...(not recommended)".

resim

IDD_PPAGEOUTPUT DIALOGEX 0, 0, 355, 289
STYLE DS_SETFONT | WS_CHILD
FONT 9, "Segoe UI", 400, 0, 0x1
BEGIN
    GROUPBOX        "DirectShow Video",IDC_STATIC,6,6,169,34
    COMBOBOX        IDC_VIDRND_COMBO,28,19,114,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    PUSHBUTTON      "⛭",IDC_BUTTON1,148,18,21,13
    GROUPBOX        "Audio Renderer",IDC_STATIC,181,6,169,34
    COMBOBOX        IDC_AUDRND_COMBO,203,19,114,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    PUSHBUTTON      "⛭",IDC_BUTTON2,323,18,21,13
    GROUPBOX        "Subtitle Renderer",IDC_STATIC,6,48,344,33
    COMBOBOX        IDC_COMBO1,28,61,114,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    CONTROL         "Use libass renderer",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,185,62,158,10
    GROUPBOX        "VMR-9 (renderless) and EVR (CP) settings",IDC_STATIC,6,212,343,72
    CONTROL         "Select D3D9 Render Device",IDC_D3D9DEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,228,160,8
    COMBOBOX        IDC_D3D9DEVICE_COMBO,181,226,158,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    CONTROL         "Reinitialize when changing display",IDC_RESETDEVICE,
                    "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,12,241,195,8
    CONTROL         "Cache compiled Shaders",IDC_CACHESHADERS,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,12,254,195,8
    CONTROL         "Alternative VSync",IDC_DSVMR9ALTERNATIVEVSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,241,130,8
    CONTROL         "D3D Fullscreen",IDC_FULLSCREEN_MONITOR_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,254,130,8
    LTEXT           "Resizer:",IDC_STATIC,10,269,70,8
    COMBOBOX        IDC_DX9RESIZER_COMBO,84,267,126,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    LTEXT           "🟢",IDC_STATIC,10,21,12,8
    LTEXT           "🔻",IDC_STATIC,185,21,12,8
    LTEXT           "✔",IDC_STATIC,10,63,12,8
END
clsid2 commented 3 months ago

Decoders do not belong on renderers page.