I'm developing a voip app that needs to work on windows 7/8/10 and am struggling to get the Intel H264 encoder to do what I want.
I am using Media Foundation and have a topology built where I an able to place in a video processor/colour convertor before the transform and a sample grabber after to get the frames. This is working fine and I have the sample being delivered to another machine and am able to decode and play the back pretty much without any latency. Using GPU-Z on my encoding machine I can see my Intel HD 4000 card on my laptop taking the load of the encoding at about 10% GPU load. So, mostly I have the basics working.
The piece I want to add in now is the ability to control the bitrate that the encoder is spitting out so that I can wire this up to RTCP style feedback mechanism from the receiving end.
If I don't use the Intel encoder but instead use the Microsoft H264 Encoder, on Windows 8, then I can set the CODECAPI_AVEncCommonMeanBitRate property on the encoder whilst streaming and effect the bitrate without have to stop and start the video. But, with the Intel encoder in the pipeline I can't.
So, my main question is, what are the Codec API properties supported by the Intel H264 MFT?
Can they be changed after the SetOutputType has been set on the MFT?
Also, I read that in version 2 of the Media SDK there used to be a sample showing how to make an MFT using the SDK. I can't find a way to download that version of the SDK, I only have versions 5 and 6 of hte SDK here.
- Is this the MFT that is installed with the graphics cards?
- Are the windows 7 and 8/10 MFT's different?