amlhwdmx: CF2 amlhwdmx can support avs codec [1/1]

PD#SWPL-74963

Problem:
support avs, avs2, and avs3 codecs

Solution:
amlhwdmx add avs codec

Verify:
Yocto

Signed-off-by: zengliang.li <zengliang.li@amlogic.com>
Change-Id: Icb606cdeb62999ba58ce7fa68c819062a3532c89
diff --git a/src/aml_defs.h b/src/aml_defs.h
index 4421b7f..8edd662 100644
--- a/src/aml_defs.h
+++ b/src/aml_defs.h
@@ -60,7 +60,7 @@
 #define LOW_BUFFER_SIZE (188 * 10)
 #define BUFFER_SIZE LOW_BUFFER_SIZE
 /* secure adaptor size */
-#define SEC_BUF_QUEUE_MAX_SIZE 128
+#define SEC_BUF_QUEUE_MAX_SIZE 256
 #define SEC_BUF_QUEUE_MIN_SIZE 0
 #define SEC_BUF_QUEUE_NEEDED_SIZE 1
 #define SEC_BUF_QUEUE_UNLIMIT_SIZE -1
@@ -103,7 +103,7 @@
 #define DEFAULT_VOLUME 1.0
 #define DEFAULT_IS_LIVE TRUE
 // #define DEFAULT_IS_LIVE FALSE
-#define DEFAULT_IS_SECURE FALSE
+#define DEFAULT_IS_SECURE TRUE
 #define DEFAULT_IS_SECURE_ES TRUE
 
 /** aml ts info **/
@@ -152,6 +152,9 @@
     GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW = 0x22,
     GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW = 0x23,
     GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC = 0x24,
+    GST_MPEGTS_STREAM_TYPE_VIDEO_AVS = 0x42,
+    GST_MPEGTS_STREAM_TYPE_VIDEO_AVS2 = 0xd2,
+    GST_MPEGTS_STREAM_TYPE_VIDEO_AVS3 = 0xd6,
     /* 0x24 - 0x7e : Rec. ITU-T H.222.0 | ISO/IEC 13818-1 Reserved */
     GST_MPEGTS_STREAM_TYPE_IPMP_STREAM = 0x7f
     /* 0x80 - 0xff : User Private (or defined in other specs) */
diff --git a/src/gstamldmx.c b/src/gstamldmx.c
index f5cb7f7..834a7ee 100644
--- a/src/gstamldmx.c
+++ b/src/gstamldmx.c
@@ -513,7 +513,8 @@
         amlhwdmx->sinkpad.segment_event = NULL;
     }
 
-    gst_amladapterpipe_reset(amlhwdmx->sinkpad.adapter_pipe);
+    if (amlhwdmx->sinkpad.adapter_pipe)
+        gst_amladapterpipe_reset(amlhwdmx->sinkpad.adapter_pipe);
 
     /* reset context */
     g_mutex_clear(&amlhwdmx->context_lock);
@@ -705,7 +706,9 @@
         gst_event_parse_caps(event, &caps);
 
         GstCapsFeatures *features = gst_caps_get_features(caps, 0);
-        if (features && gst_caps_features_contains(features, GST_CAPS_FEATURE_SECURE_TS))
+        if (features &&
+                       (gst_caps_features_contains(features, GST_CAPS_FEATURE_SECURE_TS) ||
+                        gst_caps_features_contains(features, GST_CAPS_FEATURE_MEMORY_SECMEM_MEMORY)))
         {
             GST_DEBUG_OBJECT(amlhwdmx, "caps contain feature secure:aes-128");
             amlhwdmx->is_secure = TRUE;
@@ -1279,6 +1282,30 @@
                                    "alignment", G_TYPE_STRING, "nal", NULL);
         break;
     }
+    case GST_MPEGTS_STREAM_TYPE_VIDEO_AVS:
+    {
+        GST_LOG("avs video");
+        is_video = TRUE;
+        caps = gst_caps_new_simple("video/x-avs",
+                                   "parsed", G_TYPE_BOOLEAN, FALSE, NULL);
+        break;
+    }
+    case GST_MPEGTS_STREAM_TYPE_VIDEO_AVS2:
+    {
+        GST_LOG("avs2 video");
+        is_video = TRUE;
+        caps = gst_caps_new_simple("video/x-avs2",
+                                   "parsed", G_TYPE_BOOLEAN, FALSE, NULL);
+        break;
+    }
+    case GST_MPEGTS_STREAM_TYPE_VIDEO_AVS3:
+    {
+        GST_LOG("avs3 video");
+        is_video = TRUE;
+        caps = gst_caps_new_simple("video/x-avs3",
+                                   "parsed", G_TYPE_BOOLEAN, FALSE, NULL);
+        break;
+    }
     default:
     {
         GST_DEBUG("Non-media stream (stream_type:0x%x). Not creating pad", pmt_stream->stream_type);
diff --git a/src/gstamldmxwrap.c b/src/gstamldmxwrap.c
index dee9fe5..ca35f02 100644
--- a/src/gstamldmxwrap.c
+++ b/src/gstamldmxwrap.c
@@ -204,7 +204,7 @@
                     }
                 }
                 AMLHWDMXWRAP_CONTEXT_UNLOCK(dmx);
-                GST_DEBUG("tid[%x] ch[%d] %x bytes", sec_buf[0], fids[i], len);
+                GST_DEBUG("tid[%x] ch[%d] cnt[%d] %x bytes", sec_buf[0], fids[i], cnt, len);
                 if (len > 0 && filter->cb)
                 {
                     filter->cb(filter->dev_no, fids[i], (const guint *)sec_buf, len, filter->user_data);