Improve:camera hal mock stream the whole time.

This commit is contained in:
Fancy code 2024-07-25 11:09:14 +08:00
parent 573ce84da7
commit bae3a21d7b
3 changed files with 65 additions and 37 deletions

View File

@ -32,6 +32,7 @@ void CameraHal::UnInit(void)
void CameraHal::SetCameraMonitor(std::shared_ptr<VCameraHalMonitor> &monitor) void CameraHal::SetCameraMonitor(std::shared_ptr<VCameraHalMonitor> &monitor)
{ {
std::lock_guard<std::mutex> locker(mMutex); std::lock_guard<std::mutex> locker(mMutex);
LogInfo("ssssssssssssssssssssssssssssssssssssSetCameraMonitor.\n");
mCameraMonitor = monitor; mCameraMonitor = monitor;
if (nullptr != mFastBootEvent) { if (nullptr != mFastBootEvent) {
monitor->ReportEvent(*(mFastBootEvent.get())); monitor->ReportEvent(*(mFastBootEvent.get()));
@ -142,6 +143,7 @@ std::string CameraHal::SaveJpeg(const void *data, unsigned int dataLength)
fwrite(data, 1, dataLength, fp); fwrite(data, 1, dataLength, fp);
fflush(fp); fflush(fp);
fclose(fp); fclose(fp);
LogInfo("save fastboot jpeg success.\n");
return SaveJpegPath; return SaveJpegPath;
} }
else { else {

View File

@ -29,7 +29,7 @@ CameraHalTest::CameraHalTest(const CameraType &cameraType)
void CameraHalTest::Init(void) void CameraHalTest::Init(void)
{ {
CameraHal::Init(); CameraHal::Init();
// ReadFileInit(); MockAVMediaStreamTheWholeTime();
} }
void CameraHalTest::UnInit(void) void CameraHalTest::UnInit(void)
{ {
@ -50,6 +50,7 @@ void CameraHalTest::SetCameraMonitor(std::shared_ptr<VCameraHalMonitor> &monitor
LogInfo("CameraHalTest::SetCameraMonitor.\n"); LogInfo("CameraHalTest::SetCameraMonitor.\n");
mMonitor = monitor; mMonitor = monitor;
SetCameraMonitorTrace(monitor); SetCameraMonitorTrace(monitor);
CameraHal::SetCameraMonitor(monitor);
if (nullptr != mFastBootEvent) { if (nullptr != mFastBootEvent) {
monitor->ReportEvent(*(mFastBootEvent.get())); monitor->ReportEvent(*(mFastBootEvent.get()));
} }
@ -61,16 +62,17 @@ void CameraHalTest::SetCameraMonitorTrace(std::shared_ptr<VCameraHalMonitor> &mo
StatusCode CameraHalTest::StartSingleTask(const CameraTaskParam &param) StatusCode CameraHalTest::StartSingleTask(const CameraTaskParam &param)
{ {
LogInfo("CameraHalTest::StartSingleTask\n"); LogInfo("CameraHalTest::StartSingleTask\n");
if (mTaskTimerThread.joinable()) { // if (mTaskTimerThread.joinable()) {
mTaskTimerThread.join(); // mTaskTimerThread.join();
} // }
ReadFileInit(); // ReadFileInit();
auto taskTimerThread = [=](std::shared_ptr<CameraHalTest> cameraHal) { // auto taskTimerThread = [=](std::shared_ptr<CameraHalTest> cameraHal) {
LogInfo("MockReportMediaStream start.\n"); // LogInfo("MockReportMediaStream start.\n");
cameraHal->MockReportMediaStream(); // cameraHal->MockReportMediaStream();
}; // };
std::shared_ptr<CameraHalTest> cameraHal = std::dynamic_pointer_cast<CameraHalTest>(CameraHal::shared_from_this()); // std::shared_ptr<CameraHalTest> cameraHal =
mTaskTimerThread = std::thread(taskTimerThread, cameraHal); // std::dynamic_pointer_cast<CameraHalTest>(CameraHal::shared_from_this()); mTaskTimerThread =
// std::thread(taskTimerThread, cameraHal);
StatusCode code = StartSingleTaskTrace(param); StatusCode code = StartSingleTaskTrace(param);
if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
return CameraHal::StartSingleTask(param); return CameraHal::StartSingleTask(param);
@ -94,9 +96,29 @@ StatusCode CameraHalTest::StartSingleTaskTrace(const CameraTaskParam &param)
LogInfo("CameraHalTest::StartSingleTaskTrace\n"); LogInfo("CameraHalTest::StartSingleTaskTrace\n");
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
} }
void CameraHalTest::MockAVMediaStreamTheWholeTime(void)
{
if (mTaskTimerThread.joinable()) {
mTaskTimerThread.join();
}
auto taskTimerThread = [=](std::shared_ptr<CameraHalTest> cameraHal) {
LogInfo("MockReportMediaStream start.\n");
cameraHal->MockReportMediaStream();
};
std::shared_ptr<CameraHalTest> cameraHal = std::dynamic_pointer_cast<CameraHalTest>(CameraHal::shared_from_this());
mTaskTimerThread = std::thread(taskTimerThread, cameraHal);
}
void CameraHalTest::MockReportMediaStream(void) void CameraHalTest::MockReportMediaStream(void)
{ {
mTaskRuning = true; mTaskRuning = true;
/**
* @brief This time should be smaller than the total length of the recording file.
*/
constexpr int CYCLE_ONCE_TIME_MS = 1000 * 60;
int LoopTimeAmount = 0;
while (mTaskRuning) {
LogInfo("Read record av file start.\n");
ReadFileInit();
if (nullptr != mReadH264File) { if (nullptr != mReadH264File) {
IStartReadFile(mReadH264File, TEST_SOURCE_PATH "/support_test/chip.h264"); IStartReadFile(mReadH264File, TEST_SOURCE_PATH "/support_test/chip.h264");
} }
@ -110,22 +132,25 @@ void CameraHalTest::MockReportMediaStream(void)
GetJpegData(mJpegData, mJpegSize, 1000); GetJpegData(mJpegData, mJpegSize, 1000);
} }
std::unique_lock<std::mutex> lock(mMutex); std::unique_lock<std::mutex> lock(mMutex);
// mCv.wait(lock, [&] {
// return !mTaskRuning;
// });
mCv.wait_for(lock, std::chrono::milliseconds(TIME_OUT_MS), [&] { mCv.wait_for(lock, std::chrono::milliseconds(TIME_OUT_MS), [&] {
return !mTaskRuning; return !mTaskRuning;
}); });
/** /**
* @brief If the recording time is over, you need to stop the recording timer here. * @brief Because the length of the recorded audio and video files is limited, it is necessary to read the
* files in a loop to keep the audio and video data output continuously.
*/ */
// mTaskRuning = false; LoopTimeAmount += TIME_OUT_MS;
if (CYCLE_ONCE_TIME_MS <= LoopTimeAmount) {
LogInfo("Read record av file end.\n");
break;
}
} }
ReadFileUnInit(); ReadFileUnInit();
if (mJpegData) { if (mJpegData) {
free(mJpegData); free(mJpegData);
mJpegData = nullptr; mJpegData = nullptr;
} }
}
} }
void CameraHalTest::ReadDataFromH264File(const void *stream, const unsigned int length, void CameraHalTest::ReadDataFromH264File(const void *stream, const unsigned int length,
const unsigned long long duration_us) const unsigned long long duration_us)

View File

@ -36,6 +36,7 @@ protected:
virtual StatusCode StartSingleTaskTrace(const CameraTaskParam &param); virtual StatusCode StartSingleTaskTrace(const CameraTaskParam &param);
private: private:
void MockAVMediaStreamTheWholeTime(void);
void MockReportMediaStream(void); void MockReportMediaStream(void);
void ReadDataFromH264File(const void *stream, const unsigned int length, const unsigned long long duration_us); void ReadDataFromH264File(const void *stream, const unsigned int length, const unsigned long long duration_us);
void ReadDataFromG711aFile(const void *stream, const unsigned int length, const unsigned long long duration_us); void ReadDataFromG711aFile(const void *stream, const unsigned int length, const unsigned long long duration_us);