[mythtv] [PATCH] Extend recording time during recording

Kevin Kuphal kuphal at dls.net
Fri Sep 24 23:27:15 EDT 2004


This patch adds a feature requested from the user list which is 
apparently also a TiVo feature.  While watching a recording in progress, 
you can select a new OSD menu item to Extend the recording by 15, 30, 
45, or 60 minutes beyond the current end time.  Common usage is for 
sporting events that will obviously go long while you are watching to 
extend the end time to handle it.

Kevin
-------------- next part --------------
Index: mythtv/libs/libmythtv/remoteencoder.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/remoteencoder.cpp,v
retrieving revision 1.26
diff -n -u -r1.26 remoteencoder.cpp
--- mythtv/libs/libmythtv/remoteencoder.cpp	19 Aug 2004 01:43:04 -0000	1.26
+++ mythtv/libs/libmythtv/remoteencoder.cpp	25 Sep 2004 03:15:50 -0000
@@ -396,6 +396,15 @@
     return retval;
 }
 
+void RemoteEncoder::ExtendRecording(int minutes)
+{
+    QStringList strlist = QString("QUERY_RECORDER %1").arg(recordernum);
+    strlist << "EXTEND_RECORDING";
+    strlist << QString::number((int)minutes);
+
+    SendReceiveStringList(strlist);
+}
+
 void RemoteEncoder::GetNextProgram(int direction,
                                    QString &title, QString &subtitle,
                                    QString &desc, QString &category,
Index: mythtv/libs/libmythtv/remoteencoder.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/remoteencoder.h,v
retrieving revision 1.20
diff -n -u -r1.20 remoteencoder.h
--- mythtv/libs/libmythtv/remoteencoder.h	19 Aug 2004 01:43:04 -0000	1.20
+++ mythtv/libs/libmythtv/remoteencoder.h	25 Sep 2004 03:15:50 -0000
@@ -48,6 +48,7 @@
     void SetChannel(QString channel);
     bool CheckChannel(QString channel);
     bool CheckChannelPrefix(QString channel, bool &unique);
+    void ExtendRecording(int minutes);
     void GetNextProgram(int direction,
                         QString &title, QString &subtitle, QString &desc, 
                         QString &category, QString &starttime, QString &endtime,
Index: mythtv/libs/libmythtv/tv_play.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/tv_play.cpp,v
retrieving revision 1.209
diff -n -u -r1.209 tv_play.cpp
--- mythtv/libs/libmythtv/tv_play.cpp	6 Sep 2004 23:58:32 -0000	1.209
+++ mythtv/libs/libmythtv/tv_play.cpp	25 Sep 2004 03:15:50 -0000
@@ -167,6 +167,10 @@
     REG_KEY("TV Playback", "DISPTXT2", "Display TXT2", "");
     REG_KEY("TV Playback", "DISPTXT3", "Display TXT3", "");
     REG_KEY("TV Playback", "DISPTXT4", "Display TXT4", "");
+    REG_KEY("TV Playback", "EXTEND15", "Extend Recording 15 minutes", "");
+    REG_KEY("TV Playback", "EXTEND30", "Extend Recording 30 minutes", "");
+    REG_KEY("TV Playback", "EXTEND45", "Extend Recording 45 minutes", "");
+    REG_KEY("TV Playback", "EXTEND60", "Extend Recording 60 minutes", "");
     REG_KEY("TV Playback", "QUEUETRANSCODE", "Queue the current recording for "
             "transcoding", "X");
     REG_KEY("TV Playback", "SPEEDINC", "Increase the playback speed", "U");
@@ -2302,6 +2320,12 @@
     }
 }
 
+void TV::DoExtendRecord(int minutes)
+{
+    recorder->ExtendRecording(minutes);
+    osd->SetSettingsText(tr("Recording extended %1 minutes").arg(minutes), 3);
+}
+
 void TV::DoToggleCC(int arg)
 {
     nvp->ToggleCC(vbimode, arg);
@@ -3771,6 +3795,8 @@
             SetAutoCommercialSkip(action.right(1).toInt());
         else if (action == "QUEUETRANSCODE")
             DoQueueTranscode();
+        else if (action.left(6) == "EXTEND")
+            DoExtendRecord(action.right(2).toInt());
         else
         {
             cout << "unknown menu action selected: " << action << endl;
@@ -3897,6 +3923,13 @@
                                          QString("DISPTXT%1").arg(i));
     }
 
+    if (StateIsRecording(internalState))
+    {
+        item = new OSDGenericTree(treeMenu, tr("Extend Recording"));
+        for (int i = 15; i <= 60; i+=15)
+            subitem = new OSDGenericTree(item, QString("%1 min").arg(i), QString("EXTEND%1").arg(i));
+    }
+
     item = new OSDGenericTree(treeMenu, tr("Change Aspect Ratio"));
     subitem = new OSDGenericTree(item, tr("4:3"), "TOGGLEASPECT" +
                                  QString("%1").arg(kLetterbox_4_3));
Index: mythtv/libs/libmythtv/tv_play.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/tv_play.h,v
retrieving revision 1.77
diff -n -u -r1.77 tv_play.h
--- mythtv/libs/libmythtv/tv_play.h	15 Aug 2004 22:38:30 -0000	1.77
+++ mythtv/libs/libmythtv/tv_play.h	25 Sep 2004 03:15:50 -0000
@@ -158,6 +158,7 @@
     void DoEditMode(void);
 
     void DoQueueTranscode(void);  
+    void DoExtendRecord(int minutes);
 
     void SetAutoCommercialSkip(int skipMode = 0);
     void SetManualZoom(bool zoomON = false);
Index: mythtv/libs/libmythtv/tv_rec.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/tv_rec.h,v
retrieving revision 1.59
diff -n -u -r1.59 tv_rec.h
--- mythtv/libs/libmythtv/tv_rec.h	15 Aug 2004 22:38:31 -0000	1.59
+++ mythtv/libs/libmythtv/tv_rec.h	25 Sep 2004 03:15:51 -0000
@@ -139,6 +139,8 @@
 
     int GetCaptureCardNum(void) { return m_capturecardnum; }
 
+    void IncreaseOverseconds(int minutes) { recordEndTime = recordEndTime.addSecs(minutes * 60); } 
+
  protected:
     void RunTV(void);
     static void *EventThread(void *param);
Index: mythtv/programs/mythbackend/encoderlink.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythbackend/encoderlink.cpp,v
retrieving revision 1.35
diff -n -u -r1.35 encoderlink.cpp
--- mythtv/programs/mythbackend/encoderlink.cpp	15 Aug 2004 22:38:31 -0000	1.35
+++ mythtv/programs/mythbackend/encoderlink.cpp	25 Sep 2004 03:15:51 -0000
@@ -646,3 +646,7 @@
     return NULL;
 }
 
+void EncoderLink::ExtendRecording(int minutes)
+{
+    tv->IncreaseOverseconds(minutes);
+}
Index: mythtv/programs/mythbackend/encoderlink.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythbackend/encoderlink.h,v
retrieving revision 1.30
diff -n -u -r1.30 encoderlink.h
--- mythtv/programs/mythbackend/encoderlink.h	15 Aug 2004 22:38:31 -0000	1.30
+++ mythtv/programs/mythbackend/encoderlink.h	25 Sep 2004 03:15:51 -0000
@@ -99,6 +99,7 @@
     char *GetScreenGrab(ProgramInfo *pginfo, const QString &filename, 
                         int secondsin, int &bufferlen,
                         int &video_width, int &video_height);
+    void ExtendRecording(int minutes);
 
   private:
     int m_capturecardnum;
Index: mythtv/programs/mythbackend/mainserver.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythbackend/mainserver.cpp,v
retrieving revision 1.156
diff -n -u -r1.156 mainserver.cpp
--- mythtv/programs/mythbackend/mainserver.cpp	13 Sep 2004 06:09:24 -0000	1.156
+++ mythtv/programs/mythbackend/mainserver.cpp	25 Sep 2004 03:15:51 -0000
@@ -2070,6 +2070,12 @@
                                                                  unique)));
         retlist << QString::number((int)unique);
     }
+    else if (command == "EXTEND_RECORDING")
+    {
+        int minutes = slist[2].toInt();
+        enc->ExtendRecording(minutes);
+        retlist << "ok";
+    }
     else if (command == "GET_NEXT_PROGRAM_INFO")
     {
         QString channelname = slist[2];


More information about the mythtv-dev mailing list