I would like to query encoder capabilities for mfxExtCodingOption, mfxExtCodingOption2 and mfxExtCodingOption3. I use query mode 1 by attaching mfxExtCodingOption(2,3) structures to out parameter and use NULL for input parameter. When I made query in sofware implementation, everything works as expected. I get MFX_ERR_NONE result for mfxExtCodingOption and mfxExtCodingOption2 and I get "1" for supported and "0" for not supported options on mfxExtCodingOption structures. However, when I run same code with hardware implementation, although I get MFX_ERR_NONE result for mfxExtCodingOption, mfxExtCodingOption2 and mfxExtCodingOption3, all options on mfxExtCodingOption structures are "0".
I set only codec option on out parameter(params.mfx.CodecId = MFX_CODEC_AVC).
Is it a bug? or should I need to do some extra steps to query on hardware implementation?
SDK Ver: Intel Media SDK 2016 R2
- Intel(R) HD Graphics 4600 10.18.14.4414 Win 7
- Intel(R) HD Graphics 530 220.127.116.1101 Win 8.1
Did you also try MFXVideoENCODE_Init()?
MFXVideoENCODE_Query() is not very solid in this case, you could get its succeed but MFXVideoENCODE_Init() would still be failed. So you can try to call MFXVideoENCODE_Init() and then call MFXVideoENCODE_GetVideoParam() to see the really parameters being used.
Noted also, if you used MFX_CHECK_RESULT() macro to check the results, it will ignore the status MFX_WRN_INCOMPATIBLE_VIDEO_PARAM which means the input parameters was modified.
Thank you for your kind concern and reply.
I would like to create user interface for coding option selection depend on the encoder capabilities, therefore I can not call MFXVideoENCODE_Init at that stage (as far as I know, I need fully initialized mfxVideoParam to call the MFXVideoENCODE_Init). I just want to query which options I can use and put on user interface from mfxExtCodingOption(2,3). For example may I put an option for manipulating "mfxExtCodingOption2::FixedFrameRate" option on that system with a specific codec or not.