VisAudioOperation.h
上传用户:weixiumei
上传日期:2008-05-15
资源大小:1769k
文件大小:2k
开发平台:

Visual C++

  1. // VisAudioSequence.h
  2. //
  3. // Copyright  2000 Microsoft Corporation, All Rights Reserved
  4. #ifndef __VIS_CORE_AUDIO_SEQUENCE_H__
  5. #define __VIS_CORE_AUDIO_SEQUENCE_H__
  6. #if _MSC_VER >= 1000
  7. #pragma once
  8. #endif // _MSC_VER >= 1000
  9. #include <vector>
  10. enum AUDIO_OPERATION 
  11. {
  12.    AUDIO_CONST     = 0,
  13.    AUDIO_RAMP_UP   = 1,
  14.    AUDIO_RAMP_DOWN = 2
  15. };
  16. class CVisAudioOperation
  17. {
  18. public:
  19.     VisCoreExport CVisAudioOperation();
  20.     VisCoreExport ~CVisAudioOperation();
  21.     VisCoreExport UINT  NumChannels() const;
  22.     VisCoreExport INT64 Duration()    const;
  23.     VisCoreExport UINT  SampleRate()  const;
  24.     VisCoreExport UINT  NumOperands() const;
  25.     VisCoreExport BOOL  AddOperand(const CVisAudioData& data, AUDIO_OPERATION op, float fWeight);
  26.     VisCoreExport BOOL  Process(CVisAudioData& result, INT64 ilResultOffset, 
  27.                                 INT64 ilOpOffset,  INT64 ilDuration );
  28. private:
  29.     typedef struct _Operand {
  30.         AUDIO_OPERATION  m_eOp;
  31.         float m_fWeight;
  32.         CVisAudioData* m_pAudioSamples;
  33.     } Operand;
  34.     typedef std::vector<Operand> T_AudioOpVec;
  35.     T_AudioOpVec m_AudioOperands;
  36. };
  37. class CVisAudioOperationSequence
  38. {
  39. public:
  40.     VisCoreExport CVisAudioOperationSequence();
  41.     VisCoreExport ~CVisAudioOperationSequence();
  42.     
  43.     VisCoreExport void  Clear(void);
  44.     VisCoreExport INT64 Duration()  const;
  45. VisCoreExport void PushBack();
  46. //VisCoreExport void PushBack(const CVisAudioOperation& );
  47. VisCoreExport BOOL AddOperandBack(const CVisAudioData&, AUDIO_OPERATION op, float weight );
  48. VisCoreExport const CVisAudioOperation& operator[](int i) const;
  49. VisCoreExport CVisAudioOperation& operator[](int i);
  50.     //VisCoreExport BOOL Compact(void);
  51.     VisCoreExport BOOL Process(CVisAudioData& result, INT64 ilStartTime, INT64 ilDuration);
  52.     VisCoreExport BOOL ProcessAndWrite(CVisStreamHandler* pStream, INT64 ilStartTime, INT64 ilDuration,
  53.                                        INT64 ilStartInStream);
  54. private:
  55.     typedef std::vector<CVisAudioOperation*> T_AudioOpVec;
  56.    
  57.     T_AudioOpVec m_AudioOperations;
  58.     INT64        m_ilDuration;
  59. };
  60. #endif // __VIS_CORE_AUDIO_SEQUENCE_H__