mpc-hc
mpc-hc copied to clipboard
Draft: Reorganizing Output Page
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:
- 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)
- Move to libass settings from
Options > Subtitles > Default Style
toOptions > Output > Subtitle renderer
block. - Audio Renderers first renderer "System Default" name and order might be change.
- Adding some indicators of renderers supported abilities, like auto pitch correction and HDR.
extra 5. 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 |
---|---|
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
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.
No, because advanced settings currently has advantage of showing tooltips with crucial information. Plus those settings are already grouped together.
I tried this out.
Before:
After:
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.
Is there any point in the 5 green checkmarks?
Some renderers do not support all of those features.
Some renderers do not support all of those features.
Right. Are there any that don't support subtitles or rotation, for example?
Yes, for example vanilla EVR and VMR9 Windowed and VMR7.
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).
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.
That probably is cleanest. I was toying with this:
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.
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.
https://github.com/clsid2/mpc-hc/pull/2732
Taken some ideas from here for this patch.
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)".
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
Decoders do not belong on renderers page.