MediaFormats.h
上传用户:tangyu_668
上传日期:2014-02-27
资源大小:678k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2006 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. #pragma once
  22. #include <atlcoll.h>
  23. #include "BaseGraph.h"
  24. class CMediaFormatCategory
  25. {
  26. protected:
  27. CString m_label, m_specreqnote;
  28. CAtlList<CString> m_exts, m_backupexts;
  29. bool m_fAudioOnly;
  30. engine_t m_engine;
  31. public:
  32. CMediaFormatCategory();
  33. CMediaFormatCategory(
  34. CString label, CAtlList<CString>& exts, bool fAudioOnly = false,
  35. CString specreqnote =  _T(""), engine_t e = DirectShow);
  36. CMediaFormatCategory(
  37. CString label, CString exts, bool fAudioOnly = false,
  38. CString specreqnote =  _T(""), engine_t e = DirectShow);
  39. virtual ~CMediaFormatCategory();
  40. void UpdateData(bool fSave);
  41. CMediaFormatCategory(const CMediaFormatCategory& mfc);
  42. CMediaFormatCategory& operator = (const CMediaFormatCategory& mfc);
  43. void RestoreDefaultExts();
  44. void SetExts(CAtlList<CString>& exts);
  45. void SetExts(CString exts);
  46. bool FindExt(CString ext) {return m_exts.Find(ext.TrimLeft(_T(".")).MakeLower()) != NULL;}
  47. CString GetLabel() {return m_label;}
  48. CString GetFilter();
  49. CString GetExts(bool fAppendEngine = false);
  50. CString GetExtsWithPeriod(bool fAppendEngine = false);
  51. CString GetBackupExtsWithPeriod(bool fAppendEngine = false);
  52. CString GetSpecReqNote() {return m_specreqnote;}
  53. bool IsAudioOnly() {return m_fAudioOnly;}
  54. engine_t GetEngineType() {return m_engine;}
  55. void SetEngineType(engine_t e) {m_engine = e;}
  56. };
  57. class CMediaFormats : public CAtlArray<CMediaFormatCategory>
  58. {
  59. protected:
  60. engine_t m_iRtspHandler;
  61. bool m_fRtspFileExtFirst;
  62. public:
  63. CMediaFormats();
  64. virtual ~CMediaFormats();
  65. void UpdateData(bool fSave);
  66. engine_t GetRtspHandler(bool& fRtspFileExtFirst);
  67. void SetRtspHandler(engine_t e, bool fRtspFileExtFirst);
  68. bool IsUsingEngine(CString path, engine_t e);
  69. engine_t GetEngine(CString path);
  70. bool FindExt(CString ext, bool fAudioOnly = false);
  71. void GetFilter(CString& filter, CAtlArray<CString>& mask);
  72. void GetAudioFilter(CString& filter, CAtlArray<CString>& mask);
  73. };