[Mplayer-advusers] BUG: Can't play (S)VCDs on some SCSI-drives (easy fix)
    Marc-Jano Knopp 
    mjk at rbg.informatik.tu-darmstadt.de
       
    Sat Jun 22 23:18:09 CEST 2002
    
    
  
Hello!
For someone familiar with the code, this bug should be quite
easy to fix, I think.
SYMPTOMS
  MPlayer won't play VCDs and SVCDs on some SCSI drives (properly).
  When MPlayer tries to read a (S)VCD, /var/log/messages is
  flooded with the following message:
  
    Jun 22 22:22:23 pc8 kernel: sr2: CDROM (ioctl) reports ILLEGAL REQUEST.
    Jun 22 22:22:23 pc8 kernel: UNKNOWN(0xbe) 00 00 00 00 00 00 00 01 f8 00 00 
    Jun 22 22:22:23 pc8 kernel: Current sr00:00: sense key Illegal Request
    Jun 22 22:22:23 pc8 kernel: Additional sense indicates Invalid command operation code
    Jun 22 22:22:24 pc8 kernel: sr2: CDROM (ioctl) reports ILLEGAL REQUEST.
    Jun 22 22:22:24 pc8 kernel: UNKNOWN(0xbe) 00 00 00 00 01 00 00 01 f8 00 00
    Jun 22 22:22:24 pc8 kernel: Current sr00:00: sense key Illegal Request
    Jun 22 22:22:24 pc8 kernel: Additional sense indicates Invalid command operation code
    Jun 22 22:22:24 pc8 kernel: sr2: CDROM (ioctl) reports ILLEGAL REQUEST.
    Jun 22 22:22:24 pc8 kernel: UNKNOWN(0xbe) 00 00 00 00 02 00 00 01 f8 00 00 
    Jun 22 22:22:24 pc8 kernel: Current sr00:00: sense key Illegal Request
    Jun 22 22:22:24 pc8 kernel: Additional sense indicates Invalid command operation code
    [...]
  With VCDs, there are sometimes frame drops.
  With SVCDs, there are so many frame drops that playback halts and
  MPlayer claims the system was "too slow". It isn't, though: 1 GHz
  Athlon, 640 MB, U160-SCSI, Matrox G450 with mga_vid.
  
  During the first few seconds before playback, one can see that the
  cache is filled only very slowly, roughly less than double speed
  (ca. 250 kB/sec), I would say, which is just not enough for SVCD,
  which needs double speed, I think.
REASON
  MPlayer uses the SCSI command "READ CD" (0xbe) to read (S)VCDs,
  which consist of MODE 2 / FORM 2 tracks. Although many newer
  SCSI CD-ROM drives implement this command, some don't - for
  example Plextor 12x and 32x caddy drives and TEAC 55S.
  
  Note that these drives are still fully SCSI compliant, since
  the "READ CD" command is optional in the SCSI-II specification.
SOLUTION
  MPlayer should test if the drive supports "READ CD", and if
  it doesn't, it should fall back to a normal ten-byte "READ",
  which is what "vcdxrip" (from the "vcdimager" package) uses:
  
    # vcdxrip --cdrom-device=/dev/sr2
    ioctl(): Operation not supported
       INFO: READ_CD failed; switching to READ_10 mode...
    [...]
  In MPlayer-0.90pre5/libmpdemux/vcd_read.h, there is some code that
  directly prepares SCSI commands to be sent ("#ifdef  sun"), maybe
  this piece of code can be used here for the "READ CD"-fallback, by
  using
  
    cdb.scc_cmd = 0x28;  // code for ten-byte-read
  
  instead of
  
    cdb.scc_cmd = 0xBE;
  
  and setting the block size of the CD-ROM drive appropriately to 2336.
  
  A look into the function "__read_mode2" in
  vcdimager-0.7.12/libvcd/vcd_image_linuxcd.c might help, because
  this function is quite short (50 lines) and seems to contain
  the suggested workaround.
SYSTEM
  Hardware:
  
    - 1 GHz Thunderbird on ABIT KT7A-RAID
    - 640 MB RAM (Infineon chips)
    - Adaptec AHA-3940 (2 x 2940 on one board with PCI bridge)
    
    - Plextor PX-32CSi - BUG occurs
    - Plextor PX-12CSi - BUG occurs
    - TEAC CD-R55S     - BUG occurs
    - TEAC CD-R58S     - works fine
    - Pioneer DVD-303  - works fine
    - Toshiba XM-6402B - works (ATAPI)
  Software:
  
    - GNU/Linux 2.4.18 (remnant of S.u.S.E. 7.3 :-)
    - aic7xxx_old (driver for Adaptec)
    - glibc 2.2.4
REFERENCES
  ftp://ftp.vcdimager.org/pub/vcdimager/vcdimager-0.7_UNSTABLE/vcdimager-0.7.11.tar.gz
COMMENTS
  I have 300+ CD-ROM caddies with movies, and the only caddy CD-ROM drives
  I have (and want) are Plextors - where this bug occurs...
  
Best regards and thanks for this GREAT player!
  Marc-Jano
    
    
More information about the MPlayer-advusers
mailing list