diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-11-27 08:19:43 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-11-27 08:19:43 +0000 |
| commit | d4ce960b5136aafd47e60c77876e17e37b3de18a (patch) | |
| tree | 8c4f88173d36b6c54fd844f0f3f1490ab91ed049 /plugins/dfcdrom | |
| parent | 24054df7ea8081b4a4b9875344b37458ec8502a5 (diff) | |
| download | pcsxr-d4ce960b5136aafd47e60c77876e17e37b3de18a.tar.gz | |
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@38307 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins/dfcdrom')
| -rw-r--r-- | plugins/dfcdrom/cdr-linux.c | 69 | ||||
| -rw-r--r-- | plugins/dfcdrom/cdr.h | 13 |
2 files changed, 40 insertions, 42 deletions
diff --git a/plugins/dfcdrom/cdr-linux.c b/plugins/dfcdrom/cdr-linux.c index 7860e920..9ef40039 100644 --- a/plugins/dfcdrom/cdr-linux.c +++ b/plugins/dfcdrom/cdr-linux.c @@ -30,6 +30,18 @@ int initial_time = 0; pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond = PTHREAD_COND_INITIALIZER; +CacheData *cdcache; +unsigned char *cdbuffer; +int cacheaddr; + +crdata cr; + +unsigned char lastTime[3]; +int cdHandle; +pthread_t thread; +int subqread; +volatile int stopth, found, locked, playing; + long (*ReadTrackT[])() = { ReadNormal, ReadThreaded, @@ -247,7 +259,7 @@ long ReadThreaded() { unsigned char* GetBThreaded() { PRINTF("threadc %d\n", found); - if (found == 1) { found = 0; return cdbuffer; } + if (found == 1) { /*found = 0;*/ return cdbuffer; } cdbuffer = cdcache[0].cr.buf + 12; while (btoi(cdbuffer[0]) != cr.msf.cdmsf_min0 || btoi(cdbuffer[1]) != cr.msf.cdmsf_sec0 || @@ -260,31 +272,6 @@ unsigned char* GetBThreaded() { return cdbuffer; } - -// read track -// time: -// byte 0 - minute -// byte 1 - second -// byte 2 - frame -// uses bcd format -long CDRreadTrack(unsigned char *time) { - if (cdHandle < 1) { - memset(cr.buf, 0, DATA_SIZE); - return 0; - } - - PRINTF("CDRreadTrack %d:%d:%d\n", btoi(time[0]), btoi(time[1]), btoi(time[2])); - - if (UseSubQ) memcpy(lastTime, time, 3); - subqread = 0; - - cr.msf.cdmsf_min0 = btoi(time[0]); - cr.msf.cdmsf_sec0 = btoi(time[1]); - cr.msf.cdmsf_frame0 = btoi(time[2]); - - return fReadTrack(); -} - void *CdrThread(void *arg) { unsigned char curTime[3]; int i; @@ -302,12 +289,12 @@ void *CdrThread(void *arg) { PRINTF("start thc %d:%d:%d\n", curTime[0], curTime[1], curTime[2]); - for (i=0; i<CacheSize; i++) { + for (i = 0; i < CacheSize; i++) { memcpy(&cdcache[i].cr.msf, curTime, 3); - PRINTF("reading %d:%d:%d\n", crp.msf.cdmsf_min0, crp.msf.cdmsf_sec0, crp.msf.cdmsf_frame0); + PRINTF("reading %d:%d:%d\n", curTime[0], curTime[1], curTime[2]); cdcache[i].ret = ioctl(cdHandle, CDROMREADRAW, &cdcache[i].cr); - PRINTF("readed %x:%x:%x\n", crd.buf[12], crd.buf[13], crd.buf[14]); + PRINTF("readed %x:%x:%x\n", cdcache[i].cr.buf[12], cdcache[i].cr.buf[13], cdcache[i].cr.buf[14]); if (cdcache[i].ret == -1) break; curTime[2]++; @@ -329,6 +316,30 @@ void *CdrThread(void *arg) { return NULL; } +// read track +// time: +// byte 0 - minute +// byte 1 - second +// byte 2 - frame +// uses bcd format +long CDRreadTrack(unsigned char *time) { + if (cdHandle < 1) { + memset(cr.buf, 0, DATA_SIZE); + return 0; + } + + PRINTF("CDRreadTrack %d:%d:%d\n", btoi(time[0]), btoi(time[1]), btoi(time[2])); + + if (UseSubQ) memcpy(lastTime, time, 3); + subqread = 0; + + cr.msf.cdmsf_min0 = btoi(time[0]); + cr.msf.cdmsf_sec0 = btoi(time[1]); + cr.msf.cdmsf_frame0 = btoi(time[2]); + + return fReadTrack(); +} + // return readed track unsigned char *CDRgetBuffer(void) { return fGetBuffer(); diff --git a/plugins/dfcdrom/cdr.h b/plugins/dfcdrom/cdr.h index ae22f6cd..2570545c 100644 --- a/plugins/dfcdrom/cdr.h +++ b/plugins/dfcdrom/cdr.h @@ -48,24 +48,11 @@ typedef union { unsigned char buf[CD_FRAMESIZE_RAW]; } crdata; -crdata cr; - typedef struct { crdata cr; int ret; } CacheData; -CacheData *cdcache; -unsigned char *cdbuffer; -int cacheaddr; - -unsigned char lastTime[3]; -int cdHandle; -pthread_t thread; -int subqread, stopth; -int found, locked; -int playing; - long ReadNormal(); long ReadThreaded(); unsigned char* GetBNormal(); |
