]> git.sesse.net Git - vlc/blobdiff - modules/access/vcd/cdrom.h
Removes trailing spaces. Removes tabs.
[vlc] / modules / access / vcd / cdrom.h
index 945ec55ba21d9bf68351a304884d13905f9f2f48..21b3ef1af3e7ef98d14d18ddbe58a35d371b4120 100644 (file)
@@ -1,16 +1,17 @@
 /****************************************************************************
  * cdrom.h: cdrom tools header
  *****************************************************************************
- * Copyright (C) 1998-2001 VideoLAN
- * $Id: cdrom.h,v 1.1 2002/08/04 17:23:42 sam Exp $
+ * Copyright (C) 1998-2001 the VideoLAN team
+ * $Id$
  *
- * Author: Johan Bilien <jobi@via.ecp.fr>
+ * Authors: Johan Bilien <jobi@via.ecp.fr>
+ *          Gildas Bazin <gbazin@netcourrier.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
+#define CDDA_TYPE 0
+#define VCD_TYPE 1
+
 /* where the data start on a VCD sector */
 #define VCD_DATA_START 24
 /* size of the availablr data on a VCD sector */
 #define VCD_DATA_SIZE 2324
 /* size of a VCD sector, header and tail included */
 #define VCD_SECTOR_SIZE 2352
+/* size of a CD sector */
+#define CD_SECTOR_SIZE 2048
+/* sector containing the entry points */
+#define VCD_ENTRIES_SECTOR 151
+
+/* where the data start on a CDDA sector */
+#define CDDA_DATA_START 0
+/* size of the availablr data on a CDDA sector */
+#define CDDA_DATA_SIZE 2352
+/* size of a CDDA sector, header and tail included */
+#define CDDA_SECTOR_SIZE 2352
 
-/******************************************************************************
-* Prototypes                                                                  *
-******************************************************************************/
-int ioctl_GetTrackCount ( int, const char *psz_dev );
-int * ioctl_GetSectors  ( int, const char *psz_dev );
-int ioctl_ReadSector    ( int, int, byte_t * );
+/*****************************************************************************
+ * Misc. Macros
+ *****************************************************************************/
+/* LBA = msf.frame + 75 * ( msf.second + 60 * msf.minute ) */
+#define MSF_TO_LBA(min, sec, frame) ((int)frame + 75 * (sec + 60 * min))
+/* LBA = msf.frame + 75 * ( msf.second - 2 + 60 * msf.minute ) */
+#define MSF_TO_LBA2(min, sec, frame) ((int)frame + 75 * (sec -2 + 60 * min))
+/* Converts BCD to Binary data */
+#define BCD_TO_BIN(i) \
+    (uint8_t)((uint8_t)(0xf & (uint8_t)i)+((uint8_t)10*((uint8_t)i >> 4)))
+
+typedef struct vcddev_s vcddev_t;
 
+/*****************************************************************************
+ * structure to store minute/second/frame locations
+ *****************************************************************************/
+typedef struct msf_s
+{
+    uint8_t minute;
+    uint8_t second;
+    uint8_t frame;
+} msf_t;
+
+/*****************************************************************************
+ * entries_sect structure: the sector containing entry points
+ *****************************************************************************/
+typedef struct entries_sect_s
+{
+    char psz_id[8];                                 /* "ENTRYVCD" */
+    uint8_t i_version;                              /* 0x02 VCD2.0
+                                                       0x01 SVCD  */
+    uint8_t i_sys_prof_tag;                         /* 0x01 if VCD1.1
+                                                       0x00 else */
+    uint16_t i_entries_nb;                          /* entries number <= 500 */
+
+    struct
+    {
+        uint8_t i_track;                            /* track number */
+        msf_t   msf;                                /* msf location
+                                                       (in BCD format) */
+    } entry[500];
+    uint8_t zeros[36];                              /* should be 0x00 */
+} entries_sect_t;
+
+/*****************************************************************************
+ * Prototypes
+ *****************************************************************************/
+vcddev_t *ioctl_Open         ( vlc_object_t *, const char * );
+void      ioctl_Close        ( vlc_object_t *, vcddev_t * );
+int       ioctl_GetTracksMap ( vlc_object_t *, const vcddev_t *, int ** );
+int       ioctl_ReadSectors  ( vlc_object_t *, const vcddev_t *,
+                               int, byte_t *, int, int );