I'm evaluating the various functions of VPU.
I'm using SABRE-SDP with Linux environment based on Poky 1.7(Yocto).
I'm referring to the "VPU API Linux Reference Manual" and am estimating H.264 video
encoding function, but I have a doubt about the function of "enableAutoSkip".
In the API Reference Manual:
enableAutoSkip. The value 0 disables automatic skip and 1 enables automatic skip in encoder
operation. Automatic skip means encoder can skip frame encoding when generated Bitstream
so far is too big considering target bitrate. This parameter will be ignored if rate control
is not used (bitRate = 0).
I set enableAutoSkip=1 and encoding video with low bitrate at fixed frame rate(30fps/GOP=30).
I've checking "skipEncoded" in "EncOutputInfo" struct during encoding,but "skipEncoded"
never become 1 even if I changed bitrate lower.
Generated bitstream was bigger than target bitrate.
Also check the bitstream,but skipped frame was not found.
(I've tested with FullHD 30fsp video Input , and set the bitrates 50kbps to 4Mbps.)
Does anyone check this function work right? or Is my undestanding wrong?
Hi team,
We are still waiting for your reply.
I wish somebody respond.
BR,
Miyamoto
Hi Guanqiong,
The customer is using unit_test(mxc_vpu_test) for the test.
They believe that frame skip will occur under the following situation.
When they set enableAutoSkip to enable and set frame-rate to fixed, if they reduce ‘target bitrate’ gradually then frame skip will occur at a certain point(target bitrate).
You can use any YUV data contents for input of mxc_vpu_test and test as above for reproducing this phenomenon.
If our understanding is wrong, please let me know.
May I ask you to reproduce this phenomenon on your side?
Does it make sense?
Thanks,
Miyamoto
Hi Guanqiong,
Thank you for reply.
I've checked it by the following condition.
* Use same 1080P YUV image file as input.
* Set CBR and fixed fps(30fps), GOP=30.
* Set enableAutoSkip =1
* Encoding which bit rate is being changed gradually from 4Mbps to 500kbps.
But encoded frame was not skipped.
How did you check skipped frames ?
regards,
Masahiro
enableAutoSkip parameter does work!!
did you get the same streaming or not when you set enableAutoSkip =1 or 0?
Hi,
Thanks for your reply.
The stream is exactly the same. Does it depend on LinuxBSP version?
BR,
Miyamoto
Dear Guanqiong,
Thank you for your reply. The frame rate is 30fps(fixed) and I've tested encoding with lowering the bitrate gradually.
I don't use gstreamer. I'm checking frame skip function using a test program to which API in VPU is called directly.
I'm referring the following reference manual.
[i.MX 6Dual/6Quad VPU Application Programming Interface Linux Reference Manual]
Also I found 2 more doubtful points in VPU API.
1."userQpMin" in EncOpenParam structure
The userQPMax could confirm that setting becomes effective from a encoded stream,
but userQpMin is invalid. It seems disabled in VPU driver.
If userQpMin can't be effectively, I'd like to know the reason.
2."avc_disableDeblk" in EncAvcParam structure
I want to use DBF in H.264 encoding. I was set related following parameters.
avc_disableDeblk
avc_deblkFilterOffsetAlpha
avc_deblkFilterOffsetBeta
In the H.264 encoded stream (I analyzed the stream), deblocking filter is certain effectively.
But the actual effect of the filter can't be confirmed with a decoded picture.
(I've checked it by combination of various parameters.)
Is there anyone checked about this function?
Dear team, Should I post these issues by another thread?
Masahiro
Dear Guanqiong,
As for the additional two questions written in the customer's previous post, he created two other thread as below.
https://community.freescale.com/message/642440
https://community.freescale.com/thread/391633?sr=stream
Here, we need to your comment for the original question whether enableAutoSkip=1 really work.
The customer expects the quality of the images are improved even if the skips of the frames occur.
Could you give your comment on that?
Thanks,
Miyamoto
Dear Guanqiong,
We still wait for your reply for the original question from the customer on this thread.
Please let me know if you have more information on this.
BR,
Miyamoto
Hi Guanqiong,
We believe that enableAutoSkip and framedrop parameters do not work.
Please give your comment about whether it is true.
Thanks,
Miyamoto
bad performance encoding depending differenct case, not only enableAutoSkip=1, could you tell me what frame rate and bit rate you set?? and pls give me your encoding gstreamer command to check.
and you can set framedrop=true to drop 2-3 frames when the performance is bad.
Dear Guanqiong,
Thanks for your reply.
Soon, the customer will reply to you.
Thanks,
Miyamoto
Automatic frame skipping in VPU rate control is used for limiting the output amount of bitstream under the given target bit-rate. if you want to achive the requested bit rate ( low bit rate ) depend on enabling the skip frame feature, you can use this option.
Thanks for your answer.
I understand the mechanism of rate control and frame skip.
But my question is the point that a frame doesn't skip even if the enableAutoSkip is made effective.
Are there other any ideas?
Dear team,
The customer who posted the original question of this thread still needs your reply.
Some degraded images are seen in the video which is encoded by i.MX6 VPU with H.264.
They are trying to improve that by tuning some parameters in VPU APIs.
And they think that the degraded images may be improved if they can set enableAutoSkip to 1. For now, they think the “enableAutoSkip” parameter setting does not work.
Is it true?
Thanks,
Miyamoto