<div dir="ltr"><font face="monospace, monospace">Hi.</font><div><font face="monospace, monospace"><br></font></div><div>

<font face="monospace, monospace"><span style="font-size:12.8px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">I am capturing the video of two IP cameras(RTSP), decoding the two inputs and using a filter which looks like this:</span><br></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></font></div><div><font face="monospace, monospace"><span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="font-size:12.8px">[in0]scale=1280:720[aux0];[in1]scale=320:180[aux1];[aux0][aux1]overlay=main_w-overlay_w:main_h-overlay_h[out0]</span><br></span></font></div><div><font face="monospace, monospace"><span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="font-size:12.8px"><br></span></span></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px">Then I encode the output of the filter to libx264 and finally mux it to mp4.</span></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px"><br></span></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px">Most if the time everything works great, but sometimes the filter outputs frames that have a <span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">non monotonically increasing PTS</span>. A frame with <span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">non monotonically increasing PTS</span>

 is encoded correctly but the resulting packet causes the av_interleaved_write_frame() function to return error. This is the error message:</span></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px"><br></span></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px">[libx264 @ 000001bfc548e340] non-strictly-monotonic PTS</span><br></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px">[mp4 @ 000001bfc4aa57c0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 9392384 >= 9392384</span><br></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px"><br></span></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">My current fix for this problem is to ignore(do not encode) the frames with a PTS lower/equal than the previous one. Something like this:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><div>  

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"> <span> </span></span>

if (frame->frame->pts <= this->lastPts) {</div><div>    

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"> <span> </span></span>



<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"> <span> </span></span>

return;</div><div>  

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"> <span> </span></span>

}</div><div>  

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"> <span> </span></span>

this->lastPts = frame->frame->pts;</div><div><br></div><div>  

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"> <span> </span></span>

int ret;</div><div>  

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"> <span> </span></span>

ret = avcodec_send_frame(this->codec_ctx, frame->frame);</div></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px"><br></span></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px">My questions:</span></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px"><br></span></font></div><div><font face="monospace, monospace"><span style="font-size:12.8px">Is it normal for a filter to output frames with non monotonically increasing PTS?</span></font></div><div><font face="monospace, monospace">Is there a better approach to overcome this problem than the one I am currently using?</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Thanks.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">The full code is way too long to be included in this mail. Here is the AV_LOG_VERBOSE:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><div>SDP:</div><div>v=0</div><div>o=- 0 0 IN IP4 10.1.1.22</div><div>s=LIVE VIEW</div><div>c=IN IP4 0.0.0.0</div><div>t=0 0</div><div>a=control:*</div><div>m=video 0 RTP/AVP 35</div><div>a=rtpmap:35 H264/90000</div><div>a=control:video</div><div>a=recvonly</div><div>a=fmtp:35 packetization-mode=1;profile-level-id=4d001f;sprop-parameter-sets=Z00AH5pmAoAt2AtQUBBQIA==,aO48gA==</div><div>m=audio 0 RTP/AVP 0</div><div>a=rtpmap:0 PCMU/8000/1</div><div>a=control:audio</div><div>a=recvonly</div><div><br></div><div>[udp @ 000001bfc4aabd40] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)</div><div>[udp @ 000001bfc4abc000] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)</div><div>[rtsp @ 000001bfc4a9f040] setting jitter buffer size to 500</div><div>[udp @ 000001bfc4accc80] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)</div><div>[udp @ 000001bfc4adcf40] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)</div><div>[rtsp @ 000001bfc4a9f040] setting jitter buffer size to 500</div><div>[h264 @ 000001bfc4aa8440] Reinit context to 1280x720, pix_fmt: yuv420p</div><div>[rtsp @ 000001bfc4aa0a00] SDP:</div><div>v=0</div><div>o=- 0 0 IN IP4 10.1.1.23</div><div>s=LIVE VIEW</div><div>c=IN IP4 0.0.0.0</div><div>t=0 0</div><div>a=control:*</div><div>m=video 0 RTP/AVP 35</div><div>a=rtpmap:35 H264/90000</div><div>a=control:video</div><div>a=recvonly</div><div>a=fmtp:35 packetization-mode=1;profile-level-id=4d0028;sprop-parameter-sets=Z00AKI2NKAoAt2AgEA==,aO48gA==</div><div>m=audio 0 RTP/AVP 0</div><div>a=rtpmap:0 PCMU/8000/1</div><div>a=control:audio</div><div>a=recvonly</div><div><br></div><div>[udp @ 000001bfc4b4eb00] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)</div><div>[udp @ 000001bfc55c1180] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)</div><div>[rtsp @ 000001bfc4aa0a00] setting jitter buffer size to 500</div><div>[udp @ 000001bfc5485580] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)</div><div>[udp @ 000001bfc5485680] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)</div><div>[rtsp @ 000001bfc4aa0a00] setting jitter buffer size to 500</div><div>[h264 @ 000001bfc55b07c0] Reinit context to 1280x720, pix_fmt: yuv420p</div><div>[Parsed_scale_0 @ 000001bfc4b3af80] w:1280 h:720 flags:'bilinear' interl:0</div><div>[Parsed_scale_1 @ 000001bfc590de80] w:320 h:180 flags:'bilinear' interl:0</div><div>[videoFilter input 0 @ 000001bfc508ef00] w:1280 h:720 pixfmt:yuv420p tb:1/60 fr:0/1 sar:1/1 sws_param:</div><div>[videoFilter input 1 @ 000001bfc4a9ef00] w:1280 h:720 pixfmt:yuv420p tb:1/60 fr:0/1 sar:1/1 sws_param:</div><div>[Parsed_scale_0 @ 000001bfc4b3af80] w:1280 h:720 fmt:yuv420p sar:1/1 -> w:1280 h:720 fmt:yuv420p sar:1/1 flags:0x2</div><div>[Parsed_scale_1 @ 000001bfc590de80] w:1280 h:720 fmt:yuv420p sar:1/1 -> w:320 h:180 fmt:yuva420p sar:1/1 flags:0x2</div><div>[Parsed_overlay_2 @ 000001bfc4f49e40] main w:1280 h:720 fmt:yuv420p overlay w:320 h:180 fmt:yuva420p</div><div>[Parsed_overlay_2 @ 000001bfc4f49e40] [framesync @ 000001bfc508e968] Selected 1/60 time base</div><div>[Parsed_overlay_2 @ 000001bfc4f49e40] [framesync @ 000001bfc508e968] Sync level 2</div><div>[libx264 @ 000001bfc548e340] using SAR=1/1</div><div>[libx264 @ 000001bfc548e340] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2</div><div>[libx264 @ 000001bfc548e340] profile Constrained Baseline, level 3.2</div><div>[libx264 @ 000001bfc548e340] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - <a href="http://www.videolan.org/x264.html">http://www.videolan.org/x264.html</a> - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=abr mbtree=0 bitrate=5000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0</div><div>[h264 @ 000001bfc4b3b140] Reinit context to 1280x720, pix_fmt: yuv420p</div><div>[h264 @ 000001bfc56356c0] Reinit context to 1280x720, pix_fmt: yuv420p</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[rtsp @ 000001bfc4a9f040] jitter buffer full</div><div>[rtsp @ 000001bfc4a9f040] RTP: missed 1 packets</div><div>[libx264 @ 000001bfc548e340] non-strictly-monotonic PTS</div><div>[mp4 @ 000001bfc4aa57c0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 9392384 >= 9392384</div></font></div></div>