MultiMedia API question about VP9

Hi

Retrive H.264 and VP9 metadata

When we trying to use getMetadata() (Jetson Linux API Reference: NvVideoEncoder Class Reference | NVIDIA Docs), H.264 can retrieve metadata properly, but when I switch to VP9, every metadata shows 0.

Is there any way to retrieve the proper metadata from VP9 ?

Configure bitrate on VP9

This question connect to the API: setVirtualBufferSize (Jetson Linux API Reference: NvVideoEncoder Class Reference | NVIDIA Docs), it looks encoding bitrate are not controlled as CBR in VP9.

Here’s our test:

Encode Settings:

  • Bitrate:500kbps
  • Rate Control: CBR
  • Preset: Slow
  • Virtual Buffer Size:400kb

H.264

VP9. This looks working not proper.

Hi,
The implementation about metadata is specific to h264/h265. For VP9, please share what information you need. We can check if we can add support in future release(s).

For setting bitrate in VP9 encoding, the overall bitrate should meet the setting. If you think its an issue, please share a command(01_video_encode) so that we can run and reproduce the issue.

Hi,
I would like to reply for your answer.

The implementation about metadata is specific to h264/h265. For VP9, please share what information you need. We can check if we can add support in future release(s).

We need following values to control broadcast quality.

  • AvgQP
  • KeyFrame

For setting bitrate in VP9 encoding, the overall bitrate should meet the setting.

But we are using CBR mode for rate control. I assume that it should more strictly control the bitrate per second.

If you think its an issue, please share a command(01_video_encode) so that we can run and reproduce the issue.

Here is the command which is used by us.
./video_encode input.yuv 1280 720 VP9 out.vp9 -br 500000 -rc cbr -hpt 4 -ifi 100000 -vbs 400000

Please find following graph. We had checked the encoded bitrate for Jetson and libvpx. Both are encoded by using CBR mode and 500kbps. It seems that the libvpx is strictly keep bitrate 500kbps but the Jetson is not keep. If we need another parameter for CBR mode encoding, please let us know. Thank you.

Hi,
I can see KeyFrame is reported. For AvgQP, will check with teams if we can support it in VP9.

For bitrate, 500kbps is a harsh setting for 720p. The hardware encoder may not be able to achieve the bitrate for VP9. Do you consider to set it to a larger value? We will check with teams but it is very likely to be hardware constraint and we cannot achieve it.

Hi,
Please replace with attached lib and give it a try.
r32_5_x_TEST_vp9_lib.zip (329.2 KB)

It is verified with the command:

// generate YUV420 data
00_video_decode$ ./video_decode H264 --disable-rendering -o 1080.yuv ../../data/Video/sample_outdoor_car_1080p_10fps.h264
07_video_convert$ ./video_convert ../00_video_decode/1080.yuv 1920 1080 NV12 sample_720p.yuv 1280 720 YUV420
// encode to vp9
01_video_encode$ ./video_encode ../07_video_convert/sample_720p.yuv0 1280 720 VP9 a.vp9 --report-metadata -br 500000 -vbs 33333

Hi,

Thank you for your support. I will try attached library.

Hi,
Sorry for the late reply. I had tested with attached library.
Both issues are fixed. Thank you for your support.

  • VP9 metadata
    We could receive QP value properly.
  • Rate control
    Here is the result. It seems that bitrate is controlled properly as CBR.

When this fixes will be released?

Hi,
The fix does not catch Jetpack 4.6. Will be present in next release.