[CP] Implement protected session context robustness

Check if attached protected session is alive or not in vaBeginPicture/vaRenderPicture/vaEndPicture. If not alive, then return error.
diff --git a/media_driver/linux/common/codec/ddi/media_libva_decoder.cpp b/media_driver/linux/common/codec/ddi/media_libva_decoder.cpp
index 3949d92..ae061d0 100644
--- a/media_driver/linux/common/codec/ddi/media_libva_decoder.cpp
+++ b/media_driver/linux/common/codec/ddi/media_libva_decoder.cpp
@@ -119,6 +119,11 @@
     PDDI_DECODE_CONTEXT decCtx  = (PDDI_DECODE_CONTEXT)DdiMedia_GetContextFromContextID(ctx, context, &ctxType);
     DDI_CHK_NULL(decCtx,            "nullptr decCtx",            VA_STATUS_ERROR_INVALID_CONTEXT);
 
+    if (decCtx->pCpDdiInterface)
+    {
+        DDI_CHK_RET(decCtx->pCpDdiInterface->IsAttachedSessionAlive(), "Session not alive!");
+    }
+
     if (decCtx->m_ddiDecode)
     {
         VAStatus va = decCtx->m_ddiDecode->BeginPicture(ctx, context, renderTarget);
@@ -150,6 +155,12 @@
     // assume the VAContextID is decoder ID
     PDDI_DECODE_CONTEXT decCtx     = (PDDI_DECODE_CONTEXT)DdiMedia_GetContextFromContextID(ctx, context, &ctxType);
     DDI_CHK_NULL(decCtx,            "nullptr decCtx",            VA_STATUS_ERROR_INVALID_CONTEXT);
+
+    if (decCtx->pCpDdiInterface)
+    {
+        DDI_CHK_RET(decCtx->pCpDdiInterface->IsAttachedSessionAlive(), "Session not alive!");
+    }
+
     if (decCtx->m_ddiDecode)
     {
         VAStatus va = decCtx->m_ddiDecode->EndPicture(ctx, context);
@@ -188,6 +199,11 @@
     PDDI_DECODE_CONTEXT decCtx  = (PDDI_DECODE_CONTEXT)DdiMedia_GetContextFromContextID(ctx, context, &ctxType);
     DDI_CHK_NULL(decCtx,            "nullptr decCtx",            VA_STATUS_ERROR_INVALID_CONTEXT);
 
+    if (decCtx->pCpDdiInterface)
+    {
+        DDI_CHK_RET(decCtx->pCpDdiInterface->IsAttachedSessionAlive(), "Session not alive!");
+    }
+
     priorityIndexInBuffers = DdiMedia_GetGpuPriority(ctx, buffers, numOfBuffers, &updatePriority, &priority);
     if (priorityIndexInBuffers != -1)
     {
diff --git a/media_driver/linux/common/cp/ddi/media_libva_cp_interface.cpp b/media_driver/linux/common/cp/ddi/media_libva_cp_interface.cpp
index 17ca293..f8e525c 100644
--- a/media_driver/linux/common/cp/ddi/media_libva_cp_interface.cpp
+++ b/media_driver/linux/common/cp/ddi/media_libva_cp_interface.cpp
@@ -173,3 +173,9 @@
     DdiStubMessage();
     return VA_STATUS_SUCCESS;
 }
+
+VAStatus DdiCpInterface::IsAttachedSessionAlive()
+{
+    DdiStubMessage();
+    return VA_STATUS_SUCCESS;
+}
diff --git a/media_driver/linux/common/cp/ddi/media_libva_cp_interface.h b/media_driver/linux/common/cp/ddi/media_libva_cp_interface.h
index 12679e5..244276c 100644
--- a/media_driver/linux/common/cp/ddi/media_libva_cp_interface.h
+++ b/media_driver/linux/common/cp/ddi/media_libva_cp_interface.h
@@ -108,6 +108,8 @@
         VAContextID         context
     );
 
+    virtual VAStatus IsAttachedSessionAlive();
+
 };
 
 //!