Hello
I’m trying to enable H.264 slice intra refresh in a Jetson platform but can’t get the desired result. I’m expecting the IDR frames to be replaced by a periodic “refresh wave”, where the sequence of P-frames contain columns of intra-coded macroblocks that scans the frame from left to right, periodically.
For example, if I use x264enc and enable the intra-refresh with an interval of 5 frames:
gst-launch-1.0 videotestsrc pattern=ball num-buffers=15 ! x264enc intra-refresh=true key-int-max=5 ! video/x-h264,stream-format=byte-stream,profile=baseline ! filesink location=test.h264
I get the following:
x264enc.log (37.8 KB)
The very first frame is an IDR, followed by 4 P frames with mostly inter-coded macroblocks. However, starting from the second period, you can clearly see the “refresh wave” scanning the frame as shown in the following image (see log for full details):
Now, if I attempt to enable the same intra-refresh configuration using omxh264enc as in the following pipeline:
gst-launch-1.0 videotestsrc num-buffers=20 pattern=ball ! nvvidconv ! omxh264enc SliceIntraRefreshInterval=5 SliceIntraRefreshEnable=true ! video/x-h264,stream-format=avc ! h264parse ! video/x-h264,stream-format=byte-stream ! filesink location=jetson.h264
I get the following:
omxh264enc.log (44.2 KB)
It can be seen that, unfortunately, there is no refresh wave as one would expect (see log for full details):
Exactly the same happens if I attempt to use nvv4l2h264enc instead.
Is slice intra refresh currently supported? If so, how should I configure the encoder to get the proper result?