Media (Intel® oneAPI Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools from Intel. This includes Intel® oneAPI Video Processing Library and Intel® Media SDK.

Hardware encoder disobeys VBR bitrate change ?

Jack_Chimasera
Beginner
223 Views
Hello
I've built a small program that encodes video into H264 using the Beta2 of V3 of the SDK.
When running in software encoding mode, calling Reset can change the bitrate produced by the encoder. However, the same code, when used in hardware encoding mode, has no effect at all ! The Reset command returns no error, but it also has absolutely no effect on the encoding process, is that a known shortcoming ?

regards

Jack Chimasera
0 Kudos
1 Solution
IDZ_A_Intel
Employee
223 Views
Hi Jack,

There are two things to take into consideration here.

1) Intel Media SDK 3.0 is targeted to expose HW accelerated features of next generation Intel platform, code named Ivy Bridge. This means that the new features of Media SDK in 3.0 may not yet be fully supported in HW in current generation Intel platforms. The intent is that the SW Media SDK implementaton of the feature will provide the same functionality leading up to the launch of Ivy Bridge. This is likely the reason you are experiencing issues using the Reset operation in changing bit rate.

2) The Dynamic bit rate feature is unfortunately not very well described in the appendix chapter of the Media SDK manual.
To make sure this feature works optimally you should do the following:(Below approach is not perfect, but ensures the feature get enabled)
- Call MFXVideoENCODE_Reset immediately after calling MFXVideoENCODE_Init during initialization of encoder. The MFXVideoENCODE_Reset call must set TargetKbps or MaxKbps to a different value than the value used in the MFXVideoENCODE_Init call. Initialization example below:
[bash]MFXVideoENCODE_Init(&Params);
Params.mfx.TargetKbps += 10;
MFXVideoENCODE_Reset(&Params);[/bash]
- This will enable immediate rate change via following MFXVideoENCODE_Reset calls during encode.


Thanks,
Petter

View solution in original post

2 Replies
IDZ_A_Intel
Employee
224 Views
Hi Jack,

There are two things to take into consideration here.

1) Intel Media SDK 3.0 is targeted to expose HW accelerated features of next generation Intel platform, code named Ivy Bridge. This means that the new features of Media SDK in 3.0 may not yet be fully supported in HW in current generation Intel platforms. The intent is that the SW Media SDK implementaton of the feature will provide the same functionality leading up to the launch of Ivy Bridge. This is likely the reason you are experiencing issues using the Reset operation in changing bit rate.

2) The Dynamic bit rate feature is unfortunately not very well described in the appendix chapter of the Media SDK manual.
To make sure this feature works optimally you should do the following:(Below approach is not perfect, but ensures the feature get enabled)
- Call MFXVideoENCODE_Reset immediately after calling MFXVideoENCODE_Init during initialization of encoder. The MFXVideoENCODE_Reset call must set TargetKbps or MaxKbps to a different value than the value used in the MFXVideoENCODE_Init call. Initialization example below:
[bash]MFXVideoENCODE_Init(&Params);
Params.mfx.TargetKbps += 10;
MFXVideoENCODE_Reset(&Params);[/bash]
- This will enable immediate rate change via following MFXVideoENCODE_Reset calls during encode.


Thanks,
Petter
sjbaran
Novice
223 Views
This helped me too, thanks.
Reply