mirror of
https://github.com/libretro/pcsx2.git
synced 2024-11-27 19:30:36 +00:00
ab9bdb009b
Update it to the version found at https://github.com/Microsoft/Windows-classic-samples , which is in an MIT licensed repo, and add the LICENSE file (edited to remove the SIL Open Font LICENSE part since that doesn't apply). Some modifications have been made to reduce the diff/stop git complaining (not including any file that wasn't in the previous version and removing the related header includes in streams.h, and fixing some but not all of the whitespace issues).
90 lines
2.9 KiB
C++
90 lines
2.9 KiB
C++
//------------------------------------------------------------------------------
|
|
// 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__ */
|
|
|