|
@@ -0,0 +1,261 @@
|
|
|
+#include "StdAfx.h"
|
|
|
+#include "RvcFaceVideo.h"
|
|
|
+#include "..\..\Other\libvideoframework\videoutil.h"
|
|
|
+
|
|
|
+RvcFaceVideo::RvcFaceVideo(void)
|
|
|
+{
|
|
|
+ memset(m_env_videoname, 0, MAX_PATH);
|
|
|
+ memset(m_opt_videoname, 0, MAX_PATH);
|
|
|
+ memset(m_preview_env_videoname, 0, MAX_PATH);
|
|
|
+ memset(m_preview_opt_videoname, 0, MAX_PATH);
|
|
|
+
|
|
|
+ m_env_videoqueue = NULL;
|
|
|
+ m_opt_videoqueue = NULL;
|
|
|
+ m_env_videoframe = NULL;
|
|
|
+ m_opt_videoframe = NULL;
|
|
|
+
|
|
|
+ m_preview_env_videoqueue = NULL;
|
|
|
+ m_preview_opt_videoqueue = NULL;
|
|
|
+ m_preview_env_videoframe = NULL;
|
|
|
+ m_preview_opt_videoframe = NULL;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+RvcFaceVideo::~RvcFaceVideo(void)
|
|
|
+{
|
|
|
+ if (NULL != m_env_videoqueue){
|
|
|
+ delete m_env_videoqueue;
|
|
|
+ m_env_videoqueue = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_opt_videoqueue){
|
|
|
+ delete m_opt_videoqueue;
|
|
|
+ m_opt_videoqueue = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_preview_env_videoqueue){
|
|
|
+ delete m_preview_env_videoqueue;
|
|
|
+ m_preview_env_videoqueue = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_preview_opt_videoqueue){
|
|
|
+ delete m_preview_opt_videoqueue;
|
|
|
+ m_preview_opt_videoqueue = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_env_videoframe){
|
|
|
+ delete m_env_videoframe;
|
|
|
+ m_env_videoframe = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_opt_videoframe){
|
|
|
+ delete m_opt_videoframe;
|
|
|
+ m_opt_videoframe = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_preview_env_videoframe){
|
|
|
+ delete m_preview_env_videoname;
|
|
|
+ m_preview_env_videoframe = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_preview_opt_videoframe){
|
|
|
+ delete m_preview_opt_videoframe;
|
|
|
+ m_preview_opt_videoframe = NULL;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+int RvcFaceVideo::InitVideoQueue(const char* strenvqueue, const char* stroptqueue, const char* strpreview_envqueue, const char* strpreview_optqueue)
|
|
|
+{
|
|
|
+ int iRet = -1;
|
|
|
+ if (NULL != strenvqueue){
|
|
|
+ _snprintf(m_env_videoname, MAX_PATH, "%s", strenvqueue);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != stroptqueue){
|
|
|
+ _snprintf(m_opt_videoname, MAX_PATH, "%s", stroptqueue);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != strpreview_envqueue){
|
|
|
+ _snprintf(m_preview_env_videoname, MAX_PATH, "%s", strpreview_envqueue);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != strpreview_optqueue){
|
|
|
+ _snprintf(m_preview_opt_videoname, MAX_PATH, "%s", strpreview_optqueue);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (strlen(m_env_videoname)){
|
|
|
+ m_env_videoqueue = new Clibvideoqueue(m_env_videoname);
|
|
|
+ iRet = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (strlen(m_opt_videoname)){
|
|
|
+ m_opt_videoqueue = new Clibvideoqueue(m_opt_videoname);
|
|
|
+ iRet = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (strlen(m_preview_env_videoname)){
|
|
|
+ m_preview_env_videoqueue = new Clibvideoqueue(m_preview_env_videoname);
|
|
|
+ iRet = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (strlen(m_preview_opt_videoname)){
|
|
|
+ m_preview_opt_videoqueue = new Clibvideoqueue(m_preview_opt_videoname);
|
|
|
+ iRet = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return iRet;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+int RvcFaceVideo::GetVideoFrameSize(int icameraid, int* ivideowidth, int* ivideoheight)
|
|
|
+{
|
|
|
+ assert(icameraid == 0 || icameraid == 1);
|
|
|
+ int isize = 0;
|
|
|
+
|
|
|
+ if (icameraid == 0){
|
|
|
+ int width = 0;
|
|
|
+ int height = 0;
|
|
|
+ if (NULL != m_env_videoqueue){
|
|
|
+ m_env_videoqueue->GetFrameSize(width,height);
|
|
|
+ }
|
|
|
+ *ivideowidth = width;
|
|
|
+ *ivideoheight = height;
|
|
|
+ isize = width*height*3;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ int width = 0;
|
|
|
+ int height = 0;
|
|
|
+ if (NULL != m_opt_videoqueue){
|
|
|
+ m_opt_videoqueue->GetFrameSize(width,height);
|
|
|
+ }
|
|
|
+ *ivideowidth = width;
|
|
|
+ *ivideoheight = height;
|
|
|
+ isize = width*height*3;
|
|
|
+ }
|
|
|
+
|
|
|
+ return isize;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+int RvcFaceVideo::GetPreViewVideoFrameSize(int icameraid, int* ivideowidth, int* ivideoheight)
|
|
|
+{
|
|
|
+ assert(icameraid == 0 || icameraid == 1);
|
|
|
+ int isize = 0;
|
|
|
+
|
|
|
+ if (0 == icameraid){
|
|
|
+ int width = 0;
|
|
|
+ int height = 0;
|
|
|
+ if (NULL != m_preview_env_videoqueue){
|
|
|
+ m_preview_env_videoqueue->GetFrameSize(width,height);
|
|
|
+ }
|
|
|
+ *ivideowidth = width;
|
|
|
+ *ivideoheight = height;
|
|
|
+ isize = width*height*3;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ int width = 0;
|
|
|
+ int height = 0;
|
|
|
+ if (NULL != m_preview_opt_videoqueue){
|
|
|
+ m_preview_opt_videoqueue->GetFrameSize(width,height);
|
|
|
+ }
|
|
|
+ *ivideowidth = width;
|
|
|
+ *ivideoheight = height;
|
|
|
+ isize = width*height*3;
|
|
|
+ }
|
|
|
+
|
|
|
+ return isize;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+BOOL RvcFaceVideo::GetVideoFrame(int icameraid, videoq_frame* videoframe, int iflags)
|
|
|
+{
|
|
|
+ assert(icameraid == 0 || icameraid == 1);
|
|
|
+
|
|
|
+ BOOL bRslt = FALSE;
|
|
|
+ if (icameraid == 0){
|
|
|
+ bRslt = m_env_videoqueue->GetVideo(videoframe, iflags);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if (NULL != m_opt_videoqueue){//横向摄像头图像,拼接
|
|
|
+ bRslt = m_opt_videoqueue->GetVideo(videoframe, iflags);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return bRslt;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+BOOL RvcFaceVideo::GetPreViewVideoFrame(int icameraid, videoq_frame* videoframe, int iflags)
|
|
|
+{
|
|
|
+ assert(icameraid == 0 || icameraid == 1);
|
|
|
+
|
|
|
+ BOOL bRslt = FALSE;
|
|
|
+ if (icameraid == 0){
|
|
|
+ bRslt = m_preview_env_videoqueue->GetVideo(videoframe, iflags);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if (NULL != m_preview_opt_videoqueue){//横向摄像头图像,拼接
|
|
|
+ bRslt = m_preview_opt_videoqueue->GetVideo(videoframe, iflags);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return bRslt;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+int RvcFaceVideo::InitVideoFrame()
|
|
|
+{
|
|
|
+ int iRet = -1;
|
|
|
+ if (NULL != m_env_videoqueue){
|
|
|
+ int iwidth = 0;
|
|
|
+ int iheight = 0;
|
|
|
+ int isize = GetVideoFrameSize(0, &iwidth, &iheight);
|
|
|
+ m_env_videoframe = new videoq_frame();
|
|
|
+ m_env_videoframe->data = new unsigned char[isize];
|
|
|
+ m_env_videoframe->framesize = isize;
|
|
|
+ m_env_videoframe->width = iwidth;
|
|
|
+ m_env_videoframe->height = iheight;
|
|
|
+ m_env_videoframe->format = VIDEO_FORMAT_RGB24;
|
|
|
+ iRet = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_opt_videoqueue){
|
|
|
+ int iwidth = 0;
|
|
|
+ int iheight = 0;
|
|
|
+ int isize = GetVideoFrameSize(1, &iwidth, &iheight);
|
|
|
+ m_opt_videoframe = new videoq_frame();
|
|
|
+ m_opt_videoframe->data = new unsigned char[isize];
|
|
|
+ m_opt_videoframe->framesize = isize;
|
|
|
+ m_opt_videoframe->width = iwidth;
|
|
|
+ m_opt_videoframe->height = iheight;
|
|
|
+ m_opt_videoframe->format = VIDEO_FORMAT_RGB24;
|
|
|
+ iRet = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_preview_env_videoqueue){
|
|
|
+ int iwidth = 0;
|
|
|
+ int iheight = 0;
|
|
|
+ int isize = GetPreViewVideoFrameSize(0, &iwidth, &iheight);
|
|
|
+ m_preview_env_videoframe = new videoq_frame();
|
|
|
+ m_preview_env_videoframe->data = new unsigned char[isize];
|
|
|
+ m_preview_env_videoframe->framesize = isize;
|
|
|
+ m_preview_env_videoframe->width = iwidth;
|
|
|
+ m_preview_env_videoframe->height = iheight;
|
|
|
+ m_preview_env_videoframe->format = VIDEO_FORMAT_RGB24;
|
|
|
+ iRet = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_preview_opt_videoqueue){
|
|
|
+ int iwidth = 0;
|
|
|
+ int iheight = 0;
|
|
|
+ int isize = GetPreViewVideoFrameSize(1, &iwidth, &iheight);
|
|
|
+ m_preview_opt_videoframe = new videoq_frame();
|
|
|
+ m_preview_opt_videoframe->data = new unsigned char[isize];
|
|
|
+ m_preview_opt_videoframe->framesize = isize;
|
|
|
+ m_preview_opt_videoframe->width = iwidth;
|
|
|
+ m_preview_opt_videoframe->height = iheight;
|
|
|
+ m_preview_opt_videoframe->format = VIDEO_FORMAT_RGB24;
|
|
|
+ iRet = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return iRet;
|
|
|
+}
|