|
|
@@ -5,9 +5,9 @@
|
|
|
#include "Event.h"
|
|
|
#include "mod_mediacontroller/Event.h"
|
|
|
|
|
|
-#include "mod_assistantchannel/AssistantChannel_client_g.h"
|
|
|
+#include "AssistantChannel_client_g.h"
|
|
|
using namespace AssistantChannel;
|
|
|
-#include "mod_assistantchannel/chan_protocol.h"
|
|
|
+#include "chan_protocol.h"
|
|
|
|
|
|
#include "rvc_media_common.h"
|
|
|
#include "libvideoqueue.h"
|
|
|
@@ -29,6 +29,10 @@ using namespace AssistantChannel;
|
|
|
#define OPT_CAP_TIMEOUT 100
|
|
|
#endif
|
|
|
|
|
|
+#ifndef RVC_SAFE_DELETE
|
|
|
+#define RVC_SAFE_DELETE(p) { if(p){ (p)->SafeDelete(); (p)=NULL;} }
|
|
|
+#endif //RVC_SAFE_DELETE
|
|
|
+
|
|
|
class CPhotoCaptureEntity;
|
|
|
|
|
|
class ChannelClient : public ChannelService_ClientBase
|
|
|
@@ -39,7 +43,6 @@ public:
|
|
|
};
|
|
|
|
|
|
|
|
|
-// 旋转180�
|
|
|
int RotationDown(unsigned char* src, int srcW, int srcH, int channel)
|
|
|
{
|
|
|
unsigned char* tempSrc = NULL;
|
|
|
@@ -95,17 +98,20 @@ public:
|
|
|
|
|
|
ErrorCodeEnum __OnStart(ErrorCodeEnum preOperationError)
|
|
|
{
|
|
|
- if (preOperationError != Error_Succeed) {
|
|
|
+ LOG_FUNCTION();
|
|
|
+
|
|
|
+ if (preOperationError != Error_Succeed)
|
|
|
return preOperationError;
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
//is Pad Version
|
|
|
m_eDeviceType = RvcGetDeviceType();
|
|
|
|
|
|
- if (eMobilePadType == m_eDeviceType || eStand1SPlusType == m_eDeviceType){
|
|
|
+ if ((eStand1SPlusType == m_eDeviceType) || (ePadtype == m_eDeviceType)||(eMobilePadType == m_eDeviceType)||(eDesk2SType == m_eDeviceType)||(eDesk1SType == m_eDeviceType)||(eDesk2SIntegratedType == m_eDeviceType))
|
|
|
+ {
|
|
|
m_video_env_q = new Clibvideoqueue(REC_COMMON_VIDEO_ENV_SHM_SNAPSHOT_QUEUE);
|
|
|
}
|
|
|
- else { // == 2
|
|
|
+ else
|
|
|
+ { // == 2
|
|
|
m_video_env_q = new Clibvideoqueue(REC_COMMON_VIDEO_ENV_SHM_SNAPSHOT_QUEUE);
|
|
|
m_video_opt_q = new Clibvideoqueue(REC_COMMON_VIDEO_OPT_SHM_SNAPSHOT_QUEUE);
|
|
|
}
|
|
|
@@ -161,21 +167,6 @@ public:
|
|
|
|
|
|
void WriteStamp(video_frame *srcfrm)
|
|
|
{
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- __try {
|
|
|
- CImageFrame frm;
|
|
|
- frm.data = srcfrm->data[0];
|
|
|
- frm.width = srcfrm->width;
|
|
|
- frm.height = srcfrm->height;
|
|
|
- frm.framesize = srcfrm->width * srcfrm->height * 3;
|
|
|
- if (!SnapShot(&frm)) {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("write stamp failed!");
|
|
|
- }
|
|
|
- }
|
|
|
- __except (EXCEPTION_EXECUTE_HANDLER) {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("snapshot throw windows exception!");
|
|
|
- }
|
|
|
-#else
|
|
|
CImageFrame frm;
|
|
|
frm.data = srcfrm->data[0];
|
|
|
frm.width = srcfrm->width;
|
|
|
@@ -184,7 +175,6 @@ public:
|
|
|
if (!SnapShot(&frm)) {
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("write stamp failed!");
|
|
|
}
|
|
|
-#endif
|
|
|
}
|
|
|
|
|
|
void Capture(int rc)
|
|
|
@@ -270,10 +260,8 @@ public:
|
|
|
|
|
|
#ifndef RVC_OS_WIN
|
|
|
{
|
|
|
- //linux需翻转�境摄�头图�
|
|
|
int size = frm->linesize[0] * frm->height;
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("size = %d, width= %d height= %d", size, frm->width, frm->height);
|
|
|
-
|
|
|
RotationDown(frm->data[0], frm->width, REC_COMMON_VIDEO_SNAPSHOT_HEIGHT, 3);
|
|
|
}
|
|
|
#endif
|
|
|
@@ -316,23 +304,20 @@ public:
|
|
|
Info.data.m_iLength = sizeof(rc);
|
|
|
(*m_pChannelClient)(EntityResource::getLink().upgradeLink())->Send(Info);
|
|
|
}
|
|
|
-#if 0
|
|
|
- video_frame_save_bmpfile("snapshot_abc.bmp", frm);
|
|
|
- //video_frame_save_bmpfile("d:\\ab.bmp", &frm);
|
|
|
-#endif
|
|
|
if (frm)
|
|
|
video_frame_delete(frm);
|
|
|
}
|
|
|
|
|
|
ErrorCodeEnum StartCapture(int id)
|
|
|
{
|
|
|
- if (eMobilePadType == m_eDeviceType || eStand1SPlusType == m_eDeviceType){
|
|
|
+#if defined(RVC_OS_LINUX)
|
|
|
+ if (eMobilePadType == m_eDeviceType || eStand1SPlusType == m_eDeviceType) {
|
|
|
m_video_env_q = new Clibvideoqueue(REC_COMMON_VIDEO_ENV_SHM_SNAPSHOT_QUEUE);
|
|
|
- }
|
|
|
- else{ // == 2
|
|
|
+ } else { // == 2
|
|
|
m_video_env_q = new Clibvideoqueue(REC_COMMON_VIDEO_ENV_SHM_SNAPSHOT_QUEUE);
|
|
|
m_video_opt_q = new Clibvideoqueue(REC_COMMON_VIDEO_OPT_SHM_SNAPSHOT_QUEUE);
|
|
|
}
|
|
|
+#endif //RVC_OS_LINUX
|
|
|
|
|
|
if (!m_video_env_q && !m_video_opt_q) {
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("cannot start capture!"); // never go here
|
|
|
@@ -342,7 +327,7 @@ public:
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("already start capture!");
|
|
|
return Error_Duplication;
|
|
|
}
|
|
|
- //触�对应的摄�头进�图�采�
|
|
|
+ //触�对应的摄�头进行图�采集
|
|
|
if (m_video_env_q && m_video_opt_q)
|
|
|
{
|
|
|
LogEvent(Severity_Middle, MOD_EVENT_SNAPSHOT_START_CAPTURE_ENVOPT, "agent start capture env and opt camera picture!");
|
|
|
@@ -400,6 +385,9 @@ public:
|
|
|
else if (stricmp(stStaticinfo.strMachineType, "RVC.Desk1S") == 0) {
|
|
|
eType = eDesk1SType;
|
|
|
}
|
|
|
+ else if (stricmp(stStaticinfo.strMachineType, "RVC.CardStore") == 0 || stricmp(stStaticinfo.strMachineType, "RVC.CardPrinter") == 0) {
|
|
|
+ eType = eCardStore;
|
|
|
+ }
|
|
|
else {
|
|
|
eType = eStand2sType;
|
|
|
}
|
|
|
@@ -525,6 +513,7 @@ private:
|
|
|
}
|
|
|
return Error;
|
|
|
}
|
|
|
+
|
|
|
private:
|
|
|
Clibvideoqueue *m_video_env_q;
|
|
|
Clibvideoqueue *m_video_opt_q;
|