Speed up drawing caption text with outlines.

The old method of drawing text with outlines involves drawing the same
text many times at various offsets, with the offsets based on
traversing the perimeter square of pixels with edge length 2N+1, where
N is the specified outlinesize.  This means drawing 8N extra copies of
the text.  With some fonts and point sizes, this can be a very
expensive operation, leading to video stuttering while captions are
drawn.

The new method draws just one extra copy, but with a pen width set to
2N+1, which is much faster.  Beware that using a huge outlinesize may
lead to strange artifacts in the outline (but that was already the
case for the original outline code).

Refs #10984.
Remove execute bit on source files.

This happened in 6438e9a8716a6e2c7c31fb65e85b42d6a782ed12.
Use const ref args in the constructor.  Refs #10984
Make sure smolt directory is created before trying to read from it.

This makes sure the configuration storage directory has been created
prior to attempting to use it. Smolt typically stores to /etc, and
assumes the packager has created its desired directory. There is
probably a cleaner place to put this code, but this is a catch-all for
several files read from that directory.

Fixes #11803
add support for multiple CRIDs in one descriptor

Refs #11757
extend EITHelper to handle multiple CRIDs per descriptor

Fixes #11757
Use symbolic constants instead of 8 and 64.  Refs #10984
Be less conservative about marking windows as changed.  Refs #10984.
Improve performance of processing CEA-708 captions.  Refs #10984.

Change the complexity of creating cc708 strings from quadratic to
linear.

Allow leading and trailing strings of spaces to be joined to their
neighbor strings even when the pen is different, to reduce the number
of chunks to process.  (These chunks would have been eventually
optimized away before drawing, but now the overall processing time is
reduced.)
Be less conservative about marking windows as changed.  Refs #10984.

Missed one opportunity in 2c8c898f5d2f4b76f06a978a09830599dff530b5.
Fix clang build error after 2427afd.  Refs #10984.
networkcontrol: add "playlistview" as a synonym to "playmusic" jump point

This allows for symmetry between the jump and the resulting location, while
not breaking anything or anyone expecting "playmusic" to work.

Fixes #10698.

Signed-off-by: Paul Harrison <pharrison@mythtv.org>
MythArchive: Catch StopIteration exception in mythburn.py

If a DVD is created from a single mpeg video then mythburn.py attempts
to transcode the file to eliminate any errors.  However, runMythtranscode
calls DB.searchRecorded, to obtain any cutlist, with an invalid chanid
and starttime which results in a StopIteration exception.

This patch catches the exception and returns an empty cutlist.

Fixes #10758.

Signed-off-by: Paul Harrison <pharrison@mythtv.org>
Logging: Fix a bug in flush

Signed-off-by: Paul Harrison <pharrison@mythtv.org>
Fix memory leak in MpegRecorder. Fixes #11529

Tested by John Poet.

Signed-off-by: Stuart Morgan <smorgan@mythtv.org>
AO: Fix string format args in AudioInputALSA::PcmRead()

Signed-off-by: Paul Harrison <pharrison@mythtv.org>
MythGallery: Add .m4v movie files

Signed-off-by: Paul Harrison <pharrison@mythtv.org>
Remove unused private field freeDiskSpaceKB

Static analysis identified an unused private
field freeDiskSpaceKB in the EncoderLink class.
The usage was remove in commit a4796b5fc9
'Storage Groups (a novel by Chris Pinkham)',
but the variable remained.  Remove it from
the class and ctors

Fixes #11802

Signed-off-by: Stuart Morgan <smorgan@mythtv.org>
Fix segfaulting with DXVA2 hardware decoding at player end

If playing content with DXVA2 hardware decoding mythfrontend segfaults
on player end. That's because IDirectXVideoDecoderService_CreateSurface
creates surface_count + 1 surfaces (1 frontbuffer + surface_count
backbuffers) but IDirectXVideoDecoderService_CreateDecoder is created with
surface_count buffers.

Refs #11652

Signed-off-by: Stuart Morgan <smorgan@mythtv.org>
Fix Memory Leak in DVXA

According to Microsoft MSDN The CreateSurface? method also adds reference counts to the surface buffers:
 "The method fills the array with IDirect3DSurface9 pointers. The caller must release all of the interface pointers. In addition, the front buffer holds a reference count on each of the back buffers. Therefore, the back buffers are never deleted until the front buffer is deleted."

So I eliminated the additional add of reference counts to all the buffers because this would lead to a Memory leak because our code releases this buffers only once.

Additionally I designed the release of this buffers as SafeRelease? which is recommended by Microsoft:
{{{
Checks whether the pointer is NULL.
Calls Release if the pointer is not NULL.
Sets the pointer to NULL.
}}}

Refs #11652

Signed-off-by: Stuart Morgan <smorgan@mythtv.org>