soundtest.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:3k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* vi:set ts=8 sw=8:
  2.  *
  3.  * soundtest.h: A quick program to test the sound device API.
  4.  *
  5.  * Leo L. Schwab 2003.07.08
  6.  */
  7. #ifndef __OASOUNDTEST_H
  8. #define __OASOUNDTEST_H
  9. #ifndef __OPAPPVIEW_H
  10. #include <OpApplication.h>
  11. #endif
  12. #ifndef __OPSOUND_H
  13. #include <op_sound.h>
  14. #endif
  15. #include <stdio.h>
  16. #define CMD_TEST 31337
  17. #define CMD_BEEPDONE 31338
  18. #define CMD_PLAY 31339
  19. struct WAVEHeader        
  20. {
  21.         char  ckID[4];             /* chunk id 'RIFF'            */
  22.         U32 ckSize;              /* chunk size                 */
  23.         char  wave_ckID[4];        /* wave chunk id 'WAVE'       */
  24.         char  fmt_ckID[4];         /* format chunk id 'fmt '     */
  25.         U32 fmt_ckSize;          /* format chunk size          */
  26.         U16  formatTag;           /* format tag currently pcm   */
  27.         U16  nChannels;           /* number of channels         */
  28.         U32 nSamplesPerSec;      /* sample rate in hz          */
  29.         U32 nAvgBytesPerSec;     /* average bytes per second   */
  30.         U16  nBlockAlign;         /* number of bytes per sample */
  31.         U16  nBitsPerSample;      /* number of bits in a sample */
  32.         char  data_ckID[4];        /* data chunk id 'data'       */
  33.         U32 data_ckSize;         /* length of data chunk       */
  34. };
  35. class OaSoundTest : public OpApplication
  36. {
  37. public:
  38. static OpApplication *Create (void);
  39. OpCmdEvent *fDoneEvent;
  40. void beepdone (void);
  41. void fillBuffer (void);
  42. protected:
  43. virtual bool onEvent (OpEvent &evt);
  44. virtual bool onAppEvent (OpAppEvent::Msg msg,
  45.             OpEvent &evt);
  46. private:
  47. /*  ctor/dtor are private; use Create().  */
  48. OaSoundTest (U16CPU flags = 0);
  49. OaSoundTest (const OaSoundTest &copy);
  50. virtual ~OaSoundTest ();
  51. void init (void);
  52. void uninit (void);
  53. void testbeep (void);
  54. void Play (void);
  55. void Stop (void);
  56. void Pause (void);
  57. void Resume (void);
  58. void writedata (void);
  59. void Open(int nChannels, int nSamplesPerSec, int nBitsPerSample);
  60. void Close();
  61. void ReadBuf (void);
  62. op_sound_handle *fSndDev; // Device's audio channel, used for all calls to Openwave's API
  63. op_sound_buffer fSndBuf[2]; // Sound sample bufer descriptor, used for writing data to the device
  64. //op_sound_buffer fSndBuf2; // Sound sample bufer descriptor, used for writing data to the device
  65. bool m_bWriteDone;
  66. FILE *m_fp;
  67. WAVEHeader m_wh;
  68. int m_totalBytesRead;
  69. int m_totalBytesWritten;
  70. int m_nCurBuf;
  71. unsigned char *bigbuf;
  72. typedef OpApplication INHERITED;
  73. enum PlayMode
  74. {
  75. kUninitializedMode,
  76. kInitializedMode,
  77. kPlayingMode,
  78. kPausedMode,
  79. kStoppedMode
  80. };
  81. PlayMode   fPlayMode;
  82. void setPlayMode(PlayMode mode);
  83. PlayMode getPlayMode() const { return fPlayMode; }
  84. void populateSoftKeys(PlayMode mode);
  85. };
  86. #endif /*  __OASOUNDTEST_H  */