[mythtv] [PATCH] add frame count to recorded database

Wayne Hogue mythtv at chiphead.net
Wed Mar 3 15:12:50 EST 2004


This patch adds framecnt column to the recorded table.  It updated when 
the cutlist is updated.  It will aid in transcoding to xvid and 
calculating video bitrate  based on desired final file size.  Total 
frame count can be calculated by subtracting the cut frame counts from 
the total.
Also updated the ods.xml to display the currentframe/totalframes under 
the timedispaly.

-Wayne

-------------- next part --------------
? ~addframecnt.diff
? libs/libmythtv/.directory
Index: libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/NuppelVideoPlayer.cpp,v
retrieving revision 1.336
diff -u -r1.336 NuppelVideoPlayer.cpp
--- libs/libmythtv/NuppelVideoPlayer.cpp	28 Feb 2004 05:56:02 -0000	1.336
+++ libs/libmythtv/NuppelVideoPlayer.cpp	3 Mar 2004 20:07:58 -0000
@@ -2664,7 +2664,7 @@
         hours, mins, secs, frames);
 
     char framestr[128];
-    sprintf(framestr, "%lld", framesPlayed);
+    sprintf(framestr, "%lld/%lld", framesPlayed, totalFrames);
 
     QString cutmarker = " ";
     if (IsInDelete(framesPlayed))
@@ -2973,6 +2973,8 @@
     QMutexLocker lockit(m_db->mutex());
     m_playbackinfo->SetMarkupFlag(MARK_UPDATED_CUT, true, m_db->db());
     m_playbackinfo->SetCutList(deleteMap, m_db->db());
+    m_playbackinfo->SetFrameCount(totalFrames, m_db->db());
+
 }
 
 void NuppelVideoPlayer::LoadCutList(void)
Index: libs/libmythtv/dbcheck.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/dbcheck.cpp,v
retrieving revision 1.36
diff -u -r1.36 dbcheck.cpp
--- libs/libmythtv/dbcheck.cpp	2 Mar 2004 06:31:52 -0000	1.36
+++ libs/libmythtv/dbcheck.cpp	3 Mar 2004 20:07:58 -0000
@@ -8,7 +8,7 @@
 
 #include "mythcontext.h"
 
-const QString currentDatabaseVersion = "1034";
+const QString currentDatabaseVersion = "1035";
 
 void UpdateDBVersionNumber(const QString &newnumber)
 {
@@ -648,6 +648,15 @@
 };
         performActualUpdate(updates, "1034", dbver);
     }
+
+    if (dbver == "1034")
+    {
+        const QString updates[] = {
+"ALTER TABLE recorded ADD COLUMN framecnt VARCHAR(128) NULL;",
+""
+};
+        performActualUpdate(updates, "1035", dbver);
+
 };
 
 void InitializeDatabase(void)
@@ -771,6 +780,7 @@
 "    editing INT UNSIGNED NOT NULL DEFAULT 0,"
 "    cutlist TEXT NULL,"
 "    autoexpire INT DEFAULT 0 NOT NULL,"
+"    bookmark VARCHAR(128) NULL,"
 "    PRIMARY KEY (chanid, starttime),"
 "    INDEX (endtime)"
 ");",
Index: libs/libmythtv/programinfo.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/programinfo.cpp,v
retrieving revision 1.117
diff -u -r1.117 programinfo.cpp
--- libs/libmythtv/programinfo.cpp	27 Feb 2004 20:38:03 -0000	1.117
+++ libs/libmythtv/programinfo.cpp	3 Mar 2004 20:08:00 -0000
@@ -1223,8 +1223,64 @@
         MythContext::DBError("cutlist update", querystr);
 }
 
+void ProgramInfo::SetFrameCount(long long framecnt, QSqlDatabase *db)
+{
+    MythContext::KickDatabase(db);
+
+    char position[128];
+    sprintf(position, "%lld", framecnt);
+
+    QString starts = recstartts.toString("yyyyMMddhhmm");
+    starts += "00";
+
+    QString querystr;
+
+    if (framecnt > 0)
+        querystr = QString("UPDATE recorded SET framecnt = '%1', "
+                           "starttime = '%2' WHERE chanid = '%3' AND "
+                           "starttime = '%4';").arg(position).arg(starts)
+                                               .arg(chanid).arg(starts);
+    else
+        querystr = QString("UPDATE recorded SET framecnt = NULL, "
+                           "starttime = '%1' WHERE chanid = '%2' AND "
+                           "starttime = '%3';").arg(starts).arg(chanid)
+                                               .arg(starts);
+
+    QSqlQuery query = db->exec(querystr);
+    if (!query.isActive())
+        MythContext::DBError("Save frame count", querystr);
+}
+
+long long ProgramInfo::GetFrameCount(QSqlDatabase *db)
+{
+    MythContext::KickDatabase(db);
+
+    long long framecnt = 0;
+
+    QString starts = recstartts.toString("yyyyMMddhhmm");
+    starts += "00";
+
+    QString querystr = QString("SELECT framecnt FROM recorded WHERE "
+                               "chanid = '%1' AND starttime = '%2';")
+                              .arg(chanid).arg(starts);
+
+    QSqlQuery query = db->exec(querystr);
+    if (query.isActive() && query.numRowsAffected() > 0)
+    {
+        query.next();
+
+        QString result = query.value(0).toString();
+        if (result != QString::null)
+        {
+            sscanf(result.ascii(), "%lld", &framecnt);
+        }
+    }
+
+    return framecnt;
+}
+
 void ProgramInfo::SetBlankFrameList(QMap<long long, int> &frames,
-                                    QSqlDatabase *db, long long min_frame, 
+                                    QSqlDatabase *db, long long min_frame,
                                     long long max_frame)
 {
     ClearMarkupMap(db, MARK_BLANK_FRAME, min_frame, max_frame);
Index: libs/libmythtv/programinfo.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/programinfo.h,v
retrieving revision 1.69
diff -u -r1.69 programinfo.h
--- libs/libmythtv/programinfo.h	27 Feb 2004 20:38:03 -0000	1.69
+++ libs/libmythtv/programinfo.h	3 Mar 2004 20:08:01 -0000
@@ -148,6 +148,9 @@
     void GetCutList(QMap<long long, int> &delMap, QSqlDatabase *db);
     void SetCutList(QMap<long long, int> &delMap, QSqlDatabase *db);
 
+    void SetFrameCount(long long framecnt, QSqlDatabase *db);
+    long long GetFrameCount(QSqlDatabase *db);
+
     void SetBlankFrameList(QMap<long long, int> &frames, QSqlDatabase *db,
                            long long min_frame = -1, long long max_frame = -1);
     void GetBlankFrameList(QMap<long long, int> &frames, QSqlDatabase *db);
Index: themes/blueosd/osd.xml
===================================================================
RCS file: /var/lib/mythcvs/mythtv/themes/blueosd/osd.xml,v
retrieving revision 1.10
diff -u -r1.10 osd.xml
--- themes/blueosd/osd.xml	19 Feb 2004 08:48:56 -0000	1.10
+++ themes/blueosd/osd.xml	3 Mar 2004 20:08:01 -0000
@@ -192,6 +192,10 @@
       <area>270,30,330,30</area>
       <font>settings</font>
     </textarea>
+    <textarea name="framedisplay" align="right">
+      <area>270,60,330,30</area>
+      <font>settings</font>
+    </textarea>
     <textarea name="cutindicator">
       <area>40,30,100,30</area>
       <font>settings</font>
Index: themes/defaultosd/osd.xml
===================================================================
RCS file: /var/lib/mythcvs/mythtv/themes/defaultosd/osd.xml,v
retrieving revision 1.11
diff -u -r1.11 osd.xml
--- themes/defaultosd/osd.xml	28 Jan 2004 19:44:37 -0000	1.11
+++ themes/defaultosd/osd.xml	3 Mar 2004 20:08:02 -0000
@@ -154,6 +154,10 @@
       <area>270,30,330,30</area>
       <font>settings</font>
     </textarea>
+    <textarea name="framedisplay" align="right">
+      <area>270,60,330,30</area>
+      <font>settings</font>
+    </textarea>
     <textarea name="cutindicator">
       <area>40,30,100,30</area>
       <font>settings</font>


More information about the mythtv-dev mailing list