cdrom.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:4k
源码类别:

midi

开发平台:

Unix_Linux

  1. /****************************************************************************
  2.  * cdrom.h: cdrom tools header
  3.  *****************************************************************************
  4.  * Copyright (C) 1998-2001 the VideoLAN team
  5.  * $Id: 9800918b8b1571f9af12de1b23cb59623f6ac583 $
  6.  *
  7.  * Authors: Johan Bilien <jobi@via.ecp.fr>
  8.  *          Gildas Bazin <gbazin@netcourrier.com>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  23.  *****************************************************************************/
  24. #define CDDA_TYPE 0
  25. #define VCD_TYPE 1
  26. /* where the data start on a VCD sector */
  27. #define VCD_DATA_START 24
  28. /* size of the availablr data on a VCD sector */
  29. #define VCD_DATA_SIZE 2324
  30. /* size of a VCD sector, header and tail included */
  31. #define VCD_SECTOR_SIZE 2352
  32. /* size of a CD sector */
  33. #define CD_SECTOR_SIZE 2048
  34. /* sector containing the entry points */
  35. #define VCD_ENTRIES_SECTOR 151
  36. /* where the data start on a CDDA sector */
  37. #define CDDA_DATA_START 0
  38. /* size of the availablr data on a CDDA sector */
  39. #define CDDA_DATA_SIZE 2352
  40. /* size of a CDDA sector, header and tail included */
  41. #define CDDA_SECTOR_SIZE 2352
  42. /*****************************************************************************
  43.  * Misc. Macros
  44.  *****************************************************************************/
  45. /* LBA = msf.frame + 75 * ( msf.second + 60 * msf.minute ) */
  46. #define MSF_TO_LBA(min, sec, frame) ((int)frame + 75 * (sec + 60 * min))
  47. /* LBA = msf.frame + 75 * ( msf.second - 2 + 60 * msf.minute ) */
  48. #define MSF_TO_LBA2(min, sec, frame) ((int)frame + 75 * (sec -2 + 60 * min))
  49. /* Converts BCD to Binary data */
  50. #define BCD_TO_BIN(i) 
  51.     (uint8_t)((uint8_t)(0xf & (uint8_t)i)+((uint8_t)10*((uint8_t)i >> 4)))
  52. typedef struct vcddev_s vcddev_t;
  53. /*****************************************************************************
  54.  * structure to store minute/second/frame locations
  55.  *****************************************************************************/
  56. typedef struct msf_s
  57. {
  58.     uint8_t minute;
  59.     uint8_t second;
  60.     uint8_t frame;
  61. } msf_t;
  62. /*****************************************************************************
  63.  * entries_sect structure: the sector containing entry points
  64.  *****************************************************************************/
  65. typedef struct entries_sect_s
  66. {
  67.     char psz_id[8];                                 /* "ENTRYVCD" */
  68.     uint8_t i_version;                              /* 0x02 VCD2.0
  69.                                                        0x01 SVCD  */
  70.     uint8_t i_sys_prof_tag;                         /* 0x01 if VCD1.1
  71.                                                        0x00 else */
  72.     uint16_t i_entries_nb;                          /* entries number <= 500 */
  73.     struct
  74.     {
  75.         uint8_t i_track;                            /* track number */
  76.         msf_t   msf;                                /* msf location
  77.                                                        (in BCD format) */
  78.     } entry[500];
  79.     uint8_t zeros[36];                              /* should be 0x00 */
  80. } entries_sect_t;
  81. /*****************************************************************************
  82.  * Prototypes
  83.  *****************************************************************************/
  84. vcddev_t *ioctl_Open         ( vlc_object_t *, const char * );
  85. void      ioctl_Close        ( vlc_object_t *, vcddev_t * );
  86. int       ioctl_GetTracksMap ( vlc_object_t *, const vcddev_t *, int ** );
  87. int       ioctl_ReadSectors  ( vlc_object_t *, const vcddev_t *,
  88.                                int, uint8_t *, int, int );
  89. /* CDDA only
  90.  * The track 0 is for album meta data */
  91. int       ioctl_GetCdText( vlc_object_t *, const vcddev_t *,
  92.                            vlc_meta_t ***ppp_tracks, int *pi_tracks );