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