|
@@ -5,6 +5,7 @@
|
|
#include <fstream>
|
|
#include <fstream>
|
|
#include <vector>
|
|
#include <vector>
|
|
#include <memory>
|
|
#include <memory>
|
|
|
|
+#include <filesystem>
|
|
#include "../libuvc/libuvc.h"
|
|
#include "../libuvc/libuvc.h"
|
|
#include "UVCDeviceManager.h"
|
|
#include "UVCDeviceManager.h"
|
|
#include "../DataManager/DataManager.h"
|
|
#include "../DataManager/DataManager.h"
|
|
@@ -29,23 +30,12 @@ void cbSaveToLocal(uvc_frame_t *frame, void *ptr)
|
|
static const char *H264_FILE = "iOSDevLog.h264";
|
|
static const char *H264_FILE = "iOSDevLog.h264";
|
|
static const char *MJPEG_FILE = ".jpeg";
|
|
static const char *MJPEG_FILE = ".jpeg";
|
|
char filename[264];
|
|
char filename[264];
|
|
|
|
+ std::string FileSavePath = "";
|
|
std::fstream log_file("CallBackLog.txt", std::ios::app);
|
|
std::fstream log_file("CallBackLog.txt", std::ios::app);
|
|
DataPackagePtr dataPackage = nullptr;
|
|
DataPackagePtr dataPackage = nullptr;
|
|
// static MemoryPool<DataPackage> dataPool(BUFFER_SIZE, 3840, 2160);
|
|
// static MemoryPool<DataPackage> dataPool(BUFFER_SIZE, 3840, 2160);
|
|
std::shared_ptr<DataPipe<DataPackage>> pipe;
|
|
std::shared_ptr<DataPipe<DataPackage>> pipe;
|
|
|
|
|
|
- // std::fstream readImage("./auv.jpg", std::ios::binary | std::ios::in);
|
|
|
|
- // if (!readImage)
|
|
|
|
- // {
|
|
|
|
- // std::cerr << "不能打开文件 example.bin" << std::endl;
|
|
|
|
- // }
|
|
|
|
- // readImage.seekg(0, std::ios::end);
|
|
|
|
- // std::streamsize fileSize = readImage.tellg();
|
|
|
|
- // readImage.seekg(0, std::ios::beg);
|
|
|
|
- // unsigned char *buffer = new unsigned char[fileSize];
|
|
|
|
- // readImage.read((char *)buffer, fileSize);
|
|
|
|
- // readImage.close();
|
|
|
|
-
|
|
|
|
switch (frame->frame_format)
|
|
switch (frame->frame_format)
|
|
{
|
|
{
|
|
case UVC_FRAME_FORMAT_H264:
|
|
case UVC_FRAME_FORMAT_H264:
|
|
@@ -56,22 +46,41 @@ void cbSaveToLocal(uvc_frame_t *frame, void *ptr)
|
|
break;
|
|
break;
|
|
case UVC_COLOR_FORMAT_MJPEG:
|
|
case UVC_COLOR_FORMAT_MJPEG:
|
|
|
|
|
|
- // if (!g_gpioExplorer->getFailingStatus(index))
|
|
|
|
|
|
+ if (!g_gpioExplorer->getFailingStatus(index))
|
|
|
|
+ {
|
|
|
|
+ // std::cout << "Pass this wave" << std::endl;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ g_gpioExplorer->resetFailingStatus(index);
|
|
|
|
+
|
|
|
|
+ // if(!UsbTest::SimulateTrigger::getInstance().isTriggering(index))
|
|
// {
|
|
// {
|
|
- // // std::cout << "Pass this wave" << std::endl;
|
|
|
|
// break;
|
|
// break;
|
|
// }
|
|
// }
|
|
- // g_gpioExplorer->resetFailingStatus(index);
|
|
|
|
|
|
|
|
- if(!UsbTest::SimulateTrigger::getInstance().isTriggering(index))
|
|
|
|
- {
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
|
|
|
|
if (jpeg_count[index] / 23 >= 1)
|
|
if (jpeg_count[index] / 23 >= 1)
|
|
jpeg_group[index]++;
|
|
jpeg_group[index]++;
|
|
jpeg_count[index] = jpeg_count[index] % 23;
|
|
jpeg_count[index] = jpeg_count[index] % 23;
|
|
std::cout << "Current File Device " << index << " UVC Index : " << jpeg_count[index] << std::endl;
|
|
std::cout << "Current File Device " << index << " UVC Index : " << jpeg_count[index] << std::endl;
|
|
|
|
+
|
|
|
|
+ // 在 data/ 文件夹下创建文件夹,文件夹名称为设备索引
|
|
|
|
+ // if (!std::filesystem::exists("./data/" + std::to_string(index)))
|
|
|
|
+ // {
|
|
|
|
+ // std::filesystem::create_directory("./data/" + std::to_string(index));
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // FileSavePath = "./data/" + std::to_string(index) + "/" + std::to_string(jpeg_group[index]) + "-" + std::to_string(jpeg_count[index]++) + MJPEG_FILE;
|
|
|
|
+
|
|
|
|
+ // fp = fopen(FileSavePath.c_str(), "wb");
|
|
|
|
+ // if (fp == NULL)
|
|
|
|
+ // {
|
|
|
|
+ // std::cerr << "Failed to open file: " << FileSavePath << std::endl;
|
|
|
|
+ // return;
|
|
|
|
+ // }
|
|
|
|
+ // fwrite(frame->data, 1, frame->data_bytes, fp);
|
|
|
|
+ // fclose(fp);
|
|
|
|
+
|
|
// sprintf(filename, "./data/%d/%d-%d%s", index, jpeg_group[index], jpeg_count[index]++, MJPEG_FILE);
|
|
// sprintf(filename, "./data/%d/%d-%d%s", index, jpeg_group[index], jpeg_count[index]++, MJPEG_FILE);
|
|
|
|
|
|
dataPackage = DataManager::getInstance().acquireDataBuffer<DataPackage>();
|
|
dataPackage = DataManager::getInstance().acquireDataBuffer<DataPackage>();
|
|
@@ -82,18 +91,11 @@ void cbSaveToLocal(uvc_frame_t *frame, void *ptr)
|
|
dataPackage->nWidth = frame->width;
|
|
dataPackage->nWidth = frame->width;
|
|
dataPackage->nHeight = frame->height;
|
|
dataPackage->nHeight = frame->height;
|
|
dataPackage->nTimeStamp = frame->capture_time_finished.tv_sec * 1000 + frame->capture_time_finished.tv_nsec / 1000000;
|
|
dataPackage->nTimeStamp = frame->capture_time_finished.tv_sec * 1000 + frame->capture_time_finished.tv_nsec / 1000000;
|
|
- dataPackage->nCameraID = index;
|
|
|
|
|
|
+ dataPackage->nCameraID = UVCManager::getInstance().getDeviceNumber(index);
|
|
dataPackage->dDegree = jpeg_count[index]++;
|
|
dataPackage->dDegree = jpeg_count[index]++;
|
|
|
|
|
|
- //std::string logMessage = "UVC Frame Received: Device " + std::to_string(index) + " UVC Received: Degree: " + std::to_string(jpeg_count[index] - 1) + UsbTest::GlobalResolutionTimer::getInstance().pressStopWatchString();
|
|
|
|
- //UsbTest::TimeRecorder::getInstance().recordTime(logMessage);
|
|
|
|
-
|
|
|
|
DataManager::getInstance().pushData<DataPackage>("uvc" + std::to_string(index), dataPackage);
|
|
DataManager::getInstance().pushData<DataPackage>("uvc" + std::to_string(index), dataPackage);
|
|
|
|
|
|
- // fp = fopen("./Ouput4k.jpg", "w");
|
|
|
|
- // fwrite(frame->data, 1, frame->data_bytes, fp);
|
|
|
|
- // fclose(fp);
|
|
|
|
-
|
|
|
|
break;
|
|
break;
|
|
case UVC_COLOR_FORMAT_YUYV:
|
|
case UVC_COLOR_FORMAT_YUYV:
|
|
break;
|
|
break;
|