Respect the start and end times of menu highlights to avoid showing the menu highlight too soon/for too long.

Fixes #11451
Ensure that DVD subpictures that don't explicitly set the 'end' time are still shown. Also, handle 'CHG_COLCON' command by skipping over the data. This should prevent any issues caused by incorrectly interpreting the data as subpicture commands.

Fixes #11455
Fix filtering, sorting and selection of DVD audio streams when the mapping in a PGC is not 1:1, which was broken due to different functions/methods providing or requiring a physical stream ID, logical track number or logical index, with little consistency between them, and 'disabled' streams not being filtered out.

DVDRingBuffer now returns and expects an index into the PGC_AST_CTL table for all audio stream methods, with GetAudioTrackNum now providing a mapping from physical stream ID to logical index.

The MythTV-specific change to vm_get_audio_stream in vm.c has been reverted as it didn't work as intended and the intended functionality is now in DVDRingBuffer::GetAudioTrackNum.

Fixes #11376
Add DVD context class to encapsulate the state of the DVD VM so that this can be decoupled from the ringbuffer. As the decoder and player lag the ringbuffer by up to a second or more, this will allow them to base their operation on the DVD state at the time any given frame was read and not on the 'current' state, which may well not be the same.

This change adds no real functionality but implements the base functionality to be built on in further commits.

Refs #11579
Added more consistent handling of slide shows (i.e. individual video frames to be shown until the next video frame appears in the stream). This allows correct playback of still frames with or without audio regardless of domain (previously still frames with audio was only handled in a menu), so this change allows audio DVDs to be played.

Refs #11579
Handle seeking within slideshows.

As slideshows only contain a single video frame to be displayed for an arbitary amount of time along with audio, seeking can cause issues as you may jump over the frame to be displayed.

Using an audio DVD of classical music as an example:

1. Each movement contains a single video frame at the beginning.
2. The second movement has just begun and the user skips back several seconds to the end of the first movement.
3. This change detects that a different video frame should be displayed and jumps back further to retrieve the video frame and, once retrieved, returns to the original position to continue playback.

Closes #11579
Implement DVD bookmarks by saving and restoring the full DVD VM's state to make playback from bookmarks more reliable for all DVDs.

The state snapshot code is borrowed/adapted from or inspired by XBMC and Ogle.

Existing bookmarks are supported but will be converted if stored again.

Fixes #11609
Add '#include's missing from 4f023d7222
Fixes playback of some streaming media.

For some HTTP media, ffurl_read returns 0 in the number of bytes read instead of EOF. So exit early otherwise it would loop forever
audio player was initialized as having audio out by default, even if no audio output had beed created. This caused to always try to decode audio even when not required (like during commflagging)

Also, exit early in AVFD::ProcessAudioPacket if no one is listening.

Fixes #11616
Similar to c9d8533fe8fc19fead0ad896f37bb8f07367cc57, no need to attempt to decode audio if it's not going to be played
Update schema version in Perl and Python bindings (missing from 4f023d7222)
RSSEditPopup: Fix Coverity ID  1037043 Unchecked return value

In RSSEditPopup::slotSave(): check the download completed OK
Initialize _tune_mode to hdhrTuneModeNone in ctor

Fixes coverity 700909. Closes #11615.

Signed-off-by: Paul Harrison <pharrison@mythtv.org>
Disable minimum file size check for .srt files.  Refs #11618
Support .srt files for in-progress recordings.  Refs #11618

Allow a .srt file to be reloaded for an in-progress recording after
the last subtitle is reached.  The backend is queried at most one a
second for an updated .srt file.

Still to do:

1. Do the update check in a separate thread to avoid stuttering.

2. Currently the REC_STARTED_WRITING event is not sent when the HD-PVR
switches to a new program during live TV, so the third-party script
ends up not generating .srt files for subsequent programs in a live TV
session.

3. ccextractor buffers its output, so one needs to be at least 30
seconds behind real-time to get .srt captions.  A better solution
would be to add the required functionality to mythccextractor.
Fix transcoding to high resolutions.

When the transcoder loaded the recording profile, the max width and
height fields were not being set properly so transcoding profiles
with high resolutions were instead limited to 768x576.  Since these
max values are set the ImageSize ctor, changing them after the fact
is a bit invasive.  Rather than using a RecordingProfile variable
in Transcode and trying to change the values after the fact, this patch
fixes the issue by using a RecordingProfile pointer and creating an
instance allowing us to tell the constructor that the profile we're
going to load is a transcoder profile and the max resolution values
(and any other transcoder-specific values or limits) should be
set correctly.

Fixes #11348.
IPTVSignalMonitor: Fix Coverity ID 746869 & 746790

m_streamHandlerStarted was never initialised in the ctor so the random value
was used later (looks like a genuine bug).

Comment out for now the dead code which will be used once danielk fixes the
TODO and initialises isLocked to the correct value :)
CetonStreamHandler: Fix Coverity ID 700906 Uninitialized scalar field

In CetonStreamHandler::CetonStreamHandler(): Several scalar fields are not
initialized by the constructor.
AnalogSignalMonitor: Fix Coverity ID 700903 Uninitialized scalar field

m_version can be left uninitialized by the constructor.