[mythtv-commits] Ticket #8088: Greatly expanded playback groups

MythTV mythtv at cvs.mythtv.org
Thu Feb 18 19:02:11 UTC 2010


#8088: Greatly expanded playback groups
------------------------------------------------+---------------------------
 Reporter:  Jim Stichnoth <stichnot@…>          |       Owner:  ijr    
     Type:  patch                               |      Status:  new    
 Priority:  minor                               |   Milestone:  unknown
Component:  MythTV - General                    |     Version:  unknown
 Severity:  medium                              |     Mlocked:  0      
------------------------------------------------+---------------------------
 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.

 2. 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.

 3. 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.

 2. 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.

 3. 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.

 4. 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.

 5. There are probably some more settings that could be brought into
 playback groups, particular the two Audio pages in General Settings.

 6.  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.

-- 
Ticket URL: <http://svn.mythtv.org/trac/ticket/8088>
MythTV <http://www.mythtv.org/>
MythTV


More information about the mythtv-commits mailing list