annotate stream/vcd_read_darwin.h @ 29699:3819fcdeaaf8

lavf: if seeking in the desired direction failed, also try in the opposite one, otherwise we might end up at some random position (where lavf last ended up while trying to build the index).
author reimar
date Wed, 30 Sep 2009 08:19:49 +0000
parents 0f1b5b68af32
children b4cbeff5153e
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;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
59
13682
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;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
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 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
79
13682
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;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
86
13682
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;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
104
13682
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;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
108
13682
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;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
111
13682
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);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
116
13682
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 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
122
13682
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 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
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));
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
146
13682
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 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
183
13682
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++;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
201
13682
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 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 26186
diff changeset
208
13682
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 */