summaryrefslogtreecommitdiffstats
path: root/vcd_read_fbsd.h
diff options
context:
space:
mode:
authorarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-21 00:06:40 +0000
committerarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-21 00:06:40 +0000
commit83e2caa277f2bb9f8dea60c245fcf219a59c2dc4 (patch)
tree30dfff489c6b12d9077710a513899674137a6bb0 /vcd_read_fbsd.h
parent8238dfaadb87e44065375cc58b07cbeccf292cd1 (diff)
downloadmpv-83e2caa277f2bb9f8dea60c245fcf219a59c2dc4.tar.bz2
mpv-83e2caa277f2bb9f8dea60c245fcf219a59c2dc4.tar.xz
FreeBSD patch by Vladimir Kushnir <vkushnir@Alfacom.net>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1178 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'vcd_read_fbsd.h')
-rw-r--r--vcd_read_fbsd.h27
1 files changed, 14 insertions, 13 deletions
diff --git a/vcd_read_fbsd.h b/vcd_read_fbsd.h
index 46d6e6b59a..af8db2f50d 100644
--- a/vcd_read_fbsd.h
+++ b/vcd_read_fbsd.h
@@ -4,12 +4,13 @@
//=================== VideoCD ==========================
#define CDROM_LEADOUT 0xAA
-typedef struct {
- unsigned char unused;
- unsigned char minute;
- unsigned char second;
- unsigned char frame;
-} cdrom_msf;
+typedef struct {
+ uint8_t sync [12];
+ uint8_t header [4];
+ uint8_t subheader [8];
+ uint8_t data [2324];
+ uint8_t spare [4];
+} cdsector_t;
static struct ioc_read_toc_single_entry vcd_entry;
@@ -76,13 +77,14 @@ void vcd_read_toc(int fd){
}
}
-static char vcd_buf[VCD_SECTOR_SIZE];
+static cdsector_t vcd_buf;
static int vcd_read(int fd,char *mem){
- memcpy(vcd_buf,&vcd_entry.entry.addr.msf,sizeof(cdrom_msf));
-/* if(ioctl(fd,CDROMREADRAW,vcd_buf)==-1) return 0; */ // EOF?
-/* if(ioctl(fd,CDRIOCSETBLOCKSIZE,VCD_SECTOR_SIZE)==-1) return 0;
- if (pread(fd,vcd_buf,VCD_SECTOR_SIZE,ntohl(vcd_entry.entry.addr.lba)*VCD_SECTOR_SIZE) != VCD_SECTOR_SIZE) return 0; */ // EOF?
+ off_t offset = 0;
+ if (pread(fd,&vcd_buf,VCD_SECTOR_SIZE,vcd_get_msf()*VCD_SECTOR_SIZE)
+ != VCD_SECTOR_SIZE) return 0; // EOF?
+ offset++;
+
vcd_entry.entry.addr.msf.frame++;
if (vcd_entry.entry.addr.msf.frame==75){
vcd_entry.entry.addr.msf.frame=0;
@@ -92,8 +94,7 @@ static int vcd_read(int fd,char *mem){
vcd_entry.entry.addr.msf.minute++;
}
}
-
- memcpy(mem,&vcd_buf[VCD_SECTOR_OFFS],VCD_SECTOR_DATA);
+ memcpy(mem,vcd_buf.data,VCD_SECTOR_DATA);
return VCD_SECTOR_DATA;
}