CMixerThread.h
上传用户:snevogroup
上传日期:2008-06-06
资源大小:432k
文件大小:2k
源码类别:

Symbian

开发平台:

C/C++

  1. #ifndef __CMIXERTHREAD_H
  2. #define __CMIXERTHREAD_H
  3. #include "TAudioShared.h"
  4. #include <E32Base.h>
  5. #include <mdaaudiooutputStream.h>
  6. #include <mdacommonaudio.h>
  7. class CMixerThread : CBase, MMdaAudioOutputStreamCallback
  8. {
  9. // Construct and destruct 
  10. public:
  11. static TInt ThreadFunction( TAny* aData); // Thread entry point
  12. ~CMixerThread();
  13. private:
  14. CMixerThread(TAny* aData);
  15. TInt Construct();
  16. void ConstructL();
  17. //////////////////////////////////////////////////////////////////////
  18. // Other Method
  19. private:
  20. static CMixerThread* Create(TAny* aData);
  21. static void ExcHandler(TExcType aExc);
  22. void HandleException(TExcType aExc);
  23. void StartMixer();
  24. void StopMixer();
  25. // MMdaAudioOutputStreamCallback
  26. void MaoscPlayComplete( TInt aError );
  27. void MaoscBufferCopied( TInt aError, const TDesC8& aBuffer );
  28. void MaoscOpenComplete( TInt aError );
  29. //
  30. void FillBuffer();
  31. //////////////////////////////////////////////////////////////////////
  32. // Data
  33. private:
  34. CTrapCleanup* iCleanupStack;
  35. CActiveScheduler* iActiveScheduler;
  36. CMdaAudioOutputStream* iStream;
  37. TMdaAudioDataSettings iSet;
  38. TInt16* iBuffer; // buffer to CMdaAudioOutput
  39. TInt* iMixBuffer; // 32-bit buffer to mixing
  40. TPtrC8 iBufferPtr; // pointer to iBuffer
  41. TInt iError; // contains CMdaAudioOutput errors
  42. TAudioShared& iShared; // reference to shared data with client
  43. TInt16* iAudioData[ KMaxChannels ]; // current sample data pointers
  44. TInt iAudioPos[ KMaxChannels ]; // These are shifted by KAudioShift
  45. TInt iAudioEnd[ KMaxChannels ];
  46. TInt iRepStart[ KMaxChannels ];
  47. TInt iRepEnd[ KMaxChannels ];
  48. };
  49. #endif