// // Copyright (C) Microsoft. All rights reserved. // #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #include #include using namespace ABI::Windows::Foundation; using namespace Microsoft::WRL; // @@@@ README Please check / uncheck various hash defines to enable/ disable features // MF_DEVICEMFT_ASYNCPIN_NEEDED will show how to use Asynchronous queues // MF_DEVICEMFT_DECODING_MEDIATYPE_NEEDED will show how to decode a compressed mediatype.. it supports H264 and MJPG // MF_DEVICEMFT_SET_SPHERICAL_ATTRIBUTES will set the spherical attributes // MF_DEVICEMFT_ENUM_HW_DECODERS will make the device MFT enumerate hardware decoders // //#define MF_DEVICEMFT_ADD_GRAYSCALER_ 1 #define MF_DEVICEMFT_ASYNCPIN_NEEDED 1 #define MF_DEVICEMFT_DECODING_MEDIATYPE_NEEDED 1 #define MF_DEVICEMFT_SET_SPHERICAL_ATTRIBUTES 1 //#define MF_DEVICEMFT_ENUM_HW_DECODERS 1 /*Some important notes regarding Device MFT Device MFT is an asynchronous transform that is loaded in the device source There are a few key operations that need a special mention 1) InitializeTransform: This is where the device MFT should be initialized 2) ProcessInput is where the samples are supplied to the Device MFT 3) METransformHaveOutput is how deviceMFT notifies the Device Transform Manager (DTM) in the OS to pick up samples in its queues 4) SetOutPutStreamState is where the state transition on a Device MFT will come in */