SoundBase.cpp
上传用户:zjb_0001
上传日期:2007-01-11
资源大小:154k
文件大小:2k
源码类别:

Audio

开发平台:

Visual C++

  1. // SoundBase.cpp: implementation of the CSoundBase class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "SoundBase.h"
  6. #ifdef _DEBUG
  7. #undef THIS_FILE
  8. static char THIS_FILE[]=__FILE__;
  9. #define new DEBUG_NEW
  10. #endif
  11. //////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. //////////////////////////////////////////////////////////////////////
  14. CSoundBase::CSoundBase()
  15. {
  16. m_Format.wFormatTag = WAVE_FORMAT_PCM;
  17. m_Format.cbSize = 0;
  18. m_BufferSize = 1000;  // samples per callback
  19. SetBitsPerSample(16);
  20. SetSamplesPerSecond(22050);
  21. SetNumberOfChannels(1);
  22. }
  23. CSoundBase::~CSoundBase()
  24. {
  25. }
  26. void CSoundBase::SetBitsPerSample(int bps)
  27. {
  28. m_Format.wBitsPerSample = bps;
  29. Update();
  30. }
  31. int CSoundBase::GetBitsPerSample()
  32. {
  33. return m_Format.wBitsPerSample;
  34. }
  35. void CSoundBase::SetSamplesPerSecond(int sps)
  36. {
  37. m_Format.nSamplesPerSec = sps;
  38. Update();
  39. }
  40. int CSoundBase::GetSamplesPerSecond()
  41. {
  42. return m_Format.nSamplesPerSec;
  43. }
  44. void CSoundBase::SetNumberOfChannels(int nchan)
  45. {
  46. m_Format.nChannels = nchan;
  47. Update();
  48. }
  49. int CSoundBase::GetNumberOfChannels()
  50. {
  51. return m_Format.nChannels;
  52. }
  53. void CSoundBase::Update()
  54. {
  55. m_Format.nAvgBytesPerSec = m_Format.nSamplesPerSec*(m_Format.wBitsPerSample/8);
  56. m_Format.nBlockAlign = m_Format.nChannels     *(m_Format.wBitsPerSample/8);
  57. }
  58. void CSoundBase::SetBufferSize(int NumberOfSamples)
  59. {
  60. m_BufferSize = NumberOfSamples;
  61. }
  62. int CSoundBase::GetBufferSize()
  63. {
  64. return m_BufferSize;
  65. }
  66. WAVEFORMATEX* CSoundBase::GetFormat()
  67. {
  68. return &m_Format;
  69. }