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);