Headers diff for evr.dll between 6.3.9600.17415-Windows 8.1 and 10.0.10586.71-Windows 10 1511 10586.494 versions



 evr.h (6.3.9600.17415-Windows 8.1)   evr.h (10.0.10586.71-Windows 10 1511 10586.494) 
/* this ALWAYS GENERATED file contains the definitions for the interfaces */ /* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 8.00.0603 */ /* File created by MIDL compiler version 8.00.0613 */
/* @@MIDL_FILE_HEADING( ) */ /* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough to compile this file*/ /* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__ #ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500 #define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif #endif
/* verify that the <rpcsal.h> version is high enough to compile this file*/ /* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__ #ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100 #define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif #endif
#include "rpc.h" #include "rpc.h"
#include "rpcndr.h" #include "rpcndr.h"
#ifndef __RPCNDR_H_VERSION__ #ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h> #error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__ #endif /* __RPCNDR_H_VERSION__ */
#ifndef COM_NO_WINDOWS_H #ifndef COM_NO_WINDOWS_H
#include "windows.h" #include "windows.h"
#include "ole2.h" #include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/ #endif /*COM_NO_WINDOWS_H*/
#ifndef __evr_h__ #ifndef __evr_h__
#define __evr_h__ #define __evr_h__
#if defined(_MSC_VER) && (_MSC_VER >= 1020) #if defined(_MSC_VER) && (_MSC_VER >= 1020)
 End of changes. 3 change blocks. 
4 lines changed or deleted 2 lines changed or added


 mfapi.h (6.3.9600.17415-Windows 8.1)   mfapi.h (10.0.10586.71-Windows 10 1511 10586.494) 
skipping to change at line 574 skipping to change at line 574
#define MF_1_BYTE_ALIGNMENT 0x00000000 #define MF_1_BYTE_ALIGNMENT 0x00000000
#define MF_2_BYTE_ALIGNMENT 0x00000001 #define MF_2_BYTE_ALIGNMENT 0x00000001
#define MF_4_BYTE_ALIGNMENT 0x00000003 #define MF_4_BYTE_ALIGNMENT 0x00000003
#define MF_8_BYTE_ALIGNMENT 0x00000007 #define MF_8_BYTE_ALIGNMENT 0x00000007
#define MF_16_BYTE_ALIGNMENT 0x0000000f #define MF_16_BYTE_ALIGNMENT 0x0000000f
#define MF_32_BYTE_ALIGNMENT 0x0000001f #define MF_32_BYTE_ALIGNMENT 0x0000001f
#define MF_64_BYTE_ALIGNMENT 0x0000003f #define MF_64_BYTE_ALIGNMENT 0x0000003f
#define MF_128_BYTE_ALIGNMENT 0x0000007f #define MF_128_BYTE_ALIGNMENT 0x0000007f
#define MF_256_BYTE_ALIGNMENT 0x000000ff #define MF_256_BYTE_ALIGNMENT 0x000000ff
#define MF_512_BYTE_ALIGNMENT 0x000001ff #define MF_512_BYTE_ALIGNMENT 0x000001ff
#define MF_1024_BYTE_ALIGNMENT 0x000003ff
#define MF_2048_BYTE_ALIGNMENT 0x000007ff
#define MF_4096_BYTE_ALIGNMENT 0x00000fff
#define MF_8192_BYTE_ALIGNMENT 0x00001fff
STDAPI MFCreateAlignedMemoryBuffer( STDAPI MFCreateAlignedMemoryBuffer(
_In_ DWORD cbMaxLength, _In_ DWORD cbMaxLength,
_In_ DWORD cbAligment, _In_ DWORD cbAligment,
_Out_ IMFMediaBuffer ** ppBuffer ); _Out_ IMFMediaBuffer ** ppBuffer );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
skipping to change at line 873 skipping to change at line 877
// //
STDAPI MFCreateSample( _Out_ IMFSample **ppIMFSample ); STDAPI MFCreateSample( _Out_ IMFSample **ppIMFSample );
// //
// Sample attributes // Sample attributes
// These are the well-known attributes that can be present on an MF Sample's // These are the well-known attributes that can be present on an MF Sample's
// IMFAttributes store // IMFAttributes store
// //
//@@MFSampleExtension_MaxDecodeFrameSize
/// <summary>
// {D3CC654F-F9F3-4A13-889F-F04EB2B5B957} MFSampleExtension_MaxDecodeFrameSize
{UINT64 (HI32(Width),LO32(Height))}
// specify the maxiumum resolution of compressed input bitstream,
// the decoder shall decode any comressed pictures below the specified maximum r
esolution
// any input compressed pictures beyond the maximum resolution shall not be deco
ded and dropped by the decoder
// the attribute shall be set on input sample
/// </summary>
DEFINE_GUID(MFSampleExtension_MaxDecodeFrameSize,
0xd3cc654f, 0xf9f3, 0x4a13, 0x88, 0x9f, 0xf0, 0x4e, 0xb2, 0xb5, 0xb9, 0x57);
//@@MFSampleExtension_AccumulatedNonRefPicPercent
/// <summary>
// {79EA74DF-A740-445B-BC98-C9ED1F260EEE} MFSampleExtension_AccumulatedNonRefPic
Percent
// Type: UINT32
// specify the percentage of accumulated non-reference pictures up to this outpu
t sample in decoding order
// The most common examples are,
// 1. if the sequence has the GOP structure of IPPPP......, the value will be
0
// 2. if the sequence has the GOP structure of IPBPB......, the percentage wil
l be around 40%~50%. The value is 40~50.
// 3. if the sequence has the GOP structure of IPBBPBB......, the percentage wil
l be around 50%~66%. The value is 50~60.
// where B frames are not used for reference.
// This is some statistic to application or pipeline whether decoder alone can h
ave graceful degradation on quality management
// In the above example,
// 1. Decoder alone can't have graceful quality management. Because it can only
have full frame rate or 1/15 of full frame rate when GOP size is 15 frames or 1/
30 when GOP size is 30 frames
// 2. Decoder alone can have quality management. Because it can have full fram
e rate or 1/2 of full frame rate or 1/GOPSize
// 2. Decoder alone can have quality management. Because it can have full fram
e rate, or down to 1/3 of full frame rate or 1/GOPSize
// the attribute could be set on output sample from decoders
/// </summary>
// {79EA74DF-A740-445B-BC98-C9ED1F260EEE}
DEFINE_GUID(MFSampleExtension_AccumulatedNonRefPicPercent,
0x79ea74df, 0xa740, 0x445b, 0xbc, 0x98, 0xc9, 0xed, 0x1f, 0x26, 0xe, 0xee);
// Attributes for HW-DRM support
//@@MFSampleExtension_Encryption_SubSample_Mapping
/// <summary>
/// The data blob associated with this attribute should contain an array of byte
/// ranges as DWORDs where every two DWORDs make a set. The first DWORD in each
set
/// is the number of clear bytes and the second DWORD of the set is the number o
f
/// encrypted bytes.
/// Note that a pair of 0s is not a valid set (either value can be 0, but not bo
th).
/// The array of byte ranges that indicate which ranges to decrypt, including th
e
/// possibility that the entire sample should NOT be decrypted.
/// It must be set on an IMFSample using SetBlob
/// </summary>
DEFINE_GUID(MFSampleExtension_Encryption_SubSample_Mapping,
0x8444F27A, 0x69A1, 0x48DA, 0xBD, 0x08, 0x11, 0xCE, 0xF3, 0x68, 0x30, 0xD2);
// MFSampleExtension_Encryption_ClearSliceHeaderData {5509A4F4-320D-4E6C-8D1A-94
C66DD20CB0}
/*
The MF blob should be parsed in the way below defined in SliceHeaderSet, with pr
oper verifications
================================================================================
=============================
Note the slice header data here DO NOT have all bits for all the syntaxes.
Some bits are removed on purpose to send out a lossy compressed slice header in
order to be 100% secure
The partial slice header data here SHALL not include any bits for emulation prev
ention byte 0x03
================================================================================
=============================
typedef struct SliceHeader_tag {
WORD dSliceHeaderLen; // indicate the length of the following
slice header in byte, it shall not be more than 1024
BYTE SliceHeaderBytes[0]; // slice header data, the last byte migh
t contain some bits not used, leave them random
} SliceHeader;
With dSliceHeaderLen bytes serialized after the SliceHeader struct.
And then use an array of these serialized consecutively,
typedef struct SliceHeaderSet_tag {
WORD dNumHeaders; // indicate the number of slice headers
in the input sample
SliceHeader rgstSliceheader[0]; // cNumHeaders slice header data
} SliceHeaderSet;
*/
// Type: BLOB
DEFINE_GUID(MFSampleExtension_Encryption_ClearSliceHeaderData,
0x5509a4f4, 0x320d, 0x4e6c, 0x8d, 0x1a, 0x94, 0xc6, 0x6d, 0xd2, 0xc, 0xb0);
// MFSampleExtension_Encryption_HardwareProtection_KeyInfoID {8CBFCCEB-94A5-4DE1
-8231-A85E47CF81E7}
// Type: GUID
// This attribute applies to media samples. The GUID associated with this
// attribute indicates an identifier (KID/LID) for the hardware protection to be
// used for the given sample. All hardware protected samples flowing out of the
// MFT decryptor should have this attribute set with the proper GUID.
DEFINE_GUID(MFSampleExtension_Encryption_HardwareProtection_KeyInfoID,
0x8cbfcceb, 0x94a5, 0x4de1, 0x82, 0x31, 0xa8, 0x5e, 0x47, 0xcf, 0x81, 0xe7);
// MFSampleExtension_Encryption_HardwareProtection_KeyInfo {B2372080-455B-4DD7-9
989-1A955784B754}
// Type: BLOB
// This attribute applies to media samples. The data blob associated with this
// sample has all the information relative to the slot/ID for the hardware
// protection to be used for the given sample. All hardware protected samples
// flowing out of the MFT decryptor should have this attribute set with the
// proper blob.
DEFINE_GUID(MFSampleExtension_Encryption_HardwareProtection_KeyInfo,
0xb2372080, 0x455b, 0x4dd7, 0x99, 0x89, 0x1a, 0x95, 0x57, 0x84, 0xb7, 0x54);
// MFSampleExtension_Encryption_HardwareProtection_VideoDecryptorContext {693470
C8-E837-47A0-88CB-535B905E3582}
// Data type: IUnknown * (IMFContentDecryptorContext)
// This attribute applies to media samples. It associates a sample with a
// given IMFContentDecryptorContext which is needed to be able to to
// decrypt/decode the sample properly when using hardware protection.
DEFINE_GUID(MFSampleExtension_Encryption_HardwareProtection_VideoDecryptorContex
t,
0x693470c8, 0xe837, 0x47a0, 0x88, 0xcb, 0x53, 0x5b, 0x90, 0x5e, 0x35, 0x82);
// MFSampleExtension_Encryption_Opaque_Data {224D77E5-1391-4FFB-9F41-B432F68C611
D}
// Data type : BLOB
// This attribute applies to media samples.The data blob associated with this sa
mple has some private information
// set by OEM secure environment to be used for the given sample.The hardware pr
otected samples flowing out of the
// MFT decryptor might have this attribute set with the proper blob.
// When present, this attribute is set by the decryptor MFT with data that origi
nates from the OEM secure environment.
// The host decoder may extract this and provide the data to the D3D11 device fo
r VLD decoding through(UINT PrivateDataSize, void* pPrivateData)
// of D3D11_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION data structure in the Decod
erBeginFrame() call, when present.
DEFINE_GUID(MFSampleExtension_Encryption_Opaque_Data,
0x224d77e5, 0x1391, 0x4ffb, 0x9f, 0x41, 0xb4, 0x32, 0xf6, 0x8c, 0x61, 0x1d);
// MFSampleExtension_NALULengthInfo. This is an alias of MF_NALU_LENGTH_INFORMA
TION
// Type: BLOB
// Set MFSampleExtension_NALULengthInfo as a BLOB on the input sample,
// with one DWORD for each NALU including start code and NALU type in the sample
. For example, if
// there are AUD (9 bytes), SPS (25 bytes), PPS (10 bytes), IDR slice1 (50 k), I
DR slice 2 (60 k),
// then there should be 5 DWORDs with values 9, 25, 10, 50 k, 60 k in the BLOB.
//
DEFINE_GUID(MFSampleExtension_NALULengthInfo,
0x19124E7C, 0xAD4B, 0x465F, 0xBB, 0x18, 0x20, 0x18, 0x62, 0x87, 0xB6, 0xAF);
// MFSampleExtension_Encryption_ResumeVideoOutput. {A435ABA5-AFDE-4CF5-BC1C-F6AC
AF13949D}
// Type: UINT32
//
// This attribute shall be used in hardware DRM scenario only
// it is set on input compressed sample to (H.264/HEVC) video decoder
//
// when present, it indicates video output in video render should resume on the
first output (uncompressed) sample
// with the attribute MFSampleExtension_Encryption_ResumeVideoOutput set to true
//
// note: (H.264/HEVC) video decoder should buffer the attribute when video decod
er
// detects the attribute set to true on some input sample, which might be droppe
d since
// those input sample might not be decode-able because of missing references,
// and set the attribute to true on the first output sample not dropped in video
decoder
//
DEFINE_GUID(MFSampleExtension_Encryption_ResumeVideoOutput,
0xa435aba5, 0xafde, 0x4cf5, 0xbc, 0x1c, 0xf6, 0xac, 0xaf, 0x13, 0x94, 0x9d);
// MFSampleExtension_Encryption_NALUTypes. {B0F067C7-714C-416C-8D59-5F4DDF8913B6
}
// Type: BLOB
// The MF blob contains all the NALU type byte for different NALUs in the MF sam
ple.One NALU type is one byte, including the syntaxes forbidden_zero_bit, nal_re
f_idc, and nal_unit_type.
DEFINE_GUID(MFSampleExtension_Encryption_NALUTypes,
0xb0f067c7, 0x714c, 0x416c, 0x8d, 0x59, 0x5f, 0x4d, 0xdf, 0x89, 0x13, 0xb6);
// MFSampleExtension_Encryption_SPSPPSData {AEDE0FA2-0E0C-453C-B7F3-DE8693364D11
}
// Type : BLOB
// When present, the MF blob contains all SPS(s) and / or PPS(s) NALUs inside th
e MF sample.
// SPSs and PPSs shall be present in the same order as that in the MF sample and
in the format of AvcC,
// which is DWORD, four - byte length inforamtion for the bytes followed, and NA
LU data of SPS or PPS, for each NALU.
// For example, the layout could be 10 in DWORD, 10 bytes data for SPS, 5 in DWO
RD, and 5 bytes data for PPS.In total, it has 4 + 10 + 4 + 5 = 23 bytes.
DEFINE_GUID(MFSampleExtension_Encryption_SPSPPSData,
0xaede0fa2, 0xe0c, 0x453c, 0xb7, 0xf3, 0xde, 0x86, 0x93, 0x36, 0x4d, 0x11);
// MFSampleExtension_Encryption_SEIData {3CF0E972-4542-4687-9999-585F565FBA7D}
// Type : BLOB
// When present, the MF blob contains all SEI NALUs inside the MF sample. (If th
ere are multiple SEIs in the protected MF sample, all the SEIs shall be present
in the blob.)
// SEIs shall be present in the same order as that in the MF sample and in the f
ormat of AvcC,
// which is DWORD, four - byte length inforamtion for the bytes followed, and NA
LU data of SEI.
// For example, the layout could be 10 in DWORD, 10 bytes data for the first SEI
, 5 in DWORD, and 5 bytes data for the second SEI.In total, it has 4 + 10 + 4 +
5 = 23 bytes.
//
// Some note about how to process the SEI NALUs in the blob of MFSampleExtensio
n_Encryption_SEIData
// Decoder should verify every byte of an SEI NALU is clear, not protected, befo
re parsing the SEI NALU
// otherwise, decoder should treat the SEI NALU as corrupted by encryption and s
kip the parsing of the SEI NALU
DEFINE_GUID(MFSampleExtension_Encryption_SEIData,
0x3cf0e972, 0x4542, 0x4687, 0x99, 0x99, 0x58, 0x5f, 0x56, 0x5f, 0xba, 0x7d);
// MFSampleExtension_Encryption_HardwareProtection {9A2B2D2B-8270-43E3-8448-994F
426E8886}
// Type: UINT32
// When present, this UINT32 attribute indicates whether the sample is hardware
protected.
// 0 = not hardware protected, nonzero = hardware protected
DEFINE_GUID(MFSampleExtension_Encryption_HardwareProtection,
0x9a2b2d2b, 0x8270, 0x43e3, 0x84, 0x48, 0x99, 0x4f, 0x42, 0x6e, 0x88, 0x86);
// MFSampleExtension_CleanPoint {9cdf01d8-a0f0-43ba-b077-eaa06cbd728a} // MFSampleExtension_CleanPoint {9cdf01d8-a0f0-43ba-b077-eaa06cbd728a}
// Type: UINT32 // Type: UINT32
// If present and nonzero, indicates that the sample is a clean point (key // If present and nonzero, indicates that the sample is a clean point (key
// frame), and decoding can begin at this sample. // frame), and decoding can begin at this sample.
DEFINE_GUID(MFSampleExtension_CleanPoint, DEFINE_GUID(MFSampleExtension_CleanPoint,
0x9cdf01d8, 0xa0f0, 0x43ba, 0xb0, 0x77, 0xea, 0xa0, 0x6c, 0xbd, 0x72, 0x8a); 0x9cdf01d8, 0xa0f0, 0x43ba, 0xb0, 0x77, 0xea, 0xa0, 0x6c, 0xbd, 0x72, 0x8a);
// MFSampleExtension_Discontinuity {9cdf01d9-a0f0-43ba-b077-eaa06cbd728a} // MFSampleExtension_Discontinuity {9cdf01d9-a0f0-43ba-b077-eaa06cbd728a}
// Type: UINT32 // Type: UINT32
// If present and nonzero, indicates that the sample data represents the first // If present and nonzero, indicates that the sample data represents the first
skipping to change at line 897 skipping to change at line 1076
0x9cdf01d9, 0xa0f0, 0x43ba, 0xb0, 0x77, 0xea, 0xa0, 0x6c, 0xbd, 0x72, 0x8a); 0x9cdf01d9, 0xa0f0, 0x43ba, 0xb0, 0x77, 0xea, 0xa0, 0x6c, 0xbd, 0x72, 0x8a);
// MFSampleExtension_Token {8294da66-f328-4805-b551-00deb4c57a61} // MFSampleExtension_Token {8294da66-f328-4805-b551-00deb4c57a61}
// Type: IUNKNOWN // Type: IUNKNOWN
// When an IMFMediaStream delivers a sample via MEMediaStream, this attribute // When an IMFMediaStream delivers a sample via MEMediaStream, this attribute
// should be set to the IUnknown *pToken argument that was passed with the // should be set to the IUnknown *pToken argument that was passed with the
// IMFMediaStream::RequestSample call to which this sample corresponds. // IMFMediaStream::RequestSample call to which this sample corresponds.
DEFINE_GUID(MFSampleExtension_Token, DEFINE_GUID(MFSampleExtension_Token,
0x8294da66, 0xf328, 0x4805, 0xb5, 0x51, 0x00, 0xde, 0xb4, 0xc5, 0x7a, 0x61); 0x8294da66, 0xf328, 0x4805, 0xb5, 0x51, 0x00, 0xde, 0xb4, 0xc5, 0x7a, 0x61);
// MFSampleExtension_ClosedCaption_CEA708 {26f09068-e744-47dc-aa03-dbf20403bde6}
// Type: BLOB
// MF sample attribute contained the closed caption data in CEA-708 format.
DEFINE_GUID(MFSampleExtension_ClosedCaption_CEA708, 0x26f09068, 0xe744, 0x47dc,
0xaa, 0x03, 0xdb, 0xf2, 0x04, 0x03, 0xbd, 0xe6);
#define MFSampleExtension_ClosedCaption_CEA708_MAX_SIZE 256
// MFSampleExtension_DecodeTimestamp {73A954D4-09E2-4861-BEFC-94BD97C08E6E} // MFSampleExtension_DecodeTimestamp {73A954D4-09E2-4861-BEFC-94BD97C08E6E}
// Type : UINT64 // Type : UINT64
// If present, contains the DTS (Decoding Time Stamp) of the sample. // If present, contains the DTS (Decoding Time Stamp) of the sample.
DEFINE_GUID(MFSampleExtension_DecodeTimestamp, DEFINE_GUID(MFSampleExtension_DecodeTimestamp,
0x73a954d4, 0x9e2, 0x4861, 0xbe, 0xfc, 0x94, 0xbd, 0x97, 0xc0, 0x8e, 0x6e); 0x73a954d4, 0x9e2, 0x4861, 0xbe, 0xfc, 0x94, 0xbd, 0x97, 0xc0, 0x8e, 0x6e);
// MFSampleExtension_VideoEncodeQP {B2EFE478-F979-4C66-B95E-EE2B82C82F36} // MFSampleExtension_VideoEncodeQP {B2EFE478-F979-4C66-B95E-EE2B82C82F36}
// Type: UINT64 // Type: UINT64
// Used by video encoders to specify the QP used to encode the output sample. // Used by video encoders to specify the QP used to encode the output sample.
DEFINE_GUID(MFSampleExtension_VideoEncodeQP, DEFINE_GUID(MFSampleExtension_VideoEncodeQP,
skipping to change at line 923 skipping to change at line 1108
0x973704e6, 0xcd14, 0x483c, 0x8f, 0x20, 0xc9, 0xfc, 0x9, 0x28, 0xba, 0xd5); 0x973704e6, 0xcd14, 0x483c, 0x8f, 0x20, 0xc9, 0xfc, 0x9, 0x28, 0xba, 0xd5);
// MFSampleExtension_FrameCorruption {B4DD4A8C-0BEB-44C4-8B75-B02B913B04F0} // MFSampleExtension_FrameCorruption {B4DD4A8C-0BEB-44C4-8B75-B02B913B04F0}
// Type: UINT32 // Type: UINT32
// Indicates whether the frame in the sample has corruption or not // Indicates whether the frame in the sample has corruption or not
// value 0 indicates that there is no corruption, or it is unknown // value 0 indicates that there is no corruption, or it is unknown
// Value 1 indicates that some corruption was detected e.g, during decoding // Value 1 indicates that some corruption was detected e.g, during decoding
DEFINE_GUID(MFSampleExtension_FrameCorruption, DEFINE_GUID(MFSampleExtension_FrameCorruption,
0xb4dd4a8c, 0xbeb, 0x44c4, 0x8b, 0x75, 0xb0, 0x2b, 0x91, 0x3b, 0x4, 0xf0); 0xb4dd4a8c, 0xbeb, 0x44c4, 0x8b, 0x75, 0xb0, 0x2b, 0x91, 0x3b, 0x4, 0xf0);
#if (WINVER >= _WIN32_WINNT_WINTHRESHOLD)
// MFSampleExtension_DirtyRects {9BA70225-B342-4E97-9126-0B566AB7EA7E}
// Type: BLOB
// This is a blob containing information about the dirty rectangles within
// a frame. The blob is a struct of type DIRTYRECT_INFO containing an array
// of NumDirtyRects number of DirtyRects elements.
DEFINE_GUID(MFSampleExtension_DirtyRects,
0x9ba70225, 0xb342, 0x4e97, 0x91, 0x26, 0x0b, 0x56, 0x6a, 0xb7, 0xea, 0x7e);
// MFSampleExtension_MoveRegions {E2A6C693-3A8B-4B8D-95D0-F60281A12FB7}
// Type: BLOB
// This is a blob containing information about the moved regions within
// a frame. The blob is a struct of type MOVEREGION_INFO containing an array
// of NumMoveRegions number of MoveRegions elements.
DEFINE_GUID(MFSampleExtension_MoveRegions,
0xe2a6c693, 0x3a8b, 0x4b8d, 0x95, 0xd0, 0xf6, 0x02, 0x81, 0xa1, 0x2f, 0xb7);
typedef struct _MOVE_RECT
{
POINT SourcePoint;
RECT DestRect;
} MOVE_RECT;
typedef struct _DIRTYRECT_INFO
{
UINT FrameNumber;
UINT NumDirtyRects;
RECT DirtyRects[1];
} DIRTYRECT_INFO;
typedef struct _MOVEREGION_INFO
{
UINT FrameNumber;
UINT NumMoveRegions;
MOVE_RECT MoveRegions[1];
} MOVEREGION_INFO;
// MFSampleExtension_HDCP_FrameCounter
// Type: BLOB
// This blob contains the PES_private_data section of a PES packet according to
the
// HDCP 2.2/2.1 specification. This blob should contain the stream counter and
// input counter.
DEFINE_GUID(MFSampleExtension_HDCP_FrameCounter,
0x9d389c60, 0xf507, 0x4aa6, 0xa4, 0xa, 0x71, 0x2, 0x7a, 0x2, 0xf3, 0xde);
// MFSampleExtension_Timestamp
// Type: int64
// { 1e436999-69be-4c7a-9369-70068c0260cb } MFSampleExtension_Timestamp {INT64
}
// The timestamp of a sample
//
DEFINE_GUID(MFSampleExtension_Timestamp,
0x1e436999, 0x69be, 0x4c7a, 0x93, 0x69, 0x70, 0x06, 0x8c, 0x02, 0x60, 0xcb);
// MFSampleExtension_RepeatFrame {88BE738F-0711-4F42-B458-344AED42EC2F}
// Type: UINT32
// This UINT32 when set to 1 indicates that the frame is a repeat of the previou
s frame
DEFINE_GUID(MFSampleExtension_RepeatFrame,
0x88be738f, 0x711, 0x4f42, 0xb4, 0x58, 0x34, 0x4a, 0xed, 0x42, 0xec, 0x2f);
// MFT_ENCODER_ERROR {C8D1EDA4-98E4-41D5-9297-44F53852F90E}
// Type: GUID
// This is the GUID of a property that caused the encoder MFT to fail initializa
tion
DEFINE_GUID(MFT_ENCODER_ERROR,
0xc8d1eda4, 0x98e4, 0x41d5, 0x92, 0x97, 0x44, 0xf5, 0x38, 0x52, 0xf9, 0x0e);
// MFT_GFX_DRIVER_VERSION_ID_Attribute {F34B9093-05E0-4B16-993D-3E2A2CDE6AD3}
// Type: WSTR
// For hardware MFTs, this attribute allows the HMFT to report the graphics driv
er version.
DEFINE_GUID(MFT_GFX_DRIVER_VERSION_ID_Attribute,
0xf34b9093, 0x05e0, 0x4b16, 0x99, 0x3d, 0x3e, 0x2a, 0x2c, 0xde, 0x6a, 0xd3);
#endif
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// The following sample attributes are used for encrypted samples // The following sample attributes are used for encrypted samples
// //
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// MFSampleExtension_DescrambleData {43483BE6-4903-4314-B032-2951365936FC} // MFSampleExtension_DescrambleData {43483BE6-4903-4314-B032-2951365936FC}
// Type: UINT64 // Type: UINT64
DEFINE_GUID(MFSampleExtension_DescrambleData, DEFINE_GUID(MFSampleExtension_DescrambleData,
0x43483be6, 0x4903, 0x4314, 0xb0, 0x32, 0x29, 0x51, 0x36, 0x59, 0x36, 0xfc); 0x43483be6, 0x4903, 0x4314, 0xb0, 0x32, 0x29, 0x51, 0x36, 0x59, 0x36, 0xfc);
skipping to change at line 955 skipping to change at line 1214
// Type: UINT64 // Type: UINT64
DEFINE_GUID(MFSampleExtension_GenKeyCtx, DEFINE_GUID(MFSampleExtension_GenKeyCtx,
0x188120cb, 0xd7da, 0x4b59, 0x9b, 0x3e, 0x92, 0x52, 0xfd, 0x37, 0x30, 0x1c); 0x188120cb, 0xd7da, 0x4b59, 0x9b, 0x3e, 0x92, 0x52, 0xfd, 0x37, 0x30, 0x1c);
// MFSampleExtension_PacketCrossOffsets {2789671D-389F-40BB-90D9-C282F77F9ABD} // MFSampleExtension_PacketCrossOffsets {2789671D-389F-40BB-90D9-C282F77F9ABD}
// Type: BLOB // Type: BLOB
DEFINE_GUID(MFSampleExtension_PacketCrossOffsets, DEFINE_GUID(MFSampleExtension_PacketCrossOffsets,
0x2789671d, 0x389f, 0x40bb, 0x90, 0xd9, 0xc2, 0x82, 0xf7, 0x7f, 0x9a, 0xbd); 0x2789671d, 0x389f, 0x40bb, 0x90, 0xd9, 0xc2, 0x82, 0xf7, 0x7f, 0x9a, 0xbd);
// MFSampleExtension_Encryption_SampleID {6698B84E-0AFA-4330-AEB2-1C0A98D7A44D} // MFSampleExtension_Encryption_SampleID {6698B84E-0AFA-4330-AEB2-1C0A98D7A44D}
// Type: UINT64 // Type: BLOB
DEFINE_GUID(MFSampleExtension_Encryption_SampleID, DEFINE_GUID(MFSampleExtension_Encryption_SampleID,
0x6698b84e, 0x0afa, 0x4330, 0xae, 0xb2, 0x1c, 0x0a, 0x98, 0xd7, 0xa4, 0x4d); 0x6698b84e, 0x0afa, 0x4330, 0xae, 0xb2, 0x1c, 0x0a, 0x98, 0xd7, 0xa4, 0x4d);
// MFSampleExtension_Encryption_KeyID {76376591-795F-4DA1-86ED-9D46ECA109A9} // MFSampleExtension_Encryption_KeyID {76376591-795F-4DA1-86ED-9D46ECA109A9}
// Type: BLOB // Type: BLOB
DEFINE_GUID(MFSampleExtension_Encryption_KeyID, DEFINE_GUID(MFSampleExtension_Encryption_KeyID,
0x76376591, 0x795f, 0x4da1, 0x86, 0xed, 0x9d, 0x46, 0xec, 0xa1, 0x09, 0xa9); 0x76376591, 0x795f, 0x4da1, 0x86, 0xed, 0x9d, 0x46, 0xec, 0xa1, 0x09, 0xa9);
// MFSampleExtension_Content_KeyID {C6C7F5B0-ACCA-415B-87D9-10441469EFC6} // MFSampleExtension_Content_KeyID {C6C7F5B0-ACCA-415B-87D9-10441469EFC6}
// Type: GUID // Type: GUID
skipping to change at line 1049 skipping to change at line 1308
DEFINE_GUID(MFSampleExtension_PhotoThumbnailMediaType, DEFINE_GUID(MFSampleExtension_PhotoThumbnailMediaType,
0x61AD5420, 0xEBF8, 0x4143, 0x89, 0xAF, 0x6B, 0xF2, 0x5F, 0x67, 0x2D, 0xEF); 0x61AD5420, 0xEBF8, 0x4143, 0x89, 0xAF, 0x6B, 0xF2, 0x5F, 0x67, 0x2D, 0xEF);
// MFSampleExtension_CaptureMetadata // MFSampleExtension_CaptureMetadata
// Type: IUnknown (IMFAttributes) // Type: IUnknown (IMFAttributes)
// This is the IMFAttributes store for all the metadata related to the capture // This is the IMFAttributes store for all the metadata related to the capture
// pipeline. It can be potentially present on any IMFSample. // pipeline. It can be potentially present on any IMFSample.
DEFINE_GUID(MFSampleExtension_CaptureMetadata, DEFINE_GUID(MFSampleExtension_CaptureMetadata,
0x2EBE23A8, 0xFAF5, 0x444A, 0xA6, 0xA2, 0xEB, 0x81, 0x08, 0x80, 0xAB, 0x5D); 0x2EBE23A8, 0xFAF5, 0x444A, 0xA6, 0xA2, 0xEB, 0x81, 0x08, 0x80, 0xAB, 0x5D);
// MFSampleExtension_MDLCacheCookie
// Type: IUnknown (IMFAttributes)
// This is the IMFAttributes stored in the sample if the mini driver
// desires to cache MDL's. This is used internally by the pipeline.
// {5F002AF9-D8F9-41A3-B6C3-A2AD43F647AD}
DEFINE_GUID(MFSampleExtension_MDLCacheCookie,
0x5F002AF9, 0xD8F9, 0x41A3, 0xB6, 0xC3, 0xA2, 0xAD, 0x43, 0xF6, 0x47, 0xAD);
// Put all MF_CAPTURE_METADATA_* here. // Put all MF_CAPTURE_METADATA_* here.
// {0F9DD6C6-6003-45D8-BD59-F1F53E3D04E8} MF_CAPTURE_METADATA_PHOTO_FRAME_FLAS H {UINT32} // {0F9DD6C6-6003-45D8-BD59-F1F53E3D04E8} MF_CAPTURE_METADATA_PHOTO_FRAME_FLAS H {UINT32}
// 0 - No flash triggered on this frame. // 0 - No flash triggered on this frame.
// non-0 - Flash triggered on this frame. // non-0 - Flash triggered on this frame.
// Do not explicitly check for a value of 1 here, we may overload this to // Do not explicitly check for a value of 1 here, we may overload this to
// indicate special types of flash going forward (applications should only // indicate special types of flash going forward (applications should only
// check for != 0 to indicate flash took place). // check for != 0 to indicate flash took place).
DEFINE_GUID(MF_CAPTURE_METADATA_PHOTO_FRAME_FLASH, DEFINE_GUID(MF_CAPTURE_METADATA_PHOTO_FRAME_FLASH,
0x0F9DD6C6, 0x6003, 0x45D8, 0xBD, 0x59, 0xF1, 0xF5, 0x3E, 0x3D, 0x04, 0xE8); 0x0F9DD6C6, 0x6003, 0x45D8, 0xBD, 0x59, 0xF1, 0xF5, 0x3E, 0x3D, 0x04, 0xE8);
// The raw IUnknown corresponding to the IMFMediaBuffer that contains the metada
ta
// stream as written by the camera driver. This may be a mix of pre-defined met
adata
// such as photo confirmation, focus notification, or custom metadata that only
// the MFT0 can parse.
DEFINE_GUID(MF_CAPTURE_METADATA_FRAME_RAWSTREAM,
0x9252077B, 0x2680, 0x49B9, 0xAE, 0x02, 0xB1, 0x90, 0x75, 0x97, 0x3B, 0x70);
// {A87EE154-997F-465D-B91F-29D53B982B88}
// TYPE: UINT32
DEFINE_GUID(MF_CAPTURE_METADATA_FOCUSSTATE,
0xa87ee154, 0x997f, 0x465d, 0xb9, 0x1f, 0x29, 0xd5, 0x3b, 0x98, 0x2b, 0x88);
// {BB3716D9-8A61-47A4-8197-459C7FF174D5}
// TYPE: UINT32
DEFINE_GUID(MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID,
0xbb3716d9, 0x8a61, 0x47a4, 0x81, 0x97, 0x45, 0x9c, 0x7f, 0xf1, 0x74, 0xd5);
// {16B9AE99-CD84-4063-879D-A28C7633729E}
// TYPE: UINT32
DEFINE_GUID(MF_CAPTURE_METADATA_EXPOSURE_TIME,
0x16b9ae99, 0xcd84, 0x4063, 0x87, 0x9d, 0xa2, 0x8c, 0x76, 0x33, 0x72, 0x9e);
// {D198AA75-4B62-4345-ABF3-3C31FA12C299}
DEFINE_GUID(MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION,
0xd198aa75, 0x4b62, 0x4345, 0xab, 0xf3, 0x3c, 0x31, 0xfa, 0x12, 0xc2, 0x99);
// {E528A68F-B2E3-44FE-8B65-07BF4B5A13FF}
// TYPE: UINT32
DEFINE_GUID(MF_CAPTURE_METADATA_ISO_SPEED,
0xe528a68f, 0xb2e3, 0x44fe, 0x8b, 0x65, 0x7, 0xbf, 0x4b, 0x5a, 0x13, 0xff);
// {B5FC8E86-11D1-4E70-819B-723A89FA4520}
// TYPE: UINT32
DEFINE_GUID(MF_CAPTURE_METADATA_LENS_POSITION,
0xb5fc8e86, 0x11d1, 0x4e70, 0x81, 0x9b, 0x72, 0x3a, 0x89, 0xfa, 0x45, 0x20);
// {9CC3B54D-5ED3-4BAE-B388-7670AEF59E13}
// TYPE: UINT64
DEFINE_GUID(MF_CAPTURE_METADATA_SCENE_MODE,
0x9cc3b54d, 0x5ed3, 0x4bae, 0xb3, 0x88, 0x76, 0x70, 0xae, 0xf5, 0x9e, 0x13);
// {4A51520B-FB36-446C-9DF2-68171B9A0389}
// TYPE: UINT32
DEFINE_GUID(MF_CAPTURE_METADATA_FLASH,
0x4a51520b, 0xfb36, 0x446c, 0x9d, 0xf2, 0x68, 0x17, 0x1b, 0x9a, 0x3, 0x89);
// {9C0E0D49-0205-491A-BC9D-2D6E1F4D5684}
// TYPE: UINT32
DEFINE_GUID(MF_CAPTURE_METADATA_FLASH_POWER,
0x9c0e0d49, 0x205, 0x491a, 0xbc, 0x9d, 0x2d, 0x6e, 0x1f, 0x4d, 0x56, 0x84);
// {C736FD77-0FB9-4E2E-97A2-FCD490739EE9}
// TYPE: UINT32
DEFINE_GUID(MF_CAPTURE_METADATA_WHITEBALANCE,
0xc736fd77, 0xfb9, 0x4e2e, 0x97, 0xa2, 0xfc, 0xd4, 0x90, 0x73, 0x9e, 0xe9);
// {E50B0B81-E501-42C2-ABF2-857ECB13FA5C}
// TYPE: UINT32
DEFINE_GUID(MF_CAPTURE_METADATA_ZOOMFACTOR,
0xe50b0b81, 0xe501, 0x42c2, 0xab, 0xf2, 0x85, 0x7e, 0xcb, 0x13, 0xfa, 0x5c);
// {864F25A6-349F-46B1-A30E-54CC22928A47}
// TYPE: BLOB
DEFINE_GUID(MF_CAPTURE_METADATA_FACEROIS,
0x864f25a6, 0x349f, 0x46b1, 0xa3, 0xe, 0x54, 0xcc, 0x22, 0x92, 0x8a, 0x47);
// {E94D50CC-3DA0-44d4-BB34-83198A741868}
// TYPE: BLOB
DEFINE_GUID(MF_CAPTURE_METADATA_FACEROITIMESTAMPS,
0xe94d50cc, 0x3da0, 0x44d4, 0xbb, 0x34, 0x83, 0x19, 0x8a, 0x74, 0x18, 0x68);
// {B927A1A8-18EF-46d3-B3AF-69372F94D9B2}
// TYPE: BLOB
DEFINE_GUID(MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS,
0xb927a1a8, 0x18ef, 0x46d3, 0xb3, 0xaf, 0x69, 0x37, 0x2f, 0x94, 0xd9, 0xb2);
// {05802AC9-0E1D-41c7-A8C8-7E7369F84E1E}
// TYPE: BLOB
DEFINE_GUID(MF_CAPTURE_METADATA_ISO_GAINS,
0x5802ac9, 0xe1d, 0x41c7, 0xa8, 0xc8, 0x7e, 0x73, 0x69, 0xf8, 0x4e, 0x1e);
// {DB51357E-9D3D-4962-B06D-07CE650D9A0A}
// TYPE: UINT64
DEFINE_GUID(MF_CAPTURE_METADATA_SENSORFRAMERATE,
0xdb51357e, 0x9d3d, 0x4962, 0xb0, 0x6d, 0x7, 0xce, 0x65, 0xd, 0x9a, 0xa);
// {E7570C8F-2DCB-4c7c-AACE-22ECE7CCE647}
// TYPE: BLOB
DEFINE_GUID(MF_CAPTURE_METADATA_WHITEBALANCE_GAINS,
0xe7570c8f, 0x2dcb, 0x4c7c, 0xaa, 0xce, 0x22, 0xec, 0xe7, 0xcc, 0xe6, 0x47);
// {85358432-2EF6-4ba9-A3FB-06D82974B895}
// TYPE: BLOB
DEFINE_GUID(MF_CAPTURE_METADATA_HISTOGRAM,
0x85358432, 0x2ef6, 0x4ba9, 0xa3, 0xfb, 0x6, 0xd8, 0x29, 0x74, 0xb8, 0x95);
// {2e9575b8-8c31-4a02-8575-42b197b71592}
// TYPE: BLOB
DEFINE_GUID(MF_CAPTURE_METADATA_EXIF,
0x2e9575b8, 0x8c31, 0x4a02, 0x85, 0x75, 0x42, 0xb1, 0x97, 0xb7, 0x15, 0x92);
typedef struct tagFaceRectInfoBlobHeader
{
ULONG Size; // Size of this header + all FaceRectInfo following
ULONG Count; // Number of FaceRectInfo's in the blob
} FaceRectInfoBlobHeader;
typedef struct tagFaceRectInfo
{
RECT Region; // Relative coordinates on the frame (Q31 format)
LONG confidenceLevel; // Confidence Level of the region being a face
} FaceRectInfo;
typedef struct tagFaceCharacterizationBlobHeader
{
ULONG Size; // Size of this header + all FaceCharacterization following
ULONG Count; // Number of FaceCharacterization's in the blob. Must match the
number of FaceRectInfo's in FaceRectInfoBlobHeader
} FaceCharacterizationBlobHeader;
typedef struct tagFaceCharacterization
{
ULONG BlinkScoreLeft; // [0, 100]. 0 indicates no blink for the left
eye. 100 indicates definite blink for the left eye
ULONG BlinkScoreRight; // [0, 100]. 0 indicates no blink for the right
eye. 100 indicates definite blink for the right eye
ULONG FacialExpression; // Any one of the MF_METADATAFACIALEXPRESSION_X
XX defined
ULONG FacialExpressionScore; // [0, 100]. 0 indicates no such facial express
ion as identified. 100 indicates definite such facial expression as defined
} FaceCharacterization;
#define MF_METADATAFACIALEXPRESSION_SMILE 0x00000001
typedef struct tagCapturedMetadataExposureCompensation
{
UINT64 Flags; // KSCAMERA_EXTENDEDPROP_EVCOMP_XXX step flag
INT32 Value; // EV Compensation value in units of the step
} CapturedMetadataExposureCompensation;
typedef struct tagCapturedMetadataISOGains
{
FLOAT AnalogGain;
FLOAT DigitalGain;
} CapturedMetadataISOGains;
typedef struct tagCapturedMetadataWhiteBalanceGains
{
FLOAT R;
FLOAT G;
FLOAT B;
} CapturedMetadataWhiteBalanceGains;
typedef struct tagMetadataTimeStamps
{
ULONG Flags; // Bitwise OR of MF_METADATATIMESTAMPS_XXX flags
LONGLONG Device; // QPC time for the sample where the metadata is deri
ved from (in 100ns)
LONGLONG Presentation; // PTS for the sample where the metadata is derived f
rom (in 100ns)
} MetadataTimeStamps;
#define MF_METADATATIMESTAMPS_DEVICE 0x00000001
#define MF_METADATATIMESTAMPS_PRESENTATION 0x00000002
typedef struct tagHistogramGrid
{
ULONG Width; // Width of the sensor output that histogram is collected from
ULONG Height; // Height of the sensor output that histogram is collected fro
m
RECT Region; // Absolute coordinates of the region on the sensor output tha
t the histogram is collected for
} HistogramGrid;
typedef struct tagHistogramBlobHeader
{
ULONG Size; // Size of the entire histogram blob in bytes
ULONG Histograms; // Number of histograms in the blob. Each histogram is id
entified by a HistogramHeader
} HistogramBlobHeader;
typedef struct tagHistogramHeader
{
ULONG Size; // Size in bytes of this header + (HistogramDataHeader +
histogram data following)*number of channels available
ULONG Bins; // Number of bins in the histogram
ULONG FourCC; // Color space that the histogram is collected from
ULONG ChannelMasks; // Masks of the color channels that the histogram is col
lected for
HistogramGrid Grid; // Grid that the histogram is collected from
} HistogramHeader;
typedef struct tagHistogramDataHeader
{
ULONG Size; // Size in bytes of this header + histogram data followin
g
ULONG ChannelMask; // Mask of the color channel for the histogram data
ULONG Linear; // 1, if linear; 0 nonlinear
} HistogramDataHeader;
#define MF_HISTOGRAM_CHANNEL_Y 0x00000001
#define MF_HISTOGRAM_CHANNEL_R 0x00000002
#define MF_HISTOGRAM_CHANNEL_G 0x00000004
#define MF_HISTOGRAM_CHANNEL_B 0x00000008
#define MF_HISTOGRAM_CHANNEL_Cb 0x00000010
#define MF_HISTOGRAM_CHANNEL_Cr 0x00000020
//////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Attributes //////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Attributes ////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
STDAPI STDAPI
MFCreateAttributes( MFCreateAttributes(
_Out_ IMFAttributes** ppMFAttributes, _Out_ IMFAttributes** ppMFAttributes,
_In_ UINT32 cInitialSize _In_ UINT32 cInitialSize
); );
STDAPI STDAPI
skipping to change at line 1227 skipping to change at line 1690
_In_opt_ MFT_REGISTER_TYPE_INFO* pOutputType, _In_opt_ MFT_REGISTER_TYPE_INFO* pOutputType,
_In_opt_ IMFAttributes* pAttributes, _In_opt_ IMFAttributes* pAttributes,
_Outptr_result_buffer_(*pcMFTs) CLSID** ppclsidMFT, // must be f reed with CoTaskMemFree _Outptr_result_buffer_(*pcMFTs) CLSID** ppclsidMFT, // must be f reed with CoTaskMemFree
_Out_ UINT32* pcMFTs _Out_ UINT32* pcMFTs
); );
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
enum _MFT_ENUM_FLAG enum _MFT_ENUM_FLAG
{ {
MFT_ENUM_FLAG_SYNCMFT = 0x00000001, // Enumerates V1 MFT_ENUM_FLAG_SYNCMFT = 0x00000001, // Enumerates V1
MFTs. This is default. MFTs. This is default.
MFT_ENUM_FLAG_ASYNCMFT = 0x00000002, // Enumerates on MFT_ENUM_FLAG_ASYNCMFT = 0x00000002, // Enumerates on
ly software async MFTs also known as V2 MFTs ly software async MFTs also known as V2 MFTs
MFT_ENUM_FLAG_HARDWARE = 0x00000004, // Enumerates V2 MFT_ENUM_FLAG_HARDWARE = 0x00000004, // Enumerates V2
hardware async MFTs hardware async MFTs
MFT_ENUM_FLAG_FIELDOFUSE = 0x00000008, // Enumerates MF MFT_ENUM_FLAG_FIELDOFUSE = 0x00000008, // Enumerates MF
Ts that require unlocking Ts that require unlocking
MFT_ENUM_FLAG_LOCALMFT = 0x00000010, // Enumerates Lo MFT_ENUM_FLAG_LOCALMFT = 0x00000010, // Enumerates Lo
cally (in-process) registered MFTs cally (in-process) registered MFTs
MFT_ENUM_FLAG_TRANSCODE_ONLY = 0x00000020, // Enumerates de MFT_ENUM_FLAG_TRANSCODE_ONLY = 0x00000020, // Enumerates de
coder MFTs used by transcode only coder MFTs used by transcode only
MFT_ENUM_FLAG_SORTANDFILTER = 0x00000040, // Apply system MFT_ENUM_FLAG_SORTANDFILTER = 0x00000040, // Apply system
local, do not use and preferred sorting and filtering local, do not use and preferred sorting and filtering
MFT_ENUM_FLAG_SORTANDFILTER_APPROVED_ONLY = 0x000000C0, // Similar to MF MFT_ENUM_FLAG_SORTANDFILTER_APPROVED_ONLY = 0x000000C0, // Similar to MF
T_ENUM_FLAG_SORTANDFILTER, but apply a local policy of: MF_PLUGIN_CONTROL_POLICY T_ENUM_FLAG_SORTANDFILTER, but apply a local policy of: MF_PLUGIN_CONTROL_POLICY
_USE_APPROVED_PLUGINS _USE_APPROVED_PLUGINS
MFT_ENUM_FLAG_SORTANDFILTER_WEB_ONLY = 0x00000140, // Similar to MF MFT_ENUM_FLAG_SORTANDFILTER_WEB_ONLY = 0x00000140, // Similar to MF
T_ENUM_FLAG_SORTANDFILTER, but apply a local policy of: MF_PLUGIN_CONTROL_POLICY T_ENUM_FLAG_SORTANDFILTER, but apply a local policy of: MF_PLUGIN_CONTROL_POLICY
_USE_WEB_PLUGINS _USE_WEB_PLUGINS
MFT_ENUM_FLAG_ALL = 0x0000003F // Enumerates al MFT_ENUM_FLAG_SORTANDFILTER_WEB_ONLY_EDGEMODE = 0x00000240, // Similar to MF
l MFTs including SW and HW MFTs and applies filtering T_ENUM_FLAG_SORTANDFILTER, but apply a local policy of: MF_PLUGIN_CONTROL_POLICY
_USE_WEB_PLUGINS_EDGEMODE
MFT_ENUM_FLAG_ALL = 0x0000003F // Enumerates al
l MFTs including SW and HW MFTs and applies filtering
}; };
// //
// result *pppMFTActivate must be freed with CoTaskMemFree. Each IMFActivate poi nter inside this // result *pppMFTActivate must be freed with CoTaskMemFree. Each IMFActivate poi nter inside this
// buffer should be released. // buffer should be released.
// //
STDAPI STDAPI
MFTEnumEx( MFTEnumEx(
_In_ GUID guidCate gory, _In_ GUID guidCate gory,
skipping to change at line 1462 skipping to change at line 1926
DEFINE_MEDIATYPE_GUID( MFVideoFormat_MSS2, FCC('MSS2') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_MSS2, FCC('MSS2') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_MPG1, FCC('MPG1') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_MPG1, FCC('MPG1') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVSL, FCC('dvsl') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVSL, FCC('dvsl') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVSD, FCC('dvsd') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVSD, FCC('dvsd') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVHD, FCC('dvhd') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVHD, FCC('dvhd') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DV25, FCC('dv25') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DV25, FCC('dv25') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DV50, FCC('dv50') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DV50, FCC('dv50') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVH1, FCC('dvh1') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVH1, FCC('dvh1') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVC, FCC('dvc ') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVC, FCC('dvc ') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_H264, FCC('H264') ); // assume MFVide oFormat_H264 is frame aligned. that is, each input sample has one complete compr essed frame (one frame picture, two field pictures or a single unpaired field pi cture) DEFINE_MEDIATYPE_GUID( MFVideoFormat_H264, FCC('H264') ); // assume MFVide oFormat_H264 is frame aligned. that is, each input sample has one complete compr essed frame (one frame picture, two field pictures or a single unpaired field pi cture)
DEFINE_MEDIATYPE_GUID( MFVideoFormat_H265, FCC('H265') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_MJPG, FCC('MJPG') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_MJPG, FCC('MJPG') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_420O, FCC('420O') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_420O, FCC('420O') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_HEVC, FCC('HEVC') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_HEVC, FCC('HEVC') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_HEVC_ES, FCC('HEVS') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_HEVC_ES, FCC('HEVS') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_VP80, FCC('VP80') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_VP90, FCC('VP90') );
#if (WINVER >= _WIN32_WINNT_WIN8) #if (WINVER >= _WIN32_WINNT_WIN8)
DEFINE_MEDIATYPE_GUID( MFVideoFormat_H263, FCC('H263') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_H263, FCC('H263') );
#endif // (WINVER >= _WIN32_WINNT_WIN8) #endif // (WINVER >= _WIN32_WINNT_WIN8)
// //
// undef the local D3DFMT definitions to avoid later clashes with D3D headers // undef the local D3DFMT definitions to avoid later clashes with D3D headers
// //
#ifdef LOCAL_D3DFMT_DEFINES #ifdef LOCAL_D3DFMT_DEFINES
#undef D3DFMT_R8G8B8 #undef D3DFMT_R8G8B8
skipping to change at line 1523 skipping to change at line 1990
DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMAudio_Lossless, WAVE_FORMAT_WMAUDIO_LOSS LESS ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMAudio_Lossless, WAVE_FORMAT_WMAUDIO_LOSS LESS );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMASPDIF, WAVE_FORMAT_WMASPDIF ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMASPDIF, WAVE_FORMAT_WMASPDIF );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_MSP1, WAVE_FORMAT_WMAVOICE9 ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_MSP1, WAVE_FORMAT_WMAVOICE9 );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_MP3, WAVE_FORMAT_MPEGLAYER3 ) ; DEFINE_MEDIATYPE_GUID( MFAudioFormat_MP3, WAVE_FORMAT_MPEGLAYER3 ) ;
DEFINE_MEDIATYPE_GUID( MFAudioFormat_MPEG, WAVE_FORMAT_MPEG ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_MPEG, WAVE_FORMAT_MPEG );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_AAC, WAVE_FORMAT_MPEG_HEAAC ) ; DEFINE_MEDIATYPE_GUID( MFAudioFormat_AAC, WAVE_FORMAT_MPEG_HEAAC ) ;
DEFINE_MEDIATYPE_GUID( MFAudioFormat_ADTS, WAVE_FORMAT_MPEG_ADTS_AA C ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_ADTS, WAVE_FORMAT_MPEG_ADTS_AA C );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_AMR_NB, WAVE_FORMAT_AMR_NB ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_AMR_NB, WAVE_FORMAT_AMR_NB );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_AMR_WB, WAVE_FORMAT_AMR_WB ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_AMR_WB, WAVE_FORMAT_AMR_WB );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_AMR_WP, WAVE_FORMAT_AMR_WP ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_AMR_WP, WAVE_FORMAT_AMR_WP );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_FLAC, WAVE_FORMAT_FLAC);
DEFINE_MEDIATYPE_GUID( MFAudioFormat_ALAC, FCC('alac') );
// These audio types are not derived from an existing wFormatTag // These audio types are not derived from an existing wFormatTag
DEFINE_GUID(MFAudioFormat_Dolby_AC3, // == MEDIASUBTYPE_DOLBY_AC3 defined in ksu uids.h DEFINE_GUID(MFAudioFormat_Dolby_AC3, // == MEDIASUBTYPE_DOLBY_AC3 defined in ksu uids.h
0xe06d802c, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea); 0xe06d802c, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea);
DEFINE_GUID(MFAudioFormat_Dolby_DDPlus, // == MEDIASUBTYPE_DOLBY_DDPLUS defined in wmcodecdsp.h DEFINE_GUID(MFAudioFormat_Dolby_DDPlus, // == MEDIASUBTYPE_DOLBY_DDPLUS defined in wmcodecdsp.h
0xa7fb87af, 0x2d02, 0x42fb, 0xa4, 0xd4, 0x5, 0xcd, 0x93, 0x84, 0x3b, 0xdd); 0xa7fb87af, 0x2d02, 0x42fb, 0xa4, 0xd4, 0x5, 0xcd, 0x93, 0x84, 0x3b, 0xdd);
DEFINE_GUID(MFAudioFormat_Vorbis, // {8D2FD10B-5841-4a6b-8905-588FEC1ADED9}
0x8D2FD10B, 0x5841, 0x4a6b, 0x89, 0x05, 0x58, 0x8F, 0xEC, 0x1A, 0xDE, 0xD9);
#if (WINVER >= _WIN32_WINNT_THRESHOLD)
// LPCM audio with headers for encapsulation in an MPEG2 bitstream
DEFINE_GUID(MFAudioFormat_LPCM, // == MEDIASUBTYPE_LPCM defined in ksmedia.h
0xe06d8032L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea);
DEFINE_GUID(MFAudioFormat_PCM_HDCP,
0xa5e7ff01, 0x8411, 0x4acc, 0xa8, 0x65, 0x5f, 0x49, 0x41, 0x28, 0x8d, 0x80);
DEFINE_GUID(MFAudioFormat_Dolby_AC3_HDCP,
0x97663a80, 0x8ffb, 0x4445, 0xa6, 0xba, 0x79, 0x2d, 0x90, 0x8f, 0x49, 0x7f);
DEFINE_GUID(MFAudioFormat_AAC_HDCP,
0x419bce76, 0x8b72, 0x400f, 0xad, 0xeb, 0x84, 0xb5, 0x7d, 0x63, 0x48, 0x4d);
DEFINE_GUID(MFAudioFormat_ADTS_HDCP,
0xda4963a3, 0x14d8, 0x4dcf, 0x92, 0xb7, 0x19, 0x3e, 0xb8, 0x43, 0x63, 0xdb);
DEFINE_GUID(MFAudioFormat_Base_HDCP,
0x3884b5bc, 0xe277, 0x43fd, 0x98, 0x3d, 0x03, 0x8a, 0xa8, 0xd9, 0xb6, 0x05);
DEFINE_GUID(MFVideoFormat_H264_HDCP,
0x5d0ce9dd, 0x9817, 0x49da, 0xbd, 0xfd, 0xf5, 0xf5, 0xb9, 0x8f, 0x18, 0xa6);
DEFINE_GUID(MFVideoFormat_Base_HDCP,
0xeac3b9d5, 0xbd14, 0x4237, 0x8f, 0x1f, 0xba, 0xb4, 0x28, 0xe4, 0x93, 0x12);
#endif
// //
// MPEG-4 media types // MPEG-4 media types
// //
// {00000000-767a-494d-b478-f29d25dc9037} MFMPEG4Format_Base // {00000000-767a-494d-b478-f29d25dc9037} MFMPEG4Format_Base
DEFINE_GUID(MFMPEG4Format_Base, DEFINE_GUID(MFMPEG4Format_Base,
0x00000000, 0x767a, 0x494d, 0xb4, 0x78, 0xf2, 0x9d, 0x25, 0xdc, 0x90, 0x37); 0x00000000, 0x767a, 0x494d, 0xb4, 0x78, 0xf2, 0x9d, 0x25, 0xdc, 0x90, 0x37);
//
// Subtitle media types
//
// {73E73992-9a10-4356-9557-7194E91E3E54} MFSubtitleFormat_TTML
DEFINE_GUID(MFSubtitleFormat_TTML,
0x73e73992, 0x9a10, 0x4356, 0x95, 0x57, 0x71, 0x94, 0xe9, 0x1e, 0x3e, 0x54);
// {7FA7FAA3-FEAE-4E16-AEDF-36B9ACFBB099} MFSubtitleFormat_ATSC
DEFINE_GUID(MFSubtitleFormat_ATSC,
0x7fa7faa3, 0xfeae, 0x4e16, 0xae, 0xdf, 0x36, 0xb9, 0xac, 0xfb, 0xb0, 0x99);
// {C886D215-F485-40BB-8DB6-FADBC619A45D} MFSubtitleFormat_WebVTT
DEFINE_GUID(MFSubtitleFormat_WebVTT,
0xc886d215, 0xf485, 0x40bb, 0x8d, 0xb6, 0xfa, 0xdb, 0xc6, 0x19, 0xa4, 0x5d);
// {5E467F2E-77CA-4CA5-8391-D142ED4B76C8} MFSubtitleFormat_SRT
DEFINE_GUID(MFSubtitleFormat_SRT,
0x5e467f2e, 0x77ca, 0x4ca5, 0x83, 0x91, 0xd1, 0x42, 0xed, 0x4b, 0x76, 0xc8);
// {57176A1B-1A9E-4EEA-ABEF-C61760198AC4} MFSubtitleFormat_SSA
DEFINE_GUID(MFSubtitleFormat_SSA,
0x57176a1b, 0x1a9e, 0x4eea, 0xab, 0xef, 0xc6, 0x17, 0x60, 0x19, 0x8a, 0xc4);
// {1BB3D849-6614-4D80-8882-ED24AA82DA92} MFSubtitleFormat_CustomUserData
DEFINE_GUID(MFSubtitleFormat_CustomUserData,
0x1bb3d849, 0x6614, 0x4d80, 0x88, 0x82, 0xed, 0x24, 0xaa, 0x82, 0xda, 0x92);
//////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Media Type Attributes GUIDs /////////////////// ///////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Media Type Attributes GUIDs /////////////////// /////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// GUIDs for IMFMediaType properties - prefix 'MF_MT_' - basic prop type in {}, // GUIDs for IMFMediaType properties - prefix 'MF_MT_' - basic prop type in {},
// with type to cast to in (). // with type to cast to in ().
// //
// //
// core info for all types // core info for all types
skipping to change at line 1658 skipping to change at line 2185
// Currently, only the values of 0, 90, 180, and 270 are valid for MF_MT_VIDEO_R OTATION. // Currently, only the values of 0, 90, 180, and 270 are valid for MF_MT_VIDEO_R OTATION.
// For convenience, these currently supported values are enumerated in MFVideoRo tationFormat. // For convenience, these currently supported values are enumerated in MFVideoRo tationFormat.
// Example: if the media type has MF_MT_VIDEO_ROTATION set as MFVideoRotationFor mat_90, // Example: if the media type has MF_MT_VIDEO_ROTATION set as MFVideoRotationFor mat_90,
// it means the content has been rotated 90 degree in the counter clockwise dire ction. // it means the content has been rotated 90 degree in the counter clockwise dire ction.
// If the content was actually rotated 90 degree in the clockwise direction, 90 degree in // If the content was actually rotated 90 degree in the clockwise direction, 90 degree in
// clockwise should be converted into 270 degree in the counter clockwise direct ion and set // clockwise should be converted into 270 degree in the counter clockwise direct ion and set
// the attribute MF_MT_VIDEO_ROTATION as MFVideoRotationFormat_270 accordingly. // the attribute MF_MT_VIDEO_ROTATION as MFVideoRotationFormat_270 accordingly.
DEFINE_GUID(MF_MT_VIDEO_ROTATION, DEFINE_GUID(MF_MT_VIDEO_ROTATION,
0xc380465d, 0x2271, 0x428c, 0x9b, 0x83, 0xec, 0xea, 0x3b, 0x4a, 0x85, 0xc1); 0xc380465d, 0x2271, 0x428c, 0x9b, 0x83, 0xec, 0xea, 0x3b, 0x4a, 0x85, 0xc1);
#if (WINVER >= _WIN32_WINNT_WINTHRESHOLD)
// MF_MT_SECURE {c5acc4fd-0304-4ecf-809f-47bc97ff63bd }
// Type: UINT32 (BOOL)
// Description: MF_MT_SECURE attribute indicates that the content will be using
// secure D3D surfaces. These surfaces can only be accessed by trusted hardware
.
DEFINE_GUID(MF_MT_SECURE,
0xc5acc4fd, 0x0304, 0x4ecf, 0x80, 0x9f, 0x47, 0xbc, 0x97, 0xff, 0x63, 0xbd);
#endif
// MF_MT_VIDEO_NO_FRAME_ORDERING {3F5B106F-6BC2-4EE3-B7ED-8902C18F5351}
// Type: UINT32
// Description: MF_MT_VIDEO_NO_FRAME_ORDERING set to non-zero (true) means exter
nal users/apps know
// that input video bitstream has no frame rerodering,
// that is, the output and display order is the same as the input and decoding o
rder
// it will overwrite bitstream syntaxes even if bitstream syntaxes do not indica
te
// that the output and display order is the same as the input and decoding order
//
// it is an attribute set on input media type
//
DEFINE_GUID(MF_MT_VIDEO_NO_FRAME_ORDERING,
0x3f5b106f, 0x6bc2, 0x4ee3, 0xb7, 0xed, 0x89, 0x2, 0xc1, 0x8f, 0x53, 0x51);
// MF_MT_VIDEO_H264_NO_FMOASO {ED461CD6-EC9F-416A-A8A3-26D7D31018D7}
// Type: UINT32
// Description: MF_MT_VIDEO_H264_NO_FMOASO set to non-zero (true) means external
users/apps know
// that H.264 input video bitstream has no FMO/ASO enabled,
// that is, even if the bitstream has baseline profile and constraint_set1_flag
equal to 0,
// the bitstream shall not have FMO/ASO
// then H.264 decoder uses DXVA decoding and doesn't fall back to software decod
ing
// it improves power consumption, memory usage, performance and user experiences
// (without unnecessary glitches on low end devices)
//
// it is an attribute set on input media type
//
DEFINE_GUID(MF_MT_VIDEO_H264_NO_FMOASO,
0xed461cd6, 0xec9f, 0x416a, 0xa8, 0xa3, 0x26, 0xd7, 0xd3, 0x10, 0x18, 0xd7);
#endif // (WINVER >= _WIN32_WINNT_WIN8) #endif // (WINVER >= _WIN32_WINNT_WIN8)
// //
// AUDIO data // AUDIO data
// //
// {37e48bf5-645e-4c5b-89de-ada9e29b696a} MF_MT_AUDIO_NUM_CHANNELS {UINT32} // {37e48bf5-645e-4c5b-89de-ada9e29b696a} MF_MT_AUDIO_NUM_CHANNELS {UINT32}
DEFINE_GUID(MF_MT_AUDIO_NUM_CHANNELS, DEFINE_GUID(MF_MT_AUDIO_NUM_CHANNELS,
0x37e48bf5, 0x645e, 0x4c5b, 0x89, 0xde, 0xad, 0xa9, 0xe2, 0x9b, 0x69, 0x6a); 0x37e48bf5, 0x645e, 0x4c5b, 0x89, 0xde, 0xad, 0xa9, 0xe2, 0x9b, 0x69, 0x6a);
skipping to change at line 1759 skipping to change at line 2323
// {BFBABE79-7434-4d1c-94F0-72A3B9E17188} MF_MT_AAC_PAYLOAD_TYPE {UINT32} // {BFBABE79-7434-4d1c-94F0-72A3B9E17188} MF_MT_AAC_PAYLOAD_TYPE {UINT32}
DEFINE_GUID(MF_MT_AAC_PAYLOAD_TYPE, DEFINE_GUID(MF_MT_AAC_PAYLOAD_TYPE,
0xbfbabe79, 0x7434, 0x4d1c, 0x94, 0xf0, 0x72, 0xa3, 0xb9, 0xe1, 0x71, 0x88); 0xbfbabe79, 0x7434, 0x4d1c, 0x94, 0xf0, 0x72, 0xa3, 0xb9, 0xe1, 0x71, 0x88);
// {7632F0E6-9538-4d61-ACDA-EA29C8C14456} MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATI ON {UINT32} // {7632F0E6-9538-4d61-ACDA-EA29C8C14456} MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATI ON {UINT32}
DEFINE_GUID(MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION, DEFINE_GUID(MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION,
0x7632f0e6, 0x9538, 0x4d61, 0xac, 0xda, 0xea, 0x29, 0xc8, 0xc1, 0x44, 0x56); 0x7632f0e6, 0x9538, 0x4d61, 0xac, 0xda, 0xea, 0x29, 0xc8, 0xc1, 0x44, 0x56);
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
#if (WINVER >= _WIN32_WINNT_WIN10)
//
// AUDIO - FLAC extra data
//
// {8B81ADAE-4B5A-4D40-8022-F38D09CA3C5C} MF_MT_AUDIO_FLAC_MAX_BLOCK_SIZE
{UINT32}
DEFINE_GUID(MF_MT_AUDIO_FLAC_MAX_BLOCK_SIZE,
0x8b81adae, 0x4b5a, 0x4d40, 0x80, 0x22, 0xf3, 0x8d, 0x9, 0xca, 0x3c, 0x5c);
#endif // (WINVER >= _WIN32_WINNT_WIN10)
// //
// VIDEO core data // VIDEO core data
// //
// {1652c33d-d6b2-4012-b834-72030849a37d} MF_MT_FRAME_SIZE {UIN T64 (HI32(Width),LO32(Height))} // {1652c33d-d6b2-4012-b834-72030849a37d} MF_MT_FRAME_SIZE {UIN T64 (HI32(Width),LO32(Height))}
DEFINE_GUID(MF_MT_FRAME_SIZE, DEFINE_GUID(MF_MT_FRAME_SIZE,
0x1652c33d, 0xd6b2, 0x4012, 0xb8, 0x34, 0x72, 0x03, 0x08, 0x49, 0xa3, 0x7d); 0x1652c33d, 0xd6b2, 0x4012, 0xb8, 0x34, 0x72, 0x03, 0x08, 0x49, 0xa3, 0x7d);
// {c459a2e8-3d2c-4e44-b132-fee5156c7bb0} MF_MT_FRAME_RATE {UIN T64 (HI32(Numerator),LO32(Denominator))} // {c459a2e8-3d2c-4e44-b132-fee5156c7bb0} MF_MT_FRAME_RATE {UIN T64 (HI32(Numerator),LO32(Denominator))}
DEFINE_GUID(MF_MT_FRAME_RATE, DEFINE_GUID(MF_MT_FRAME_RATE,
skipping to change at line 1900 skipping to change at line 2475
0x799cabd6, 0x3508, 0x4db4, 0xa3, 0xc7, 0x56, 0x9c, 0xd5, 0x33, 0xde, 0xb1); 0x799cabd6, 0x3508, 0x4db4, 0xa3, 0xc7, 0x56, 0x9c, 0xd5, 0x33, 0xde, 0xb1);
// {c16eb52b-73a1-476f-8d62-839d6a020652} MF_MT_MAX_KEYFRAME_SPACING {UIN T32} // {c16eb52b-73a1-476f-8d62-839d6a020652} MF_MT_MAX_KEYFRAME_SPACING {UIN T32}
DEFINE_GUID(MF_MT_MAX_KEYFRAME_SPACING, DEFINE_GUID(MF_MT_MAX_KEYFRAME_SPACING,
0xc16eb52b, 0x73a1, 0x476f, 0x8d, 0x62, 0x83, 0x9d, 0x6a, 0x02, 0x06, 0x52); 0xc16eb52b, 0x73a1, 0x476f, 0x8d, 0x62, 0x83, 0x9d, 0x6a, 0x02, 0x06, 0x52);
// {b6bc765f-4c3b-40a4-bd51-2535b66fe09d} MF_MT_USER_DATA {BLO B} // {b6bc765f-4c3b-40a4-bd51-2535b66fe09d} MF_MT_USER_DATA {BLO B}
DEFINE_GUID(MF_MT_USER_DATA, DEFINE_GUID(MF_MT_USER_DATA,
0xb6bc765f, 0x4c3b, 0x40a4, 0xbd, 0x51, 0x25, 0x35, 0xb6, 0x6f, 0xe0, 0x9d); 0xb6bc765f, 0x4c3b, 0x40a4, 0xbd, 0x51, 0x25, 0x35, 0xb6, 0x6f, 0xe0, 0x9d);
// {a505d3ac-f930-436e-8ede-93a509ce23b2} MF_MT_OUTPUT_BUFFER_NUM {UINT32}
DEFINE_GUID(MF_MT_OUTPUT_BUFFER_NUM,
0xa505d3ac, 0xf930, 0x436e, 0x8e, 0xde, 0x93, 0xa5, 0x09, 0xce, 0x23, 0xb2);
// //
// VIDEO - uncompressed format data // VIDEO - uncompressed format data
// //
// {644b4e48-1e02-4516-b0eb-c01ca9d49ac6} MF_MT_DEFAULT_STRIDE {UIN T32 (INT32)} // in bytes // {644b4e48-1e02-4516-b0eb-c01ca9d49ac6} MF_MT_DEFAULT_STRIDE {UIN T32 (INT32)} // in bytes
DEFINE_GUID(MF_MT_DEFAULT_STRIDE, DEFINE_GUID(MF_MT_DEFAULT_STRIDE,
0x644b4e48, 0x1e02, 0x4516, 0xb0, 0xeb, 0xc0, 0x1c, 0xa9, 0xd4, 0x9a, 0xc6); 0x644b4e48, 0x1e02, 0x4516, 0xb0, 0xeb, 0xc0, 0x1c, 0xa9, 0xd4, 0x9a, 0xc6);
// {6d283f42-9846-4410-afd9-654d503b1a54} MF_MT_PALETTE {BLO B (array of MFPaletteEntry - usually 256)} // {6d283f42-9846-4410-afd9-654d503b1a54} MF_MT_PALETTE {BLO B (array of MFPaletteEntry - usually 256)}
DEFINE_GUID(MF_MT_PALETTE, DEFINE_GUID(MF_MT_PALETTE,
skipping to change at line 1981 skipping to change at line 2560
0xa20af9e8, 0x928a, 0x4b26, 0xaa, 0xa9, 0xf0, 0x5c, 0x74, 0xca, 0xc4, 0x7c); 0xa20af9e8, 0x928a, 0x4b26, 0xaa, 0xa9, 0xf0, 0x5c, 0x74, 0xca, 0xc4, 0x7c);
// {5229BA10-E29D-4F80-A59C-DF4F180207D2} MF_MT_MPEG2_TIMECODE {UIN T32 (0 for no timecode, 1 to append an 4 byte timecode to the front of each tran sport packet)} // {5229BA10-E29D-4F80-A59C-DF4F180207D2} MF_MT_MPEG2_TIMECODE {UIN T32 (0 for no timecode, 1 to append an 4 byte timecode to the front of each tran sport packet)}
DEFINE_GUID(MF_MT_MPEG2_TIMECODE, DEFINE_GUID(MF_MT_MPEG2_TIMECODE,
0x5229ba10, 0xe29d, 0x4f80, 0xa5, 0x9c, 0xdf, 0x4f, 0x18, 0x2, 0x7, 0xd2); 0x5229ba10, 0xe29d, 0x4f80, 0xa5, 0x9c, 0xdf, 0x4f, 0x18, 0x2, 0x7, 0xd2);
// {825D55E4-4F12-4197-9EB3-59B6E4710F06} MF_MT_MPEG2_CONTENT_PACKET {UIN T32 (0 for no content packet, 1 to append a 14 byte Content Packet header accord ing to the ARIB specification to the beginning a transport packet at 200-1000 ms intervals.)} // {825D55E4-4F12-4197-9EB3-59B6E4710F06} MF_MT_MPEG2_CONTENT_PACKET {UIN T32 (0 for no content packet, 1 to append a 14 byte Content Packet header accord ing to the ARIB specification to the beginning a transport packet at 200-1000 ms intervals.)}
DEFINE_GUID(MF_MT_MPEG2_CONTENT_PACKET, DEFINE_GUID(MF_MT_MPEG2_CONTENT_PACKET,
0x825d55e4, 0x4f12, 0x4197, 0x9e, 0xb3, 0x59, 0xb6, 0xe4, 0x71, 0xf, 0x6); 0x825d55e4, 0x4f12, 0x4197, 0x9e, 0xb3, 0x59, 0xb6, 0xe4, 0x71, 0xf, 0x6);
// {91a49eb5-1d20-4b42-ace8-804269bf95ed} MF_MT_MPEG2_ONE_FRAME_PER_PACKET
{UINT32 (BOOL) -- 0 for default behavior of splitting large video frames into
multiple PES packets, 1 for always putting a full frame inside a PES packet, eve
n if that requires setting the PES packet size to undefined (0)}
DEFINE_GUID(MF_MT_MPEG2_ONE_FRAME_PER_PACKET,
0x91a49eb5, 0x1d20, 0x4b42, 0xac, 0xe8, 0x80, 0x42, 0x69, 0xbf, 0x95, 0xed);
// {168f1b4a-3e91-450f-aea7-e4baeadae5ba} MF_MT_MPEG2_HDCP {UINT32 (BOOL) -- 0
for default behavior of clear MPEG2 stream, 1 for adding the HDCP descriptor to
the PMT
DEFINE_GUID(MF_MT_MPEG2_HDCP,
0x168f1b4a, 0x3e91, 0x450f, 0xae, 0xa7, 0xe4, 0xba, 0xea, 0xda, 0xe5, 0xba);
// //
// VIDEO - H264 extra data // VIDEO - H264 extra data
// //
// {F5929986-4C45-4FBB-BB49-6CC534D05B9B} {UINT32, UVC 1.5 H.264 format descrip tor: bMaxCodecConfigDelay} // {F5929986-4C45-4FBB-BB49-6CC534D05B9B} {UINT32, UVC 1.5 H.264 format descrip tor: bMaxCodecConfigDelay}
DEFINE_GUID(MF_MT_H264_MAX_CODEC_CONFIG_DELAY, DEFINE_GUID(MF_MT_H264_MAX_CODEC_CONFIG_DELAY,
0xf5929986, 0x4c45, 0x4fbb, 0xbb, 0x49, 0x6c, 0xc5, 0x34, 0xd0, 0x5b, 0x9b); 0xf5929986, 0x4c45, 0x4fbb, 0xbb, 0x49, 0x6c, 0xc5, 0x34, 0xd0, 0x5b, 0x9b);
// {C8BE1937-4D64-4549-8343-A8086C0BFDA5} {UINT32, UVC 1.5 H.264 format descript or: bmSupportedSliceModes} // {C8BE1937-4D64-4549-8343-A8086C0BFDA5} {UINT32, UVC 1.5 H.264 format descript or: bmSupportedSliceModes}
DEFINE_GUID(MF_MT_H264_SUPPORTED_SLICE_MODES, DEFINE_GUID(MF_MT_H264_SUPPORTED_SLICE_MODES,
skipping to change at line 2037 skipping to change at line 2624
0x359ce3a5, 0xaf00, 0x49ca, 0xa2, 0xf4, 0x2a, 0xc9, 0x4c, 0xa8, 0x2b, 0x61); 0x359ce3a5, 0xaf00, 0x49ca, 0xa2, 0xf4, 0x2a, 0xc9, 0x4c, 0xa8, 0x2b, 0x61);
//{705177D8-45CB-11E0-AC7D-B91CE0D72085} {UINT32, UVC 1.5 H.264 Probe/C ommit Control: bmRateControlModes} //{705177D8-45CB-11E0-AC7D-B91CE0D72085} {UINT32, UVC 1.5 H.264 Probe/C ommit Control: bmRateControlModes}
DEFINE_GUID(MF_MT_H264_RATE_CONTROL_MODES, DEFINE_GUID(MF_MT_H264_RATE_CONTROL_MODES,
0x705177d8, 0x45cb, 0x11e0, 0xac, 0x7d, 0xb9, 0x1c, 0xe0, 0xd7, 0x20, 0x85); 0x705177d8, 0x45cb, 0x11e0, 0xac, 0x7d, 0xb9, 0x1c, 0xe0, 0xd7, 0x20, 0x85);
//{85E299B2-90E3-4FE8-B2F5-C067E0BFE57A} {UINT64, UVC 1.5 H.264 Probe/C ommit Control: bmLayoutPerStream} //{85E299B2-90E3-4FE8-B2F5-C067E0BFE57A} {UINT64, UVC 1.5 H.264 Probe/C ommit Control: bmLayoutPerStream}
DEFINE_GUID(MF_MT_H264_LAYOUT_PER_STREAM, DEFINE_GUID(MF_MT_H264_LAYOUT_PER_STREAM,
0x85e299b2, 0x90e3, 0x4fe8, 0xb2, 0xf5, 0xc0, 0x67, 0xe0, 0xbf, 0xe5, 0x7a); 0x85e299b2, 0x90e3, 0x4fe8, 0xb2, 0xf5, 0xc0, 0x67, 0xe0, 0xbf, 0xe5, 0x7a);
// According to Mpeg4 spec, SPS and PPS of H.264/HEVC codec could appear in samp
le data.
// description box. Mpeg4 sink filters out the SPS and PPS NALU and do not suppo
rt in band SPS and PPS NALU.
// This attribute enables support for in band SPS and PPS to appear in the eleme
ntary stream.
// HEVC will have in-band parameter set by default with MP4 recording for broad
support. H.264 will have out - of - band parameter set by default for historica
l reason.
// {75DA5090-910B-4A03-896C-7B898FEEA5AF}
DEFINE_GUID(MF_MT_IN_BAND_PARAMETER_SET,
0x75da5090, 0x910b, 0x4a03, 0x89, 0x6c, 0x7b, 0x89, 0x8f, 0xee, 0xa5, 0xaf);
// //
// INTERLEAVED - DV extra data // INTERLEAVED - DV extra data
// //
// {84bd5d88-0fb8-4ac8-be4b-a8848bef98f3} MF_MT_DV_AAUX_SRC_PACK_0 {UIN T32} // {84bd5d88-0fb8-4ac8-be4b-a8848bef98f3} MF_MT_DV_AAUX_SRC_PACK_0 {UIN T32}
DEFINE_GUID(MF_MT_DV_AAUX_SRC_PACK_0, DEFINE_GUID(MF_MT_DV_AAUX_SRC_PACK_0,
0x84bd5d88, 0x0fb8, 0x4ac8, 0xbe, 0x4b, 0xa8, 0x84, 0x8b, 0xef, 0x98, 0xf3); 0x84bd5d88, 0x0fb8, 0x4ac8, 0xbe, 0x4b, 0xa8, 0x84, 0x8b, 0xef, 0x98, 0xf3);
// {f731004e-1dd1-4515-aabe-f0c06aa536ac} MF_MT_DV_AAUX_CTRL_PACK_0 {UIN T32} // {f731004e-1dd1-4515-aabe-f0c06aa536ac} MF_MT_DV_AAUX_CTRL_PACK_0 {UIN T32}
DEFINE_GUID(MF_MT_DV_AAUX_CTRL_PACK_0, DEFINE_GUID(MF_MT_DV_AAUX_CTRL_PACK_0,
0xf731004e, 0x1dd1, 0x4515, 0xaa, 0xbe, 0xf0, 0xc0, 0x6a, 0xa5, 0x36, 0xac); 0xf731004e, 0x1dd1, 0x4515, 0xaa, 0xbe, 0xf0, 0xc0, 0x6a, 0xa5, 0x36, 0xac);
skipping to change at line 2174 skipping to change at line 2769
#if (WINVER >= _WIN32_WINNT_WIN8) #if (WINVER >= _WIN32_WINNT_WIN8)
// {9C27891A-ED7A-40e1-88E8-B22727A024EE} MF_LOW_LATENCY {UIN T32 (BOOL)} // {9C27891A-ED7A-40e1-88E8-B22727A024EE} MF_LOW_LATENCY {UIN T32 (BOOL)}
// Same GUID as CODECAPI_AVLowLatencyMode // Same GUID as CODECAPI_AVLowLatencyMode
DEFINE_GUID(MF_LOW_LATENCY, DEFINE_GUID(MF_LOW_LATENCY,
0x9c27891a, 0xed7a, 0x40e1, 0x88, 0xe8, 0xb2, 0x27, 0x27, 0xa0, 0x24, 0xee); 0x9c27891a, 0xed7a, 0x40e1, 0x88, 0xe8, 0xb2, 0x27, 0x27, 0xa0, 0x24, 0xee);
// {E3F2E203-D445-4B8C-9211-AE390D3BA017} {UINT32} Maximum macroblocks per seco nd that can be handled by MFT // {E3F2E203-D445-4B8C-9211-AE390D3BA017} {UINT32} Maximum macroblocks per seco nd that can be handled by MFT
DEFINE_GUID(MF_VIDEO_MAX_MB_PER_SEC, DEFINE_GUID(MF_VIDEO_MAX_MB_PER_SEC,
0xe3f2e203, 0xd445, 0x4b8c, 0x92, 0x11, 0xae, 0x39, 0xd, 0x3b, 0xa0, 0x17); 0xe3f2e203, 0xd445, 0x4b8c, 0x92, 0x11, 0xae, 0x39, 0xd, 0x3b, 0xa0, 0x17);
// {7086E16C-49C5-4201-882A-8538F38CF13A} {UINT32 (BOOL)} Enables(0, default)/di
sables(1) the DXVA decode status queries in decoders. When disabled decoder won'
t provide MFSampleExtension_FrameCorruption
DEFINE_GUID(MF_DISABLE_FRAME_CORRUPTION_INFO,
0x7086e16c, 0x49c5, 0x4201, 0x88, 0x2a, 0x85, 0x38, 0xf3, 0x8c, 0xf1, 0x3a);
#endif // (WINVER >= _WIN32_WINNT_WIN8) #endif // (WINVER >= _WIN32_WINNT_WIN8)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// Media Type GUIDs ////////////////////////////// /////////////////////////////// Media Type GUIDs //////////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// Major types // Major types
// //
DEFINE_GUID(MFMediaType_Default, DEFINE_GUID(MFMediaType_Default,
 End of changes. 19 change blocks. 
23 lines changed or deleted 729 lines changed or added

This html diff was produced by rfcdiff 1.41.