From 851682629ee543a0058dd2fde6297271d05fc876 Mon Sep 17 00:00:00 2001 From: Vivia Nikolaidou Date: Fri, 11 Oct 2019 16:19:26 +0300 Subject: [PATCH] videoparsers: Disable gst_base_parse_set_infer_ts From the documentation of gst_base_parse_set_infer_ts, it should be disabled for non-audio data. Currently just disabling for all video parsers that have reordered data: h264, h265, mpeg, mpeg4, vc1. Was already disabled in h263. --- gst/videoparsers/gsth264parse.c | 1 + gst/videoparsers/gsth265parse.c | 1 + gst/videoparsers/gstmpeg4videoparse.c | 1 + gst/videoparsers/gstmpegvideoparse.c | 1 + gst/videoparsers/gstvc1parse.c | 4 ++++ 5 files changed, 8 insertions(+) diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c index 37facafaf6..895da68483 100644 --- a/gst/videoparsers/gsth264parse.c +++ b/gst/videoparsers/gsth264parse.c @@ -162,6 +162,7 @@ gst_h264_parse_init (GstH264Parse * h264parse) { h264parse->frame_out = gst_adapter_new (); gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (h264parse), FALSE); + gst_base_parse_set_infer_ts (GST_BASE_PARSE (h264parse), FALSE); GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (h264parse)); GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (h264parse)); diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c index 6277fee4cb..cafeaeefe9 100644 --- a/gst/videoparsers/gsth265parse.c +++ b/gst/videoparsers/gsth265parse.c @@ -164,6 +164,7 @@ gst_h265_parse_init (GstH265Parse * h265parse) { h265parse->frame_out = gst_adapter_new (); gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (h265parse), FALSE); + gst_base_parse_set_infer_ts (GST_BASE_PARSE (h265parse), FALSE); GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (h265parse)); GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (h265parse)); } diff --git a/gst/videoparsers/gstmpeg4videoparse.c b/gst/videoparsers/gstmpeg4videoparse.c index e6628e4bac..53dddd4aed 100644 --- a/gst/videoparsers/gstmpeg4videoparse.c +++ b/gst/videoparsers/gstmpeg4videoparse.c @@ -185,6 +185,7 @@ gst_mpeg4vparse_init (GstMpeg4VParse * parse) parse->last_report = GST_CLOCK_TIME_NONE; gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (parse), FALSE); + gst_base_parse_set_infer_ts (GST_BASE_PARSE (parse), FALSE); GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (parse)); GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (parse)); } diff --git a/gst/videoparsers/gstmpegvideoparse.c b/gst/videoparsers/gstmpegvideoparse.c index ed085ce7b8..3a5c3f93b0 100644 --- a/gst/videoparsers/gstmpegvideoparse.c +++ b/gst/videoparsers/gstmpegvideoparse.c @@ -174,6 +174,7 @@ gst_mpegv_parse_init (GstMpegvParse * parse) parse->config_flags = FLAG_NONE; gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (parse), FALSE); + gst_base_parse_set_infer_ts (GST_BASE_PARSE (parse), FALSE); GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (parse)); GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (parse)); } diff --git a/gst/videoparsers/gstvc1parse.c b/gst/videoparsers/gstvc1parse.c index a207dda9f6..68033dfd96 100644 --- a/gst/videoparsers/gstvc1parse.c +++ b/gst/videoparsers/gstvc1parse.c @@ -251,6 +251,10 @@ gst_vc1_parse_init (GstVC1Parse * vc1parse) gst_vc1_parse_reset (vc1parse); GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (vc1parse)); GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (vc1parse)); + + /* We have reordered frames - don't interpolate PTS */ + gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (vc1parse), FALSE); + gst_base_parse_set_infer_ts (GST_BASE_PARSE (vc1parse), FALSE); } static void