problem with a specific DVD, but xine works fine

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]<

 



I'm running Debian testing + stuff from debian-multimedia.org

I have the same problem with whatever version of older mplayer comes
with Debian testing as well DebMM's dev-SVN-r26940 and my own built
dev-SVN-r27725-4.3.2

I also have this problem on two separate computers.  Most other DVDs work fine.

The DVD in question is The DaVinci Code, Disc 1, Region 1.

What happens is, if I play with:

mplayer dvd//:1

it hangs after about 8 seconds and the kernel starts spewing messages like:

[80665.956897] hda: media error (bad sector): status=0x51 { DriveReady
SeekComplete Error }
[80665.956897] hda: media error (bad sector): error=0x30 {
LastFailedSense=0x03 }
[80665.956897] ide: failed opcode was: unknown
[80665.956897] ATAPI device hda:
[80665.956908]   Error: Medium error -- (Sense key=0x03)
[80665.956917]   (reserved error code) -- (asc=0x02, ascq=0x00)
[80665.956923]   The failed "Read 10" packet command was:
[80665.956925]   "28 00 00 03 29 50 00 00 02 00 00 00 00 00 00 00 "
[80665.956948] end_request: I/O error, dev hda, sector 828736
[80665.956958] Buffer I/O error on device hda, logical block 103592
[80673.059179] hda: media error (bad sector): status=0x51 { DriveReady
SeekComplete Error }
[80673.059179] hda: media error (bad sector): error=0x30 {
LastFailedSense=0x03 }
[80673.059179] ide: failed opcode was: unknown
[80673.119543] ATAPI device hda:
[80673.119543]   Error: Medium error -- (Sense key=0x03)
[80673.119543]   (reserved error code) -- (asc=0x02, ascq=0x00)
[80673.119543]   The failed "Read 10" packet command was:
[80673.119543]   "28 00 00 03 29 50 00 00 02 00 00 00 00 00 00 00 "
[80673.119543] end_request: I/O error, dev hda, sector 828736
[80673.119543] Buffer I/O error on device hda, logical block 103592


Running under gdb and asking for a backtrace, we get:

#0  0xb7f30424 in __kernel_vsyscall ()
#1  0xb7e15093 in __read_nocancel () from /lib/i686/cmov/libpthread.so.0
#2  0x082010e9 in libc_read (dvdcss=0x9402bb0, p_buffer=0x9402278, i_blocks=1)
    at libdvdcss/device.c:679
#3  0x08201a77 in dvdcss_read (dvdcss=0x9402bb0, p_buffer=0x9402278,
    i_blocks=1, i_flags=1) at libdvdcss/libdvdcss.c:638
#4  0x0819fe7d in DVDReadBlocks (dvd_file=0x9429c98, offset=209872,
    block_count=1, data=0x9402278 "") at libdvdread/dvd_reader.c:1256
#5  0x0819b9b7 in dvd_read_sector (d=0x9429cf8, data=0x9402278 "")
    at stream/stream_dvd.c:366
#6  0x0819bc7b in fill_buffer (s=0x9402218, but=0x9402278 "", len=2048)
    at stream/stream_dvd.c:497
#7  0x08193b2c in stream_fill_buffer (s=0x9402218) at stream/stream.c:263
#8  0x0816075d in demux_mpg_fill_buffer (demux=0x942a608, ds=0x942aef8)
    at ./stream/stream.h:137
#9  0x08139a35 in ds_fill_buffer (ds=0x942aef8) at libmpdemux/demuxer.c:428
#10 0x0813a228 in demux_read_data (ds=0x942aef8,
    mem=0x9456658 "\004?\002?Yt\020\006\213\201?020*
yK?W(]?\032?\033?\222?\205M????I?n?222???\216`\b?^\234*M0>}\r??\022??mt??Ru\r-(i\222??\225?y??+?v\223}*?234?
K??\"\223]\036\017u?|?023?k??023?_m`\235k?j?\005????m?V\035>{6?IiBO\t???|?V\02t???\222?Z\030??\016??9$?!??7?...,
len=1347) at libmpdemux/demuxer.c:527
#11 0x081d7a6e in a52_fillbuff (sh_audio=0x944ba78)
    at libmpcodecs/ad_liba52.c:84
#12 0x081d7c8a in decode_audio (sh_audio=0x944ba78,
    buf=0x9457580
"??a???w???\213???\234?????\236???\235???\235????????????????????????????\237??\230??\220??\213??\206??\202??\201??\201??\205??\214??\226?????????????\226??\212??\201??w??n??i??d??c??e??h??l??p??t??z???}???\201???\206???\212???\217???\226???"...,
minlen=8192,
    maxlen=71680) at libmpcodecs/ad_liba52.c:315
#13 0x080f814b in decode_audio (sh_audio=0x944ba78, minlen=8192)
    at libmpcodecs/dec_audio.c:383
#14 0x08088f98 in main (argc=2, argv=0xbfe4a134) at mplayer.c:2044


Anything using xine-lib (xine, codeine, kaffeine) plays this disc fine
in the same environment.

Using strace, I can watch both applications going through the CSS
keys, and reading data off of the disc.  Then at some point they
differ and mplayer tries to read a block it can't, while xine appears
to skip it and continues on it's way.


I thought that both xine and mplayer were built on top of
dvdnav/dvdread, but I can't figure out where xine called into that
library (granted I didn't spend a lot of time on it either).  A little
further seems to indicate that xine manages it's own local version of
libdvdnav?  Blast divergence.  I was hoping that this would be a
difference in how mplayer uses the library vs how xine uses the
library.  But now I wonder if it's a problem in the library instead.

I'm willing to try a variety of things and hack on this for a while if
anyone wants to throw suggestions at me.

Any help is appreciated.

mrc


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux