123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- //------------------------------------------------------------------------------
- // File: MtType.h
- //
- // Desc: DirectShow base classes - defines a class that holds and manages
- // media type information.
- //
- // Copyright (c) 1992-2001 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&, __out_opt HRESULT* phr = NULL);
- CMediaType(const CMediaType&, __out_opt 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(__in_bcount(length) 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(__inout_opt AM_MEDIA_TYPE *pmt);
- AM_MEDIA_TYPE * WINAPI CreateMediaType(AM_MEDIA_TYPE const *pSrc);
- HRESULT WINAPI CopyMediaType(__out AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtSource);
- void WINAPI FreeMediaType(__inout AM_MEDIA_TYPE& mt);
- // Initialize a media type from a WAVEFORMATEX
- STDAPI CreateAudioMediaType(
- const WAVEFORMATEX *pwfx,
- __out AM_MEDIA_TYPE *pmt,
- BOOL bSetFormat);
- #endif /* __MTYPE__ */
|