aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_cdda/WindacPlay.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/Input/in_cdda/WindacPlay.h')
-rw-r--r--Src/Plugins/Input/in_cdda/WindacPlay.h77
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