mtype.h
资源名称:p2p_vod.rar [点击查看]
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:3k
源码类别:
P2P编程
开发平台:
Visual C++
- //------------------------------------------------------------------------------
- // File: MtType.h
- //
- // Desc: DirectShow base classes - defines a class that holds and manages
- // media type information.
- //
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------------------------
- #ifndef __MTYPE__
- #define __MTYPE__
- /* Helper class that derived pin objects can use to compare media
- types etc. Has same data members as the struct AM_MEDIA_TYPE defined
- in the streams IDL file, but also has (non-virtual) functions */
- class CMediaType : public _AMMediaType {
- public:
- ~CMediaType();
- CMediaType();
- CMediaType(const GUID * majortype);
- CMediaType(const AM_MEDIA_TYPE&, HRESULT* phr = NULL);
- CMediaType(const CMediaType&, HRESULT* phr = NULL);
- CMediaType& operator=(const CMediaType&);
- CMediaType& operator=(const AM_MEDIA_TYPE&);
- BOOL operator == (const CMediaType&) const;
- BOOL operator != (const CMediaType&) const;
- HRESULT Set(const CMediaType& rt);
- HRESULT Set(const AM_MEDIA_TYPE& rt);
- BOOL IsValid() const;
- const GUID *Type() const { return &majortype;} ;
- void SetType(const GUID *);
- const GUID *Subtype() const { return &subtype;} ;
- void SetSubtype(const GUID *);
- BOOL IsFixedSize() const {return bFixedSizeSamples; };
- BOOL IsTemporalCompressed() const {return bTemporalCompression; };
- ULONG GetSampleSize() const;
- void SetSampleSize(ULONG sz);
- void SetVariableSize();
- void SetTemporalCompression(BOOL bCompressed);
- // read/write pointer to format - can't change length without
- // calling SetFormat, AllocFormatBuffer or ReallocFormatBuffer
- BYTE* Format() const {return pbFormat; };
- ULONG FormatLength() const { return cbFormat; };
- void SetFormatType(const GUID *);
- const GUID *FormatType() const {return &formattype; };
- BOOL SetFormat(BYTE *pFormat, ULONG length);
- void ResetFormatBuffer();
- BYTE* AllocFormatBuffer(ULONG length);
- BYTE* ReallocFormatBuffer(ULONG length);
- void InitMediaType();
- BOOL MatchesPartial(const CMediaType* ppartial) const;
- BOOL IsPartiallySpecified(void) const;
- };
- /* General purpose functions to copy and delete a task allocated AM_MEDIA_TYPE
- structure which is useful when using the IEnumMediaFormats interface as
- the implementation allocates the structures which you must later delete */
- void WINAPI DeleteMediaType(AM_MEDIA_TYPE *pmt);
- AM_MEDIA_TYPE * WINAPI CreateMediaType(AM_MEDIA_TYPE const *pSrc);
- HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtSource);
- void WINAPI FreeMediaType(AM_MEDIA_TYPE& mt);
- // Initialize a media type from a WAVEFORMATEX
- STDAPI CreateAudioMediaType(
- const WAVEFORMATEX *pwfx,
- AM_MEDIA_TYPE *pmt,
- BOOL bSetFormat);
- #endif /* __MTYPE__ */