Hi!
My task is research capabilities of Media SDK hardware encoding with low latency for video conf. I am using core i7 Haswell.
I am encoding video with resolution 3840x1080 (Double FullHD) at 25 fps.
I have tried sample_video_conf, but it it not low latency, time for encoding 1 frame is not stable and can be between 30 and 50 (sometimes more than 50) ms.
Maybe I am doing something wrong?
I have seen sources of video conf example. There is two modes
if (m_initParams.pBrc.get()) { //brc uses target bitrate value, but Mediasdk required CQP mode m_initParams.pBrc->Init(&m_mfxEncParams); m_mfxEncParams.mfx.RateControlMethod = MFX_RATECONTROL_CQP; //20 only as a constant, it will be a adjusted by brc m_mfxEncParams.mfx.QPI = 20; m_mfxEncParams.mfx.QPP = 20; m_mfxEncParams.mfx.QPB = 20; } else { m_mfxEncParams.mfx.TargetKbps = m_initParams.nTargetKbps; // in Kbps m_mfxEncParams.mfx.RateControlMethod = MFX_RATECONTROL_VBR; //dynamic bitrate change requires for encoder to be initialized with VBR }
If we don`t set bitrate than sample uses MFX_RATECONTROL_CQP, if we set bitrate than sample will use MFX_RATECONTROL_VBR.
But if I set bitrate for less than 1 Mbit per sec, resulting bitrate is not lower than 1 Mbit. Why?
What about MFX_RATECONTROL_VCM? Documentation says that this is special mode for videconf, why sample doesn`t use it? And where to find any examples or just any info about usage of MFX_RATECONTROL_VCM?