CONFIG_F322_OBUER_REFRESTRICT: Restricted switch frames are not inter predicted
Observe that switch frames are not using inter prediction when the restricted functionality of E322 is enabled. Understand that this is not the design intent, as a switch frame is defined to be an inter coded frame. And would add that the current behavior is the same/similar to a key frame.
For example, the command /avmenc --limit=4 --lag-in-frames=0 --cpu-used=0 --end-usage=q --qp=63 --sframe-dist=2 --sframe-mode=0 -o output.bin ParkJoy_480x270_50.y4m generates the following output:
baseline_gf_interval = 3
POC: 0 [ KEY ][Level:1][Q: 21]: 95220 Bytes, 835122.0ms [ -1, -1, -1, -1, -1, -1, -1,] 480x270
POC: 1 [INTER][Level:2][Q: 63]: 25297 Bytes, 667460.1ms [ 0, 0, 0, 0, 0, 0, 0,] 480x270
POC: 2 [ S ][Level:2][Q: 63]: 47134 Bytes, 732693.5ms [ -2, -2, -2, -2, -2, -2, -2,] 480x270
POC: 3 [INTER][Level:2][Q: 63]: 46084 Bytes, 739756.9ms [ 2, 2, 2, 2, 2, 2, 2,] 480x270
Bitrate(kbps) | Encoding time (FPS)
Summary: 21373.500000 | 2975.0s (0.0 fps)
By comparison, the command /avmenc --limit=4 --lag-in-frames=0 --cpu-used=0 --end-usage=q --qp=63 --kf-max-dist=1 -o output.bin ParkJoy_480x270_50.y4 gives the following output:
baseline_gf_interval = 1
POC: 0 [ KEY ][Level:1][Q: 63]: 48420 Bytes, 657382.0ms [ -1, -1, -1, -1, -1, -1, -1,] 480x270 baseline_gf_interval = 1
POC: 1 [ KEY ][Level:1][Q: 63]: 47832 Bytes, 802869.0ms [ -1, -1, -1, -1, -1, -1, -1,] 480x270 baseline_gf_interval = 1
POC: 2 [ KEY ][Level:1][Q: 63]: 47109 Bytes, 652261.7ms [ -1, -1, -1, -1, -1, -1, -1,] 480x270 baseline_gf_interval = 1
POC: 3 [ KEY ][Level:1][Q: 63]: 46013 Bytes, 613098.6ms [ -1, -1, -1, -1, -1, -1, -1,] 480x270
Bitrate(kbps) | Encoding time (FPS)
Summary: 18937.400000 | 2725.6s (0.0 fps)
As can be seen, the switch frame is located at POC2 and effectively consumes the same number of bytes as coding that frame as a key frame.