mtype.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:3k
源码类别:

P2P编程

开发平台:

Visual C++

  1. //------------------------------------------------------------------------------
  2. // File: MtType.h
  3. //
  4. // Desc: DirectShow base classes - defines a class that holds and manages
  5. //       media type information.
  6. //
  7. // Copyright (c) Microsoft Corporation.  All rights reserved.
  8. //------------------------------------------------------------------------------
  9. #ifndef __MTYPE__
  10. #define __MTYPE__
  11. /* Helper class that derived pin objects can use to compare media
  12.    types etc. Has same data members as the struct AM_MEDIA_TYPE defined
  13.    in the streams IDL file, but also has (non-virtual) functions */
  14. class CMediaType : public _AMMediaType {
  15. public:
  16.     ~CMediaType();
  17.     CMediaType();
  18.     CMediaType(const GUID * majortype);
  19.     CMediaType(const AM_MEDIA_TYPE&, HRESULT* phr = NULL);
  20.     CMediaType(const CMediaType&, HRESULT* phr = NULL);
  21.     CMediaType& operator=(const CMediaType&);
  22.     CMediaType& operator=(const AM_MEDIA_TYPE&);
  23.     BOOL operator == (const CMediaType&) const;
  24.     BOOL operator != (const CMediaType&) const;
  25.     HRESULT Set(const CMediaType& rt);
  26.     HRESULT Set(const AM_MEDIA_TYPE& rt);
  27.     BOOL IsValid() const;
  28.     const GUID *Type() const { return &majortype;} ;
  29.     void SetType(const GUID *);
  30.     const GUID *Subtype() const { return &subtype;} ;
  31.     void SetSubtype(const GUID *);
  32.     BOOL IsFixedSize() const {return bFixedSizeSamples; };
  33.     BOOL IsTemporalCompressed() const {return bTemporalCompression; };
  34.     ULONG GetSampleSize() const;
  35.     void SetSampleSize(ULONG sz);
  36.     void SetVariableSize();
  37.     void SetTemporalCompression(BOOL bCompressed);
  38.     // read/write pointer to format - can't change length without
  39.     // calling SetFormat, AllocFormatBuffer or ReallocFormatBuffer
  40.     BYTE*   Format() const {return pbFormat; };
  41.     ULONG   FormatLength() const { return cbFormat; };
  42.     void SetFormatType(const GUID *);
  43.     const GUID *FormatType() const {return &formattype; };
  44.     BOOL SetFormat(BYTE *pFormat, ULONG length);
  45.     void ResetFormatBuffer();
  46.     BYTE* AllocFormatBuffer(ULONG length);
  47.     BYTE* ReallocFormatBuffer(ULONG length);
  48.     void InitMediaType();
  49.     BOOL MatchesPartial(const CMediaType* ppartial) const;
  50.     BOOL IsPartiallySpecified(void) const;
  51. };
  52. /* General purpose functions to copy and delete a task allocated AM_MEDIA_TYPE
  53.    structure which is useful when using the IEnumMediaFormats interface as
  54.    the implementation allocates the structures which you must later delete */
  55. void WINAPI DeleteMediaType(AM_MEDIA_TYPE *pmt);
  56. AM_MEDIA_TYPE * WINAPI CreateMediaType(AM_MEDIA_TYPE const *pSrc);
  57. HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtSource);
  58. void WINAPI FreeMediaType(AM_MEDIA_TYPE& mt);
  59. //  Initialize a media type from a WAVEFORMATEX
  60. STDAPI CreateAudioMediaType(
  61.     const WAVEFORMATEX *pwfx,
  62.     AM_MEDIA_TYPE *pmt,
  63.     BOOL bSetFormat);
  64. #endif /* __MTYPE__ */