amltsdmx: CF1 pts is wrong in pts_to_ts [1/1]

PD#SWPL-180069

Problem:
sync code wrong in amlts_packetizer_pts_to_ts

Solution:
fix it

Verify:
ap222

Change-Id: I9961133a3218549c8ed658e352d138f7873135a3
Signed-off-by: bo.xiao <bo.xiao@amlogic.com>
diff --git a/aml-tsdemux/aml-pesparse.h b/aml-tsdemux/aml-pesparse.h
index 5e0ae19..51487a7 100644
--- a/aml-tsdemux/aml-pesparse.h
+++ b/aml-tsdemux/aml-pesparse.h
@@ -18,8 +18,8 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef __PES_PARSE_H__
-#define __PES_PARSE_H__
+#ifndef __AML_PES_PARSE_H__
+#define __AML_PES_PARSE_H__
 
 #include <gst/gst.h>
 #include "gstamldefs.h"
@@ -197,4 +197,4 @@
 G_GNUC_INTERNAL void aml_init_pes_parser (void);
 
 G_END_DECLS
-#endif /* __PES_PARSE_H__ */
+#endif /* __AML_PES_PARSE_H__ */
diff --git a/aml-tsdemux/amltsbase.h b/aml-tsdemux/amltsbase.h
index c3abae8..33a3792 100644
--- a/aml-tsdemux/amltsbase.h
+++ b/aml-tsdemux/amltsbase.h
@@ -27,8 +27,8 @@
  */
 
 
-#ifndef GST_MPEG_TS_BASE_H
-#define GST_MPEG_TS_BASE_H
+#ifndef GST_AML_TS_BASE_H
+#define GST_AML_TS_BASE_H
 
 #include <gst/gst.h>
 #include "amltspacketizer.h"
@@ -257,4 +257,4 @@
 
 G_END_DECLS
 
-#endif /* GST_MPEG_TS_BASE_H */
+#endif /* GST_AML_TS_BASE_H */
diff --git a/aml-tsdemux/amltsdemux.h b/aml-tsdemux/amltsdemux.h
index 1d798fa..f67c1d6 100644
--- a/aml-tsdemux/amltsdemux.h
+++ b/aml-tsdemux/amltsdemux.h
@@ -24,8 +24,8 @@
  */
 
 
-#ifndef GST_TS_DEMUX_H
-#define GST_TS_DEMUX_H
+#ifndef GST_AML_TS_DEMUX_H
+#define GST_AML_TS_DEMUX_H
 
 #include <gst/gst.h>
 #include <gst/base/gstbytereader.h>
@@ -127,4 +127,4 @@
 G_GNUC_INTERNAL gboolean gst_amltsdemux_plugin_init (GstPlugin * plugin);
 
 G_END_DECLS
-#endif /* GST_TS_DEMUX_H */
+#endif /* GST_AML_TS_DEMUX_H */
diff --git a/aml-tsdemux/amltspacketizer.c b/aml-tsdemux/amltspacketizer.c
index acf0e85..4425d78 100644
--- a/aml-tsdemux/amltspacketizer.c
+++ b/aml-tsdemux/amltspacketizer.c
@@ -1451,13 +1451,16 @@
          * to be resynched the next time we see a PCR */
         GST_WARNING
             ("backward timestamps at server or no buffer timestamps. Resync base PCR");
-/* xiaobo-patch 0041-tsdemux
+
+#if 0 //xiaobo-patch 0041-tsdemux
         GST_DEBUG ("delta last_pcrtime - gstpcrtime:%" GST_TIME_FORMAT, GST_TIME_ARGS (pcr->last_pcrtime - gstpcrtime));
         if (pcr->last_pcrtime - gstpcrtime > 2*GST_SECOND) {
           pcr->base_pcrtime = GST_CLOCK_TIME_NONE;
+          GST_DEBUG("change base pcr");
         }
-*/
+#else
         pcr->base_pcrtime = GST_CLOCK_TIME_NONE;
+#endif
       }
     }
   } else
@@ -2310,9 +2313,11 @@
     if (G_UNLIKELY (pcr_pid != 0x1fff &&
             ABSDIFF (res, pcrtable->last_pcrtime) > 15 * GST_SECOND))
       res = GST_CLOCK_TIME_NONE;
-    //xiaobo-patch 0040-live-app
-    //else if GST_CLOCK_TIME_IS_VALID (pcrtable->base_pcrtime){
+#if 0    //xiaobo-patch 0040-live-app
+    else if GST_CLOCK_TIME_IS_VALID (pcrtable->base_pcrtime){
+#else
     else {
+#endif
       GstClockTime tmp = pcrtable->base_time + pcrtable->skew;
       if (tmp + res >= pcrtable->base_pcrtime) {
         res += tmp - pcrtable->base_pcrtime;
@@ -2325,12 +2330,13 @@
         res = GST_CLOCK_TIME_NONE;
       }
     }
-    // xiaobo-patch 0040-live-app
-    //else
-    //{
-    //  res = GST_CLOCK_TIME_NONE;
-    //  GST_DEBUG ("set pts as -1, base_pcrtime:%" GST_TIME_FORMAT, GST_TIME_ARGS (pcrtable->base_pcrtime));
-    //}
+#if 0 // xiaobo-patch 0040-live-app
+    else
+    {
+      res = GST_CLOCK_TIME_NONE;
+      GST_DEBUG ("set pts as -1, base_pcrtime:%" GST_TIME_FORMAT, GST_TIME_ARGS (pcrtable->base_pcrtime));
+    }
+#endif
   } else if (packetizer->calculate_offset && pcrtable->groups) {
     gint64 refpcr = G_MAXINT64, refpcroffset;
     PCROffsetGroup *group = pcrtable->current->group;
@@ -2409,17 +2415,21 @@
     if (refpcr != G_MAXINT64)
       res =
           pts - PCRTIME_TO_GSTTIME (refpcr) + PCRTIME_TO_GSTTIME (refpcroffset);
-    else {
-      //case: valid pcr after frame
-      if (!GST_CLOCK_TIME_IS_VALID (pcrtable->base_pcrtime) && GST_CLOCK_TIME_IS_VALID (pts) && pcr_pid != 0x1fff && \
+    else
+      GST_WARNING ("No groups, can't calculate timestamp");
+  } else {
+    //case: valid pcr after frame, patch 0045-SWPL-124457-set-base-pcr
+    if (!GST_CLOCK_TIME_IS_VALID (pcrtable->base_pcrtime) && GST_CLOCK_TIME_IS_VALID (pts) && pcr_pid != 0x1fff && \
         !GST_CLOCK_TIME_IS_VALID (pcrtable->base_time) && GST_CLOCK_TIME_IS_VALID (packetizer->last_in_time)) {
-          GST_WARNING ("set pcr base time %" GST_TIME_FORMAT " base time %" GST_TIME_FORMAT, GST_TIME_ARGS (pts), GST_TIME_ARGS (packetizer->last_in_time));
-          pcrtable->base_time = packetizer->last_in_time;
-          pcrtable->base_pcrtime = pts;
-      }
+      GST_WARNING ("set pcr base time %" GST_TIME_FORMAT " base time %" GST_TIME_FORMAT, GST_TIME_ARGS (pts), GST_TIME_ARGS (packetizer->last_in_time));
+      pcrtable->base_time = packetizer->last_in_time;
+      pcrtable->base_pcrtime = pts;
     }
-  } else
-    GST_WARNING ("Not enough information to calculate proper timestamp");
+    //AML MOD FLOW  patch 0016-Discard-ts-pcr
+    GST_WARNING ("Not enough information to calculate proper timestamp use origin pts %" GST_TIME_FORMAT, GST_TIME_ARGS (pts));
+    res = pts;
+  }
+
 
   PACKETIZER_GROUP_UNLOCK (packetizer);
 
diff --git a/aml-tsdemux/amltspacketizer.h b/aml-tsdemux/amltspacketizer.h
index ff7651e..26941f7 100644
--- a/aml-tsdemux/amltspacketizer.h
+++ b/aml-tsdemux/amltspacketizer.h
@@ -21,8 +21,8 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef GST_MPEGTS_PACKETIZER_H
-#define GST_MPEGTS_PACKETIZER_H
+#ifndef GST_AMLTS_PACKETIZER_H
+#define GST_AMLTS_PACKETIZER_H
 
 #include <gst/gst.h>
 #include <gst/base/gstadapter.h>
@@ -387,4 +387,4 @@
           GstClockTime threshold);
 G_END_DECLS
 
-#endif /* GST_MPEGTS_PACKETIZER_H */
+#endif /* GST_AMLTS_PACKETIZER_H */
diff --git a/aml-tsdemux/amltsparse.c b/aml-tsdemux/amltsparse.c
index 68e410f..273ef43 100644
--- a/aml-tsdemux/amltsparse.c
+++ b/aml-tsdemux/amltsparse.c
@@ -32,7 +32,6 @@
 #include "amltsbase.h"
 #include "amltsparse.h"
 #include "gstamldesc.h"
-#include "amltsdemux.h"
 /* latency in mseconds is maximum 100 ms between PCR */
 #define TS_LATENCY 100
 
diff --git a/aml-tsdemux/amltsparse.h b/aml-tsdemux/amltsparse.h
index 4c6f7ff..ad9e8ab 100644
--- a/aml-tsdemux/amltsparse.h
+++ b/aml-tsdemux/amltsparse.h
@@ -22,8 +22,8 @@
  */
 
 
-#ifndef GST_MPEG_TS_PARSE_H
-#define GST_MPEG_TS_PARSE_H
+#ifndef GST_AML_TS_PARSE_H
+#define GST_AML_TS_PARSE_H
 
 #include <gst/gst.h>
 #include <gst/base/gstflowcombiner.h>
@@ -100,4 +100,4 @@
 G_GNUC_INTERNAL gboolean gst_amltsparse_plugin_init (GstPlugin * plugin);
 G_END_DECLS
 
-#endif /* GST_MPEG_TS_PARSE_H */
+#endif /* GST_AML_TS_PARSE_H */
diff --git a/aml-tsdemux/gstamldefs.h b/aml-tsdemux/gstamldefs.h
index e3ad6d3..b45ec80 100644
--- a/aml-tsdemux/gstamldefs.h
+++ b/aml-tsdemux/gstamldefs.h
@@ -24,8 +24,8 @@
  * Contributor(s): Wim Taymans <wim@fluendo.com>
  */
 
-#ifndef __GST_MPEG_DEFS_H__
-#define __GST_MPEG_DEFS_H__
+#ifndef __GST_AML_MPEG_DEFS_H__
+#define __GST_AML_MPEG_DEFS_H__
 #include <glib/gprintf.h>
 
 #define SAFE_FOURCC_FORMAT "02x%02x%02x%02x (%c%c%c%c)"
@@ -118,4 +118,4 @@
     if ((*data & 0x01) != 0x01) goto lost_sync_label;   \
     target |= ((guint64) (*data++ & 0xFE)) >> 1;
 
-#endif /* __GST_MPEG_DEFS_H__ */
+#endif /* __GST_AML_MPEG_DEFS_H__ */
diff --git a/aml-tsdemux/gstamldesc.h b/aml-tsdemux/gstamldesc.h
index 45f7110..8ee9a8d 100644
--- a/aml-tsdemux/gstamldesc.h
+++ b/aml-tsdemux/gstamldesc.h
@@ -25,8 +25,8 @@
  *
  */
 
-#ifndef __GST_MPEG_DESC_H__
-#define __GST_MPEG_DESC_H__
+#ifndef __GST_AML_MPEG_DESC_H__
+#define __GST_AML_MPEG_DESC_H__
 
 #include <glib.h>
 
@@ -239,4 +239,4 @@
 #define DRF_ID_AC4        0x41432D34   /* defined in ETSI TS 103 190-2 Annex D */
 #define DRF_ID_DolbyVision  0x444f5649
 
-#endif /* __GST_MPEG_DESC_H__ */
+#endif /* __GST_AML_MPEG_DESC_H__ */
diff --git a/aml-tsdemux/gstamltsdemux.c b/aml-tsdemux/gstamltsdemux.c
index fe54104..073a96a 100644
--- a/aml-tsdemux/gstamltsdemux.c
+++ b/aml-tsdemux/gstamltsdemux.c
@@ -31,9 +31,12 @@
 static gboolean
 plugin_init (GstPlugin * plugin)
 {
+#if 1  //removed since 1.20, but we keep it.
   gst_mpegts_initialize ();
   if (!gst_amltsbase_plugin_init (plugin))
     return FALSE;
+#endif
+
   if (!gst_amltsparse_plugin_init (plugin))
     return FALSE;
   if (!gst_amltsdemux_plugin_init (plugin))