Bug#421463: copying an audio CD results in white noise CD

Roderich Schupp roderich.schupp at googlemail.com
Sun Apr 29 11:37:45 UTC 2007


Package: nautilus-cd-burner
Version: 2.18.1-1

When I try to copy an audio CD using the "Copy Disc..." menu entry
(from the context menu of the audio disc's dektop icon), the resulting
copy contains just white noise.

The reason is that nautilus-cd-burner correctly identifies the CD as audio
and copies it to an image file (using cdrdao), but then "forgets" this
information and burns it as if it where a data image (using cdrecord/wodim).

The tell-tale sign is that create_track_from_device() in src/ncb-operation.c
never looks at the image_type returned from nautilus_burn_iso_make_from_info
and unconditionally creates a track via create_iso_rack().

Suggested patch below (the actual fix is the second hunk, the other two
hunks just move create_cue_track() up in the file, otherwise you'd need
a forward declaration).

Cheers, Roderich

--- nautilus-cd-burner-2.18.1-ORIG/src/ncb-operation.c  2007-04-28
19:43:21.000000000 +0200
+++ nautilus-cd-burner-2.18.1/src/ncb-operation.c       2007-04-28
20:10:48.000000000 +0200
@@ -1108,6 +1108,18 @@
 }

 static NautilusBurnRecorderTrack *
+create_cue_track (const char *filename)
+{
+       NautilusBurnRecorderTrack *track;
+
+       track = g_new0 (NautilusBurnRecorderTrack, 1);
+       track->type = NAUTILUS_BURN_RECORDER_TRACK_TYPE_CUE;
+       track->contents.cue.filename = g_strdup (filename);
+
+       return track;
+}
+
+static NautilusBurnRecorderTrack *
 create_track_from_device (NcbOperation *operation,
                          const char   *source_name,
                          GError      **error)
@@ -1211,7 +1223,19 @@
        }

        /* track takes ownership of file */
+       switch (image_type) {
+           case NAUTILUS_BURN_IMAGE_TYPE_BINCUE:
+               track = create_cue_track (toc_filename);
+               break;
+
+           case NAUTILUS_BURN_IMAGE_TYPE_ISO9660:
        track = create_iso_track (filename);
+               break;
+
+           default:
+               g_assert_not_reached ();
+               break;
+       }

  done:

@@ -1424,18 +1448,6 @@
        }
 }

-static NautilusBurnRecorderTrack *
-create_cue_track (const char *filename)
-{
-       NautilusBurnRecorderTrack *track;
-
-       track = g_new0 (NautilusBurnRecorderTrack, 1);
-       track->type = NAUTILUS_BURN_RECORDER_TRACK_TYPE_CUE;
-       track->contents.cue.filename = g_strdup (filename);
-
-       return track;
-}
-
 static gboolean
 prepare_tracks (NcbOperation *operation)
 {





More information about the pkg-gnome-maintainers mailing list