Selaa lähdekoodia

Z991239-5647 #comment 优化视频队列库跨平台实现方式

80274480 1 vuosi sitten
vanhempi
sitoutus
e82a351383

+ 1 - 1
Module/mod_facetracking/CMakeLists.txt

@@ -12,7 +12,7 @@ add_module_libraries(${MODULE_PREFIX} ${MODULE_NAME} ${MOD_VERSION_STRING})
 
 target_include_directories(${MODULE_NAME} PRIVATE
 	${OTHER_LIB_BASE_DIR}/rvcmediacommon
-	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+	${OTHER_LIB_BASE_DIR}/libvideoqueue
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libbizchan
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libfacecapture
 )

+ 2 - 2
Module/mod_livenessdetection/CMakeLists.txt

@@ -34,7 +34,7 @@ target_include_directories(${MODULE_NAME} PRIVATE
 	${CONAN_INCLUDE_DIRS_FFMPEG}
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoframework
 	${OTHER_LIB_BASE_DIR}/rvcmediacommon
-	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+	${OTHER_LIB_BASE_DIR}/libvideoqueue
 	${MODULE_BASE_DIR}
 	${MODULE_BASE_DIR}/include
 	${ThirdPartyHeadRoot}/websocketpp
@@ -50,7 +50,7 @@ target_include_directories(${MODULE_NAME} PRIVATE
 	${CONAN_INCLUDE_DIRS_FFMPEG}
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoframework
 	${OTHER_LIB_BASE_DIR}/rvcmediacommon
-	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+	${OTHER_LIB_BASE_DIR}/libvideoqueue
 	${MODULE_BASE_DIR}
 	${MODULE_BASE_DIR}/include
 	${ThirdPartyHeadRoot}/websocketpp

+ 2 - 2
Module/mod_mediacontroller/CMakeLists.txt

@@ -34,7 +34,7 @@ target_include_directories(${MODULE_NAME} PRIVATE
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideohorflip
 	${OTHER_LIB_BASE_DIR}/rvcmediacommon
 	${OTHER_LIB_BASE_DIR}/libaudioqueue
-	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+	${OTHER_LIB_BASE_DIR}/libvideoqueue
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libmediadeviceinfo
 	${OTHER_LIB_BASE_DIR}/libaudiomgr
 	${OTHER_LIB_BASE_DIR}/libvideocapture
@@ -47,7 +47,7 @@ else()
 		${OTHER_LIB_PLATFORM_BASE_DIR}/libvideohorflip
 		${OTHER_LIB_BASE_DIR}/rvcmediacommon
 		${OTHER_LIB_BASE_DIR}/libaudioqueue
-		${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+		${OTHER_LIB_BASE_DIR}/libvideoqueue
 		${OTHER_LIB_PLATFORM_BASE_DIR}/libaudiorender
 		${OTHER_LIB_PLATFORM_BASE_DIR}/libmediadeviceinfo
 		${CONAN_INCLUDE_DIRS_PORTAUDIO}

+ 1 - 1
Module/mod_sipphone/CMakeLists.txt

@@ -58,7 +58,7 @@ target_include_directories(${MODULE_NAME} PRIVATE
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libaudioframework
 	${OTHER_LIB_BASE_DIR}/rvcmediacommon
 	${OTHER_LIB_BASE_DIR}/libaudioqueue
-	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+	${OTHER_LIB_BASE_DIR}/libvideoqueue
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideorender
 	${OTHER_LIB_BASE_DIR}/libaudions
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideohorflip

+ 1 - 1
Module/mod_snapshot/CMakeLists.txt

@@ -18,7 +18,7 @@ target_include_directories(${MODULE_NAME} PRIVATE
 	${MODULE_BASE_DIR}/mod_assistantchannel
 	${CONAN_INCLUDE_DIRS_OPENCV}
     ${CONAN_INCLUDE_DIRS_OPENCV}/opencv
-	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+	${OTHER_LIB_BASE_DIR}/libvideoqueue
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libfacecapture
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libbizchan
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoframework

+ 1 - 0
Other/CMakeLists.txt

@@ -37,6 +37,7 @@ add_subdirectory(libfilecryption)
 add_subdirectory(libmediaplayer)
 add_subdirectory(libpictureplayer)
 add_subdirectory(libaudioqueue)
+add_subdirectory(libvideoqueue)
 add_subdirectory(libaudions)
 
 if(MSVC)

+ 0 - 0
Other/win/libvideoqueue/CMakeLists.txt → Other/libvideoqueue/CMakeLists.txt


+ 0 - 0
Other/unix/libvideoqueue/ReadMe.txt → Other/libvideoqueue/ReadMe.txt


+ 0 - 0
Other/unix/libvideoqueue/dllmain.cpp → Other/libvideoqueue/dllmain.cpp


+ 14 - 60
Other/unix/libvideoqueue/libvideoqueue.cpp → Other/libvideoqueue/libvideoqueue.cpp

@@ -6,14 +6,14 @@
 #include "videoutil.h"
 
 
-#ifdef RVC_OS_WIN
+#ifdef _WIN32
 #include "stdafx.h"
 #include "ipp.h"
 #else
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
-#endif // RVC_OS_WIN
+#endif // _WIN32
 
 
 typedef struct  Qnode
@@ -29,53 +29,6 @@ typedef struct linkqueue
 	unsigned int queuelens;
 }linkqueue;
 
-//// the  same as libvideoframe/videoutil.h
-//typedef struct video_frame {
-//	unsigned char *data[4];
-//	int linesize[4];
-//	int width;
-//	int height;
-//	int format; /* VIDEO_FORMAT_xxx */
-//}video_frame;
-
-#if 0
-// for rgb24
-static void vertical_flip(unsigned char *src_data, int linesize, int width, int height, unsigned char *dst_data)
-{
-	int i;
-	int actual_line = width * 3;
-	unsigned char *p = dst_data;
-	unsigned char *q = src_data + (height-1)*linesize;
-	for (i = 0; i < height; ++i) {
-		memcpy(p, q, actual_line);
-		p += linesize;
-		q -= linesize;
-	}
-}
-
-// for rgb24
-static void horizontal_flip(unsigned char *data, int linesize, int width, int height)
-{
-	int i, j;
-	LPBYTE lpData = data;
-	for (i = 0; i < height; ++i) {
-		LPBYTE x = lpData;
-		LPBYTE y = x + (width-1) * 3;
-		for (j = 0; j < width >> 1; ++j) {
-			swap(*x, *y);
-			x++;
-			y++;
-			swap(*x, *y);
-			x++;
-			y++;
-			swap(*x, *y);
-			x++;
-			y-=5;
-		}
-		lpData += linesize;
-	}
-}
-#endif
 
 class libvideoqueue_impl
 {
@@ -242,7 +195,7 @@ public:
 					videotmp->iframeid				= Video->iframeid;
 					unsigned int*Ptr				= (unsigned int*)nTimeSignAddr;
 					*Ptr	= nowtime;
-#ifdef RVC_OS_WIN
+#ifdef _WIN32
 
 					if (flags) {
 						IppiAxis flip;
@@ -265,7 +218,7 @@ public:
 					}
 #else
 					memcpy(videotmp->data, Video->data, Video->framesize);
-#endif // RVC_OS_WIN
+#endif // _WIN32
 					rearptrfront->nextqnodeindex = m_pQueue->rearindex;
 				}
 				m_ShareMem.Unlock();
@@ -303,7 +256,7 @@ public:
 					Video->width = videotemp->width;
 					Video->iframeid = videotemp->iframeid;
 
-#ifdef RVC_OS_WIN
+#ifdef _WIN32
 					if (flags) {
 						IppiAxis flip;
 						if (flags == VIDEOQUEUE_FLAG_VERTICAL_FLIP) { // 上下翻转
@@ -327,7 +280,7 @@ public:
 							m_ShareMem.Unlock();
 							return false;
 						}
-				}
+					}
 					else
 					{
 						IppiSize roiSize;
@@ -354,7 +307,7 @@ public:
 						m_ShareMem.Unlock();
 						return false;
 					}
-#endif // RVC_OS_WIN
+#endif // _WIN32
 					m_ShareMem.Unlock();
 					return true;
 				}
@@ -388,7 +341,8 @@ public:
 					videoq_frame*videotemp = (videoq_frame*)aVideoFrameAddr[m_pQueue->frontindex];
 					assert(Video->height == videotemp->height);
 					assert(Video->width == videotemp->width);
-#ifdef RVC_OS_WIN
+#ifdef _WIN32
+					Video->iframeid = videotemp->iframeid;
 					//Video->format = videotemp->format;
 					//Video->framesize = videotemp->framesize;
 					//Video->height = videotemp->height;
@@ -419,7 +373,7 @@ public:
 						memcpy(Video->data[0] + i*Video->linesize[0], (unsigned char*)aImgDataAddr[m_pQueue->frontindex] + i * Video->width*3, Video->width*3);
 					}
 
-#endif // RVC_OS_WIN
+#endif // _WIN32
 					m_ShareMem.Unlock();
 					return true;
 				}
@@ -455,7 +409,7 @@ public:
 					Video->height = videotemp->height;
 					Video->width = videotemp->width;
 					Video->iframeid = videotemp->iframeid;
-#ifdef RVC_OS_WIN
+#ifdef _WIN32
 					if (flags) 
 					{
 						IppiAxis flip;
@@ -505,7 +459,7 @@ public:
 					{
 						memcpy((unsigned char*)Video->data + i * videotemp->height * 3, (unsigned char*)aImgDataAddr[m_pQueue->frontindex] + i * videotemp->width * 3, videotemp->width * 3);
 					}
-#endif // RVC_OS_WIN
+#endif // _WIN32
 					m_ShareMem.Unlock();
 					return true;
 				}
@@ -542,7 +496,7 @@ public:
 					Video->height			= videotemp->height;
 					Video->width			= videotemp->width;
 					Video->iframeid			= videotemp->iframeid;
-#ifdef RVC_OS_WIN
+#ifdef _WIN32
 					if (flags) {
 						IppiAxis flip;
 						if (flags == VIDEOQUEUE_FLAG_VERTICAL_FLIP) { // 上下翻转
@@ -561,7 +515,7 @@ public:
 					}
 #else
 					memcpy(Video->data, (unsigned char*)aImgDataAddr[m_pQueue->frontindex], videotemp->framesize);
-#endif // RVC_OS_WIN
+#endif // _WIN32
 
 					unsigned char*data = (unsigned char*)aImgDataAddr[m_pQueue->frontindex];
 					memset(data,0,videotemp->framesize);

+ 1 - 1
Other/unix/libvideoqueue/libvideoqueue.h → Other/libvideoqueue/libvideoqueue.h

@@ -1,6 +1,6 @@
 #pragma once
 
-#ifdef RVC_OS_WIN
+#ifdef _WIN32
 #ifdef LIBVIDEOQUEUE_EXPORTS
 #define LIBVIDEOQUEUE_API __declspec(dllexport)
 #else

+ 0 - 0
Other/unix/libvideoqueue/stdafx.cpp → Other/libvideoqueue/stdafx.cpp


+ 0 - 1
Other/unix/CMakeLists.txt

@@ -1,7 +1,6 @@
 add_subdirectory(libbizchan)
 
 add_subdirectory(libsharememory)
-add_subdirectory(libvideoqueue)
 add_subdirectory(libaudioframework)
 add_subdirectory(libvideoframework)
 add_subdirectory(libfacecapture)

+ 1 - 2
Other/unix/libfacecapture/CMakeLists.txt

@@ -48,14 +48,13 @@ add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
 target_include_directories(${MODULE_NAME} PRIVATE
 	${RVC_COMMON_INCLUDE_DIR}
 	${RVC_WINPR_INCLUDE_DIR}
-    ${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+    ${OTHER_LIB_BASE_DIR}/libvideoqueue
     ${CONAN_INCLUDE_DIRS_OPENCV}
     ${CONAN_INCLUDE_DIRS_OPENCV}/opencv
     )
 
 target_compile_definitions(${MODULE_NAME} PUBLIC "LIBFACECAPTURE_EXPORTS")
 
-
 # 添加需要依赖的其他共享库(包括系统库)
 if(MSVC)
 target_link_directories(${MODULE_NAME} PRIVATE

+ 0 - 56
Other/unix/libvideoqueue/CMakeLists.txt

@@ -1,56 +0,0 @@
-set(MODULE_NAME "videoqueue")
-set(MODULE_PREFIX "LIB_VIDEOQUEUE_FUNC")
-
-if(MSVC)
-    set(STDAFXCPP stdafx.cpp)
-else()
-	 set(STDAFXCPP )
-endif(MSVC)
-
-
-set(${MODULE_PREFIX}_SRCS
-    libvideoqueue.h
-    libvideoqueue.cpp
-	${STDAFXCPP}
-)
-
-add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
-
-if(MSVC)
-add_precompiled_header(${MODULE_NAME} stdafx.h SOURCE_CXX stdafx.cpp FORCEINCLUDE)
-endif(MSVC)
-
-
-
-target_include_directories(${MODULE_NAME} PRIVATE
-	${RVC_COMMON_INCLUDE_DIR}
-	${RVC_WINPR_INCLUDE_DIR}
-	${CONAN_INCLUDE_DIRS_IPP}
-	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoframework
-	)
-
-target_link_directories(${MODULE_NAME} PRIVATE
-	${CONAN_LIB_DIRS_IPP}
-	)
-
-target_link_libraries(${MODULE_NAME} PRIVATE ${${MODULE_PREFIX}_LIBS}
-#	${SPBASE_LIB}
-	${CONAN_PKG_LIBS_IPP}
-	sharememory
-	)  
-
-target_compile_definitions(${MODULE_NAME} PUBLIC "LIBVIDEOQUEUE_EXPORTS")
-
-if(MSVC)
-	install(TARGETS ${MODULE_NAME} 
-    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries
-    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL
-    LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT libraries
-    )
-else()
-install(TARGETS ${MODULE_NAME} 
-    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
-    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
-    LIBRARY DESTINATION "${RVC_RUNTIME_PATH}"
-    COMPONENT libraries)
-endif(MSVC)

+ 1 - 1
Other/unix/libvideorecord/CMakeLists.txt

@@ -28,7 +28,7 @@ target_include_directories(${MODULE_NAME} PRIVATE
     ${CONAN_INCLUDE_DIRS_OPENCV}
     ${CONAN_INCLUDE_DIRS_OPENCV}/opencv
 	${OTHER_LIB_BASE_DIR}/libaudioqueue
-    ${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+    ${OTHER_LIB_BASE_DIR}/libvideoqueue
 	${OTHER_LIB_BASE_DIR}/libaudions
 	${OTHER_LIB_PLATFORM_BASE_DIR}/rvcmediacommon/common_video
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoframework

+ 0 - 1
Other/win/CMakeLists.txt

@@ -1,7 +1,6 @@
 add_subdirectory(libvideohorflip)
 
 add_subdirectory(libsharememory)
-add_subdirectory(libvideoqueue)
 add_subdirectory(libfacecapture)
 add_subdirectory(libvideoframework)
 add_subdirectory(libbizchan)

+ 1 - 1
Other/win/libfacecapture/CMakeLists.txt

@@ -16,7 +16,7 @@ add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
 
 target_include_directories(${MODULE_NAME} PRIVATE
 	${RVC_COMMON_INCLUDE_DIR}
-    ${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+    ${OTHER_LIB_BASE_DIR}/libvideoqueue
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libsharememory
     ${CUSTOM_OPENCV_INCLUDES_DIR}
     ${CUSTOM_OPENCV_INCLUDES_DIR}/opencv

+ 0 - 36
Other/win/libvideoqueue/ReadMe.txt

@@ -1,36 +0,0 @@
-========================================================================
-    动态链接库:libvideoqueue 项目概述
-========================================================================
-
-应用程序向导已为您创建了此 libvideoqueue DLL。
-
-本文件概要介绍组成 libvideoqueue 应用程序的每个文件的内容。
-
-
-libvideoqueue.vcxproj
-    这是使用应用程序向导生成的 VC++ 项目的主项目文件,
-    其中包含生成该文件的 Visual C++ 
-    的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
-
-libvideoqueue.vcxproj.filters
-    这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。 
-    它包含有关项目文件与筛选器之间的关联信息。 在 IDE 
-    中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。
-    例如,“.cpp”文件与“源文件”筛选器关联。
-
-libvideoqueue.cpp
-    这是主 DLL 源文件。
-
-/////////////////////////////////////////////////////////////////////////////
-其他标准文件:
-
-StdAfx.h,StdAfx.cpp
-    这些文件用于生成名为 libvideoqueue.pch 的预编译头 (PCH) 文件和
-    名为 StdAfx.obj 的预编译类型文件。
-
-/////////////////////////////////////////////////////////////////////////////
-其他注释:
-
-应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。
-
-/////////////////////////////////////////////////////////////////////////////

+ 0 - 19
Other/win/libvideoqueue/dllmain.cpp

@@ -1,19 +0,0 @@
-// dllmain.cpp : 定义 DLL 应用程序的入口点。
-#include "stdafx.h"
-
-BOOL APIENTRY DllMain( HMODULE hModule,
-                       DWORD  ul_reason_for_call,
-                       LPVOID lpReserved
-					 )
-{
-	switch (ul_reason_for_call)
-	{
-	case DLL_PROCESS_ATTACH:
-	case DLL_THREAD_ATTACH:
-	case DLL_THREAD_DETACH:
-	case DLL_PROCESS_DETACH:
-		break;
-	}
-	return TRUE;
-}
-

+ 0 - 732
Other/win/libvideoqueue/libvideoqueue.cpp

@@ -1,732 +0,0 @@
-// libvideoqueue.cpp : 定义 DLL 应用程序的导出函数。
-//
-
-#include "stdafx.h"
-#include "libvideoqueue.h"
-#include "libsharememory.h"
-#include <windows.h>
-
-#include <ipp.h>
-
-typedef struct  Qnode
-{
-	unsigned int videoframeindex;
-	unsigned int nextqnodeindex;
-}Qnode, *queueptr;
-
-typedef struct linkqueue
-{
-	unsigned int frontindex;
-	unsigned int rearindex;
-	unsigned int queuelens;
-}linkqueue;
-
-// the  same as libvideoframe/videoutil.h
-typedef struct video_frame {
-	unsigned char *data[4];
-	int linesize[4];
-	int width;
-	int height;
-	int format; /* VIDEO_FORMAT_xxx */
-	int iframeid;
-}video_frame;
-
-#if 0
-// for rgb24
-static void vertical_flip(unsigned char *src_data, int linesize, int width, int height, unsigned char *dst_data)
-{
-	int i;
-	int actual_line = width * 3;
-	unsigned char *p = dst_data;
-	unsigned char *q = src_data + (height-1)*linesize;
-	for (i = 0; i < height; ++i) {
-		memcpy(p, q, actual_line);
-		p += linesize;
-		q -= linesize;
-	}
-}
-
-// for rgb24
-static void horizontal_flip(unsigned char *data, int linesize, int width, int height)
-{
-	int i, j;
-	LPBYTE lpData = data;
-	for (i = 0; i < height; ++i) {
-		LPBYTE x = lpData;
-		LPBYTE y = x + (width-1) * 3;
-		for (j = 0; j < width >> 1; ++j) {
-			swap(*x, *y);
-			x++;
-			y++;
-			swap(*x, *y);
-			x++;
-			y++;
-			swap(*x, *y);
-			x++;
-			y-=5;
-		}
-		lpData += linesize;
-	}
-}
-#endif
-
-class libvideoqueue_impl
-{
-private:
-	Clibsharememory m_ShareMem;
-	LPVOID m_lpMem;
-	linkqueue*m_pQueue;
-	int m_nTimeSignLens;
-	int m_nQueueAddrLens;
-	int m_nQnodeAddrLens;
-	int m_nFrameAddrLens;
-	int m_nDataAddrlens;
-	LPCTSTR szShareMemName;
-	unsigned long aQnodeAddr[MAX_VIDEOQUEUE_LENS];
-	unsigned long aVideoFrameAddr[MAX_VIDEOQUEUE_LENS];
-	unsigned long aImgDataAddr[MAX_VIDEOQUEUE_LENS];
-	unsigned long nTimeSignAddr;
-public:
-	libvideoqueue_impl(LPCTSTR videoqueuename,int framesize=MAX_VIDEOQNODE_SIZE)
-	{
-		m_lpMem = NULL;
-		m_pQueue = NULL;
-		szShareMemName = NULL;
-		m_nQueueAddrLens = 0;
-		m_nQnodeAddrLens = 0;
-		m_nTimeSignLens = 0;
-		m_nFrameAddrLens = 0;
-		m_nDataAddrlens = 0;
-		for(int i=0;i<MAX_VIDEOQUEUE_LENS;i++)
-		{
-			aQnodeAddr[i] = 0;
-			aVideoFrameAddr[i] = 0;
-			aImgDataAddr[i] = 0;
-		}
-		nTimeSignAddr = 0;
-		InitQueue(videoqueuename,framesize);
-	}
-
-	~libvideoqueue_impl()
-	{
-		ClearVideoQueue();
-	}
-
-	//初始化队列
-	bool InitQueue(LPCTSTR szName,int framesize=MAX_VIDEOQNODE_SIZE)
-	{
-		m_nQueueAddrLens = sizeof(linkqueue);
-		m_nQnodeAddrLens = MAX_VIDEOQUEUE_LENS*sizeof(Qnode);
-		m_nFrameAddrLens = MAX_VIDEOQUEUE_LENS*sizeof(videoq_frame);
-		m_nDataAddrlens	= MAX_VIDEOQUEUE_LENS*framesize;
-		m_nTimeSignLens = sizeof(unsigned int);
-		unsigned long nMemTotalNum = m_nTimeSignLens+m_nQueueAddrLens+m_nQnodeAddrLens+m_nFrameAddrLens+m_nDataAddrlens;
-		if (m_ShareMem.Create(szName,nMemTotalNum)&&(m_nDataAddrlens!=0))
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				memset(m_lpMem,0,nMemTotalNum);
-				m_pQueue = (linkqueue *)m_lpMem;
-				for(int i =0;i<MAX_VIDEOQUEUE_LENS;i++)
-				{
-					aQnodeAddr[i] = (unsigned long)m_pQueue+m_nQueueAddrLens+sizeof(Qnode)*i;
-					aVideoFrameAddr[i] = (unsigned long)m_pQueue+m_nQueueAddrLens+m_nQnodeAddrLens+sizeof(videoq_frame)*i;
-					aImgDataAddr[i] = (unsigned long)m_pQueue+m_nQueueAddrLens+m_nQnodeAddrLens+m_nFrameAddrLens+framesize*i;
-				}
-				nTimeSignAddr =  (unsigned long)m_pQueue+m_nQueueAddrLens+m_nQnodeAddrLens+m_nFrameAddrLens+m_nDataAddrlens;
-				m_pQueue->frontindex = m_pQueue->rearindex = 0;
-				m_pQueue->queuelens = 0;
-				m_ShareMem.Unlock();
-			}
-
-		} 
-		else if(m_ShareMem.Open(szName))
-		{
-			int i = m_ShareMem.GetBytes();
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				m_pQueue = (linkqueue*)m_lpMem;
-				for(int i =0;i<MAX_VIDEOQUEUE_LENS;i++)
-				{
-					aQnodeAddr[i] = (unsigned long)m_pQueue+m_nQueueAddrLens+sizeof(Qnode)*i;
-					aVideoFrameAddr[i] = (unsigned long)m_pQueue+m_nQueueAddrLens+m_nQnodeAddrLens+sizeof(videoq_frame)*i;
-					aImgDataAddr[i] = (unsigned long)m_pQueue+m_nQueueAddrLens+m_nQnodeAddrLens+m_nFrameAddrLens+framesize*i;
-				}
-				nTimeSignAddr =  (unsigned long)m_pQueue+m_nQueueAddrLens+m_nQnodeAddrLens+m_nFrameAddrLens+m_nDataAddrlens;
-				m_ShareMem.Unlock();
-			}
-		}
-		return true;
-	}
-
-	//返回队列的元素个数,视频队列长度
-	int GetVideoLens()
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				int num = m_pQueue->queuelens;
-				m_ShareMem.Unlock();
-				return num;
-			}
-			else
-			{
-				return 0;
-			}
-		}
-		else
-		{
-			return 0;
-		}
-	}
-	//往视频循环队列尾部插节点
-	bool InsertVideo(videoq_frame* Video, int flags,unsigned int nowtime)
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				unsigned int nRearNextIndex = 0;
-				//保存当前对位指针的序列号
-				queueptr rearptrfront = (queueptr)aQnodeAddr[m_pQueue->rearindex];
-				//如果队列已满
-				if(m_pQueue->queuelens == MAX_VIDEOQUEUE_LENS)
-				{
-					m_pQueue->rearindex = (m_pQueue->rearindex+1)%MAX_VIDEOQUEUE_LENS;
-					m_pQueue->frontindex = (m_pQueue->frontindex+1)%MAX_VIDEOQUEUE_LENS;
-					m_pQueue->queuelens = MAX_VIDEOQUEUE_LENS;
-				}
-				else if (m_pQueue->queuelens == 0)
-				{
-					m_pQueue->rearindex  = 0;
-					m_pQueue->frontindex  = 0;
-					m_pQueue->queuelens++;
-				}
-				else
-				{
-					m_pQueue->rearindex = (m_pQueue->rearindex+1)%MAX_VIDEOQUEUE_LENS;
-					m_pQueue->frontindex = m_pQueue->frontindex;
-					m_pQueue->queuelens++;
-				}
-				if (Video != NULL)
-				{
-					queueptr rearqnodetmp			= (queueptr)aQnodeAddr[m_pQueue->rearindex];
-					rearqnodetmp->videoframeindex	= m_pQueue->rearindex;
-					rearqnodetmp->nextqnodeindex	= 0;
-					videoq_frame*videotmp			= (videoq_frame*)aVideoFrameAddr[m_pQueue->rearindex];
-					videotmp->data					= (unsigned char*)aImgDataAddr[m_pQueue->rearindex ];
-					videotmp->format				= Video->format;
-					videotmp->framesize				= Video->height * Video->width * 3;
-					videotmp->height				= Video->height;
-					videotmp->width					= Video->width;
-					videotmp->iframeid				= Video->iframeid;
-					unsigned int*Ptr				= (unsigned int*)nTimeSignAddr;
-					*Ptr	= nowtime;
-
-					if (flags) {
-						IppiAxis flip;
-						if (flags == VIDEOQUEUE_FLAG_VERTICAL_FLIP) { // 上下翻转
-							flip = ippAxsHorizontal; // x轴
-						} else if (flags == VIDEOQUEUE_FLAG_HORIZONTAL_FLIP) { // 左右翻转
-							flip = ippAxsVertical; // y轴
-						} else {
-							flip = ippAxsBoth;
-						}
-						IppiSize roiSize;
-						roiSize.width = videotmp->width;
-						roiSize.height = videotmp->height;
-						ippiMirror_8u_C3R(Video->data, Video->framesize/Video->height, videotmp->data, videotmp->width*3, roiSize, flip);
-					} else {
-						IppiSize roiSize;
-						roiSize.width = videotmp->width;
-						roiSize.height = videotmp->height;
-						ippiCopy_8u_C3R(Video->data, Video->framesize/Video->height, videotmp->data, videotmp->width*3, roiSize);
-					}
-					rearptrfront->nextqnodeindex = m_pQueue->rearindex;
-				}
-				m_ShareMem.Unlock();
-				return true;
-			}
-			else
-			{
-				return false;
-			}
-
-		}
-		else
-		{
-			return false;
-		}
-	}
-	//读视频队列头部节点
-	bool GetVideo(videoq_frame* Video, int flags)	
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				if (m_pQueue->queuelens == 0)
-				{
-					m_ShareMem.Unlock();
-					return false;
-				}
-				else
-				{
-					videoq_frame*videotemp = (videoq_frame*)aVideoFrameAddr[m_pQueue->frontindex];
-					Video->format = videotemp->format;
-					Video->framesize = videotemp->framesize;
-					Video->height = videotemp->height;
-					Video->width = videotemp->width;
-					Video->iframeid = videotemp->iframeid;
-					if (flags) {
-						IppiAxis flip;
-						if (flags == VIDEOQUEUE_FLAG_VERTICAL_FLIP) { // 上下翻转
-							flip = ippAxsHorizontal; // x轴
-						} else if (flags == VIDEOQUEUE_FLAG_HORIZONTAL_FLIP) { // 左右翻转
-							flip = ippAxsVertical; // y轴
-						} else {
-							flip = ippAxsBoth;
-						}
-						IppiSize roiSize;
-						roiSize.width = videotemp->width;
-						roiSize.height = videotemp->height;
-						try
-						{
-							ippiMirror_8u_C3R((unsigned char*)aImgDataAddr[m_pQueue->frontindex], videotemp->width*3, Video->data, videotemp->width*3, roiSize, flip);
-						}
-						catch (...)
-						{
-							m_ShareMem.Unlock();
-							return false;
-						}	
-					} 
-					else 
-					{
-						IppiSize roiSize;
-						roiSize.width = videotemp->width;
-						roiSize.height = videotemp->height;
-						try
-						{
-							ippiCopy_8u_C3R((unsigned char*)aImgDataAddr[m_pQueue->frontindex], videotemp->width*3, Video->data, videotemp->width*3, roiSize);
-							//memcpy(Video->data,(unsigned char*)aImgDataAddr[m_pQueue->frontindex],videotemp->framesize);
-						}
-						catch (...)
-						{
-							m_ShareMem.Unlock();
-							return false;
-						}	
-					}
-					m_ShareMem.Unlock();
-					return true;
-				}
-			}
-			else
-			{
-				return false;
-			}
-		}
-		else
-		{
-			return false;
-		}		
-	}
-
-	bool GetVideo2(video_frame* Video, int flags)	
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				if (m_pQueue->queuelens == 0)
-				{
-					m_ShareMem.Unlock();
-					return false;
-				}
-				else
-				{
-					videoq_frame*videotemp = (videoq_frame*)aVideoFrameAddr[m_pQueue->frontindex];
-					assert(Video->height == videotemp->height);
-					assert(Video->width == videotemp->width);
-					Video->iframeid = videotemp->iframeid;
-					//Video->format = videotemp->format;
-					//Video->framesize = videotemp->framesize;
-					//Video->height = videotemp->height;
-					//Video->width = videotemp->width;
-					if (flags) {
-						IppiAxis flip;
-						if (flags == VIDEOQUEUE_FLAG_VERTICAL_FLIP) { // 上下翻转
-							flip = ippAxsHorizontal; // x轴
-						} else if (flags == VIDEOQUEUE_FLAG_HORIZONTAL_FLIP) { // 左右翻转
-							flip = ippAxsVertical; // y轴
-						} else {
-							flip = ippAxsBoth;
-						}
-						IppiSize roiSize;
-						roiSize.width = videotemp->width;
-						roiSize.height = videotemp->height;
-						ippiMirror_8u_C3R((unsigned char*)aImgDataAddr[m_pQueue->frontindex], videotemp->width*3, Video->data[0], Video->linesize[0], roiSize, flip);
-					} else {
-						IppiSize roiSize;
-						roiSize.width = videotemp->width;
-						roiSize.height = videotemp->height;
-						ippiCopy_8u_C3R((unsigned char*)aImgDataAddr[m_pQueue->frontindex], videotemp->width*3, Video->data[0], Video->linesize[0], roiSize);
-					}
-					m_ShareMem.Unlock();
-					return true;
-				}
-			}
-			else
-			{
-				return false;
-			}
-		}
-		else
-		{
-			return false;
-		}		
-	}
-
-	bool GetVideo3(videoq_frame* Video, int flags)	
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				if (m_pQueue->queuelens == 0)
-				{
-					m_ShareMem.Unlock();
-					return false;
-				}
-				else
-				{
-					videoq_frame*videotemp = (videoq_frame*)aVideoFrameAddr[m_pQueue->frontindex];
-					Video->iframeid = videotemp->iframeid;
-					//Video->format = videotemp->format;
-					//Video->framesize = videotemp->framesize;
-					//Video->height = videotemp->height;
-					//Video->width = videotemp->width;
-					if (flags) 
-					{
-						IppiAxis flip;
-						if (flags == VIDEOQUEUE_FLAG_VERTICAL_FLIP) 
-						{ // 上下翻转
-							flip = ippAxsHorizontal; // x轴
-						} 
-						else if (flags == VIDEOQUEUE_FLAG_HORIZONTAL_FLIP) 
-						{ // 左右翻转
-							flip = ippAxsVertical; // y轴
-						} 
-						else 
-						{
-							flip = ippAxsBoth;
-						}
-						IppiSize roiSize;
-						roiSize.width = videotemp->width;
-						roiSize.height = videotemp->height;
-						try
-						{
-							ippiMirror_8u_C3R((unsigned char*)aImgDataAddr[m_pQueue->frontindex], videotemp->width*3, Video->data, videotemp->height*3, roiSize, flip);
-						}
-						catch (...)
-						{
-							m_ShareMem.Unlock();
-							return false;
-						}
-					} 
-					else 
-					{
-						IppiSize roiSize;
-						roiSize.width = videotemp->width;
-						roiSize.height = videotemp->height;
-						try
-						{
-							ippiCopy_8u_C3R((unsigned char*)aImgDataAddr[m_pQueue->frontindex], videotemp->width*3, Video->data, videotemp->height*3, roiSize);
-						}
-						catch (...)
-						{
-							m_ShareMem.Unlock();
-							return false;
-						}
-						
-					}
-					m_ShareMem.Unlock();
-					return true;
-				}
-			}
-			else
-			{
-				return false;
-			}
-		}
-		else
-		{
-			return false;
-		}		
-	}
-
-	//读视频队列头部节点,并删除头部节点
-	bool GetVideoAndDel(videoq_frame* Video, int flags)
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				if (m_pQueue->queuelens == 0)
-				{
-					m_ShareMem.Unlock();
-					return false;
-				}
-				else
-				{
-					videoq_frame*videotemp	= (videoq_frame*)aVideoFrameAddr[m_pQueue->frontindex];
-					Video->format			= videotemp->format;
-					Video->framesize		= videotemp->framesize;
-					Video->height			= videotemp->height;
-					Video->width			= videotemp->width;
-					Video->iframeid			= videotemp->iframeid;
-					if (flags) {
-						IppiAxis flip;
-						if (flags == VIDEOQUEUE_FLAG_VERTICAL_FLIP) { // 上下翻转
-							flip = ippAxsHorizontal; // x轴
-						} else if (flags == VIDEOQUEUE_FLAG_HORIZONTAL_FLIP) { // 左右翻转
-							flip = ippAxsVertical; // y轴
-						} else {
-							flip = ippAxsBoth;
-						}
-						IppiSize roiSize;
-						roiSize.width = videotemp->width;
-						roiSize.height = videotemp->height;
-						ippiMirror_8u_C3R((unsigned char*)aImgDataAddr[m_pQueue->frontindex], videotemp->width*3, Video->data, videotemp->width*3, roiSize, flip);
-					} else {
-						memcpy(Video->data,(unsigned char*)aImgDataAddr[m_pQueue->frontindex],videotemp->framesize);
-					}
-					unsigned char*data = (unsigned char*)aImgDataAddr[m_pQueue->frontindex];
-					memset(data,0,videotemp->framesize);
-					memset(videotemp,0,sizeof(videoq_frame));
-					queueptr qnodetmp			= (queueptr)aQnodeAddr[m_pQueue->frontindex];
-					m_pQueue->frontindex		= qnodetmp->nextqnodeindex;
-					qnodetmp					= (queueptr)aQnodeAddr[m_pQueue->rearindex];
-					qnodetmp->nextqnodeindex	= 0;
-					m_pQueue->queuelens--;
-					m_ShareMem.Unlock();
-					return true;
-				}
-			}
-			else
-			{
-				return false;
-			}
-		}
-		else
-		{
-			return false;
-		}		
-	}
-
-	//清除队列
-	bool ClearVideoQueue()
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				if (m_pQueue->queuelens != 0)
-				{
-					while(m_pQueue->queuelens != 0)
-					{
-						videoq_frame*videotemp = (videoq_frame*)aVideoFrameAddr[m_pQueue->frontindex];
-						unsigned char*data = (unsigned char*)aImgDataAddr[m_pQueue->frontindex];
-						memset(data,0,videotemp->framesize);
-						memset(videotemp,0,sizeof(videoq_frame));
-						queueptr qnodetmp			= (queueptr)aQnodeAddr[m_pQueue->frontindex];
-						m_pQueue->frontindex		= qnodetmp->nextqnodeindex;
-						qnodetmp					= (queueptr)aQnodeAddr[m_pQueue->rearindex];
-						qnodetmp->nextqnodeindex	= 0;
-						m_pQueue->queuelens--;	
-					}					
-				}
-				m_ShareMem.Unlock();
-				return true;
-			}
-			else
-			{
-				return false;
-			}
-		}
-		else
-		{
-			return false;
-		}		
-	}
-
-	//删除队头的数据
-	bool DeleteHeadVideo()  
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				if (m_pQueue->queuelens != 0)
-				{	
-					videoq_frame*videotemp	= (videoq_frame*)aVideoFrameAddr[m_pQueue->frontindex];
-					unsigned char*data = (unsigned char*)aImgDataAddr[m_pQueue->frontindex];
-					memset(data,0,videotemp->framesize);
-					memset(videotemp,0,sizeof(videoq_frame));
-					queueptr qnodetmp			= (queueptr)aQnodeAddr[m_pQueue->frontindex];
-					m_pQueue->frontindex		= qnodetmp->nextqnodeindex;
-					qnodetmp					= (queueptr)aQnodeAddr[m_pQueue->rearindex];
-					qnodetmp->nextqnodeindex	= 0;
-					m_pQueue->queuelens--;			
-				}
-				m_ShareMem.Unlock();
-				return true;
-			}
-			else
-			{
-				return false;
-			}
-		}
-		else
-		{
-			return false;
-		}	
-	}
-
-	//获取图像的大小
-	int GetFrameSize(int&width,int&height)
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				int nFrameSize = 0;
-				if (m_pQueue->queuelens != 0)
-				{	
-					videoq_frame*videotmp	= (videoq_frame*)aVideoFrameAddr[m_pQueue->frontindex];
-					nFrameSize				= videotmp->framesize;
-					width					= videotmp->width;
-					height					= videotmp->height;
-				}
-				m_ShareMem.Unlock();
-				return nFrameSize;
-			}
-			else
-			{
-				return 0;
-			}
-		}
-		else
-		{
-			return 0;
-		}
-	}
-
-	unsigned int GetLastFrameTime()
-	{
-		if(m_ShareMem.IsValid())
-		{
-			m_lpMem = m_ShareMem.Lock(1000);
-			if(m_lpMem != NULL)
-			{
-				unsigned int nLastFrameTime = 0;
-				nLastFrameTime = *(unsigned int *)nTimeSignAddr;
-				m_ShareMem.Unlock();
-				return nLastFrameTime;
-			}
-			else
-			{
-				return 0;
-			}
-		}
-		else
-		{
-			return 0;
-		}
-	}
-};
-
-// 这是已导出类的构造函数。
-// 有关类定义的信息,请参阅 libvideoqueue.h
-Clibvideoqueue::Clibvideoqueue(LPCTSTR videoqueuename,int framesize)
-{
-	m_pImpl = new libvideoqueue_impl(videoqueuename,framesize);
-	return;
-}
-
-Clibvideoqueue::~Clibvideoqueue()
-{
-	ClearVideoQueue();
-	delete m_pImpl;
-	return;
-}
-
-bool Clibvideoqueue::InsertVideo(videoq_frame* Video, int flags,unsigned int nowtime)
-{
-	bool bRst = m_pImpl->InsertVideo(Video, flags, nowtime);
-	return bRst;
-}
-
-bool Clibvideoqueue::GetVideo(videoq_frame* Video, int flags)
-{
-	bool bRst = m_pImpl->GetVideo(Video, flags);
-	return bRst;
-}
-
-bool Clibvideoqueue::GetVideo2(video_frame* Video, int flags)
-{
-	bool bRst = m_pImpl->GetVideo2(Video, flags);
-	return bRst;
-}
-
-bool Clibvideoqueue::GetVideo3(videoq_frame* Video, int flags)
-{
-	bool bRst = m_pImpl->GetVideo3(Video, flags);
-	return bRst;
-}
-
-bool Clibvideoqueue::GetVideoAndDel(videoq_frame* Video, int flags)
-{
-	bool bRst = m_pImpl->GetVideoAndDel(Video, flags);
-	return bRst;
-}
-
-int Clibvideoqueue::GetVideoLens(void)
-{
-	int i = m_pImpl->GetVideoLens();
-	return i;
-}
-
-void Clibvideoqueue::ClearVideoQueue()
-{
-	 m_pImpl->ClearVideoQueue();
-	 return;
-}
-
-int Clibvideoqueue::GetFrameSize(int&width,int&height)
-{
-	int i = m_pImpl->GetFrameSize(width,height);
-	return i;
-}	
-
-void Clibvideoqueue::DeleteHeadVideo()
-{
-	m_pImpl->DeleteHeadVideo();
-	return;
-}
-
-unsigned int Clibvideoqueue::GetLastFrameTime()
-{
-	return m_pImpl->GetLastFrameTime();
-}

+ 0 - 74
Other/win/libvideoqueue/libvideoqueue.h

@@ -1,74 +0,0 @@
-// 下列 ifdef 块是创建使从 DLL 导出更简单的
-// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 LIBVIDEOQUEUE_EXPORTS
-// 符号编译的。在使用此 DLL 的
-// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
-// LIBVIDEOQUEUE_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
-// 符号视为是被导出的。
-#ifndef LIBVIDEOQUEUE
-#define LIBVIDEOQUEUE
-
-#ifdef LIBVIDEOQUEUE_EXPORTS
-#define LIBVIDEOQUEUE_API __declspec(dllexport)
-#else
-#define LIBVIDEOQUEUE_API __declspec(dllimport)
-#endif
-
-//using namespace std ;
-
-#define VIDEOQ_FORMAT_RGB24      0x01
-#define VIDEOQ_FORMAT_OPENCV     0x02
-#define VIDEOQ_FORMAT_I420       0x03
-
-#define MAX_VIDEOQUEUE_LENS     1				//视频队列最大节点数量
-#define MAX_VIDEOQNODE_SIZE     640*360*3		//视频队列单个节点默认最大长度
-
-#define VIDEOQUEUE_FLAG_VERTICAL_FLIP	0x01
-#define VIDEOQUEUE_FLAG_HORIZONTAL_FLIP	0x02
-
-typedef struct videoq_frame 
-{
-	unsigned char *data;
-	int width;
-	int height;
-	int framesize;
-	int format; /* VIDEO_FORMAT_xxx */
-	int iframeid;
-}videoq_frame;
-
-class libvideoqueue_impl;  //桥接
-struct video_frame;
-
-// 此类是从 libvideoqueue.dll 导出的
-class LIBVIDEOQUEUE_API Clibvideoqueue 
-{
-public:
-	//videoqueuename:用于访问视频共享内存的共享内存文件名。framesize:默认最大长度,一般使用默认值即可
-	Clibvideoqueue(LPCTSTR videoqueuename,int framesize=MAX_VIDEOQNODE_SIZE);
-	~Clibvideoqueue();
-	// TODO: 在此添加您的方法。
-private:
-	libvideoqueue_impl*m_pImpl;
-public:
-	//插入图像到队头
-	bool InsertVideo(videoq_frame* Video, int flags,unsigned int nowtime);
-	//读取队头图像
-	bool GetVideo(videoq_frame* Video, int flags);
-	//读取队头图像,使用video_frame结构
-	bool GetVideo2(video_frame* Video, int flags);
-	//按行拷贝,用于横向摄像头图像的拼接
-	bool GetVideo3(videoq_frame* Video, int flags);
-	//读取队头图像并删除
-	bool GetVideoAndDel(videoq_frame* Video, int flags);
-	//获取最后的帧时间
-	unsigned int GetLastFrameTime();
-	//获取视频队列的长度
-	int GetVideoLens(void);
-	//获取单个视频帧的大小
-	int GetFrameSize(int&width,int&height);
-	//清空视频队列
-	void ClearVideoQueue();
-	//删除头部节点
-	void DeleteHeadVideo();
-};
-
-#endif

+ 1 - 1
Other/win/libvideorecord/CMakeLists.txt

@@ -32,7 +32,7 @@ target_include_directories(${MODULE_NAME} PRIVATE
     ${CUSTOM_OPENCV_INCLUDES_DIR}
     ${CUSTOM_OPENCV_INCLUDES_DIR}/opencv
 	${OTHER_LIB_BASE_DIR}/libaudioqueue
-    ${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoqueue
+    ${OTHER_LIB_BASE_DIR}/libvideoqueue
 	${OTHER_LIB_BASE_DIR}/libaudions
 	${OTHER_LIB_PLATFORM_BASE_DIR}/rvcmediacommon/common_video
 	${OTHER_LIB_PLATFORM_BASE_DIR}/libvideoframework