]> git.sesse.net Git - vlc/blobdiff - modules/access/vcd/cdrom.c
* access2: added shortcuts for vcd/svcd.
[vlc] / modules / access / vcd / cdrom.c
index 5c04bd1a587abfa030af8d7f6e993823e2981876..0c347e676119f0ad3437c343cac70ffd4d464f25 100644 (file)
@@ -2,7 +2,7 @@
  * cdrom.c: cdrom tools
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: cdrom.c,v 1.12 2003/05/22 12:00:57 gbazin Exp $
+ * $Id: cdrom.c,v 1.14 2003/08/09 19:14:16 gbazin Exp $
  *
  * Authors: Johan Bilien <jobi@via.ecp.fr>
  *          Gildas Bazin <gbazin@netcourrier.com>
@@ -688,8 +688,21 @@ int ioctl_ReadSectors( vlc_object_t *p_this, const vcddev_t *p_vcddev,
                                  VCD_SECTOR_SIZE * i_nb, &dwBytesReturned,
                                  NULL ) == 0 )
             {
-                if( i_type == VCD_TYPE ) free( p_block );
-                return -1;
+                if( i_type == VCD_TYPE )
+                {
+                    /* Retry in YellowMode2 */
+                    cdrom_raw.TrackMode = YellowMode2;
+                    if( DeviceIoControl( p_vcddev->h_device_handle,
+                                 IOCTL_CDROM_RAW_READ, &cdrom_raw,
+                                 sizeof(RAW_READ_INFO), p_block,
+                                 VCD_SECTOR_SIZE * i_nb, &dwBytesReturned,
+                                 NULL ) == 0 )
+                    {
+                        free( p_block );
+                        return -1;
+                    }
+                }
+                else return -1;
             }
         }