- 1 Key New Features
- 2 Major Changes
- 3 MythTV
- 3.1 mythfrontend
- 3.2 Android
- 3.3 Key Bindings, Jump Points, and Input Devices
- 3.4 Guide Data, EIT, Program Info, and Media Metadata
- 3.5 Audio
- 3.6 Video Playback
- 3.7 Disc Playback (DVD, Blu-Ray, etc) and Media Detection
- 3.8 OSD, EPG, MHEG, CC, and Subtitles
- 3.9 Network Control
- 3.10 mythbackend
- 3.11 Scanning and Tuner/Recorder Support
- 3.12 WebFrontend
- 3.13 Other Hardware "Support"
- 3.14 Scheduler
- 3.15 Setup / mythtv-setup
- 3.16 Misc
- 3.17 MythUI
- 4 Translations & Localization/Internationalization
- 5 Themes
- 6 Ports
- 7 Plugins
- 8 Support libraries & Frameworks
Important 30 Dates
||26 Jul 2017
||14 Jan 2019
The 30 release encompasses development revisions from [eb70b88] though [b26c727].
The Current Release is 31.0.
Key New Features
Support for mythfrontend running on certain Android devices, including Nvidia Shield and Amazon Fire TV 4K.
The application must be side loaded as it is not available in the Play Store or Amazon app store.
Over 500 commits made significant improvements to the infrastructure. For the most part,
these are invisible to end users.
Added support libraries/prerequisites
Use the system provided versions of the following:
libbluray (when >= 0.9.3), libXNVCtrl, libsamplerate, libminizip, liblzo, libhdhomerun
Removed support libraries/prerequisites
Qt4, zeromq, nzmqt
Special Notices & Instructions
- Data Migration: 30 will only support direct upgrades from 0.22 or higher. If you are running an older version, you will need to upgrade to 0.22, 0.23 or 0.24 then upgrade to 30
- As always, backup your database before upgrading, see this.
- Hardware accelerated H.265/HEVC decoding with VDPAU is not available any more for Nvidia users. (This feature may come back in MythTV 31 with the NVDEC extension. In the meantime OpenGL playback is recommended for H.265/HEVC playback. Another option is to stay with MythTV 29, perhaps with the patch in #13211, if surround sound is used, e.g. for German DVB T2 HD.)
- Python bindings users, note that work-arounds for incorrect times (e.g. off by 1 hour or need to specify time zone) have been fixed. See: [ea500ae]/#13299. It may be necessary to remove those work-arounds.
- Users that weren't running on the master branch (v30-Pre tag) will need to add a new keybinding. Context=TV Playback, Descriptoin=Toggle Bookmark, Keylist=Return,Enter,Space (this has been fixed as of 2019-04-06. Builds before this still must take manual action.)
- HDHomeRun tunners are configured differently now, see: [57a0ad8] for details.
- [6c76d17674] Fix mythfrontend segfaults in "Recording Rules".
- [b31624d228] Fix problem with frontend setup not repainting main window
- [fe96ef1596] Fix for frontend overrides not taking effect
- [0415bd07d9] Fixes #13137 - Frontend looping on exit.
- [3b0dacda13] Frontend GUI: long press: Fix for back button and jumppoints
- [5c4dffb3e8] Frontend GUI: Add support for long presses of selected keys
- [5f9ddd6df3] Frontend GUI: Menu and Bookmark enhancements
- [a96c04ac5b] Frontend GUI: Remove default of Enter as Long Press
- [c2621a984b] Frontend Settings: Fix Channel Group Save
- [d87041fdf5] Frontend Setup: Fix bugs in Audio Setup
- [f20f976d35] Frontend Setup: Fix shift key handling in Edit Keys
- [f30e50bfd0] Frontend setup: Add settings for CEC, enable and disable various features.
- [9d17a64ffd] mythfrontend: Add startup screen delay or suppress option in setup
- [443bbeffab] Android mythplugin build updates
- [543708742c] Android build updates for 30
- [08772a4632] Android: Fix back button action in playback
- [0b9d21aa4c] Android: Prevent segfault when re-initializing main window
- [419783c397] Android: Use correct physical display dimensions so that video frame is not squashed
- [51d6fdf7c5] Android: Workaround for green line on some videos
- [676ef3b805] Android: Fix for missing libxml2.so
- [697bf77e8b] Android: Fix back button action in playback OSD Menu
- [9d08c23d55] Android: Fix detection of host name
- [ca71c59e61] Android: Support for Amazon fire stick 4K
- [08c03cc909] Fix MenuTheme handling on Android.
- [e10983403e] Fix bug with Pin Number on first startup with Android, possibly others
- [20632bee6b] OpenGLVideo: Fix UYVY texture type on Android
- [dfd02164f0] Remove command line arg override for android, its done in AndroidManifest.xml
- [f6e5481a12] Set window and parent window surface types to OpenGL for Android
- [bd170c0119] Use OPENGL_QT5 for Android
- [c4cf72fb97] Add new shared objects to the android package.
- [86647803f4] android: Fix Seg Fault when exiting from mythfrontend
- [a18edb46af] android: add mythplugin to the name of the plugin .so files
- [ff265f06fe] Clean up 'unused parameter' warnings on android.
- [335879cef0] Fix bug causing UPNP back end selection to fail on android, maybe others
- [b0a94d2585] Fix bug causing hang on first startup on android and possibly others
- [bf4763c43d] Fix htonl et al header includes for android for qt 5.10
- [e81295260c] Fix "enumeration handled in switch" warning on android.
- [11d426bd49] Playback: Support for mediacodec hardware decoding on android
- [ba547d49ae] Remove duplicate android syslog warning message.
- [67d8e32bd6] Show window early for egl and android
Key Bindings, Jump Points, and Input Devices
Guide Data, EIT, Program Info, and Media Metadata
- [bc023f40ef] mythmetadatalookup: fix accessing invalid executables, add a timeout
- [e81c7fd117] Metadata lookup: Prefer exact title match
- [d5df66a11f] Check that lookup key is a number string or an int when searching for series by id
- [bc023f40ef] mythmetadatalookup: fix accessing invalid executables, add a timeout
- [a1466c3cc5] Only consider visible channels when scanning EIT.
- [ba4c52b9e5] Stop active EIT scans from interfering with recordings
- [525132951c] Allow 'Start playback from ProgStart' to be disabled.
- [e3095bf521] Comment out unused arguments in PlaybackBox::PlaybackBox.
- [0f3cb12ba8] DVD Playback: Fix timestamp bug when playing DVD with vaapi2 or ffmpeg
- [cc60867b30] DVD playback: Fix deadlock
- [13172e3881] Fix memory corruption on Raspberry Pi Playback
- [01f2e33130] Fixes #13173 - Raspberry Pi hangs during playback
- [48111f8d67] Fixes #13091 - Seg fault in video playback when using an alternate video output method
- [062d561426] Frontend Playback: Add back fill_arrays call that was removed
- [33cdfd97ac] Frontend GUI: long press: Fix long press in guide invoked from playback
- [6baa24fa0d] Frontend Playback: Fix stuttering after LiveTV transitions
- [7cb7ed9b5e] Frontend Playback: Add a new setting to address audio stuttering
- [f20ab149a8] GUI: Enhance Playback to allow change of recording group with arrow keys
- [ec743c2323] iPlayback: Fix LiveTV Pause at start logic
- [56303be86c] MythRenderOpenGL: Fix MESA GLES2.0 video playback
- [5f18eb435c] OpenGL Video Playback: Add settings to disable pixel formats
- [ca1ec3cdb4] Playback OSD Nav Screen: Fix some buttons not working with LiveTV
- [eb947177c1] Playback OSD: New navigation screen
- [f1054a3bb2] Playback OSD: Navigation: Bookmark and pause enhancement
- [08e56d0278] Playback: Add a "move bottomline", which pushes tickers off of the screen, see Watch_Recordings#Manual_Zoom_Mode.
- [1af27643ac] Playback: Improved Video timing and Synchronization (avsync2)
- [22de417da6] Playback: Some optimizations
- [50b4e2cb04] Playback: Fix decoding error message to display correct text
- [67af0e2a9e] Playback: Increase buffer timeout
- [6e83d0f1bf] Playback: fix libav logging
- [79b086899b] Playback: Fix crash caused by OpenGL call from wrong thread
- [7a74d6a845] Playback: Avsync2: Fix for when player shows one frame for a long time
- [8e34e6e558] Playback: Prerequisites to support for mediacodec
- [c459f3089f] Playback: Fix AVSync2 failure to compile on MACOS
- [d61abd28df] Playback: AVSync2 fix DVB Radio time display
- [eafa7d3aa0] Playback: AVSync2: Fix DVB Radio playback
- [664674845d] Settings: Improved Video Playback Profile setup
- [aff9a8b5fd] TV Playback: Fix playback of Music Choice channels
- [9d627fe9ee] VAAPI2 playback: Optimizations
- [02de2e4ba3] Video Playback: Fix external subtitle problem
- [1f66a73939] Video playback: fix error in frame doubling check
- [4651002fc0] Video playback: Fix issue where jump back loses audio
- [538f99e0a6] Video Playback: Extend playback profiles to allow preferences based on more criteria
- [b63e92cc00] Video Playback: Workaround for VDPAU h265 interlaced playback
- [c0a2558689] Video Playback: Fix compile error on debian jessie
- [ff7a1478f4] VAAPI Rewrite: Support the latest VAAPI from FFmpeg.
- [dea8627bd6] VAAPI: Disallow VAAPI if GLX is not available
- [aede3bacc7] vaapi2: Reset vaapi deinterlacer after each jump
Disc Playback (DVD, Blu-Ray, etc) and Media Detection
OSD, EPG, MHEG, CC, and Subtitles
Scanning and Tuner/Recorder Support
- [93a8b8cf45] External Recorder: Make timeouts more predictable.
- [d092966109] External Recorder: Allow user to specify the tunning timeout.
- [1dddc3a8c2] ExternalRecorder: Some external apps can be slow, so increase API timeouts.
- [23d74c719a] ExternalRecorder: Allow use of the "External Channel Changer".
- [68f26642cc] ExternalRecorder: Adjust command timeouts to be more appropriate.
- [71f977f4b6] ExternalRecorder: Make sure each input has its own external app instance.
- [7b82bea04d] ExternalRecorder: Allow channel scanning from the command line.
- [7c78ee863c] ExternalRecorder: Add API verison 2.
- [dab5b5dd0c] ExternalRecorder: Allow user to specify arguments to the external recorder.
- [0f3781cc5b] ExternalStreamhandler: Make sure we only process one 'status' line.
- [002c760637] ExternalStreamHandler: Kill miss-behaving external recorders.
- [02f1104e92] ExternalStreamHandler: Make sure external application knows the maximum API version support by mythbackend.
- [04ae30696c] ExternalStreamHandler: Allow external applicatons to specify log description.
- [32ce59280d] ExternalStreamHandler: Take advantage of MajorID from channelbase.
- [686a9fd145] ExternalStreamHandler: Cleanup and simplify logging.
- [710fdf1946] ExternalStreamHandler: fix an inverted logic bug
- [72766c243d] ExternalStreamHandler: Report number of times data was not processed.
- [77810afe69] ExternalStreamHandler: When reading, give EAGAIN a few tries before giving up.
- [85b9ad530f] ExternalStreamHandler: Add logging for some fringe cases.
- [8f33c4f19c] ExternalStreamHandler: Simplify data processing loop.
- [91eb0affaa] ExternalStreamHandler: add a (very) short delay when waiting for data.
- [955f037fba] ExternalStreamHandler: Pass one (and only one) --quiet to external application.
- [ab97ad7a84] ExternalStreamHandler: Protect against nullptr, just in case.
- [b89d3b6ec2] ExternalStreamHandler: Hande V1 type err message in V2
- [c77bfce8c0] ExternalStreamHandler: Fix missed variable replacement.
- [cae092895d] ExternalStreamHandler: Update description after every channel change.
- [e5c0d0ad88] ExternalStreamHandler: Fix grep and kill to use -- when finding command with arguments.
- [03bc275cf9] ExternalStreamHandler::ProcessCommand: Stop looping after hitting io error limit.
- [e4f41bdb6a] ExternalStreamHandler::ProcessVer1: Accept "0:STATUS" messages.
- [0e67fb1c6f] ExternalStreamHandler::run: Don't hold _listener_lock except when necessary.
- [eb0309500e] ExternalStreamHandler::StopStreaming: Only XOFF if we are actually stopping.
- [3b6c0d4d63] Don't trash channel icons when downloading
- [3f58c7869c] Add ability to "scan" channels from External Recorder.
- [9c9db5aa54] Allow IPTV channels to be scanned from the command-line.
- [93b344048a] Channel Scanner: use pre-increment instead of post-increment, where appropriate.
- [f7b98bcccb] ChannelScannerGUI: remove unused member variable
- [25b13d9139] ChannelScanSM: Pass inputid to signalmonitor.
- [fc1b82c227] ExternRecChannelScanner: Fix argument order bug.
- [26b06f4570] Fix crash when scanning channels
- [4d5607fbf8] Preserve channel.visible when updating a scanned channel.
- [89a158e26f] Probable fix for command line scanning not working on headless box
- [00641bee2e] Split long, multi-line debug outputs into separate calls to LOG when performing a channel scan to try to ensure we don't hit the limit for the length of a single log string.
- [4c6fffdf03] Start/stop listening to the Freesat SI pid as soon as possible rather than waiting for the next call to ScanStreamData::Reset (which will probably be the next we tune).
- [6e939ad95a] WebFrontend: Fix commercial flag icon and background-positions
- [e5bb52d01a] WebFrontend: Restore "main" and "TV/Recordings" pages
Other Hardware "Support"
- [4a828998bf] Raspberry Pi: Fix decoder error on mp4 files
- [5377e5089e] Raspberry Pi Openmax Audio: Fix swapped channels when using PCM output
- [ad3fc1b88c] Raspberry Pi: Support for Raspbian Stretch
- [e1c1e87385] Raspberry Pi: Fix problem with startup on recent Raspbian Stretch builds
- [4717cd8da6] Update Scheduler's data structures when a child input is added.
- [bcd8b7c37c] Use short input name instead of sgroupid in some Scheduler output.
- [871f9e82b9] Avoid busy looping in some cases in the scheduler when the time to check on slaves that cat be put to sleep has already passed.
- [e0c704514c] Change the Scheduler to add request additional inputs as needed.
-  Make !Scheduler::VerifyCards(void) non-fatal.
- [fb942608d4] Scheduler wakeup: Fix inconsistencies with wakeup for mythfilldatabase.
- [d19f886b1a] Scheduler: In 4cbfba590 a warning message was added when schedorder is zero.
- [0d10e3395f] Tweak System Information / Input Status when schedule as group is used.
- [cb259dfa1f] Tweak System Information / Schedule Status when schedule as group is used.
- [a9430cbeae] Update the ABI version for schedule as group series of changes.
- [33e31a01ba] Fix a major scheduling performance regression.
- [c6e922f0d2] Add a new, SchedGroup input instead of interrupting live TV.
- [3d16b0faf9] mythtv-setup: Fix ASI configuration.
- [01a3b5f11b] Fixes #13090 - Prevent mythtv-setup from searching for a backend via upnp
- [50afc013ca] mythtv-setup: Cache probe results to speed up Capture card processing
- [01bdc02a2a] Setup: Fix US OTA channel frequencies
- [4fbeb0c3cc] Setup: Properly detect CableCARD in Ceton tuner
- [72946446b7] Setup: New Setup - fix multiple issues with HD HomeRun tuners
- [862e510f58] Setup: Support typed input into any spinbox
- [e601de058a] Setup: New Setup - fix multiple issues with VBox tuners
- [a474a74b40] Add a new log message to MythUIType::ParseElement.
- [f7d4ab0920] Change the mask on the exit message from MythUIHelper::PruneCacheDir.
- [10b7f065a2] Fix the earlier MythUIButtonList::RemoveItem() fix.
- [e4c3ada47d] Fix position tracking in MythUIButtonList::RemoveItem().
- [c125673f11] Images: Port settings to MythUI
- [676320dbea] Make sure to destroy the singleton MythUIHelper object at exit.
- [1616cbbe33] MythUISpinBox::keyPressEvent: prevent segfault
- [52d79bef19] Re-enable warning messages from MythUIType::ParseElement.
- [9e3db8cd46] Temporarily disable warning messages from MythUIType::ParseElement.
- [da1dc48a41] Update Guide Grid to use "new" MythUIImage.
- [4dc7ced5b1] MythCenter-wide: In the OSD only show the callsign if the channel icon is missing
- [c379dd6920] When reloading themes, force a network reload.
- [3aebace9cc] Fix jump point handling in mythmusic broken by a2cb1e42fb.
- [a2cb1e42fb] MusicCommon::keyPressEvent should call its parent.
- [33671e75d4] MythMusic: stop the player on first error when playing radio streams
- [aec9d9001a] MythMusic: Remove no longer working letssingit lyrics grabber
- [3896fd001a] Update compatibility hack comment in musicutils.h.
- [3d3b3c97] Fixes #13127 - Recognize shows in the 'météo' category as news.
- [02a3d12d] [php7] fix an incorrect conversion to mysqli_real_escape_string()
- [ef998f41] Fixes #13191 - Make mythweb use of CDN optional.
- [6976c802] Changes reference to mysql.txt to config.xml
- [664dc170] Removes error messages from "Recorded Programs" page
- [44ac589c61] ZMMiniPlayer::keyPressEvent shouldn't call up twice.
- [25f945b2bb] MythZoneminder: remove m_menuPopup it not used anywhere except in showMenu()
- [7d6974a9b6] MythZoneMinder: allow the plugin to be built without mythzmserver support
- [de6199a43f] MythZoneMinder: add a popup menu to the live player
Support libraries & Frameworks
- [b64faea20b] Change shebang from '/usr/bin/env perl' to /usr/bin/perl.
- [36f2724cfa] The Perl bindings should ignore a blank LocalHostName tag in the config.
- [9c5ad458b6] Perl bindings: Actually parse config.xml
- [687b219c1c] Perl/Python Bindings: Update SCHEMA_VERSION
- [932312d917] Fixes #12950 - Update Mythmusic schema in Python bindings
- [eebe25c7c1] Fixes #13082 - Python bindings need to use new setting for backend server address.
- [26d8d51058] Python Bindings: Releases MythTV.services_api module
- [574da1b536] Python bindings: update version
- [5c3257e1d2] Python bindings: on 32 bit systems, handle 0000-00-00 00:00:00 timestamps
- [ea500ae374] Python bindings: Fix miscalculated date-time object
- [136a450910] Update list of mark types in Python bindings
- [590b75c939] Services API: Changes ManageUrlProtection Services=All
- [777965c910] Services API: Fixes #13106 (memory leak)
- [bdbbbb147f] Services API: Adds Dvr/ManageJobQueue endpoint
- [f3de8a1fcc] Services API: Adds ManageDigestUser and ManageUrlProtection endpoints
- [051a7039e1] Services API: add more sorting options to Dvr/GetRecordedList
- [0c1361c488] Services API: add filtering by Category to Dvr/GetRecordedList
- [63a5a20ec2] Services API: add some extra filtering options to Channel/GetChannelInfoList
- [6e1a0ca255] Services API: make Guide/AddToChannelGroup & RemoveFromChannelGroup POST only
- [801f3ae46f] Services API: Dvr::ReactivateRecording: Allow recordedid OR chanid & starttime
- [a7f80e3d1b] Services API: Add missing fields to GetCaptureCardList and GetCaptureCard
- [d04caae0ca] Services API: Add Dvr::RecordedIdForKey() which turns chanid/starttime into an Id