Issues about "enableAutoSkip" function in VPU API

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Issues about "enableAutoSkip" function in VPU API

1,907 Views
masa-i
Contributor I

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?

Labels (3)
0 Kudos
14 Replies

1,439 Views
Aemj
Contributor IV

Hi team,

We are still waiting for your reply.

I wish somebody respond.

BR,

Miyamoto

0 Kudos

1,439 Views
Aemj
Contributor IV

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

0 Kudos

1,439 Views
masa-i
Contributor I

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

0 Kudos

1,439 Views
joanxie
NXP TechSupport
NXP TechSupport

enableAutoSkip parameter does work!!

did you get the same streaming or  not  when you set enableAutoSkip =1 or 0?

0 Kudos

1,439 Views
Aemj
Contributor IV

Hi,

Thanks for your reply.

The stream is exactly the same. Does it depend on LinuxBSP version?

BR,

Miyamoto

0 Kudos

1,439 Views
masa-i
Contributor I

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

0 Kudos

1,439 Views
Aemj
Contributor IV

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

0 Kudos

1,439 Views
Aemj
Contributor IV

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

0 Kudos

1,439 Views
Aemj
Contributor IV

Hi Guanqiong,

We believe that  enableAutoSkip and framedrop parameters do not work.

Please give your comment about whether it is true.

Thanks,

Miyamoto

0 Kudos

1,439 Views
joanxie
NXP TechSupport
NXP TechSupport

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.

0 Kudos

1,439 Views
Aemj
Contributor IV

Dear Guanqiong,

Thanks for your reply.

Soon, the customer will reply to you.

Thanks,

Miyamoto

0 Kudos

1,439 Views
joanxie
NXP TechSupport
NXP TechSupport

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.

0 Kudos

1,439 Views
masa-i
Contributor I

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?

0 Kudos

1,439 Views
Aemj
Contributor IV

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

0 Kudos