diff --git a/libs/libmythtv/NuppelVideoRecorder.cpp b/libs/libmythtv/NuppelVideoRecorder.cpp
index 91a9ab8..74897db 100644
--- a/libs/libmythtv/NuppelVideoRecorder.cpp
+++ b/libs/libmythtv/NuppelVideoRecorder.cpp
@@ -70,7 +70,7 @@ extern "C" {
 #define LOC_ERR QString("NVR(%1) Error: ").arg(videodevice)
 
 NuppelVideoRecorder::NuppelVideoRecorder(TVRec *rec, ChannelBase *channel)
-    : RecorderBase(rec), audio_device(NULL), ccr(NULL)
+    : RecorderBase(rec), audio_device(NULL)
 {
     channelObj = channel;
 
@@ -180,8 +180,7 @@ NuppelVideoRecorder::NuppelVideoRecorder(TVRec *rec, ChannelBase *channel)
 
     volume = 100;
 
-    ccr.SetEnabled(true);
-    ccd = new CC608Decoder(&ccr);
+    ccd = new CC608Decoder(this);
 
     go7007 = false;
     resetcapture = false;
diff --git a/libs/libmythtv/NuppelVideoRecorder.h b/libs/libmythtv/NuppelVideoRecorder.h
index 53aeb8e..036624f 100644
--- a/libs/libmythtv/NuppelVideoRecorder.h
+++ b/libs/libmythtv/NuppelVideoRecorder.h
@@ -45,7 +45,7 @@ class FilterManager;
 class FilterChain;
 class AudioInput;
 
-class MPUBLIC NuppelVideoRecorder : public RecorderBase
+class MPUBLIC NuppelVideoRecorder : public RecorderBase, public CC608Input
 {
  public:
     NuppelVideoRecorder(TVRec *rec, ChannelBase *channel);
@@ -286,7 +286,6 @@ class MPUBLIC NuppelVideoRecorder : public RecorderBase
     int volume;
 
     CC608Decoder *ccd;
-    CC608Reader   ccr;
 
     bool go7007;
     bool resetcapture;
diff --git a/libs/libmythtv/cc608decoder.cpp b/libs/libmythtv/cc608decoder.cpp
index 9e59ddf..009cd57 100644
--- a/libs/libmythtv/cc608decoder.cpp
+++ b/libs/libmythtv/cc608decoder.cpp
@@ -17,7 +17,7 @@ using namespace std;
 
 static void init_xds_program_type(QString xds_program_type[96]);
 
-CC608Decoder::CC608Decoder(CC608Reader *ccr)
+CC608Decoder::CC608Decoder(CC608Input *ccr)
     : reader(ccr),                  ignore_time_code(false),
       rbuf(new unsigned char[sizeof(ccsubtitle)+255]),
       vps_l(0),
diff --git a/libs/libmythtv/cc608decoder.h b/libs/libmythtv/cc608decoder.h
index d89cd2e..d027a07 100644
--- a/libs/libmythtv/cc608decoder.h
+++ b/libs/libmythtv/cc608decoder.h
@@ -13,9 +13,16 @@ using namespace std;
 #include <QMutex>
 #include <QChar>
 
-#include "cc608reader.h"
 #include "format.h"
 
+class CC608Input
+{
+  public:
+    virtual ~CC608Input() { }
+    virtual void AddTextData(unsigned char *buf, int len,
+                             long long timecode, char type) = 0;
+};
+
 enum
 {
     kHasMPAA       = 0x1,
@@ -34,7 +41,7 @@ enum
 class CC608Decoder
 {
   public:
-    CC608Decoder(CC608Reader *ccr);
+    CC608Decoder(CC608Input *ccr);
     ~CC608Decoder();
 
     void FormatCC(int tc, int code1, int code2);
@@ -72,7 +79,7 @@ class CC608Decoder
     void XDSPacketParse(const vector<unsigned char> &xds_buf);
     bool XDSPacketCRC(const vector<unsigned char> &xds_buf);
 
-    CC608Reader *reader;
+    CC608Input *reader;
 
     bool ignore_time_code;
 
diff --git a/libs/libmythtv/cc608reader.h b/libs/libmythtv/cc608reader.h
index e52dc5d..7fb112f 100644
--- a/libs/libmythtv/cc608reader.h
+++ b/libs/libmythtv/cc608reader.h
@@ -3,6 +3,8 @@
 
 #include <QMutex>
 
+#include "cc608decoder.h"
+
 #include "mythexp.h"
 
 #define MAXTBUFFER 60
@@ -51,7 +53,7 @@ class CC608Buffer
 
 class NuppelVideoPlayer;
 
-class MPUBLIC CC608Reader
+class MPUBLIC CC608Reader : public CC608Input
 {
   public:
     CC608Reader(NuppelVideoPlayer *parent);
