gstsecmem: fix create secmem session wait issue [1/1]

PD#SWPL-151451

Problem:
Optimize the gst secmem session creation strategy

Solution:
Optimize the gst secmem session creation strategy

Verify:
Yocto + bp201

Change-Id: I08935520af49d35fc8f6841f7e85cf3e7e2e9afd
Signed-off-by: bo.li6 <bo.li6@amlogic.com>
diff --git a/gst-aml-drm-plugins-1.0/src/secmem/gstsecmemallocator.c b/gst-aml-drm-plugins-1.0/src/secmem/gstsecmemallocator.c
index 45b265e..23271ae 100644
--- a/gst-aml-drm-plugins-1.0/src/secmem/gstsecmemallocator.c
+++ b/gst-aml-drm-plugins-1.0/src/secmem/gstsecmemallocator.c
@@ -205,7 +205,7 @@
     self->is_av1 = decoder_format == SECMEM_DECODER_AV1 ? TRUE : FALSE;
 
     //custom set sec size
-    if (flags & GST_SECMEM_ALLOC_FLAGS_KB_UNIT)
+    if (flags & GST_SECMEM_ALLOC_FLAGS_B_UNIT)
         flag = 4; //256KB align
     else
         flag = 3; //1M align
@@ -219,14 +219,13 @@
 
     g_mutex_lock (&self->mutex);
     do {
-        Secure_GetResourceAvail(&resource_free, &resource_avail);
-        GST_INFO("secmem resource free %d avail %d setsize %d flags %x",
-                 resource_free, resource_avail, setsize, flags);
-        if (resource_avail >= setsize)
-            break;
-        else
-            GST_INFO("insufficient secmem resource retry..");
+        ret = Secure_V2_SessionCreate(&self->sess);
+        g_return_val_if_fail(ret == 0, alloc);
 
+        ret = Secure_V2_Init(self->sess, 1, flag, 0, setsize);
+        if (ret != SECMEM_ERROR_OUT_OF_MEMORY) break;
+
+        GST_INFO("insufficient secmem resource retry..");
         g_get_current_time(&end_time);
         end_time.tv_sec += 2;
         g_cond_timed_wait (&self->cond, &self->mutex, &end_time);
@@ -234,10 +233,6 @@
     } while (max_retry);
     g_mutex_unlock (&self->mutex);
 
-    ret = Secure_V2_SessionCreate(&self->sess);
-    g_return_val_if_fail(ret == 0, alloc);
-
-    ret = Secure_V2_Init(self->sess, 1, flag, 0, setsize);
     g_return_val_if_fail(ret == 0, alloc);
     GST_INFO("secmem init return %d, flags 0x%x flag 0x%x", ret, flags, flag);
 
diff --git a/gst-aml-drm-plugins-1.0/src/secmem/gstsecmemallocator.h b/gst-aml-drm-plugins-1.0/src/secmem/gstsecmemallocator.h
index 859193f..d88653c 100644
--- a/gst-aml-drm-plugins-1.0/src/secmem/gstsecmemallocator.h
+++ b/gst-aml-drm-plugins-1.0/src/secmem/gstsecmemallocator.h
@@ -71,7 +71,7 @@
     SECMEM_MAX_CODEC_NUM,
 };
 
-#define GST_SECMEM_ALLOC_FLAGS_KB_UNIT       1
+#define GST_SECMEM_ALLOC_FLAGS_B_UNIT        1
 
 GType           gst_secmem_allocator_get_type (void);
 GstAllocator *  gst_secmem_allocator_new (gboolean is_4k, uint8_t decoder_format);