Bug#373222: vdr-plugin-dvd: Make dvd reading more fault tolerant

schorpp t.schorpp at gmx.de
Tue Jun 13 16:30:59 UTC 2006


Package: vdr-plugin-dvd
Version: 0.3.5.2+0.3.6b03-20
Severity: normal
Tags: patch

hi, pls dont kill dvd playing just due to one sector reading fault:

Jun 13 16:08:45 tom1 kernel: hdg: media error (bad sector): status=0x51 { DriveReady SeekComplete Error }
Jun 13 16:08:45 tom1 kernel: hdg: media error (bad sector): error=0x30 { LastFailedSense=0x03 }
Jun 13 16:08:45 tom1 kernel: ide: failed opcode was: unknown
Jun 13 16:08:45 tom1 kernel: end_request: I/O error, dev hdg, sector 555880
Jun 13 16:08:45 tom1 kernel: Buffer I/O error on device hdg, logical block 69485
Jun 13 16:08:46 tom1 vdr: [30456] ERROR: Fehler beim lesen von der DVD!
Jun 13 16:08:49 tom1 vdr: [30456] dvd-plugin thread ended (pid=30456, tid=30456)

pls apply this patch or tell dvdnav somehow to reread or make sw error-correction:

Index: player-dvd.c
===================================================================
RCS file: /cvsroot/dvdplugin/dvd/player-dvd.c,v
retrieving revision 1.103
diff -U3 -r1.103 player-dvd.c
--- player-dvd.c	9 Apr 2006 18:35:53 -0000	1.103
+++ player-dvd.c	13 Jun 2006 16:07:23 -0000
@@ -975,14 +975,24 @@
       uint8_t *cache_ptr = event_buf;
       int32_t event;
       int32_t len;
+	// dont kill the dvd play due to only 1 faulty read sector,
+	// make dvd reading more tolerant.
+	int l = 10;
+	int r = 0;
 
       // from here on, continue is not allowed,
       // as it would bypass dvdnav_free_cache_block
-      if (dvdnav_get_next_cache_block(nav, &cache_ptr, &event, &len) != DVDNAV_STATUS_OK) {
+	do {
+		r = dvdnav_get_next_cache_block(nav, &cache_ptr, &event, &len);
+      		if (r == DVDNAV_STATUS_OK) break;
+		l --;
+	} while ( l > 0);
+
+	if (r != DVDNAV_STATUS_OK) {
           Skins.Message(mtError, tr("Error.DVD$Error fetching data from DVD!"));
 	  running = false;
 	  break;
-      }
+	}
 
       noAudio   = playMode != pmPlay ;
 


thx,
tom schorpp

-- System Information:
Debian Release: 3.1
  APT prefers testing
  APT policy: (501, 'testing'), (101, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.16.18
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages vdr-plugin-dvd depends on:
ii  liba52-0.7.4               0.7.4-1       Library for decoding ATSC A/52 str
ii  libc6                      2.3.6-7       GNU C Library: Shared libraries
ii  libdvdnav4                 0.1.9-3       The DVD navigation library
ii  libgcc1                    1:4.1.0-4     GCC support library
ii  libstdc++5                 1:3.3.5-13    The GNU Standard C++ Library v3
ii  vdr                        1.4.0-1ctvdr2 Video Disk Recorder for DVB cards

-- no debconf information




More information about the pkg-vdr-dvb-devel mailing list