Index: programs/programs.pro
===================================================================
--- programs/programs.pro	(revision 20658)
+++ programs/programs.pro	(working copy)
@@ -18,4 +18,3 @@
     SUBDIRS += mythtranscode
 }
 
-mingw: SUBDIRS -= mythtranscode mythtranscode/replex
Index: programs/mythtranscode/replex/replex.pro
===================================================================
--- programs/mythtranscode/replex/replex.pro	(revision 20658)
+++ programs/mythtranscode/replex/replex.pro	(working copy)
@@ -23,6 +23,8 @@
 LIBS += -lmythavcodec-$$LIBVERSION -lmythavformat-$$LIBVERSION -lmythavutil-$$LIBVERSION
 LIBS += $$EXTRA_LIBS
 
+mingw:LIBS += -lws2_32
+
 isEmpty(QMAKE_EXTENSION_SHLIB) {
   QMAKE_EXTENSION_SHLIB=so
 }
Index: programs/mythtranscode/mythtranscode.pro
===================================================================
--- programs/mythtranscode/mythtranscode.pro	(revision 20658)
+++ programs/mythtranscode/mythtranscode.pro	(working copy)
@@ -9,6 +9,8 @@
 target.path = $${PREFIX}/bin
 INSTALLS = target
 
+mingw:LIBS += -lws2_32 
+
 QMAKE_CLEAN += $(TARGET)
 
 # Input
Index: programs/mythtranscode/main.cpp
===================================================================
--- programs/mythtranscode/main.cpp	(revision 20658)
+++ programs/mythtranscode/main.cpp	(working copy)
@@ -812,7 +812,8 @@
     if (gContext->GetNumSetting("TruncateDeletesSlowly", 0))
         return slowDelete(filename);
 
-    return unlink(filename.toLocal8Bit().constData());
+    QFile ftarget(filename.toLocal8Bit().constData());
+    return !ftarget.remove();
 }
 
 void CompleteJob(int jobID, ProgramInfo *pginfo, bool useCutlist, int &resultCode)
@@ -854,14 +855,16 @@
         const QString newfile = cnf;
         const QByteArray anewfile = newfile.toLocal8Bit();
 
-        if (rename(fname.constData(), aoldfile.constData()) == -1)
+        QFile srcQFile(fname.constData());
+        if (!srcQFile.rename(aoldfile.constData()))
         {
             VERBOSE(VB_IMPORTANT,
                     QString("mythtranscode: Error Renaming '%1' to '%2'")
                     .arg(filename).arg(oldfile) + ENO);
         }
 
-        if (rename(atmpfile.constData(), anewfile.constData()) == -1)
+        QFile tmpQFile(atmpfile.constData());        
+        if (!tmpQFile.rename(anewfile.constData()))
         {
             VERBOSE(VB_IMPORTANT,
                     QString("mythtranscode: Error Renaming '%1' to '%2'")
@@ -966,7 +969,7 @@
                 QFile checkFile(oldfileprev);
 
                 if ((oldfileprev != newfileprev) && (checkFile.exists()))
-                    rename(aoldfileprev.constData(), anewfileprev.constData());
+                    checkFile.rename(anewfileprev.constData());
             }
         }
 
Index: programs/mythtranscode/transcode.cpp
===================================================================
--- programs/mythtranscode/transcode.cpp	(revision 20658)
+++ programs/mythtranscode/transcode.cpp	(working copy)
@@ -1201,8 +1201,17 @@
         fifow->FIFODrain();
     }
     delete newFrame;
+    // HACK? - destructor apparently never called (Qt3/Qt4 deleteLater issue?)
+    // Pointers not reset; shouldn't dtor segfault if it was working properly?
     if (player_ctx)
         delete player_ctx;
+    // HACK - delete ringbuffer else outfile is open when we try to rename it
+    // As before, destructor is supposed to take care of these deletes for us!
+    if (nvr)
+        delete nvr;
+    if (outRingBuffer)
+        delete outRingBuffer;
+
     return REENCODE_OK;
 }
 
Index: libs/libmythtv/NuppelVideoRecorder.cpp
===================================================================
--- libs/libmythtv/NuppelVideoRecorder.cpp	(revision 20658)
+++ libs/libmythtv/NuppelVideoRecorder.cpp	(working copy)
@@ -10,8 +10,10 @@
 #elif HAVE_SOUNDCARD_H
     #include <soundcard.h>
 #endif
+#ifndef USING_MINGW
 #include <sys/ioctl.h>
 #include <sys/mman.h>
+#endif
 #include <cerrno>
 #include <cmath>
 
@@ -778,6 +780,7 @@
  */
 bool NuppelVideoRecorder::MJPEGInit(void)
 {
+#ifndef USING_MINGW
     bool we_opened_fd = false;
     int init_fd = fd;
     if (init_fd < 0)
@@ -819,7 +822,7 @@
             hmjpg_maxw = 640;
         return true;
     }
-
+#endif // !USING_MINGW
     VERBOSE(VB_IMPORTANT, LOC_ERR + "MJPEG not supported by device");
     return false;
 }
@@ -966,6 +969,7 @@
 
 void NuppelVideoRecorder::ProbeV4L2(void)
 {
+#ifndef USING_MINGW
     usingv4l2 = true;
 
     struct v4l2_capability vcap;
@@ -995,6 +999,7 @@
     QString driver = (char *)vcap.driver;
     if (driver == "go7007")
         go7007 = true;
+#endif // !USING_MINGW    
 }
 
 void NuppelVideoRecorder::StartRecording(void)
@@ -1073,6 +1078,7 @@
 
 void NuppelVideoRecorder::DoV4L(void)
 {
+#ifndef USING_MINGW
     struct video_capability vc;
     struct video_mmap mm;
     struct video_mbuf vm;
@@ -1255,10 +1261,12 @@
 
     recording = false;
     close(fd);
+#endif // !USING_MINGW    
 }
 
 void NuppelVideoRecorder::DoV4L2(void)
 {
+#ifndef USING_MINGW
     struct v4l2_format     vfmt;
     struct v4l2_buffer     vbuf;
     struct v4l2_requestbuffers vrbuf;
@@ -1612,10 +1620,12 @@
     recording = false;
     close(fd);
     close(channelfd);
+#endif // !USING_MINGW
 }
 
 void NuppelVideoRecorder::DoMJPEG(void)
 {
+#ifndef USING_MINGW
     struct mjpeg_params bparm;
 
     if (ioctl(fd, MJPIOC_G_PARAMS, &bparm) < 0)
@@ -1748,6 +1758,7 @@
             
     recording = false;
     close(fd);
+#endif // !USING_MINGW    
 }
 
 int NuppelVideoRecorder::SpawnChildren(void)
@@ -2647,6 +2658,7 @@
 
 void NuppelVideoRecorder::doVbiThread(void)
 {
+#ifndef USING_MINGW    
     //VERBOSE(VB_IMPORTANT, LOC + "vbi begin");
     struct VBIData vbicallbackdata;
     struct vbi *pal_tt = NULL;
@@ -2793,6 +2805,7 @@
         cc_close(ntsc_cc);
 
     //VERBOSE(VB_RECORD, LOC + "vbi end");
+#endif // !USING_MINGW
 }
 
 
Index: libs/libmythtv/libmythtv.pro
===================================================================
--- libs/libmythtv/libmythtv.pro	(revision 20658)
+++ libs/libmythtv/libmythtv.pro	(working copy)
@@ -581,7 +581,6 @@
     DEFINES += USING_D3D
 
     HEADERS += videoout_d3d.h
-    SOURCES -= NuppelVideoRecorder.cpp
     SOURCES += videoout_d3d.cpp
 
     LIBS += -lpthread
