id summary reporter owner description type status priority milestone component version severity resolution keywords cc mlocked 12809 Use lastPlayPos rather than bookmark Roger Siddons Roger Siddons "This patch offers a solution to https://forum.mythtv.org/viewtopic.php?f=9&t=163 '""Recently watched"" recordings playback filter' requesting a way of locating part-played recordings more easily. It involves the last-played position introduced by #11713 and Watchlist changes from #12296. Most importantly, it alters bookmarking behaviour to separate last-play position from 'user marks'. As the changes are connected, they are presented together - 18 commits have been aggregated into 2 mega-patches for convenience, but I can easily push a branch if it helps. == Summary: == 1. Last-played position is re-enabled and becomes exclusive indicator of playback position. Video Library and the preview generator also use it. 2. Bookmarks become a user feature only and are never set/cleared automatically. 2 related settings are removed. 3. Buttonlist items gain a progressbar widget and progress percentage value. 'Watch Recordings' uses this to show the playback position; 'Upcoming Recordings' uses it to show a (proxy) recording progress. See screenshots. 4. The Watchlist promotes part-watched recordings to the top. 5. Introduces a Myth-compatible !QtConcurrent feature for conveniently running background threads. These patches are fully revertable. However you will lose the last-played position of all part-played recordings/videos that were played whilst the patches were installed (because bookmark won't be set). Manually bookmark them first before reverting. == 1. Extend lastPlayPos == Last-played position was disabled by 38443b8e (the menu option to resume playback never appears). It is re-enabled for recordings and videos. As it duplicates (betters) the bookmark's 'save position on exit' function, this mark assumes that responsibility and is also updated on playback exit (provided playback has been going for at least 30 sec). At end of recording it is reset. Note: 'Automatically Mark watched' is now also actioned by the end-of-playback dialog (unnoticed bug: it isn't currently). By default, playback now starts from: - last-played position, if present - bookmark, if present (so user can override program start mark) - program start mark, if present (recordings only) - beginning of file Menu options allow user to start from last-played position, bookmark or 'beginning' (program start mark or file start) where applicable. Menu options allow user to clear bookmark and reset last-played position. This mark always indicates playback position (whereas bookmark may not) and so can be used to identify part-played recordings/videos. Previews are now generated from: - last-played position, if present - bookmark, if present, - program start mark, if present - existing offset calculation, which is unchanged. Possibly the latter two should be combined to 'x minutes from program start' == 2. Simplify bookmarks == Bookmarks have always been confusing because they try to do (at least) 2 functions: mark last-played point or mark a user-designated point, i.e. program start or a point of interest. This depends on 2 settings ""Clear bookmark on playback"" & ""Action on playback exit/Save position and exit"". Either the user must remember to manually bookmark before exiting an unfinished show or forego the ability to mark anything (because Myth will overwrite it on exit). By losing the last-play-point responsibility the bookmark becomes purely a user aid - it will never be automatically updated/cleared. The 2 settings are now redundant and have been removed from the UI. An example of the benefit: If my kids have part-watched a show I can resume playback, bookmark it, then rewind to watch from the beginning, exiting/resuming as I often as I wish. When I've finished it (their) next playback will resume from the bookmark automatically. Or I could jump-to-bookmark and leave the last-played-pos in its original location to retain the part-played indication. Some menu options ""Set last-play-pos to bookmark"" and ""Swap bookmark/last-play-pos"" could prove useful to allow 2 people to part-watch shows simultaneously. Although not ideal, it's an improvement (until user-assignable bookmarks get implemented) == 3. Add UI == Buttonlist buttons can now contain a progressbar, as an intuitive way to show contextual 'progress'. 'Watch Recordings' uses it to show playback posiiton. Previews aren't regenerated whilst a file is in use, so playback by another frontend only updates the progress bar/counter, until playback ceases. 'Upcoming Recordings' uses the bar to show the progress of time for recordings - it will progress to 100% for failing (0-byte) recordings. Filesize is also available for 'Upcoming Recordings' now (although Scheduler Updates will reset it to 0.00 for 10 secs) A percentage progress value is also provided that can be used for sorting, or as a ""depends"" for a 'part-watched' icon. The modified !MythCenter-Wide theme demonstrates the UI changes (in a cluttered and ugly way) by using the button background as a progress bar. Themers can do a better job. Video Library has no UI indication of progress. == 4. Show part-played shows == Whilst a 'Recently Watched' filter would be useful, it should probably include more than part-played recordings. Sorting is of dubious benefit. If there are so many part-played recordings then the user is unlikely to select one based on playback positiion! The important point is to list part-played recordings separately. As dekarl noted, this feature is a better fit for the Watchlist. An updated version of the Watchlist #12296 promotes part-watched to the top of the list. Note that #12287 is useful for switching between the watchlist and 'all episodes'. == 5. Convenience thread-runner == QtConcurrent::Run is a useful way of running verbiage-free background threads. I use it often in Myth without problem. However, strictly it is incompatible with Myth because MThreadPool is not a subclass of QThreadPool. I can't find any evidence to justify this, but include a tailored version of QtConcurrent::Run that uses MThreadPool. " Patch - Feature closed minor 30.0 MythTV - Video Playback Master Head low Abandoned 0