diff options
Diffstat (limited to 'Src/Plugins/Input/in_cdda/WindacPlay.h')
-rw-r--r-- | Src/Plugins/Input/in_cdda/WindacPlay.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_cdda/WindacPlay.h b/Src/Plugins/Input/in_cdda/WindacPlay.h new file mode 100644 index 00000000..da06308b --- /dev/null +++ b/Src/Plugins/Input/in_cdda/WindacPlay.h @@ -0,0 +1,77 @@ +#ifndef NULLSOFT_WINDACPLAYH +#define NULLSOFT_WINDACPLAYH + +#include "Main.h" +#include "CDPlay.h" +#include "windac/Dac32.h" +#include "../nu/AutoLock.h" + +using namespace Nullsoft::Utility; +class WindacPlay : public C_CDPlay +{ +public: + WindacPlay(); + ~WindacPlay(); + int open(wchar_t drive, int track); + int play(wchar_t drive, int track); + static DWORD WINAPI threadProc(LPVOID lpParameter) + { + WindacPlay *wp = (WindacPlay *)lpParameter; + return wp->threadProc2(); + } + + int read(char *dest, int len, int *killswitch); + int threadProc2(); + void stop(); + void pause() + { + line.outMod->Pause(1); + } + void unpause() + { + line.outMod->Pause(0); + } + int getlength() + { + return g_playlength; + } + int getoutputtime() + { + return line.outMod->GetOutputTime(); + } + void setoutputtime(int time_in_ms) + { + need_seek = time_in_ms; + } + void setvolume(int _a_v, int _a_p) + { + line.outMod->SetVolume(_a_v); + line.outMod->SetPan(_a_p); + } + +private: + void getTrackInfos(int *drivenum, char driveletter); + unsigned char *sbuf; + long bytes_in_sbuf; + int buf_size; + int start, end; + int g_nch, g_srate, g_bps; + int killswitch; + HANDLE hThread; + int decode_pos_ms; + int need_seek; + + BOOL inited; + + CMapDrive *m_pMapDrive; + CSCSICD *scsi; + TDriveInfo drive_info; + CCDAdress start_sector, current_sector, end_sector; + int slength; + + DWORD last_eject_scan; + + bool needsToClose; +}; + +#endif
\ No newline at end of file |