annotate stream/vcd_read_darwin.h @ 27409:e2de11109139

If (has outline) blur(outline) else blur(glyph). If there is an outline, the glyph itself should not be blurred. Keeps the border between glyph and outline clear (unblurred), which is probably how it should be. Patch by Diogo Franco (diogomfranco gmail com).
author eugeni
date Thu, 07 Aug 2008 22:20:58 +0000
parents 49df679a7c1a
children 0f1b5b68af32
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 26012
diff changeset
1 #ifndef MPLAYER_VCD_READ_DARWIN_H
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 26012
diff changeset
2 #define MPLAYER_VCD_READ_DARWIN_H
26012
04f59a060070 Add missing multiple inclusion guards.
diego
parents: 25378
diff changeset
3
26184
7ee4ae1648e6 Add missing header #includes to fix 'make checkheaders'.
diego
parents: 26029
diff changeset
4 #include <stdlib.h>
7ee4ae1648e6 Add missing header #includes to fix 'make checkheaders'.
diego
parents: 26029
diff changeset
5 #include <string.h>
7ee4ae1648e6 Add missing header #includes to fix 'make checkheaders'.
diego
parents: 26029
diff changeset
6 #include <errno.h>
13842
78e5886bc211 fix build on darwin ppc
nplourde
parents: 13682
diff changeset
7 #include <sys/types.h>
26186
49df679a7c1a Add missing header #includes to fix 'make checkheaders'.
diego
parents: 26184
diff changeset
8 #include <sys/uio.h>
49df679a7c1a Add missing header #includes to fix 'make checkheaders'.
diego
parents: 26184
diff changeset
9 #include <unistd.h>
13842
78e5886bc211 fix build on darwin ppc
nplourde
parents: 13682
diff changeset
10 #include <CoreFoundation/CFBase.h>
78e5886bc211 fix build on darwin ppc
nplourde
parents: 13682
diff changeset
11 #include <IOKit/IOKitLib.h>
78e5886bc211 fix build on darwin ppc
nplourde
parents: 13682
diff changeset
12 #include <IOKit/storage/IOCDTypes.h>
78e5886bc211 fix build on darwin ppc
nplourde
parents: 13682
diff changeset
13 #include <IOKit/storage/IOCDMedia.h>
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
14 #include <IOKit/storage/IOCDMediaBSDClient.h>
23896
ae9ebf311ffd Make VCD work on little-endian macs
reimar
parents: 23895
diff changeset
15 #include "mpbswap.h"
26184
7ee4ae1648e6 Add missing header #includes to fix 'make checkheaders'.
diego
parents: 26029
diff changeset
16 #include "mp_msg.h"
26186
49df679a7c1a Add missing header #includes to fix 'make checkheaders'.
diego
parents: 26184
diff changeset
17 #include "stream.h"
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
18
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
19 //=================== VideoCD ==========================
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
20 #define CDROM_LEADOUT 0xAA
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
21
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
22 typedef struct
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
23 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
24 uint8_t sync [12];
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
25 uint8_t header [4];
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
26 uint8_t subheader [8];
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
27 uint8_t data [2324];
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
28 uint8_t spare [4];
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
29 } cdsector_t;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
30
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
31 typedef struct mp_vcd_priv_st
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
32 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
33 int fd;
25376
382aeacc771f The buffer used for pread need be aligned, but currently it got an offset 23
ulion
parents: 25375
diff changeset
34 cdsector_t buf;
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
35 dk_cd_read_track_info_t entry;
25378
f0f03ec41cd3 Only read disc info once and save it for later using.
ulion
parents: 25376
diff changeset
36 struct CDDiscInfo hdr;
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
37 CDMSF msf;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
38 } mp_vcd_priv_t;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
39
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
40 static inline void vcd_set_msf(mp_vcd_priv_t* vcd, unsigned int sect)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
41 {
23898
3a5f766397b5 Simplify and fix missing offset for Darwin vcd_get/set_msf functions
reimar
parents: 23896
diff changeset
42 vcd->msf = CDConvertLBAToMSF(sect);
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
43 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
44
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
45 static inline unsigned int vcd_get_msf(mp_vcd_priv_t* vcd)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
46 {
23898
3a5f766397b5 Simplify and fix missing offset for Darwin vcd_get/set_msf functions
reimar
parents: 23896
diff changeset
47 return CDConvertMSFToLBA(vcd->msf);
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
48 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
49
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
50 int vcd_seek_to_track(mp_vcd_priv_t* vcd, int track)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
51 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
52 struct CDTrackInfo entry;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
53
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
54 memset( &vcd->entry, 0, sizeof(vcd->entry));
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
55 vcd->entry.addressType = kCDTrackInfoAddressTypeTrackNumber;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
56 vcd->entry.address = track;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
57 vcd->entry.bufferLength = sizeof(entry);
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
58 vcd->entry.buffer = &entry;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
59
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
60 if (ioctl(vcd->fd, DKIOCCDREADTRACKINFO, &vcd->entry))
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
61 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
62 mp_msg(MSGT_STREAM,MSGL_ERR,"ioctl dif1: %s\n",strerror(errno));
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
63 return -1;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
64 }
23896
ae9ebf311ffd Make VCD work on little-endian macs
reimar
parents: 23895
diff changeset
65 vcd->msf = CDConvertLBAToMSF(be2me_32(entry.trackStartAddress));
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
66 return VCD_SECTOR_DATA*vcd_get_msf(vcd);
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
67 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
68
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
69 int vcd_get_track_end(mp_vcd_priv_t* vcd, int track)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
70 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
71 struct CDTrackInfo entry;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
72
25378
f0f03ec41cd3 Only read disc info once and save it for later using.
ulion
parents: 25376
diff changeset
73 if (track > vcd->hdr.lastTrackNumberInLastSessionLSB) {
25375
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
74 mp_msg(MSGT_OPEN, MSGL_ERR,
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
75 "track number %d greater than last track number %d\n",
25378
f0f03ec41cd3 Only read disc info once and save it for later using.
ulion
parents: 25376
diff changeset
76 track, vcd->hdr.lastTrackNumberInLastSessionLSB);
25375
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
77 return -1;
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
78 }
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
79
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
80 //read track info
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
81 memset( &vcd->entry, 0, sizeof(vcd->entry));
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
82 vcd->entry.addressType = kCDTrackInfoAddressTypeTrackNumber;
25378
f0f03ec41cd3 Only read disc info once and save it for later using.
ulion
parents: 25376
diff changeset
83 vcd->entry.address = track<vcd->hdr.lastTrackNumberInLastSessionLSB?track+1:vcd->hdr.lastTrackNumberInLastSessionLSB;
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
84 vcd->entry.bufferLength = sizeof(entry);
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
85 vcd->entry.buffer = &entry;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
86
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
87 if (ioctl(vcd->fd, DKIOCCDREADTRACKINFO, &vcd->entry))
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
88 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
89 mp_msg(MSGT_STREAM,MSGL_ERR,"ioctl dif2: %s\n",strerror(errno));
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
90 return -1;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
91 }
25378
f0f03ec41cd3 Only read disc info once and save it for later using.
ulion
parents: 25376
diff changeset
92 if (track == vcd->hdr.lastTrackNumberInLastSessionLSB)
25375
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
93 vcd->msf = CDConvertLBAToMSF(be2me_32(entry.trackStartAddress) +
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
94 be2me_32(entry.trackSize));
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
95 else
23896
ae9ebf311ffd Make VCD work on little-endian macs
reimar
parents: 23895
diff changeset
96 vcd->msf = CDConvertLBAToMSF(be2me_32(entry.trackStartAddress));
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
97 return VCD_SECTOR_DATA*vcd_get_msf(vcd);
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
98 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
99
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
100 mp_vcd_priv_t* vcd_read_toc(int fd)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
101 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
102 dk_cd_read_disc_info_t tochdr;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
103 struct CDDiscInfo hdr;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
104
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
105 dk_cd_read_track_info_t tocentry;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
106 struct CDTrackInfo entry;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
107 CDMSF trackMSF;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
108
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
109 mp_vcd_priv_t* vcd;
16547
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
110 int i, min = 0, sec = 0, frame = 0;
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
111
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
112 //read toc header
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
113 memset(&tochdr, 0, sizeof(tochdr));
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
114 tochdr.buffer = &hdr;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
115 tochdr.bufferLength = sizeof(hdr);
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
116
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
117 if (ioctl(fd, DKIOCCDREADDISCINFO, &tochdr) < 0)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
118 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
119 mp_msg(MSGT_OPEN,MSGL_ERR,"read CDROM toc header: %s\n",strerror(errno));
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
120 return NULL;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
121 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
122
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
123 //print all track info
18237
4231482179b6 Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents: 16547
diff changeset
124 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VCD_START_TRACK=%d\n", hdr.firstTrackNumberInLastSessionLSB);
4231482179b6 Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents: 16547
diff changeset
125 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VCD_END_TRACK=%d\n", hdr.lastTrackNumberInLastSessionLSB);
16547
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
126 for (i=hdr.firstTrackNumberInLastSessionLSB ; i<=hdr.lastTrackNumberInLastSessionLSB + 1; i++)
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
127 {
25375
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
128 if (i <= hdr.lastTrackNumberInLastSessionLSB) {
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
129 memset( &tocentry, 0, sizeof(tocentry));
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
130 tocentry.addressType = kCDTrackInfoAddressTypeTrackNumber;
25375
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
131 tocentry.address = i;
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
132 tocentry.bufferLength = sizeof(entry);
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
133 tocentry.buffer = &entry;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
134
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
135 if (ioctl(fd,DKIOCCDREADTRACKINFO,&tocentry)==-1)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
136 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
137 mp_msg(MSGT_OPEN,MSGL_ERR,"read CDROM toc entry: %s\n",strerror(errno));
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
138 return NULL;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
139 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
140
23896
ae9ebf311ffd Make VCD work on little-endian macs
reimar
parents: 23895
diff changeset
141 trackMSF = CDConvertLBAToMSF(be2me_32(entry.trackStartAddress));
25375
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
142 }
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
143 else
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
144 trackMSF = CDConvertLBAToMSF(be2me_32(entry.trackStartAddress)
e1884244ba98 Get end position of last track by adding its starting address with track size.
ulion
parents: 23898
diff changeset
145 + be2me_32(entry.trackSize));
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
146
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
147 //mp_msg(MSGT_OPEN,MSGL_INFO,"track %02d: adr=%d ctrl=%d format=%d %02d:%02d:%02d\n",
16547
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
148 if (i<=hdr.lastTrackNumberInLastSessionLSB)
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
149 mp_msg(MSGT_OPEN,MSGL_INFO,"track %02d: format=%d %02d:%02d:%02d\n",
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
150 (int)tocentry.address,
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
151 //(int)tocentry.entry.addr_type,
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
152 //(int)tocentry.entry.control,
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
153 (int)tocentry.addressType,
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
154 (int)trackMSF.minute,
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
155 (int)trackMSF.second,
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
156 (int)trackMSF.frame
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
157 );
16547
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
158
18237
4231482179b6 Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents: 16547
diff changeset
159 if (mp_msg_test(MSGT_IDENTIFY, MSGL_INFO))
16547
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
160 {
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
161 if (i > hdr.firstTrackNumberInLastSessionLSB)
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
162 {
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
163 min = trackMSF.minute - min;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
164 sec = trackMSF.second - sec;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
165 frame = trackMSF.frame - frame;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
166 if ( frame < 0 )
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
167 {
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
168 frame += 75;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
169 sec --;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
170 }
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
171 if ( sec < 0 )
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
172 {
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
173 sec += 60;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
174 min --;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
175 }
18237
4231482179b6 Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents: 16547
diff changeset
176 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VCD_TRACK_%d_MSF=%02d:%02d:%02d\n", i - 1, min, sec, frame);
16547
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
177 }
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
178 min = trackMSF.minute;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
179 sec = trackMSF.second;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
180 frame = trackMSF.frame;
aa15d627a00b Prints the numbers of start and end tracks and MSF length for each
gpoirier
parents: 13842
diff changeset
181 }
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
182 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
183
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
184 vcd = malloc(sizeof(mp_vcd_priv_t));
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
185 vcd->fd = fd;
25378
f0f03ec41cd3 Only read disc info once and save it for later using.
ulion
parents: 25376
diff changeset
186 vcd->hdr = hdr;
13682
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
187 vcd->msf = trackMSF;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
188 return vcd;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
189 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
190
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
191 static int vcd_read(mp_vcd_priv_t* vcd,char *mem)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
192 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
193 if (pread(vcd->fd,&vcd->buf,VCD_SECTOR_SIZE,vcd_get_msf(vcd)*VCD_SECTOR_SIZE) != VCD_SECTOR_SIZE)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
194 return 0; // EOF?
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
195
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
196 vcd->msf.frame++;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
197 if (vcd->msf.frame==75)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
198 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
199 vcd->msf.frame=0;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
200 vcd->msf.second++;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
201
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
202 if (vcd->msf.second==60)
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
203 {
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
204 vcd->msf.second=0;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
205 vcd->msf.minute++;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
206 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
207 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
208
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
209 memcpy(mem,vcd->buf.data,VCD_SECTOR_DATA);
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
210 return VCD_SECTOR_DATA;
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
211 }
aedf94d36d2a support function for vcd on darwin
nplourde
parents:
diff changeset
212
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 26012
diff changeset
213 #endif /* MPLAYER_VCD_READ_DARWIN_H */