Videocompositor halts if PTS = none
Submitted by Nick Kallen
Link to original bug (#779696)
Description
VideoAggregator errors when it receives a frame with PTS = TIME_NONE
Perhaps it should drop the frame instead and continue?
=== PS ===
The bad PTS, in my case, is coming from rtpbasedepayload, I think. I have found a case where it will emit frames out of order and then will emit multiple frames with no PTS, one sync and another non-sync. I don't know the root cause, but here is a log showing the input to gstvideodecoder:
0:00:31.022978000 84684 0x7fd5c808e280 WARN videodecoder gstvideodecoder.c:2767:void gst_video_decoder_prepare_finish_frame(GstVideoDecoder *, GstVideoCodecFrame *, gboolean):<vtdec0>
decreasing timestamp (0:00:27.235867490 < 0:00:27.258838694)
0:00:31.055632000 84684 0x7fd5c808e280 DEBUG videodecoder gstvideodecoder.c:2730:void gst_video_decoder_prepare_finish_frame(GstVideoDecoder *, GstVideoCodecFrame *, gboolean):<vtdec0>
invalidating PTS
0:00:31.056315000 84684 0x7fd5c808e280 LOG videodecoder gstvideodecoder.c:2416:GstFlowReturn gst_video_decoder_chain(GstPad *, GstObject *, GstBuffer *):<vtdec0>
chain PTS 99:99:99.999999999, DTS 0:00:26.953637406 duration 99:99:99.999999999 size 5007
0:00:31.056345000 84684 0x7fd5c808e280 LOG videodecoder gstvideodecoder.c:3374:GstFlowReturn gst_video_decoder_decode_frame(GstVideoDecoder *, GstVideoCodecFrame *):<vtdec0>
PTS 99:99:99.999999999, DTS 0:00:26.953637406, dist 300
0:00:31.056840000 84684 0x7fd5c808e280 LOG videodecoder gstvideodecoder.c:2416:GstFlowReturn gst_video_decoder_chain(GstPad *, GstObject *, GstBuffer *):<vtdec0>
chain PTS 99:99:99.999999999, DTS 0:00:26.956768313 duration 99:99:99.999999999 size 3546
0:00:31.056870000 84684 0x7fd5c808e280 LOG videodecoder gstvideodecoder.c:3374:GstFlowReturn gst_video_decoder_decode_frame(GstVideoDecoder *, GstVideoCodecFrame *):<vtdec0>
PTS 99:99:99.999999999, DTS 0:00:26.956768313, dist 301
0:00:31.057982000 84684 0x7fd5c808e280 LOG videodecoder gstvideodecoder.c:2612:void gst_video_decoder_prepare_finish_frame(GstVideoDecoder *, GstVideoCodecFrame *, gboolean):<vtdec0>
finish frame 0x7fd5c632ad00 (#300) sync:1 PTS:99:99:99.999999999 DTS:0:00:26.953637406
0:00:31.058014000 84684 0x7fd5c808e280 WARN videodecoder gstvideodecoder.c:2767:void gst_video_decoder_prepare_finish_frame(GstVideoDecoder *, GstVideoCodecFrame *, gboolean):<vtdec0>
decreasing timestamp (0:00:26.953637406 < 0:00:27.258838694)
0:00:31.058135000 84684 0x7fd5c808e280 WARN videodecoder gstvideodecoder.c:2767:void gst_video_decoder_prepare_finish_frame(GstVideoDecoder *, GstVideoCodecFrame *, gboolean):<vtdec0>
decreasing timestamp (0:00:27.257010699 < 0:00:27.258838694)
0:00:31.058940000 84684 0x7fd5c808e280 LOG videodecoder gstvideodecoder.c:2612:void gst_video_decoder_prepare_finish_frame(GstVideoDecoder *, GstVideoCodecFrame *, gboolean):<vtdec0>
finish frame 0x7fd5c6372a20 (#301) sync:0 PTS:99:99:99.999999999 DTS:0:00:26.956768313
0:00:31.058987000 84684 0x7fd5c808e280 DEBUG videodecoder gstvideodecoder.c:3174:GstFlowReturn gst_video_decoder_clip_and_push_buf(GstVideoDecoder *, GstBuffer *):<vtdec0>
pushing buffer 0x7fd5c63722b0 of size 115200, PTS 99:99:99.999999999, dur 99:99:99.999999999
0:00:31.059808000 84684 0x7fd5c808e280 WARN videodecoder gstvideodecoder.c:2767:void gst_video_decoder_prepare_finish_frame(GstVideoDecoder *, GstVideoCodecFrame *, gboolean):<vtdec0>
decreasing timestamp (0:00:27.169113426 < 0:00:27.258838694)
0:00:31.061337000 84684 0x7fd5c808e280 WARN videodecoder gstvideodecoder.c:2767:void gst_video_decoder_prepare_finish_frame(GstVideoDecoder *, GstVideoCodecFrame *, gboolean):<vtdec0>
decreasing timestamp (0:00:27.127792885 < 0:00:27.258838694)
Version: 1.11.1