Rtpulpfec doesn't work as expected

I’m trying to use rtpulpfec to recover lost packets. However, it doesn’t do its job. It recovers very few packets and lots of packets are lost.

Here is the log

rtpulpfeccommon.c:401:rtp_ulpfec_log_rtppacket:<rtpulpfecdec0> rtp header (incoming) : [    ] ssrc=0xf3ae36b0 pt=96 tstamp=3915064590 seq=20432 size=1400(1388,1388)

rtpulpfeccommon.c:401:rtp_ulpfec_log_rtppacket:<rtpulpfecdec0> rtp header (incoming) : [M   ] ssrc=0xf3ae36b0 pt=96 tstamp=3915064590 seq=20433 size=991(979,979)

rtpulpfecdec rtpulpfeccommon.c:401:rtp_ulpfec_log_rtppacket:<rtpulpfecdec0> rtp header (fec)      : [    ] ssrc=0xf3ae36b0 pt=122 tstamp=3915064590 seq=20434 size=1414(1402,1402)
rtpulpfecdec rtpulpfeccommon.c:427:rtp_ulpfec_log_fec_packet:<rtpulpfecdec0> fec header            : [      ] pt=0 tstamp=0 seq=20386 recovery_len=0
rtpulpfecdec rtpulpfeccommon.c:443:rtp_ulpfec_log_fec_packet:<rtpulpfecdec0> fec level header      : protection_len=1388 mask=0xf00000000000

rtpulpfecdec rtpulpfeccommon.c:401:rtp_ulpfec_log_rtppacket:<rtpulpfecdec0> rtp header (fec)      : [    ] ssrc=0xf3ae36b0 pt=122 tstamp=3915064590 seq=20435 size=1414(1402,1402)
rtpulpfecdec rtpulpfeccommon.c:427:rtp_ulpfec_log_fec_packet:<rtpulpfecdec0> fec header            : [      ] pt=96 tstamp=3915064590 seq=20389 recovery_len=1388
rtpulpfecdec rtpulpfeccommon.c:443:rtp_ulpfec_log_fec_packet:<rtpulpfecdec0> fec level header      : protection_len=1388 mask=0xf80000000000

rtpulpfecdec rtpulpfeccommon.c:401:rtp_ulpfec_log_rtppacket:<rtpulpfecdec0> rtp header (fec)      : [    ] ssrc=0xf3ae36b0 pt=122 tstamp=3915064590 seq=20436 size=1414(1402,1402)
rtpulpfecdec rtpulpfeccommon.c:427:rtp_ulpfec_log_fec_packet:<rtpulpfecdec0> fec header            : [      ] pt=96 tstamp=3915064590 seq=20393 recovery_len=1388
rtpulpfecdec rtpulpfeccommon.c:443:rtp_ulpfec_log_fec_packet:<rtpulpfecdec0> fec level header      : protection_len=1388 mask=0xf80000000000

rtpulpfecdec rtpulpfeccommon.c:401:rtp_ulpfec_log_rtppacket:<rtpulpfecdec0> rtp header (fec)      : [    ] ssrc=0xf3ae36b0 pt=122 tstamp=3915064590 seq=20437 size=1414(1402,1402)
rtpulpfecdec rtpulpfeccommon.c:427:rtp_ulpfec_log_fec_packet:<rtpulpfecdec0> fec header            : [      ] pt=0 tstamp=0 seq=20397 recovery_len=0
rtpulpfecdec rtpulpfeccommon.c:443:rtp_ulpfec_log_fec_packet:<rtpulpfecdec0> fec level header      : protection_len=1388 mask=0xf00000000000

I observe that, for some fec packets, their tstamp (and pt, recovery_len) are zeros, and the mask is also different from others. I wonder if this is normal.