1 //----------------------------------------------------------------------------- 2 // 3 // File: QCDModInput.h 4 // 5 // About: Input plugin module interface. This file is published with the 6 // Input plugin SDK. 7 // 8 // Authors: Written by Paul Quinn and Richard Carlson. 9 // 10 // Copyright: 11 // 12 // QCD multimedia player application Software Development Kit Release 1.0. 13 // 14 // Copyright (C) 1997-2002 Quinnware 15 // 16 // This code is free. If you redistribute it in any form, leave this notice 17 // here. 18 // 19 // This program is distributed in the hope that it will be useful, 20 // but WITHOUT ANY WARRANTY; without even the implied warranty of 21 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 22 // 23 //----------------------------------------------------------------------------- 24 25 #ifndef QCDMODINPUT_H 26 #define QCDMODINPUT_H 27 28 #include "QCDModDefs.h" 29 30 // name of the DLL export for input plugins 31 #define INPUTDLL_ENTRY_POINT QInputModule2 // (updated plugin api version 240+) 32 33 // media insert flags 34 #define MEDIAINSERT_PLAY 0x1 35 #define MEDIAINSERT_ADDTRACKS 0x2 36 #define MEDIAINSERT_ADDSEGMENTS 0x4 37 #define MEDIAINSERT_CLEARPLAYLIST 0x8 38 39 // Stop will receive one of these flags (pass to output plugin's stop()) 40 #define STOPFLAG_FORCESTOP 0 // stop occuring due to user action or other event 41 #define STOPFLAG_PLAYDONE 1 // stop occuring due to playlist completion 42 43 // play flags 44 #define PLAYFLAG_PLAYBACK 0x0 45 #define PLAYFLAG_ENCODING 0x1 46 #define PLAYFLAG_SEEKING 0x2 47 48 // Wave Marker flags 49 #define WAVE_VIS_DATA_ONLY -1 // set to WaveDataStruct.markerstart in OutputWrite() call have data only go to vis 50 // and not to output plugin 51 // pause flags 52 #define PAUSE_DISABLED 0 // Pause() call is to unpause playback 53 #define PAUSE_ENABLED 1 // Pause() call is to pause playback 54 55 //----------------------------------------------------------------------------- 56 // Input Module 57 //----------------------------------------------------------------------------- 58 typedef struct 59 { 60 unsigned int size; // size of init structure 61 unsigned int version; // plugin structure version (set to PLUGIN_API_VERSION) 62 PluginServiceFunc Service; // player supplied services callback 63 64 struct 65 { 66 void (*PositionUpdate)(unsigned int position); 67 void (*PlayStopped)(const char* medianame); // notify player of play stop 68 void (*PlayStarted)(const char* medianame); // notify player of play start 69 void (*PlayPaused)(const char* medianame, int flags); // notify player of play pause 70 void (*PlayDone)(const char* medianame); // notify player when play done 71 void (*PlayTrackChanged)(const char* medianame); // notify player when playing track changes (cd audio relevant only) 72 void (*MediaEjected)(const char* medianame); // notify player of media eject (cd audio relevant) 73 void (*MediaInserted)(const char* medianame, int flags); // notify player of media insert (cd audio relevant) 74 75 // output plugin calls 76 int (*OutputOpen)(const char* medianame, WAVEFORMATEX*); // open output for wave data 77 int (*OutputWrite)(WriteDataStruct*); // send PCM audio data to output 78 // (blocks until write completes, thus if output is paused can 79 // block until unpaused) 80 int (*OutputDrain)(int flags); // wait for all output to complete (blocking) 81 int (*OutputDrainCancel)(int flags); // break a drain in progress 82 int (*OutputFlush)(unsigned int marker); // flush output upto marker 83 int (*OutputStop)(int flags); // stop output 84 int (*OutputPause)(int flags); // pause output 85 86 int (*OutputSetVol)(int levelleft, int levelright, int flags); 87 int (*OutputGetCurrentPosition)(unsigned int *position, int flags); 88 89 void *Reserved[10]; 90 } toPlayer; 91 92 struct 93 { 94 int (*Initialize)(QCDModInfo *modInfo, int flags); // initialize plugin 95 void (*ShutDown)(int flags); // shutdown plugin 96 97 int (*Play)(const char* medianame, int playfrom, int playto, int flags); // start playing playfrom->playto 98 int (*Stop)(const char* medianame, int flags); // stop playing 99 int (*Pause)(const char* medianame, int flags); // pause playback 100 int (*Eject)(const char* medianame, int flags); // eject media 101 void (*SetEQ)(EQInfo*); // update EQ settings 102 103 int (*GetMediaSupported)(const char* medianame, MediaInfo *mediaInfo); // does plugin support medianame (and provides info for media) 104 int (*GetTrackExtents)(const char* medianame, TrackExtents *ext, int flags); // get media start, end & units 105 int (*GetCurrentPosition)(const char* medianame, long *track, long *offset); // get playing media's position 106 107 void (*Configure)(int flags); // launch configuration 108 void (*About)(int flags); // launch about info 109 110 void (*SetVolume)(int levelleft, int levelright, int flags); // level 0 - 100 111 112 void *Reserved[10]; 113 } toModule; 114 115 } QCDModInitIn; 116 117 #endif //QCDMODINPUT_H 118