[gst-devel] vcdsrc
Joshua N Pritikin
noreply at eth.net
Thu Dec 6 03:02:02 CET 2001
The attached patch makes vcdsrc robust against damaged CDs. It also
comments out some warnings.
--
Victory to the Divine Mother!! after all,
http://sahajayoga.org http://why-compete.org
-------------- next part --------------
? vcd1
Index: vcdsrc.c
===================================================================
RCS file: /cvsroot/gstreamer/gstreamer/plugins/vcdsrc/vcdsrc.c,v
retrieving revision 1.14
diff -u -r1.14 vcdsrc.c
--- vcdsrc.c 2001/11/19 16:58:45 1.14
+++ vcdsrc.c 2001/12/06 10:57:20
@@ -215,8 +215,9 @@
GstBuffer *buf;
gulong offset;
struct cdrom_msf *msf;
+ gint error_count = 0;
- fprintf(stderr,"in vcdsrc_push\n");
+ // fprintf(stderr,"in vcdsrc_push\n");
g_return_val_if_fail(pad != NULL, NULL);
g_return_val_if_fail(GST_IS_PAD(pad), NULL);
@@ -236,17 +237,29 @@
msf = (struct cdrom_msf *)GST_BUFFER_DATA(buf);
+ read_sector:
+
/* read it in from the device */
offset = vcdsrc->trackoffset + vcdsrc->curoffset;
msf->cdmsf_frame0 = offset % 75;
msf->cdmsf_sec0 = (offset / 75) % 60;
msf->cdmsf_min0 = (offset / (75 * 60));
- gst_info("msf is %d:%d:%d\n",msf->cdmsf_min0,msf->cdmsf_sec0,
- msf->cdmsf_frame0);
+
+ //gst_info("msf is %d:%d:%d\n",msf->cdmsf_min0,msf->cdmsf_sec0,
+ // msf->cdmsf_frame0);
+
if (ioctl(vcdsrc->fd,CDROMREADRAW,msf)) {
- perror("reading raw data from cdrom");
-// FIXME
- exit(1);
+ if (++error_count > 16)
+ {
+ fprintf (stderr, "End of CD\n");
+ exit(1);
+ }
+
+ fprintf (stderr, "%s while reading raw data from cdrom at %d:%d:%d\n",
+ strerror (errno),
+ msf->cdmsf_min0, msf->cdmsf_sec0, msf->cdmsf_frame0);
+ vcdsrc->curoffset += 1;
+ goto read_sector;
}
// if (readbytes == 0) {
More information about the gstreamer-devel
mailing list