Microsoft DirectShow
DirectShow (DS, DShow, Quartz) je multimediální framework od firmy Microsoft, který se stal nástupcem frameworku Video for Windows (VfW).
Vývojář | Microsoft |
---|---|
Typ softwaru | multimediální framework |
Některá data mohou pocházet z datové položky. |
Je založen na objektovém modelu COM. Moduly pro tento framework jsou tři typy filtrů – zdrojové, transformační a renderovací. Oproti VfW má mnohé výhody, např. možnost automatické konverze barevných modelů. Pro vývoj je nutno nainstalovat příslušné SDK (dnes součást Windows SDK, dříve v DirectX SDK). Framework je zpětně kompatibilní se svým předchůdcem VfW, jehož kodeky jsou zde obaleny filtrem AVI Decompressor. Součástí SDK je mimo jiné také nástroj GraphEdit, který umožňuje poskládat renderovací graf pomocí myši. Microsoft jej dnes označuje za zastaralý ve prospěch Media Foundation ze systému Windows Vista.
Ukázka
Kostra dekodéru videa (transformační filtr):
class CDBVDecoder: public CVideoTransformFilter, public IDBVDecoder
{
public:
static CUnknown *WINAPI CreateInstance(LPUNKNOWN punk, HRESULT *phr);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
DECLARE_IUNKNOWN;
CDBVDecoder(LPUNKNOWN punk, HRESULT *phr);
HRESULT CheckInputType(const CMediaType *mtIn);
HRESULT GetMediaType(int iPos, CMediaType *pmt);
HRESULT SetMediaType(PIN_DIRECTION direction, const CMediaType *pmt);
HRESULT CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut);
HRESULT DecideBufferSize(IMemAllocator *pima, ALLOCATOR_PROPERTIES *pProperties);
HRESULT Transform(IMediaSample *pIn, IMediaSample *pOut);
};