Opened 10 years ago

Closed 9 years ago

#8088 closed patch (wontfix)

Greatly expanded playback groups

Reported by: Jim Stichnoth <stichnot@…> Owned by: gigem
Priority: minor Milestone: unknown
Component: MythTV - General Version: unknown
Severity: medium Keywords:
Cc: Ticket locked: no

Description

This patch hugely increases the capabilities of Playback Groups. Most settings related to playback can now be controlled through playback groups. This includes settings like fill mode, captions, playback profile (VDPAU, Slim, etc.), aspect ratio, behavior on exit, OSD properties, and so on.

Another nice property is that since playback groups are globally shared across all frontends, you can set up your preferences in the Default group and not have to change settings on each individual frontend. This is especially useful when bringing up a new frontend.

Oh yeah, and the setup reuses existing setup pages, so it basically adds NO NEW SETTINGS! HOORAY!!!

Notes on the patch:

  1. Two new source files are added, found in 8088_playgroups_newfiles_v1.tar. They define a new class PlaySettings? which holds overrides to the host-specific settings.
  1. The vast majority of the changes in 8088_playgroups_v1.patch are to deliver the PlaySettings? object wherever needed and to use it instead of the global settings.
  1. The following sql code needs to be executed to create the necessary table. This is already in InitializeDatabase?() in the patch, but would also need to be added to doUpgradeTVDatabaseSchema(). CREATE TABLE IF NOT EXISTS playgroupsettings (

playgroupname varchar(64) NOT NULL, value varchar(128) NOT NULL, data text, overridden tinyint(1) NOT NULL, PRIMARY KEY (playgroupname, value)

);

Notes on the implementation:

  1. The implementation is independent of existing playback groups, except that the configuration of new playback groups is appended to the existing playback group configuration. In the future, it would make sense to fully merge the implementation of old and new playback groups.
  1. There is a single-inheritance hierarchy of settings, where the settings of one group override its parent's settings. If the parent is unspecified, "Default" is used as the parent. "Default" inherits from the host-specific settings. In practice, though, there doesn't seem to be much value beyond a 3-level tree structure of Host>Default>{all other groups}, and so the settings UI doesn't offer a way of specifying a group's parent. This means all groups have "Default" as the parent.
  1. The settings UI basically walks the user through the configuration pages of Playback Settings and Playback OSD Settings, but with respect to a particular playback group, since almost all of the relevant playback settings are found on those pages. However, a number of those settings are not really relevant to playback (e.g. all of pages 4, 5, and 6 of Playback Settings), and so those configurations are disabled for playback group setup.
  1. Each setting has a checkbox to indicate whether it overrides the default, and the default is indicated in the label. Instructions are given in the help text. This makes it easy to quickly scan the page to see which settings are overridden, as well as what the default values are.
  1. There are probably some more settings that could be brought into playback groups, particular the two Audio pages in General Settings.
  1. The settings UI could use some sprucing up, hopefully by someone with a better eye for UI design. I would like for the configuration pages to look very much like the pages they originate from, but wrapping each setting and its override checkbox inside a TriggeredConfigurationGroup? does wacky things to the layout. This is even more of a nuisance at small resolutions, like 640x360.

Attachments (34)

8088_playgroups_newfiles_v1.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v1.patch (108.2 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_newfiles_v2.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v2.patch (114.1 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_newfiles_v3.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v3.patch (167.9 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_newfiles_v4.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v4.patch (167.5 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_newfiles_v5.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v5.patch (167.6 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_newfiles_v6.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v6.patch (168.7 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_newfiles_v7.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v7.patch (167.8 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_newfiles_v8.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v8.patch (167.6 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v9.patch (167.8 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_newfiles_v10.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v10.patch (168.2 KB) - added by Jim Stichnoth <stichnot@…> 10 years ago.
8088_playgroups_v11.patch (168.2 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v12.patch (130.8 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v13.patch (125.0 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v14.patch (124.2 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v15.patch (113.5 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v17.patch (112.4 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v18.patch (112.7 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v18.2.patch (112.7 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v18.3.patch (112.3 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v19.patch (111.0 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v20.patch (109.2 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v21.patch (114.2 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_v23.patch (114.0 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
8088_playgroups_newfiles_v23.tar (20.0 KB) - added by Jim Stichnoth <stichnot@…> 9 years ago.
Added MPUBLIC to the new classes.
8088_playgroups_v26.patch (112.9 KB) - added by Jim Stichnoth <stichnot@…> 8 years ago.

Change History (52)

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v1.patch added

comment:1 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Here's a proper formatting of the sql code that needs to be run to use this patch:

CREATE TABLE IF NOT EXISTS playgroupsettings (
  playgroupname varchar(64) NOT NULL,
  `value` varchar(128) NOT NULL,
  `data` text,
  overridden tinyint(1) NOT NULL,
  PRIMARY KEY (playgroupname, `value`)
);

comment:2 Changed 10 years ago by gigem

Owner: changed from Isaac Richards to gigem
Status: newassigned

N.B. I won't be able to seriously look at this for at least a couple of weeks.

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v2.patch added

comment:3 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Updated with v2 files.

This update, in my opinion, greatly improves the v1 look of the new playgroup settings UI, which now looks much more like the original settings pages (except of course where a particular setting is not included in Playgroups).

The change is to configure SpinBoxes? and ComboBoxes? with an appropriate default choice. Also, myth CheckBoxes? needed to be updated to support tristate Qt checkboxes. Unfortunately, the PartiallyChecked? icon is almost indistinguishable from the Unchecked icon when displayed on top of a dark background, so the checkbox label font is changed to non-bold when in the PartiallyChecked? state. Maybe a UI expert could think of a nicer style change for PartiallyChecked?.

It might be nice to also change the text style for SpinBox? and ComboBox? labels when they hold the default value, which would make it even easier to pick out which settings have been changed from the default. However, that seems a little too invasive for this patch, and better left to a UI person.

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v3.patch added

comment:4 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Updated with v3 files.

  1. Builds on the improved v2 playback group settings UI look by changing the text style of all settings (not just checkboxes) when they hold the default value. This makes it really easy to see which settings are changed from the default.
  1. Pulls in the two pages of audio settings from the Main General settings. This might be helpful for some audio setups.

2a. Note that the global (host-specific) value of AudioOutputDevice? is still used at startup in pulseaudio_handle_startup() to figure out if some PulseAudio? related initialization is needed.

  1. Adds the ability to set different OSD themes for playback groups.
  1. Some trivial code assigns the playback group name "Videos" when the Internal player is used to play videos. Create a Videos playback group if you want to use this.
  1. There are 2 pages of MacOS specific playback settings that could possibly be pulled in as well, but I have no way of testing that so I won't try.
  1. There are some Playback and Playback OSD settings that are not included in playback groups, e.g. because they are not really relevant to playback of specific recordings. This includes realtime priority thread, live TV idle timeout, always stream files from the backend, everything on pages 4-6 of Playback Settings, the 3 Playback Settings about commercial skipping, and Persistent Browse Mode and Browse All Tuners in the OSD settings. It would be slick if I could figure out how to include some of them anyway but completely disable them, which would make the playback group settings UI look even more like the original settings pages.

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v4.patch added

comment:5 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Updated with v4 files.

  1. Previously I was overzealous in changing CheckBoxSetting? to allow tristate checkboxes, and I changed the signature of a signal that some other code was using. I reverted that and instead created a TristateCheckBoxSetting? class.
  1. The help text for each setting now indicates where the default value comes from, usually either the global settings or the Default playback group.

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v5.patch added

comment:6 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Updated with v5 files.

  1. Fixed the bug found by Bill Meek where the entire usage of AutoCommercialSkip? had been accidentally nuked.
  1. The newfiles_v5 is identical to newfiles_v4. Uploading anyway to avoid confusion.

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v6.patch added

comment:7 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Updated with v6 files.

  1. Fixed DetectLetterbox::DetectLetterbox?() which was using the global setting of AdjustFill? instead of the playback groups version.
  1. The newfiles_v6 is identical to newfiles_v5 (and newfiles_v4). Uploading anyway to avoid confusion.

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v7.patch added

comment:8 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Updated with v7 files against latest trunk.

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v8.patch added

comment:9 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Updated with v8 files against a recent trunk.

  1. The main change is to remove the AudioOutputDevice? setting from Playback Groups control, after [23794] changed the configuration code for that setting. I could probably bring that back if there is interest.
  1. The newfiles_v8 is identical to the v4-v7 versions.

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v9.patch added

comment:10 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Updated with v9 patch against a recent trunk.

Thanks to Bill Meek for a couple of compilation fixes.

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Changed 10 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v10.patch added

comment:11 Changed 10 years ago by Jim Stichnoth <stichnot@…>

Updated with v10 files after [24623].

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v11.patch added

comment:12 Changed 9 years ago by Jim Stichnoth <stichnot@…>

Updated with v11 patch after ProgramInfo? refactoring.

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v12.patch added

comment:13 Changed 9 years ago by Jim Stichnoth <stichnot@…>

Updated with v12 patch after hdaudio branch merge.

I removed the two pages of audio settings from playback groups because the associated audio code changed so much that I would essentially have to reimplement all of my changes. This could be done if the new playback groups ever become officially sanctioned.

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v13.patch added

comment:14 Changed 9 years ago by Jim Stichnoth <stichnot@…>

Updated with v13 patch after libmythui-osd branch merge.

The usage during playback of CommRewindAmount?, CommNotifyAmount?, AutoCommercialSkip?, OSDCCFont, and the OSDCC708 settings is dropped from this version of the patch, though the Settings UI still includes them. This is because they were reworked in the branch, and I'd rather keep my hands off that code while it is still in flux. I can add it back if anyone is interested.

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v14.patch added

comment:15 Changed 9 years ago by Jim Stichnoth <stichnot@…>

Updated with v14 patch with minor changes based on recent trunk updates.

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v15.patch added

comment:16 Changed 9 years ago by Jim Stichnoth <stichnot@…>

Updated with v15 patch after various trunk updates.

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v17.patch added

comment:17 Changed 9 years ago by Jim Stichnoth <stichnot@…>

Updated with v17 patch after various trunk updates, particularly the NVP renaming. (Guess I forgot to upload the v16 patch...)

comment:18 Changed 9 years ago by gigem

Resolution: wontfix
Status: assignedclosed

After some discussions, I'm closing this as wontfix since the patch won't be accepted in its current form. The feature might be reconsidered in the future if the user-interface can be made less confusing to non-power users.

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v18.patch added

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v18.2.patch added

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v18.3.patch added

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v19.patch added

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v20.patch added

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v21.patch added

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v23.patch added

Changed 9 years ago by Jim Stichnoth <stichnot@…>

Added MPUBLIC to the new classes.

Changed 8 years ago by Jim Stichnoth <stichnot@…>

Attachment: 8088_playgroups_v26.patch added
Note: See TracTickets for help on using tickets.