diff --git a/mythtv/libs/libmyth/programinfo.cpp b/mythtv/libs/libmyth/programinfo.cpp index 47a4fa0..b1fd7f7 100644 --- a/mythtv/libs/libmyth/programinfo.cpp +++ b/mythtv/libs/libmyth/programinfo.cpp @@ -3391,6 +3391,37 @@ void ProgramInfo::SaveTotalDuration(int64_t duration) MythDB::DBError("Duration insert", query); } +/// \brief Store the Total Frames at frame 0 in the recordedmarkup table +void ProgramInfo::SaveTotalFrames(int64_t frames) +{ + if (!IsRecording()) + return; + + MSqlQuery query(MSqlQuery::InitCon()); + + query.prepare("DELETE FROM recordedmarkup " + " WHERE chanid=:CHANID " + " AND starttime=:STARTTIME " + " AND type=:TYPE"); + query.bindValue(":CHANID", chanid); + query.bindValue(":STARTTIME", recstartts); + query.bindValue(":TYPE", MARK_FRAMES); + + if (!query.exec()) + MythDB::DBError("Frames delete", query); + + query.prepare("INSERT INTO recordedmarkup" + " (chanid, starttime, mark, type, data)" + " VALUES" + " ( :CHANID, :STARTTIME, 0, :TYPE, :DATA);"); + query.bindValue(":CHANID", chanid); + query.bindValue(":STARTTIME", recstartts); + query.bindValue(":TYPE", MARK_FRAMES); + query.bindValue(":DATA", (uint)(frames)); + + if (!query.exec()) + MythDB::DBError("Frames insert", query); +} /// \brief Store the Resolution at frame in the recordedmarkup table /// \note All frames until the next one with a stored resolution @@ -3500,6 +3531,14 @@ int64_t ProgramInfo::QueryTotalDuration(void) const return msec * 1000; } +/** \brief If present in recording this loads total frames of the + * main video stream from database's stream markup table. + */ +int64_t ProgramInfo::QueryTotalFrames(void) const +{ + int64_t frames = load_markup_datum(MARK_FRAMES, chanid, recstartts); + return frames; +} void ProgramInfo::SaveResolutionProperty(VideoProperty vid_flags) {