diff -r 22db2f4b6f86 -r 81e9da9ad7db gst-plugins-mythtv/src/gstmythtvsrc.c
--- a/gst-plugins-mythtv/src/gstmythtvsrc.c	Thu Nov 30 19:41:27 2006 +0000
+++ b/gst-plugins-mythtv/src/gstmythtvsrc.c	Fri Dec 01 14:52:05 2006 +0000
@@ -654,9 +654,10 @@
 gst_mythtv_src_start ( GstBaseSrc * bsrc )
 {
   GstMythtvSrc *src = GST_MYTHTV_SRC (bsrc);
+  GMythURI *gmyth_uri = NULL;
+  gchar* filename = NULL;
 
   GString *chain_id_local = NULL;
-
   gboolean ret = TRUE;
 
   if ( G_UNLIKELY (src->update_prog_chain) )
@@ -668,14 +669,18 @@
     goto done;
   }
 
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
+  src->backend_info = gmyth_backend_info_new_with_uri( src->uri_name );
+
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
   if ( src->live_tv ) {
-  	src->backend_info = gmyth_backend_info_new_with_uri( src->uri_name );
     src->spawn_livetv = gmyth_livetv_new( );
     if ( gmyth_livetv_setup( src->spawn_livetv, src->backend_info ) == FALSE ) {
       ret = FALSE;
       goto init_failed;
     }    
 
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
     /* set up the uri variable */
     src->uri_name = g_strdup( src->spawn_livetv->proginfo->pathname->str );
     chain_id_local = gmyth_tvchain_get_id( src->spawn_livetv->tvchain );
@@ -683,26 +688,30 @@
       src->live_chain_id = g_strdup( chain_id_local->str );
       GST_INFO_OBJECT( src, "\t[%s]\tLocal chain ID = %s.\n", __FUNCTION__, src->live_chain_id );      
     }
-    //if ( src->uri_name == NULL || strlen( src->uri_name ) <= 0 )
-    //	gmyth_context_initialize();
     	
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
     src->live_tv_id = src->spawn_livetv->recorder->recorder_num;
     GST_LOG_OBJECT( src, "[%s] LiveTV id = %d, URI path = %s.\n", __FUNCTION__, src->live_tv_id, src->uri_name ); 
   }
 
-  //src->file_transfer = gmyth_file_transfer_new( src->live_tv_id, 
-  //    g_string_new( src->uri_name ), -1, src->mythtv_version );
-	src->file_transfer = gmyth_file_transfer_new( );
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
+  src->file_transfer = gmyth_file_transfer_new( src->backend_info );
 
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
   if ( src->file_transfer == NULL ) {
     goto init_failed;
   }
   GST_INFO_OBJECT( src, "[%s] uri = %s.\n", __FUNCTION__, src->uri_name );
-
-	ret = gmyth_file_transfer_open( src->file_transfer, g_string_new( src->uri_name ) );
-
-  /* sets the Playback monitor connection */
-  //ret = gmyth_file_transfer_playback_setup( &(src->file_transfer), src->live_tv );
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
+  gmyth_uri = gmyth_uri_new_with_value (src->uri_name);
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
+  
+  filename = gmyth_uri_get_path (gmyth_uri);
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
+  ret = gmyth_file_transfer_open( src->file_transfer, filename);
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
+  g_object_unref (gmyth_uri);
+printf ("XXX %s %d\n", __FUNCTION__, __LINE__);
 
   if ( src->live_tv == TRUE && ret == TRUE ) {
     /* loop finished, set the max tries variable to zero again... */
@@ -823,16 +832,17 @@
     GST_LOG_OBJECT( src, "[%s] LiveTV id = %d, URI path = %s.\n", __FUNCTION__, src->live_tv_id, src->uri_name );
   }
 
-  src->file_transfer = gmyth_file_transfer_new();
+  // we do not need to create a new file transfer, just close the previous one and open with the new file name
+  // src->file_transfer = gmyth_file_transfer_new( src->backend_info);
+  gmyth_file_transfer_close (src->backend_info);
 
   if ( src->file_transfer == NULL ) {
     goto init_failed;
   }
   
-	ret = gmyth_file_transfer_open( src->file_transfer, g_string_new( src->uri_name ) );
-
-  /* sets the Playback monitor connection */
-  //ret = gmyth_file_transfer_playback_setup( &(src->file_transfer), src->live_tv );
+  GMythURI *myth_uri = gmyth_uri_new_with_value (src->uri_name);
+  ret = gmyth_file_transfer_open( src->file_transfer, gmyth_uri_get_path (myth_uri) );
+  g_object_unref (myth_uri);
 
   if ( src->live_tv == TRUE && ret == TRUE ) {
     /* loop finished, set the max tries variable to zero again... */
@@ -845,8 +855,6 @@
       g_usleep( 1000 );
   }
 
-  /* sets the FileTransfer instance connection (video/audio download) */
-  //ret = gmyth_file_transfer_setup( &(src->file_transfer), src->live_tv );
 
   if ( ret == FALSE ) {
 #ifndef GST_DISABLE_GST_DEBUG  
@@ -949,6 +957,17 @@
     src->mythtv_caps = NULL;
   }
 
+  if (src->backend_info != NULL) {
+    g_object_unref (src->backend_info);
+    src->backend_info = NULL;
+  }
+
+  if (src->file_transfer != NULL) {
+    gmyth_file_transfer_close (src->file_transfer);
+    g_object_unref (src->file_transfer);
+    src->file_transfer = NULL;
+  }
+
   src->eos = FALSE;
 
   return TRUE;