Is AdaptiveI or AdaptiveB supported on a particular set of hardware or a particular API level? The manual makes it sound like API 1.8 is the requirement. I'm using 1.10 and I don't see any I-frames being inserted on scene changes.
I found this: https://software.intel.com/en-us/forums/intel-media-sdk/topic/530296 which seems to indicate that it isn't supported - is this true for all hardware/API levels, or just a specific generation?
I'm using API 1.10 on Linux with Ivy Bridge hardware. If AdaptiveI is not supported, do you have any recommendations for how to improve performance on scene boundaries? Should LookAhead work on this hardware?
Hi Will - Good question. Your observation is correct - Adaptive flags have not been validated and are broken until the next release where we have fixed them. So, you cannot use those flags currently. For any scene change detection or more control on brc in general, we recommend the LookAhead mode. If you want more control on the brc, you could use LA mode as a pre-analysis mode by running the plugin separately also. The stats from that can be fed to the encoder and used in the brc. Hope this helps.
Hi Will - Small correction. On IVB, LA mode does not work. So, for your given system (IVB), neither Adapative flags nor LA mode would work. If you can upgrade to HSW or better, that'd be best since many features were added for these processors.
Thanks for the info. Unfortunately I'm working with a large deployment of IVB that cannot be upgraded.
If I can't use AdaptiveI or LA, can I at least manually force an I-frame using the mfxEncodeCtrl->FrameType field? I tried this, but it doesn't seem to work either. The encoder enters a state where it continually returns MFX_WRN_DEVICE_BUSY. Should this work on IVB?
Sorry for the delay in replying to you. IDR insertion has been around for a while. I just verified that it works (in Windows anyway) on an IVB machine. Please note, to do this I allocated as many mfxEncodeCtrl structures as frame surfaces, and used the same index for both.