diff --git a/mythtv/libs/libmyth/programinfo.cpp b/mythtv/libs/libmyth/programinfo.cpp index a893f1304ba..dcf66763736 100644 --- a/mythtv/libs/libmyth/programinfo.cpp +++ b/mythtv/libs/libmyth/programinfo.cpp @@ -2399,10 +2399,20 @@ bool ProgramInfo::SaveBasename(const QString &basename) MSqlQuery query(MSqlQuery::InitCon()); query.prepare("UPDATE recorded " "SET basename = :BASENAME " - "WHERE chanid = :CHANID AND " - " starttime = :STARTTIME;"); - query.bindValue(":CHANID", chanid); - query.bindValue(":STARTTIME", recstartts); + "WHERE recordedid = :RECORDEDID;"); + query.bindValue(":RECORDEDID", recordedid); + query.bindValue(":BASENAME", basename); + + if (!query.exec()) + { + MythDB::DBError("SetRecordBasename", query); + return false; + } + + query.prepare("UPDATE recordedfile " + "SET basename = :BASENAME " + "WHERE recordedid = :RECORDEDID;"); + query.bindValue(":RECORDEDID", recordedid); query.bindValue(":BASENAME", basename); if (!query.exec()) @@ -2422,7 +2432,7 @@ bool ProgramInfo::SaveBasename(const QString &basename) * If the base part of pathname is not empty this will return * that value otherwise this queries the recorded table in the * DB for the basename stored there for this ProgramInfo's - * chanid and recstartts. + * recordedid */ QString ProgramInfo::QueryBasename(void) const { @@ -2433,11 +2443,9 @@ QString ProgramInfo::QueryBasename(void) const MSqlQuery query(MSqlQuery::InitCon()); query.prepare( "SELECT basename " - "FROM recorded " - "WHERE chanid = :CHANID AND " - " starttime = :STARTTIME"); - query.bindValue(":CHANID", chanid); - query.bindValue(":STARTTIME", recstartts); + "FROM recordedfile " + "WHERE recordedid = :RECORDEDID;"); + query.bindValue(":RECORDEDID", recordedid); if (!query.exec()) { @@ -2450,8 +2458,8 @@ QString ProgramInfo::QueryBasename(void) const else { LOG(VB_GENERAL, LOG_INFO, - QString("QueryBasename found no entry for %1 @ %2") - .arg(chanid).arg(recstartts.toString(Qt::ISODate))); + QString("QueryBasename found no entry for recording ID %1") + .arg(recordedid)); } return QString(); diff --git a/mythtv/libs/libmythtv/jobqueue.cpp b/mythtv/libs/libmythtv/jobqueue.cpp index 325968f2f5e..b465bfb6dea 100644 --- a/mythtv/libs/libmythtv/jobqueue.cpp +++ b/mythtv/libs/libmythtv/jobqueue.cpp @@ -2028,6 +2028,7 @@ void JobQueue::DoTranscodeThread(int jobID) ChangeJobStatus(jobID, JOB_FINISHED, tr("Finished.")); retry = false; + program_info->Reload(); // Refresh, the basename may have changed filename = program_info->GetPlaybackURL(false, true); QFileInfo st(filename); diff --git a/mythtv/libs/libmythtv/recorders/channelbase.cpp b/mythtv/libs/libmythtv/recorders/channelbase.cpp index 5e3a823604d..a2c5cfa0487 100644 --- a/mythtv/libs/libmythtv/recorders/channelbase.cpp +++ b/mythtv/libs/libmythtv/recorders/channelbase.cpp @@ -1174,7 +1174,7 @@ ChannelBase *ChannelBase::CreateChannel( bool enter_power_save_mode, QString &rbFileExt) { - rbFileExt = "mpg"; + rbFileExt = "ts"; ChannelBase *channel = NULL; if (genOpt.cardtype == "DVB") @@ -1203,8 +1203,9 @@ ChannelBase *ChannelBase::CreateChannel( genOpt.videodev.toLower().startsWith("file:"))) { channel = new DummyChannel(tvrec); + rbFileExt = "mpg"; } - else if (genOpt.cardtype == "FREEBOX") + else if (genOpt.cardtype == "FREEBOX") // IPTV { #ifdef USING_IPTV channel = new IPTVChannel(tvrec, genOpt.videodev); @@ -1229,10 +1230,13 @@ ChannelBase *ChannelBase::CreateChannel( #endif if ((genOpt.cardtype != "MPEG") && (genOpt.cardtype != "HDPVR")) rbFileExt = "nuv"; + else + rbFileExt = "mpg"; } else if (genOpt.cardtype == "EXTERNAL") { channel = new ExternalChannel(tvrec, genOpt.videodev); + rbFileExt = "mpg"; } if (!channel) diff --git a/mythtv/libs/libmythtv/tv_rec.cpp b/mythtv/libs/libmythtv/tv_rec.cpp index 393064a7cab..45d31d41890 100644 --- a/mythtv/libs/libmythtv/tv_rec.cpp +++ b/mythtv/libs/libmythtv/tv_rec.cpp @@ -118,7 +118,7 @@ TVRec::TVRec(int capturecardnum) // tvchain tvchain(NULL), // RingBuffer info - ringBuffer(NULL), rbFileExt("mpg") + ringBuffer(NULL), rbFileExt("ts") { QMutexLocker locker(&cardsLock); cards[cardid] = this; diff --git a/mythtv/libs/libmythupnp/httprequest.cpp b/mythtv/libs/libmythupnp/httprequest.cpp index e28f4389053..42d28ebc7fb 100644 --- a/mythtv/libs/libmythupnp/httprequest.cpp +++ b/mythtv/libs/libmythupnp/httprequest.cpp @@ -121,7 +121,7 @@ static MIMETypes g_MIMETypes[] = { "mkv" , "video/x-matroska" }, // See http://matroska.org/technical/specs/notes.html#MIME (See NOTE 1) { "nuv" , "video/nupplevideo" }, { "ogv" , "video/ogg" }, // Defined: http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions - { "ts" , "video/mp2t" }, // HTTP Live Streaming + { "ts" , "video/mp2t" }, { "vob" , "video/mpeg" }, { "wmv" , "video/x-ms-wmv" } }; @@ -1567,10 +1567,8 @@ bool HTTPRequest::ParseRange( QString sRange, return false; } -#if 0 - LOG(VB_GENERAL, LOG_DEBUG, QString("%1 Range Requested %2 - %3") + LOG(VB_HTTP, LOG_DEBUG, QString("%1 Range Requested %2 - %3") .arg(getSocketHandle()) .arg(*pllStart) .arg(*pllEnd)); -#endif return true; } diff --git a/mythtv/programs/mythtranscode/main.cpp b/mythtv/programs/mythtranscode/main.cpp index 7740e6150df..dc43d4af07b 100644 --- a/mythtv/programs/mythtranscode/main.cpp +++ b/mythtv/programs/mythtranscode/main.cpp @@ -890,13 +890,19 @@ static void CompleteJob(int jobID, ProgramInfo *pginfo, bool useCutlist, newSize = st.size(); QString cnf = filename; - if ((jobArgs == "RENAME_TO_NUV") && - (filename.contains(QRegExp("mpg$")))) + if (filename.endsWith(".mpg") && jobArgs == "RENAME_TO_NUV") { QString newbase = pginfo->QueryBasename(); - - cnf.replace(QRegExp("mpg$"), "nuv"); - newbase.replace(QRegExp("mpg$"), "nuv"); + cnf.replace(".mpg", ".nuv"); + newbase.replace(".mpg", ".nuv"); + pginfo->SaveBasename(newbase); + } + else if (filename.endsWith(".ts")) + { + QString newbase = pginfo->QueryBasename(); + // MPEG-TS to MPEG-PS + cnf.replace(".ts", ".mpg"); + newbase.replace(".ts", ".mpg"); pginfo->SaveBasename(newbase); }