MediaFormats.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2005 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. public:
  27. protected:
  28. CString m_label, m_specreqnote;
  29. CList<CString> m_exts, m_backupexts;
  30. bool m_fAudioOnly;
  31. engine_t m_engine;
  32. public:
  33. CMediaFormatCategory();
  34. CMediaFormatCategory(
  35. CString label, CList<CString>& exts, bool fAudioOnly = false,
  36. CString specreqnote =  _T(""), engine_t e = DirectShow);
  37. CMediaFormatCategory(
  38. CString label, CString exts, bool fAudioOnly = false,
  39. CString specreqnote =  _T(""), engine_t e = DirectShow);
  40. virtual ~CMediaFormatCategory();
  41. void UpdateData(bool fSave);
  42. CMediaFormatCategory(CMediaFormatCategory& mfc);
  43. CMediaFormatCategory& operator = (const CMediaFormatCategory& mfc);
  44. void RestoreDefaultExts();
  45. void SetExts(CList<CString>& exts);
  46. void SetExts(CString exts);
  47. bool FindExt(CString ext) {return m_exts.Find(ext.TrimLeft(_T(".")).MakeLower()) != NULL;}
  48. CString GetLabel() {return m_label;}
  49. CString GetFilter();
  50. CString GetExts(bool fAppendEngine = false);
  51. CString GetExtsWithPeriod(bool fAppendEngine = false);
  52. CString GetBackupExtsWithPeriod(bool fAppendEngine = false);
  53. CString GetSpecReqNote() {return m_specreqnote;}
  54. bool IsAudioOnly() {return m_fAudioOnly;}
  55. engine_t GetEngineType() {return m_engine;}
  56. void SetEngineType(engine_t e) {m_engine = e;}
  57. };
  58. class CMediaFormats : public CArray<CMediaFormatCategory>
  59. {
  60. protected:
  61. engine_t m_iRtspHandler;
  62. bool m_fRtspFileExtFirst;
  63. public:
  64. CMediaFormats();
  65. virtual ~CMediaFormats();
  66. void UpdateData(bool fSave);
  67. engine_t GetRtspHandler(bool& fRtspFileExtFirst);
  68. void SetRtspHandler(engine_t e, bool fRtspFileExtFirst);
  69. bool IsUsingEngine(CString path, engine_t e);
  70. engine_t GetEngine(CString path);
  71. bool FindExt(CString ext, bool fAudioOnly = false);
  72. };