videoparsers: Disable gst_base_parse_set_infer_ts
authorVivia Nikolaidou <vivia@ahiru.eu>
Fri, 11 Oct 2019 13:19:26 +0000 (16:19 +0300)
committerVivia Nikolaidou <vivia@ahiru.eu>
Tue, 19 Nov 2019 08:23:31 +0000 (10:23 +0200)
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
gst/videoparsers/gsth265parse.c
gst/videoparsers/gstmpeg4videoparse.c
gst/videoparsers/gstmpegvideoparse.c
gst/videoparsers/gstvc1parse.c

index 37facaf..895da68 100644 (file)
@@ -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));
 
index 6277fee..cafeaee 100644 (file)
@@ -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));
 }
index e6628e4..53dddd4 100644 (file)
@@ -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));
 }
index ed085ce..3a5c3f9 100644 (file)
@@ -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));
 }
index a207dda..68033df 100644 (file)
@@ -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