WavSrc.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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_SRC_
  16. # define _WAV_SRC_
  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. // source info dialog
  25. #include "dlg_WavSrcInfo.h"
  26. class CWavSrc : public CAggregatable,
  27. public IURLHolder,
  28. public IProcess,
  29. public IAudioItem,
  30. public IAudioSource,
  31. public IAudioRawReader,
  32. public ISeekable,
  33. public IAudioRawBlockInfo,
  34. public ISrcInfoViewerEditor,
  35. public IInfoReader,
  36. public SWavCommon
  37. {
  38. // Construction/Destruction
  39. public:
  40. CWavSrc(const char* szURL, IAudioComponent* pCreator, IStatus** ppStatus);
  41. virtual ~CWavSrc();
  42. // Operations
  43. public:
  44. AGGREGATABLE_INTERFACE_MAP_BEGIN
  45. INTERFACE_ENTRY(IURLHolder)
  46. INTERFACE_ENTRY(IAudioItem)
  47. INTERFACE_ENTRY(IProcess)
  48. INTERFACE_ENTRY(IAudioSource)
  49. INTERFACE_ENTRY(IAudioRawReader)
  50. INTERFACE_ENTRY(ISeekable)
  51. INTERFACE_ENTRY(IAudioRawBlockInfo)
  52. INTERFACE_ENTRY(ISrcInfoViewerEditor)
  53. INTERFACE_ENTRY(IInfoReader)
  54. AGGREGATABLE_INTERFACE_MAP_END
  55. // IURLHolder
  56. virtual bool SetURL(const char* szURL, IStatus** ppStatus);
  57. virtual const char* GetURL();
  58. virtual EURLType GetType();
  59. // IProcess
  60. virtual bool Start(IStatus** ppStatus);
  61. virtual bool End(IStatus** ppStatus);
  62. virtual bool IsInProcess();
  63. // IAudioItem
  64. virtual bool GetCreator(IAudioComponent** pCreator);
  65. virtual EAuxFlags GetAuxFlags();
  66. virtual void SetAuxFlags(EAuxFlags flags);
  67. // IAudioSource
  68. virtual SWavFormat GetRawFormat();
  69. // iBufSize must contain the size in bytes of the buffer pointed by pBuf.
  70. virtual bool RawRead( BYTE* pBuf, int iBufSize, int* piRead,
  71. EAudioRawState &state,
  72. IStatus** ppStatus);
  73. // Returns free-form text string about the item.
  74. virtual const char * GetInfo();
  75. // Returns the file duration in milliseconds.
  76. virtual ULONGLONG GetDuration();
  77. // Returns RAW data length in bytes.
  78. virtual ULONGLONG GetRawLen();
  79. // ISeekable
  80. virtual bool Seek(ULONGLONG pos, IStatus** ppStatus);
  81. virtual ULONGLONG GetPos();
  82. virtual ULONGLONG GetBlockSize();
  83. virtual ULONGLONG GetDataLength();
  84. // ISrcInfoViewerEditor
  85. virtual bool GetCallback(ISrcInfoCallback** ppCB);
  86. virtual void SetCallback(ISrcInfoCallback* pNewCallback);
  87. virtual bool DoModal(IStatus** ppStatus);
  88. virtual bool CloseModal(IStatus** ppStatus);
  89. virtual bool SaveDialogToObject(IStatus** ppStatus);
  90. virtual bool SaveObjectToFile(IStatus** ppStatus);
  91. virtual bool CanSaveObjectToFile();
  92. // IInfoReader
  93. virtual const char* GetTitle();
  94. virtual const char* GetArtist();
  95. virtual const char* GetAlbum();
  96. virtual const char* GetYear();
  97. virtual const char* GetGenre();
  98. virtual HRESULT ReadMMIO();
  99. // others
  100. public:
  101. virtual PCMWAVEFORMAT GetWavSrcFormat();
  102. virtual HANDLE GetFileHandle();
  103. bool IsOK() { return m_bOK; };
  104. // Data
  105. protected:
  106. CComPtr<ISrcInfoCallback> m_pCallback;
  107. CWavSrcInfoDlg* m_pAdvInfoDlg;
  108. // the object
  109. HANDLE m_hFile;
  110. bool m_bRiffChunk;
  111. bool m_bWavChunk;
  112. DWORD m_dwDataStart;
  113. // size of RAW in bytes
  114. DWORD m_dwDataLen;
  115. // current position in bytes
  116. DWORD m_dwCurPos;
  117. PCMWAVEFORMAT m_format;
  118. ULONGLONG m_qwDuration;
  119. int m_iBlockSize;
  120. CString m_csURL;
  121. // free-form text info
  122. CString m_csInfo;
  123. bool m_bOK;
  124. bool m_bStarted;
  125. CComPtr<IAudioComponent> m_pCreator;
  126. };
  127. #endif //_WAV_SRC_