WavTgt.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /******************************************************************************
  2. |* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3. |* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4. |* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5. |* PARTICULAR PURPOSE.
  6. |*
  7. |* Copyright 1995-2005 Nero AG. All Rights Reserved.
  8. |*-----------------------------------------------------------------------------
  9. |* PROJECT: Nero Plugin Manager Example
  10. |*
  11. |* FILE: WavTgt.h
  12. |*
  13. |* PURPOSE: Declaration file for the wave target class
  14. ******************************************************************************/
  15. #ifndef _WAV_TGT_
  16. # define _WAV_TGT_
  17. #if _MSC_VER > 1000
  18. # pragma once
  19. #endif // _MSC_VER > 1000
  20. // CStatus and CAggregatable
  21. #include "AudioBase.h"
  22. // wave format definitions
  23. #include "WavFormat.h"
  24. // Internal interfaces
  25. // {48960729-B5C6-48fb-B6A9-AF3E428F9E2B}
  26. EXTERN_GUID(IID_IWavTgtSetDlgData,
  27. 0x48960729, 0xb5c6, 0x48fb,
  28. 0xb6, 0xa9, 0xaf, 0x3e, 0x42, 0x8f, 0x9e, 0x2b);
  29. struct __declspec(uuid("48960729-B5C6-48fb-B6A9-AF3E428F9E2B"))
  30. IWavTgtSetDlgData;
  31. interface IWavTgtSetDlgData : public IUnknown
  32. {
  33. virtual SWavFormat* GetDlgData() = 0;
  34. };
  35. // CWavTgt - the wave target class
  36. class CWavTgt : public CAggregatable,
  37. public IURLHolder,
  38. public IAudioItem,
  39. public IProcess,
  40. public IAudioRawWriter,
  41. public IWavTgtSetDlgData,
  42. public IInfoWriter,
  43. public SWavCommon
  44. {
  45. // Construction/Destruction
  46. public:
  47. CWavTgt(const SWavFormat &formatSrc, IAudioComponent *pCreator)
  48. : CAggregatable (0),
  49. m_dwWrittenRAWSize (0),
  50. m_hFile (INVALID_HANDLE_VALUE),
  51. m_flags (EAuxFlags(0)),
  52. m_pCreator (pCreator),
  53. m_DlgData (formatSrc),
  54. m_bEndProcess (false)
  55. {};
  56. virtual ~CWavTgt() {};
  57. // Operations
  58. public:
  59. AGGREGATABLE_INTERFACE_MAP_BEGIN
  60. INTERFACE_ENTRY(IAudioItem)
  61. INTERFACE_ENTRY(IURLHolder)
  62. INTERFACE_ENTRY(IProcess)
  63. INTERFACE_ENTRY(IAudioRawWriter)
  64. INTERFACE_ENTRY(IWavTgtSetDlgData)
  65. INTERFACE_ENTRY(IInfoWriter)
  66. AGGREGATABLE_INTERFACE_MAP_END
  67. // IAudioItem
  68. virtual bool GetCreator(IAudioComponent** pCreator);
  69. // Bitmask of auxiliary flags
  70. virtual EAuxFlags GetAuxFlags();
  71. virtual void SetAuxFlags(EAuxFlags flags);
  72. // IURLHolder
  73. virtual bool SetURL(const char* szURL, IStatus** ppStatus);
  74. virtual const char* GetURL();
  75. virtual EURLType GetType();
  76. // IWavTgtSetDlgData
  77. SWavFormat* GetDlgData();
  78. // IProcess
  79. virtual bool Start(IStatus** ppStatus);
  80. virtual bool End(IStatus** ppStatus);
  81. virtual bool IsInProcess();
  82. // IAudioTarget
  83. virtual bool RawWrite(BYTE* pData, int iNumberOfBytesToWrite,
  84. EAudioRawState& state,
  85. IStatus** ppStatus);
  86. virtual SWavFormat GetRawFormat();
  87. // IInfoWriter
  88. virtual void SetTitle(const char* szTitle);
  89. virtual void SetArtist(const char* szArtist);
  90. virtual void SetAlbum(const char* szAlbum);
  91. virtual void SetYear(const char* szYear);
  92. virtual void SetGenre(const char* szGenre);
  93. // Data
  94. protected:
  95. CString m_csURL;
  96. int m_dwWrittenRAWSize;
  97. HANDLE m_hFile;
  98. EAuxFlags m_flags;
  99. CComPtr<IAudioComponent> m_pCreator;
  100. SWavFormat m_DlgData;
  101. bool m_bEndProcess;
  102. };
  103. #endif // _WAV_TGT