in2.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:4k
源码类别:

Windows CE

开发平台:

C/C++

  1. #include "out.h"
  2. // note: exported symbol is now winampGetInModule2.
  3. #define IN_VER 0x100
  4. typedef struct 
  5. {
  6. int version; // module type (IN_VER)
  7. char *description; // description of module, with version string
  8. HWND hMainWindow; // winamp's main window (filled in by winamp)
  9. HINSTANCE hDllInstance; // DLL instance handle (Also filled in by winamp)
  10. char *FileExtensions; // "mp3Layer 3 MPEGmp2Layer 2 MPEGmpgLayer 1 MPEG"
  11. // May be altered from Config, so the user can select what they want
  12. int is_seekable; // is this stream seekable? 
  13. int UsesOutputPlug; // does this plug-in use the output plug-ins? (musn't ever change, ever :)
  14. void (*Config)(HWND hwndParent); // configuration dialog
  15. void (*About)(HWND hwndParent);  // about dialog
  16. void (*Init)(); // called at program init
  17. void (*Quit)(); // called at program quit
  18. void (*GetFileInfo)(char *file, char *title, int *length_in_ms); // if file == NULL, current playing is used
  19. int (*InfoBox)(char *file, HWND hwndParent);
  20. int (*IsOurFile)(char *fn); // called before extension checks, to allow detection of mms://, etc
  21. // playback stuff
  22. int (*Play)(char *fn); // return zero on success, -1 on file-not-found, some other value on other (stopping winamp) error
  23. void (*Pause)(); // pause stream
  24. void (*UnPause)(); // unpause stream
  25. int (*IsPaused)(); // ispaused? return 1 if paused, 0 if not
  26. void (*Stop)(); // stop (unload) stream
  27. // time stuff
  28. int (*GetLength)(); // get length in ms
  29. int (*GetOutputTime)(); // returns current output time in ms. (usually returns outMod->GetOutputTime()
  30. void (*SetOutputTime)(int time_in_ms); // seeks to point in stream (in ms). Usually you signal yoru thread to seek, which seeks and calls outMod->Flush()..
  31. // volume stuff
  32. void (*SetVolume)(int volume); // from 0 to 255.. usually just call outMod->SetVolume
  33. void (*SetPan)(int pan); // from -127 to 127.. usually just call outMod->SetPan
  34. // in-window builtin vis stuff
  35. void (*SAVSAInit)(int maxlatency_in_ms, int srate); // call once in Play(). maxlatency_in_ms should be the value returned from outMod->Open()
  36. // call after opening audio device with max latency in ms and samplerate
  37. void (*SAVSADeInit)(); // call in Stop()
  38. // simple vis supplying mode
  39. void (*SAAddPCMData)(void *PCMData, int nch, int bps, int timestamp); 
  40. // sets the spec data directly from PCM data
  41. // quick and easy way to get vis working :)
  42. // needs at least 576 samples :)
  43. // advanced vis supplying mode, only use if you're cool. Use SAAddPCMData for most stuff.
  44. int (*SAGetMode)(); // gets csa (the current type (4=ws,2=osc,1=spec))
  45. // use when calling SAAdd()
  46. void (*SAAdd)(void *data, int timestamp, int csa); // sets the spec data, filled in by winamp
  47. // vis stuff (plug-in)
  48. // simple vis supplying mode
  49. void (*VSAAddPCMData)(void *PCMData, int nch, int bps, int timestamp); // sets the vis data directly from PCM data
  50. // quick and easy way to get vis working :)
  51. // needs at least 576 samples :)
  52. // advanced vis supplying mode, only use if you're cool. Use VSAAddPCMData for most stuff.
  53. int (*VSAGetMode)(int *specNch, int *waveNch); // use to figure out what to give to VSAAdd
  54. void (*VSAAdd)(void *data, int timestamp); // filled in by winamp, called by plug-in
  55. // call this in Play() to tell the vis plug-ins the current output params. 
  56. void (*VSASetInfo)(int nch, int srate);
  57. // dsp plug-in processing: 
  58. // (filled in by winamp, called by input plug)
  59. // returns 1 if active (which means that the number of samples returned by dsp_dosamples
  60. // could be greater than went in.. Use it to estimate if you'll have enough room in the
  61. // output buffer
  62. int (*dsp_isactive)(); 
  63. // returns number of samples to output. This can be as much as twice numsamples. 
  64. // be sure to allocate enough buffer for samples, then.
  65. int (*dsp_dosamples)(short int *samples, int numsamples, int bps, int nch, int srate);
  66. // eq stuff
  67. void (*EQSet)(int on, char data[10], int preamp); // 0-64 each, 31 is +0, 0 is +12, 63 is -12. Do nothing to ignore.
  68. // info setting (filled in by winamp)
  69. void (*SetInfo)(int bitrate, int srate, int stereo, int synched); // if -1, changes ignored? :)
  70. Out_Module *outMod; // filled in by winamp, optionally used :)
  71. } In_Module;