When using the MF in this config:
CHECK_HR(MFCreateAttributes(&pAttributes, 1));
CHECK_HR(pAttributes->SetUINT32(MF_LOW_LATENCY, TRUE));
CHECK_HR(pAttributes->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, TRUE));
CHECK_HR(pAttributes->SetUINT32(MF_SINK_WRITER_DISABLE_THROTTLING, TRUE));
CHECK_HR(pAttributes->SetGUID(MF_TRANSCODE_CONTAINERTYPE, MFTranscodeContainerType_MPEG4));
CHECK_HR(MFCreateSinkWriterFromURL(outputFile, nullptr, pAttributes.Get(), &ctx.pSinkWriter));
CHECK_HR(MFCreateMediaType(&pMediaTypeOut));
CHECK_HR(pMediaTypeOut->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video));
CHECK_HR(pMediaTypeOut->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_HEVC));
CHECK_HR(pMediaTypeOut->SetUINT32(MF_MT_AVG_BITRATE, 20000000));
CHECK_HR(pMediaTypeOut->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive));
CHECK_HR(pMediaTypeOut->SetUINT32(MF_MT_VIDEO_NOMINAL_RANGE, MFNominalRange_16_235));
CHECK_HR(pMediaTypeOut->SetUINT32(MF_MT_VIDEO_PRIMARIES, MFVideoPrimaries_BT709));
CHECK_HR(pMediaTypeOut->SetUINT32(MF_MT_TRANSFER_FUNCTION, MFVideoTransFunc_709));
CHECK_HR(pMediaTypeOut->SetUINT32(MF_MT_MPEG2_PROFILE, eAVEncH264VProfile_High));
CHECK_HR(pMediaTypeOut->SetUINT32(MF_MT_MPEG2_LEVEL, eAVEncH264VLevel5_2));
CHECK_HR(MFSetAttributeSize(pMediaTypeOut.Get(), MF_MT_FRAME_SIZE, ctx.desktopWidth, ctx.desktopHeight));
CHECK_HR(MFSetAttributeRatio(pMediaTypeOut.Get(), MF_MT_FRAME_RATE, 60, 1));
CHECK_HR(MFSetAttributeRatio(pMediaTypeOut.Get(), MF_MT_PIXEL_ASPECT_RATIO, 1, 1));
CHECK_HR(ctx.pSinkWriter->AddStream(pMediaTypeOut.Get(), &ctx.videoStreamIndex));
CHECK_HR(MFCreateMediaType(&pMediaTypeIn));
CHECK_HR(pMediaTypeIn->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video));
CHECK_HR(pMediaTypeIn->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_YUY2));
CHECK_HR(pMediaTypeIn->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive));
CHECK_HR(pMediaTypeIn->SetUINT32(MF_MT_VIDEO_NOMINAL_RANGE, MFNominalRange_0_255));
CHECK_HR(pMediaTypeIn->SetUINT32(MF_MT_VIDEO_PRIMARIES, MFVideoPrimaries_BT709));
CHECK_HR(pMediaTypeIn->SetUINT32(MF_MT_TRANSFER_FUNCTION, MFVideoTransFunc_709))
CHECK_HR(MFSetAttributeSize(pMediaTypeIn.Get(), MF_MT_FRAME_SIZE, ctx.desktopWidth, ctx.desktopHeight));
CHECK_HR(MFSetAttributeRatio(pMediaTypeIn.Get(), MF_MT_FRAME_RATE, 60, 1));
CHECK_HR(MFSetAttributeRatio(pMediaTypeIn.Get(), MF_MT_PIXEL_ASPECT_RATIO, 1, 1));
CHECK_HR(ctx.pSinkWriter->SetInputMediaType(ctx.videoStreamIndex, pMediaTypeIn.Get(), nullptr));
The step:
CHECK_HR(ctx.pSinkWriter->SetInputMediaType(ctx.videoStreamIndex, pMediaTypeIn.Get(), nullptr));
Fails with:
HRESULT 0xC00D36B4 | The data specified for the media type is invalid, inconsistent, or not supported by this object.
Re-enabling the GPU (which is completely disabled in Bios with MUX) fixes this issue but i get spammed with Intel Media SDK (mfxstatus) exceptions and the intel GPU dlls are loaded instead of the Nvidia GPU Dlls for enc/dec