Currently we are developping video decoder MFTs.
How can MFT notify video extended info ( color conversion matrix, etc.) to EVR
What attributes of sample or mediatype will be used by video processing in EVR mixer
Does default mixer use video transfer matrix for video processing
It seems there are two ways for getting video extended information from media type.
1. IMFVideoMediaType::GetVideoFormat can get the video format that include color matrix info.( but can't set information )
2. IMFAttribute::GetUINT32(MF_MT_YUV_MATRIX, &Values) can get MFVideoTransferMatrix enumeration. According SDK's documents this attribute is for IMFMediaType.
However, there is no way to attach extend info to IMFSample ( but interlace info can be attached).
I tried to get attribute of the media type of WMV media source output by connecting GrayScaleMFT included SDK samples. When I connect WMV media source and GrayScaleMFT I get attributes in SetInputType of MFT. I success to query IMFVideoMediaType and get video format, but fail to get MF_MT_YUV_MATRIX attribute from IMFMediaType.
Should decoder MFTs set video extended info via IMFVideoMediaType
If yes, How can we set
Is there any way to notify video extended info by the sample
Thanks.

How does MFT deliver Video Extended info to EVR?
Heinz_Richards
Hi K.K.
In general, you should never _have_ to use IMFVideoMediaType; in fact, the preferred way of doing media type stuff is to work directly with the attributes on an IMFMediaType.
A lot of those attributes listed are optional, meaning that they're not required for the mediatype to be considered valid. As such, a simple component like the GrayScaleMFT in the sample might not bother with them.
As for carrying mediatype information per sample, MF doesn't do it that way. If there's a mid-stream change to any aspect of the media type, this is accomplished by pushing the MEStreamFormatChanged event downstream with the new media type.
And as for which attributes the EVR pays attention to... Which ones are you interested in I can get you more info.
Hope this helps somewhat...
FedorSteeman
I see. I will add MF_MT_YUV_MATRIX attribute.
Pierre Leclerc
The decoder defines the color space of the input content. This is communicated in the media type via media type attribute MF_MT_YUV_MATRIX. See MFVideoTransferMatrix for the valid values here.
If this value from the media type is MFVideoTransFunc_Unknown, then the EVR will use DXVA2_VideoTransferMatrix_Unknown. Behavior here depends on DXVA2.
This posting is provided AS IS with no warranties and confers no rights -- Jay Senior (MSFT)
DMAR330
Hi Becky,
I worry about color conversion ( YUV to RGB transfer matrix).
Without color conversion information EVR mixer can't convert yuv input to rgb output.
According to SDK documents EVR use DXVA2 Video Processing. The DXVA2_VideoSample that IDirectXVideoProcessor::VideoProcessBlt use as input has DXVA2_VideoExtended member. DXVA2_VideoExtended has VideoTransferMatrix member. We can select this parameter to change color conversion.
If EVR mixer use DXVA2_VideoTransferMatrix_Unknown, SD contents will use BT601 and HD will use BT709. Without input transfer matrix info EVR mixer will convert SD input converted with BT709 to wrong rgb.
So I think the video decoder MFT need to pass video transfer matrix info to EVR.
Which conversion parameter does the EVR mixer use as default
Which attribute of mediatype does the EVR mixer convert input parameters for DXVA2 VideoProcessing
EVR expose IMFVideoProcessor service which enable to change ProcAmp and other filter settings. However it doesn't have method to change video externded parameter. The application ( or control layer ) also can't change default mixer settings.