Author: hobbes1069
Update of /cvs/free/rpms/mythtv/devel
In directory old02.ovh.rpmfusion.lan:/tmp/cvs-serv576
Modified Files:
mythtv-0.27-fixes.patch
Log Message:
Add updated fixes patch.
mythtv-0.27-fixes.patch:
mythplugins/mythmusic/mythmusic/importmusic.cpp | 2
mythplugins/mythmusic/mythmusic/musicplayer.cpp | 6
mythplugins/mythmusic/mythmusic/smartplaylist.cpp | 13
mythtv/external/FFmpeg/README.sync | 3
mythtv/external/FFmpeg/RELEASE | 2
mythtv/external/FFmpeg/VERSION | 2
mythtv/external/FFmpeg/doc/Doxyfile | 2
mythtv/external/FFmpeg/ffmpeg_filter.c | 9
mythtv/external/FFmpeg/libavcodec/aac.h | 2
mythtv/external/FFmpeg/libavcodec/adpcmenc.c | 3
mythtv/external/FFmpeg/libavcodec/alsdec.c | 2
mythtv/external/FFmpeg/libavcodec/dirac_arith.h | 3
mythtv/external/FFmpeg/libavcodec/diracdec.c | 49
mythtv/external/FFmpeg/libavcodec/g723_1.c | 3
mythtv/external/FFmpeg/libavcodec/golomb-test.c | 2
mythtv/external/FFmpeg/libavcodec/h264_mp4toannexb_bsf.c | 2
mythtv/external/FFmpeg/libavcodec/libvorbisenc.c | 3
mythtv/external/FFmpeg/libavcodec/libx264.c | 26
mythtv/external/FFmpeg/libavcodec/mjpegdec.c | 2
mythtv/external/FFmpeg/libavcodec/mjpegenc.c | 2
mythtv/external/FFmpeg/libavcodec/mjpegenc.h | 2
mythtv/external/FFmpeg/libavcodec/mlpdec.c | 2
mythtv/external/FFmpeg/libavcodec/msrle.c | 3
mythtv/external/FFmpeg/libavcodec/mss34dsp.c | 4
mythtv/external/FFmpeg/libavcodec/mss4.c | 2
mythtv/external/FFmpeg/libavcodec/utvideodec.c | 2
mythtv/external/FFmpeg/libavcodec/vc1dec.c | 3
mythtv/external/FFmpeg/libavcodec/wma.c | 6
mythtv/external/FFmpeg/libavcodec/x86/idct_sse2_xvid.c | 2
mythtv/external/FFmpeg/libavcodec/x86/mpegvideoenc_template.c | 2
mythtv/external/FFmpeg/libavfilter/filtfmts.c | 10
mythtv/external/FFmpeg/libavfilter/graphdump.c | 3
mythtv/external/FFmpeg/libavfilter/vf_deshake.c | 4
mythtv/external/FFmpeg/libavformat/aiffdec.c | 2
mythtv/external/FFmpeg/libavformat/asfdec.c | 5
mythtv/external/FFmpeg/libavformat/avidec.c | 2
mythtv/external/FFmpeg/libavformat/flvenc.c | 12
mythtv/external/FFmpeg/libavformat/h263dec.c | 2
mythtv/external/FFmpeg/libavformat/id3v2.c | 17
mythtv/external/FFmpeg/libavformat/id3v2.h | 4
mythtv/external/FFmpeg/libavformat/mpc.c | 2
mythtv/external/FFmpeg/libavformat/mpegts.c | 2
mythtv/external/FFmpeg/libavformat/mux.c | 6
mythtv/external/FFmpeg/libavformat/omadec.c | 2
mythtv/external/FFmpeg/libavformat/utils.c | 2
mythtv/external/FFmpeg/libavutil/cpu.c | 18
mythtv/external/FFmpeg/libavutil/lzo.c | 13
mythtv/external/FFmpeg/libavutil/opt.c | 6
mythtv/external/FFmpeg/libswresample/dither.c | 2
mythtv/external/FFmpeg/libswresample/rematrix.c | 5
mythtv/external/FFmpeg/libswresample/resample.c | 7
mythtv/external/FFmpeg/libswscale/swscale.c | 7
mythtv/external/FFmpeg/libswscale/x86/swscale_template.c | 78
mythtv/external/FFmpeg/tests/ref/fate/vc1_sa10143 | 28
mythtv/libs/libmyth/audio/audiooutputbase.cpp | 9
mythtv/libs/libmyth/mediamonitor-darwin.cpp | 10
mythtv/libs/libmythbase/mythcorecontext.cpp | 3
mythtv/libs/libmythbase/mythversion.h | 2
mythtv/libs/libmythdvdnav/dvdnav/dvdnav.c | 2
mythtv/libs/libmythdvdnav/dvdnav/dvdnav.h | 2
mythtv/libs/libmythdvdnav/dvdnav/remap.c | 1
mythtv/libs/libmythdvdnav/dvdnav/searching.c | 32
mythtv/libs/libmythdvdnav/dvdnav/vm/vm.c | 6
mythtv/libs/libmythdvdnav/dvdread/dvd_input.c | 44
mythtv/libs/libmythdvdnav/dvdread/dvd_reader.c | 1
mythtv/libs/libmythdvdnav/dvdread/dvd_udf.c | 5
mythtv/libs/libmythdvdnav/dvdread/ifo_print.c | 4
mythtv/libs/libmythdvdnav/dvdread/ifo_read.c | 23
mythtv/libs/libmythmetadata/libmythmetadata.pro | 4
mythtv/libs/libmythmetadata/metadatacommon.cpp | 95
mythtv/libs/libmythmetadata/metadatacommon.h | 52
mythtv/libs/libmythmetadata/metadatadownload.cpp | 339
mythtv/libs/libmythmetadata/metadatafactory.cpp | 69
mythtv/libs/libmythmetadata/metadatafactory.h | 2
mythtv/libs/libmythmetadata/metadatagrabber.cpp | 595 +
mythtv/libs/libmythmetadata/metadatagrabber.h | 100
mythtv/libs/libmythmetadata/metadataimagedownload.cpp | 150
mythtv/libs/libmythmetadata/metadataimagedownload.h | 1
mythtv/libs/libmythmetadata/videometadata.cpp | 17
mythtv/libs/libmythprotoserver/requesthandler/fileserverhandler.cpp | 3
mythtv/libs/libmythtv/avformatdecoder.cpp | 48
mythtv/libs/libmythtv/cc608decoder.cpp | 2
mythtv/libs/libmythtv/cc708reader.cpp | 2
mythtv/libs/libmythtv/channelscan/channelscan_sm.cpp | 19
mythtv/libs/libmythtv/channelscan/channelscan_sm.h | 2
mythtv/libs/libmythtv/eitcache.cpp | 4
mythtv/libs/libmythtv/eitfixup.cpp | 4
mythtv/libs/libmythtv/lzoconf.h | 219
mythtv/libs/libmythtv/lzodefs.h | 2527 ++++--
mythtv/libs/libmythtv/metadataimagehelper.cpp | 3
mythtv/libs/libmythtv/minilzo.cpp | 4191 +++++++---
mythtv/libs/libmythtv/minilzo.h | 20
mythtv/libs/libmythtv/mpeg/dvbstreamdata.cpp | 8
mythtv/libs/libmythtv/mythplayer.cpp | 141
mythtv/libs/libmythtv/openglvideo.cpp | 2
mythtv/libs/libmythtv/programdata.cpp | 41
mythtv/libs/libmythtv/ringbuffer.cpp | 19
mythtv/libs/libmythtv/subtitlescreen.cpp | 58
mythtv/libs/libmythtv/tv_play.cpp | 8
mythtv/libs/libmythtv/videobuffers.cpp | 6
mythtv/libs/libmythtv/videoout_nullvdpau.cpp | 4
mythtv/libs/libmythtv/videoout_opengl.cpp | 6
mythtv/libs/libmythui/mythuiwebbrowser.cpp | 2
mythtv/libs/libmythupnp/upnpcds.h | 2
mythtv/libs/libmythupnp/upnpcmgr.h | 2
mythtv/programs/mythbackend/main_helpers.cpp | 9
mythtv/programs/mythbackend/mainserver.cpp | 20
mythtv/programs/mythbackend/upnpcdstv.cpp | 27
mythtv/programs/mythbackend/upnpcdsvideo.cpp | 2
mythtv/programs/mythfrontend/editvideometadata.cpp | 10
mythtv/programs/mythfrontend/grabbersettings.cpp | 125
mythtv/programs/mythfrontend/grabbersettings.h | 7
mythtv/programs/mythfrontend/playbackbox.cpp | 158
mythtv/programs/mythfrontend/playbackbox.h | 13
mythtv/programs/mythfrontend/scheduleeditor.cpp | 76
mythtv/programs/mythfrontend/scheduleeditor.h | 1
mythtv/programs/mythmetadatalookup/lookup.cpp | 12
mythtv/programs/mythmetadatalookup/main.cpp | 12
mythtv/programs/mythtranscode/mpeg2fix.cpp | 23
mythtv/programs/mythtranscode/mpeg2fix.h | 4
mythtv/programs/mythtranscode/videodecodebuffer.cpp | 36
mythtv/programs/mythtranscode/videodecodebuffer.h | 25
mythtv/themes/classic/tv_schedule.xml | 2
123 files changed, 7006 insertions(+), 2872 deletions(-)
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.6 -r 1.7 mythtv-0.27-fixes.patch
Index: mythtv-0.27-fixes.patch
===================================================================
RCS file: /cvs/free/rpms/mythtv/devel/mythtv-0.27-fixes.patch,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- mythtv-0.27-fixes.patch 28 Jul 2014 02:16:16 -0000 1.6
+++ mythtv-0.27-fixes.patch 13 Oct 2014 22:48:06 -0000 1.7
@@ -1,5 +1,6 @@
mythplugins/mythmusic/mythmusic/importmusic.cpp | 2 +-
mythplugins/mythmusic/mythmusic/musicplayer.cpp | 6 +
+ mythplugins/mythmusic/mythmusic/smartplaylist.cpp | 13 +-
mythtv/external/FFmpeg/README.sync | 3 +-
mythtv/external/FFmpeg/RELEASE | 2 +-
mythtv/external/FFmpeg/VERSION | 2 +-
@@ -55,27 +56,47 @@
mythtv/libs/libmyth/mediamonitor-darwin.cpp | 10 +
mythtv/libs/libmythbase/mythcorecontext.cpp | 3 +-
mythtv/libs/libmythbase/mythversion.h | 2 +-
+ mythtv/libs/libmythdvdnav/dvdnav/dvdnav.c | 2 +-
+ mythtv/libs/libmythdvdnav/dvdnav/dvdnav.h | 2 +-
+ mythtv/libs/libmythdvdnav/dvdnav/remap.c | 1 +
+ mythtv/libs/libmythdvdnav/dvdnav/searching.c | 32 +-
+ mythtv/libs/libmythdvdnav/dvdnav/vm/vm.c | 6 +-
+ mythtv/libs/libmythdvdnav/dvdread/dvd_input.c | 44 +-
+ mythtv/libs/libmythdvdnav/dvdread/dvd_reader.c | 1 +
+ mythtv/libs/libmythdvdnav/dvdread/dvd_udf.c | 5 +-
+ mythtv/libs/libmythdvdnav/dvdread/ifo_print.c | 4 +-
+ mythtv/libs/libmythdvdnav/dvdread/ifo_read.c | 23 +-
mythtv/libs/libmythmetadata/libmythmetadata.pro | 4 +-
mythtv/libs/libmythmetadata/metadatacommon.cpp | 95 +-
- mythtv/libs/libmythmetadata/metadatacommon.h | 51 +-
- mythtv/libs/libmythmetadata/metadatadownload.cpp | 211 +-
- mythtv/libs/libmythmetadata/metadatafactory.cpp | 2 +-
- mythtv/libs/libmythmetadata/metadatagrabber.cpp | 584 +++
+ mythtv/libs/libmythmetadata/metadatacommon.h | 52 +-
+ mythtv/libs/libmythmetadata/metadatadownload.cpp | 339 +-
+ mythtv/libs/libmythmetadata/metadatafactory.cpp | 69 +-
+ mythtv/libs/libmythmetadata/metadatafactory.h | 2 +
+ mythtv/libs/libmythmetadata/metadatagrabber.cpp | 595 +++
mythtv/libs/libmythmetadata/metadatagrabber.h | 100 +
- .../libs/libmythmetadata/metadataimagedownload.cpp | 148 +-
+ .../libs/libmythmetadata/metadataimagedownload.cpp | 150 +-
.../libs/libmythmetadata/metadataimagedownload.h | 1 +
mythtv/libs/libmythmetadata/videometadata.cpp | 17 +-
.../requesthandler/fileserverhandler.cpp | 3 +-
- mythtv/libs/libmythtv/avformatdecoder.cpp | 12 +
+ mythtv/libs/libmythtv/avformatdecoder.cpp | 48 +-
mythtv/libs/libmythtv/cc608decoder.cpp | 2 +-
+ mythtv/libs/libmythtv/cc708reader.cpp | 2 +-
+ .../libs/libmythtv/channelscan/channelscan_sm.cpp | 19 +-
+ mythtv/libs/libmythtv/channelscan/channelscan_sm.h | 2 +
+ mythtv/libs/libmythtv/eitcache.cpp | 4 +-
+ mythtv/libs/libmythtv/eitfixup.cpp | 4 +-
mythtv/libs/libmythtv/lzoconf.h | 219 +-
mythtv/libs/libmythtv/lzodefs.h | 2527 ++++++++----
+ mythtv/libs/libmythtv/metadataimagehelper.cpp | 3 +
mythtv/libs/libmythtv/minilzo.cpp | 4191 ++++++++++++++------
mythtv/libs/libmythtv/minilzo.h | 20 +-
- mythtv/libs/libmythtv/mythplayer.cpp | 10 +-
+ mythtv/libs/libmythtv/mpeg/dvbstreamdata.cpp | 8 +
+ mythtv/libs/libmythtv/mythplayer.cpp | 141 +-
mythtv/libs/libmythtv/openglvideo.cpp | 2 +-
- mythtv/libs/libmythtv/ringbuffer.cpp | 7 +-
+ mythtv/libs/libmythtv/programdata.cpp | 41 +-
+ mythtv/libs/libmythtv/ringbuffer.cpp | 19 +-
mythtv/libs/libmythtv/subtitlescreen.cpp | 58 +-
+ mythtv/libs/libmythtv/tv_play.cpp | 8 +-
mythtv/libs/libmythtv/videobuffers.cpp | 6 +
mythtv/libs/libmythtv/videoout_nullvdpau.cpp | 4 +-
mythtv/libs/libmythtv/videoout_opengl.cpp | 6 +-
@@ -84,13 +105,23 @@
mythtv/libs/libmythupnp/upnpcmgr.h | 2 +-
mythtv/programs/mythbackend/main_helpers.cpp | 9 +-
mythtv/programs/mythbackend/mainserver.cpp | 20 +-
+ mythtv/programs/mythbackend/upnpcdstv.cpp | 27 +-
+ mythtv/programs/mythbackend/upnpcdsvideo.cpp | 2 +-
+ mythtv/programs/mythfrontend/editvideometadata.cpp | 10 +-
mythtv/programs/mythfrontend/grabbersettings.cpp | 125 +-
mythtv/programs/mythfrontend/grabbersettings.h | 7 +-
+ mythtv/programs/mythfrontend/playbackbox.cpp | 158 +-
+ mythtv/programs/mythfrontend/playbackbox.h | 13 +-
+ mythtv/programs/mythfrontend/scheduleeditor.cpp | 76 +-
+ mythtv/programs/mythfrontend/scheduleeditor.h | 1 +
+ mythtv/programs/mythmetadatalookup/lookup.cpp | 12 +-
mythtv/programs/mythmetadatalookup/main.cpp | 12 +
- mythtv/programs/mythtranscode/mpeg2fix.cpp | 17 +-
+ mythtv/programs/mythtranscode/mpeg2fix.cpp | 23 +-
mythtv/programs/mythtranscode/mpeg2fix.h | 4 +
+ .../programs/mythtranscode/videodecodebuffer.cpp | 36 +-
+ mythtv/programs/mythtranscode/videodecodebuffer.h | 25 +-
mythtv/themes/classic/tv_schedule.xml | 2 +-
- 92 files changed, 6321 insertions(+), 2577 deletions(-)
+ 123 files changed, 7006 insertions(+), 2872 deletions(-)
diff --git a/mythplugins/mythmusic/mythmusic/importmusic.cpp
b/mythplugins/mythmusic/mythmusic/importmusic.cpp
index d0faf12..31a89da 100644
@@ -122,6 +153,51 @@
m_isPlaying = false;
if (stopAll && getDecoder())
+diff --git a/mythplugins/mythmusic/mythmusic/smartplaylist.cpp
b/mythplugins/mythmusic/mythmusic/smartplaylist.cpp
+index de952e8..0fc546d 100644
+--- a/mythplugins/mythmusic/mythmusic/smartplaylist.cpp
++++ b/mythplugins/mythmusic/mythmusic/smartplaylist.cpp
+@@ -52,10 +52,8 @@ static SmartPLField SmartPLFields[] =
+ { "Play Count", "music_songs.numplays", ftNumeric,
0, 9999, 0 },
+ { "Compilation", "music_albums.compilation", ftBoolean,
0, 0, 0 },
+ { "Comp. Artist", "music_comp_artists.artist_name", ftString,
0, 0, 0 },
+- { "Last Play", "FROM_DAYS(TO_DAYS(music_songs.lastplay))",
+- ftDate, 0, 0, 0 },
+- { "Date Imported",
"FROM_DAYS(TO_DAYS(music_songs.date_entered))",
+- ftDate, 0, 0, 0 },
++ { "Last Play", "music_songs.lastplay", ftDate,
0, 0, 0 },
++ { "Date Imported", "music_songs.date_entered", ftDate,
0, 0, 0 },
+ };
+
+ struct SmartPLOperator
+@@ -334,7 +332,7 @@ bool SmartPLCriteriaRow::saveToDatabase(int smartPlaylistID)
+ query.bindValue(":FIELD", Field);
+ query.bindValue(":OPERATOR", Operator);
+ query.bindValue(":VALUE1", Value1);
+- query.bindValue(":VALUE2", Value2);
++ query.bindValue(":VALUE2", Value2.isNull() ? "" : Value2);
+
+ if (!query.exec())
+ {
+@@ -750,7 +748,7 @@ void SmartPlaylistEditor::updateMatches(void)
+
+ m_matchesText->SetText(QString::number(m_matchesCount));
+
+- m_playlistIsValid = (m_matchesCount > 0);
++ m_playlistIsValid = (m_criteriaRows.size() > 0);
+ m_showResultsButton->SetEnabled((m_matchesCount > 0));
+ titleChanged();
+ }
+@@ -1015,6 +1013,9 @@ QString SmartPlaylistEditor::getOrderByClause(void)
+
+ QString SmartPlaylistEditor::getWhereClause(void)
+ {
++ if (m_criteriaRows.size() == 0)
++ return QString();
++
+ bool bFirst = true;
+ QString sql = "WHERE ";
+
diff --git a/mythtv/external/FFmpeg/README.sync b/mythtv/external/FFmpeg/README.sync
index a91b793..2bf19c5 100644
--- a/mythtv/external/FFmpeg/README.sync
@@ -1537,7 +1613,7 @@
bool MythCoreContext::IsFrontendOnly(void)
diff --git a/mythtv/libs/libmythbase/mythversion.h
b/mythtv/libs/libmythbase/mythversion.h
-index c189c40..85d6ecd 100644
+index c189c40..b097b21 100644
--- a/mythtv/libs/libmythbase/mythversion.h
+++ b/mythtv/libs/libmythbase/mythversion.h
@@ -12,7 +12,7 @@
@@ -1545,10 +1621,369 @@
/// Including changes in the libmythbase, libmyth, libmythtv, libmythav* and
/// libmythui class methods in exported headers.
-#define MYTH_BINARY_VERSION "0.27.20140702-1"
-+#define MYTH_BINARY_VERSION "0.27.20140718-1"
++#define MYTH_BINARY_VERSION "0.27.20140719-1"
/** \brief Increment this whenever the MythTV network protocol changes.
*
+diff --git a/mythtv/libs/libmythdvdnav/dvdnav/dvdnav.c
b/mythtv/libs/libmythdvdnav/dvdnav/dvdnav.c
+index 3a7952e..f4b5ecb 100644
+--- a/mythtv/libs/libmythdvdnav/dvdnav/dvdnav.c
++++ b/mythtv/libs/libmythdvdnav/dvdnav/dvdnav.c
+@@ -203,7 +203,7 @@ int64_t dvdnav_convert_time(dvd_time_t *time) {
+ int64_t result;
+ int64_t frames;
+
+- result = (time->hour >> 4 ) * 10 * 60 * 60 * 90000;
++ result = (time->hour >> 4 ) * 10 * 60 * 60 * 90000ull;
+ result += (time->hour & 0x0f) * 60 * 60 * 90000;
+ result += (time->minute >> 4 ) * 10 * 60 * 90000;
+ result += (time->minute & 0x0f) * 60 * 90000;
+diff --git a/mythtv/libs/libmythdvdnav/dvdnav/dvdnav.h
b/mythtv/libs/libmythdvdnav/dvdnav/dvdnav.h
+index 1e7fa08..a5a76de 100644
+--- a/mythtv/libs/libmythdvdnav/dvdnav/dvdnav.h
++++ b/mythtv/libs/libmythdvdnav/dvdnav/dvdnav.h
+@@ -29,7 +29,7 @@
+ #define MP_DVDNAV 1
+
+ // Change this only when syncing to mplayer dvdnav trunk
+-#define DVDNAV_SVN_REV "svnR1251"
++#define DVDNAV_SVN_REV "svnR1294"
+
+ #ifdef __cplusplus
+ extern "C" {
+diff --git a/mythtv/libs/libmythdvdnav/dvdnav/remap.c
b/mythtv/libs/libmythdvdnav/dvdnav/remap.c
+index f1dea93..4632a49 100644
+--- a/mythtv/libs/libmythdvdnav/dvdnav/remap.c
++++ b/mythtv/libs/libmythdvdnav/dvdnav/remap.c
+@@ -22,6 +22,7 @@
+
+ #include <stdlib.h>
[...2607 lines suppressed...]
diff --git a/mythtv/programs/mythmetadatalookup/main.cpp
b/mythtv/programs/mythmetadatalookup/main.cpp
index 0878925..1da7dfa 100644
--- a/mythtv/programs/mythmetadatalookup/main.cpp
@@ -13021,7 +15003,7 @@
if ((retval = cmdline.ConfigureLogging()) != GENERIC_EXIT_OK)
return retval;
diff --git a/mythtv/programs/mythtranscode/mpeg2fix.cpp
b/mythtv/programs/mythtranscode/mpeg2fix.cpp
-index 8ba085c..3cf92b9 100644
+index 8ba085c..c7214d3 100644
--- a/mythtv/programs/mythtranscode/mpeg2fix.cpp
+++ b/mythtv/programs/mythtranscode/mpeg2fix.cpp
@@ -576,18 +576,21 @@ void MPEG2fixup::InitReplex()
@@ -13050,7 +15032,22 @@
{
case AV_CODEC_ID_MP2:
case AV_CODEC_ID_MP3:
-@@ -1376,6 +1379,7 @@ int MPEG2fixup::GetFrame(AVPacket *pkt)
+@@ -803,10 +806,12 @@ bool MPEG2fixup::InitAV(QString inputfile, const char *type,
int64_t offset)
+ break;
+
+ case AVMEDIA_TYPE_AUDIO:
+- if (!allaudio && inputFC->streams[i]->codec->channels
== 0)
++ if (!allaudio && ext_count > 0 &&
++ inputFC->streams[i]->codec->channels < 2 &&
++ inputFC->streams[i]->codec->sample_rate < 100000)
+ {
+ LOG(VB_GENERAL, LOG_ERR,
+- QString("Skipping invalid audio stream: %1").arg(i));
++ QString("Skipping audio stream: %1").arg(i));
+ break;
+ }
+ if (inputFC->streams[i]->codec->codec_id == AV_CODEC_ID_AC3 ||
+@@ -1376,6 +1381,7 @@ int MPEG2fixup::GetFrame(AVPacket *pkt)
{
LOG(VB_GENERAL, LOG_DEBUG,
QString("Invalid stream ID %1,
ignoring").arg(pkt->stream_index));
@@ -13058,7 +15055,7 @@
}
av_free_packet(pkt);
return 0;
-@@ -2398,6 +2402,11 @@ int MPEG2fixup::Start()
+@@ -2398,6 +2404,11 @@ int MPEG2fixup::Start()
while (af->count())
{
@@ -13089,6 +15086,154 @@
return inputFC->streams[id]->parser;
}
+diff --git a/mythtv/programs/mythtranscode/videodecodebuffer.cpp
b/mythtv/programs/mythtranscode/videodecodebuffer.cpp
+index 73d23e0..b6bbdf9 100644
+--- a/mythtv/programs/mythtranscode/videodecodebuffer.cpp
++++ b/mythtv/programs/mythtranscode/videodecodebuffer.cpp
+@@ -1,11 +1,14 @@
+ #include "videodecodebuffer.h"
+
++#include "mythplayer.h"
++#include "videooutbase.h"
++
+ VideoDecodeBuffer::VideoDecodeBuffer(MythPlayer *player, VideoOutput *videoout,
+ bool cutlist, int size)
+ : m_player(player), m_videoOutput(videoout),
+- m_honorCutlist(cutlist),
+- m_eof(false), m_maxFrames(size),
+- m_runThread(true), m_isRunning(false)
++ m_honorCutlist(cutlist), m_maxFrames(size),
++ m_runThread(true), m_isRunning(false),
++ m_eof(false)
+ {
+
+ }
+@@ -35,8 +38,12 @@ void VideoDecodeBuffer::run()
+ m_isRunning = true;
+ while (m_runThread)
+ {
++ QMutexLocker locker(&m_queueLock);
++
+ if (m_frameList.size() < m_maxFrames && !m_eof)
+ {
++ locker.unlock();
++
+ DecodedFrameInfo tfInfo;
+ tfInfo.frame = NULL;
+ tfInfo.didFF = 0;
+@@ -47,21 +54,22 @@ void VideoDecodeBuffer::run()
+ {
+ tfInfo.frame = m_videoOutput->GetLastDecodedFrame();
+
+- QMutexLocker locker(&m_queueLock);
++ locker.relock();
+ m_frameList.append(tfInfo);
+ }
+- else
++ else if (m_player->GetEof() != kEofStateNone)
+ {
++ locker.relock();
+ m_eof = true;
+ }
++ else
++ continue;
+
+ m_frameWaitCond.wakeAll();
+ }
+ else
+ {
+- m_frameWaitLock.lock();
+- m_frameWaitCond.wait(&m_frameWaitLock);
+- m_frameWaitLock.unlock();
++ m_frameWaitCond.wait(locker.mutex());
+ }
+ }
+ m_isRunning = false;
+@@ -69,27 +77,21 @@ void VideoDecodeBuffer::run()
+
+ VideoFrame *VideoDecodeBuffer::GetFrame(int &didFF, bool &isKey)
+ {
+- m_queueLock.lock();
++ QMutexLocker locker(&m_queueLock);
+
+ if (m_frameList.isEmpty())
+ {
+- m_queueLock.unlock();
+-
+ if (m_eof)
+ return NULL;
+
+- m_frameWaitLock.lock();
+- m_frameWaitCond.wait(&m_frameWaitLock);
+- m_frameWaitLock.unlock();
++ m_frameWaitCond.wait(locker.mutex());
+
+ if (m_frameList.isEmpty())
+ return NULL;
+-
+- m_queueLock.lock();
+ }
+
+ DecodedFrameInfo tfInfo = m_frameList.takeFirst();
+- m_queueLock.unlock();
++ locker.unlock();
+ m_frameWaitCond.wakeAll();
+
+ didFF = tfInfo.didFF;
+diff --git a/mythtv/programs/mythtranscode/videodecodebuffer.h
b/mythtv/programs/mythtranscode/videodecodebuffer.h
+index 50c33d0..b4e241a 100644
+--- a/mythtv/programs/mythtranscode/videodecodebuffer.h
++++ b/mythtv/programs/mythtranscode/videodecodebuffer.h
+@@ -6,18 +6,20 @@
+ #include <QMutex>
+ #include <QRunnable>
+
+-#include "mythplayer.h"
+ #include "videooutbase.h"
+
++class MythPlayer;
++class VideoOutput;
++
+ class VideoDecodeBuffer : public QRunnable
+ {
+ public:
+ VideoDecodeBuffer(MythPlayer *player, VideoOutput *videoout,
+ bool cutlist, int size = 5);
+- ~VideoDecodeBuffer();
++ virtual ~VideoDecodeBuffer();
+
+- void stop(void);
+- void run();
++ void stop(void);
++ virtual void run();
+ VideoFrame *GetFrame(int &didFF, bool &isKey);
+
+ private:
+@@ -28,17 +30,16 @@ class VideoDecodeBuffer : public QRunnable
+ bool isKey;
+ } DecodedFrameInfo;
+
+- MythPlayer *m_player;
+- VideoOutput *m_videoOutput;
+- bool m_honorCutlist;
++ MythPlayer * const m_player;
++ VideoOutput * const m_videoOutput;
++ bool const m_honorCutlist;
++ int const m_maxFrames;
++ bool volatile m_runThread;
++ bool volatile m_isRunning;
++ QMutex mutable m_queueLock; // Guards the following...
+ bool m_eof;
+- int m_maxFrames;
+- bool m_runThread;
+- bool m_isRunning;
+- QMutex m_queueLock;
+ QList<DecodedFrameInfo> m_frameList;
+ QWaitCondition m_frameWaitCond;
+- QMutex m_frameWaitLock;
+ };
+
+ #endif
diff --git a/mythtv/themes/classic/tv_schedule.xml
b/mythtv/themes/classic/tv_schedule.xml
index c517e3a..6559d45 100644
--- a/mythtv/themes/classic/tv_schedule.xml