diff --git a/hal/src/CameraHal.cpp b/hal/src/CameraHal.cpp index 3dd0728..e3d2cce 100644 --- a/hal/src/CameraHal.cpp +++ b/hal/src/CameraHal.cpp @@ -32,6 +32,7 @@ void CameraHal::UnInit(void) void CameraHal::SetCameraMonitor(std::shared_ptr &monitor) { std::lock_guard locker(mMutex); + LogInfo("ssssssssssssssssssssssssssssssssssssSetCameraMonitor.\n"); mCameraMonitor = monitor; if (nullptr != mFastBootEvent) { monitor->ReportEvent(*(mFastBootEvent.get())); @@ -142,6 +143,7 @@ std::string CameraHal::SaveJpeg(const void *data, unsigned int dataLength) fwrite(data, 1, dataLength, fp); fflush(fp); fclose(fp); + LogInfo("save fastboot jpeg success.\n"); return SaveJpegPath; } else { diff --git a/test/hal/tool/src/CameraHalMock.cpp b/test/hal/tool/src/CameraHalMock.cpp index 4f7c1fc..a6d826a 100644 --- a/test/hal/tool/src/CameraHalMock.cpp +++ b/test/hal/tool/src/CameraHalMock.cpp @@ -29,7 +29,7 @@ CameraHalTest::CameraHalTest(const CameraType &cameraType) void CameraHalTest::Init(void) { CameraHal::Init(); - // ReadFileInit(); + MockAVMediaStreamTheWholeTime(); } void CameraHalTest::UnInit(void) { @@ -50,6 +50,7 @@ void CameraHalTest::SetCameraMonitor(std::shared_ptr &monitor LogInfo("CameraHalTest::SetCameraMonitor.\n"); mMonitor = monitor; SetCameraMonitorTrace(monitor); + CameraHal::SetCameraMonitor(monitor); if (nullptr != mFastBootEvent) { monitor->ReportEvent(*(mFastBootEvent.get())); } @@ -61,16 +62,17 @@ void CameraHalTest::SetCameraMonitorTrace(std::shared_ptr &mo StatusCode CameraHalTest::StartSingleTask(const CameraTaskParam ¶m) { LogInfo("CameraHalTest::StartSingleTask\n"); - if (mTaskTimerThread.joinable()) { - mTaskTimerThread.join(); - } - ReadFileInit(); - auto taskTimerThread = [=](std::shared_ptr cameraHal) { - LogInfo("MockReportMediaStream start.\n"); - cameraHal->MockReportMediaStream(); - }; - std::shared_ptr cameraHal = std::dynamic_pointer_cast(CameraHal::shared_from_this()); - mTaskTimerThread = std::thread(taskTimerThread, cameraHal); + // if (mTaskTimerThread.joinable()) { + // mTaskTimerThread.join(); + // } + // ReadFileInit(); + // auto taskTimerThread = [=](std::shared_ptr cameraHal) { + // LogInfo("MockReportMediaStream start.\n"); + // cameraHal->MockReportMediaStream(); + // }; + // std::shared_ptr cameraHal = + // std::dynamic_pointer_cast(CameraHal::shared_from_this()); mTaskTimerThread = + // std::thread(taskTimerThread, cameraHal); StatusCode code = StartSingleTaskTrace(param); if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { return CameraHal::StartSingleTask(param); @@ -94,37 +96,60 @@ StatusCode CameraHalTest::StartSingleTaskTrace(const CameraTaskParam ¶m) LogInfo("CameraHalTest::StartSingleTaskTrace\n"); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } +void CameraHalTest::MockAVMediaStreamTheWholeTime(void) +{ + if (mTaskTimerThread.joinable()) { + mTaskTimerThread.join(); + } + auto taskTimerThread = [=](std::shared_ptr cameraHal) { + LogInfo("MockReportMediaStream start.\n"); + cameraHal->MockReportMediaStream(); + }; + std::shared_ptr cameraHal = std::dynamic_pointer_cast(CameraHal::shared_from_this()); + mTaskTimerThread = std::thread(taskTimerThread, cameraHal); +} void CameraHalTest::MockReportMediaStream(void) { mTaskRuning = true; - if (nullptr != mReadH264File) { - IStartReadFile(mReadH264File, TEST_SOURCE_PATH "/support_test/chip.h264"); - } - if (nullptr != mReadG711aFile) { - IStartReadFile(mReadG711aFile, TEST_SOURCE_PATH "/support_test/chip.g711a"); - } - ReadJpegFileForMockData(); - constexpr int TIME_OUT_MS = 100; + /** + * @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) { - if (mJpegData) { - GetJpegData(mJpegData, mJpegSize, 1000); + LogInfo("Read record av file start.\n"); + ReadFileInit(); + if (nullptr != mReadH264File) { + IStartReadFile(mReadH264File, TEST_SOURCE_PATH "/support_test/chip.h264"); + } + if (nullptr != mReadG711aFile) { + IStartReadFile(mReadG711aFile, TEST_SOURCE_PATH "/support_test/chip.g711a"); + } + ReadJpegFileForMockData(); + constexpr int TIME_OUT_MS = 100; + while (mTaskRuning) { + if (mJpegData) { + GetJpegData(mJpegData, mJpegSize, 1000); + } + std::unique_lock lock(mMutex); + mCv.wait_for(lock, std::chrono::milliseconds(TIME_OUT_MS), [&] { + return !mTaskRuning; + }); + /** + * @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. + */ + LoopTimeAmount += TIME_OUT_MS; + if (CYCLE_ONCE_TIME_MS <= LoopTimeAmount) { + LogInfo("Read record av file end.\n"); + break; + } + } + ReadFileUnInit(); + if (mJpegData) { + free(mJpegData); + mJpegData = nullptr; } - std::unique_lock lock(mMutex); - // mCv.wait(lock, [&] { - // return !mTaskRuning; - // }); - mCv.wait_for(lock, std::chrono::milliseconds(TIME_OUT_MS), [&] { - return !mTaskRuning; - }); - /** - * @brief If the recording time is over, you need to stop the recording timer here. - */ - // mTaskRuning = false; - } - ReadFileUnInit(); - if (mJpegData) { - free(mJpegData); - mJpegData = nullptr; } } void CameraHalTest::ReadDataFromH264File(const void *stream, const unsigned int length, diff --git a/test/hal/tool/src/CameraHalMock.h b/test/hal/tool/src/CameraHalMock.h index 566d41f..1d3febb 100644 --- a/test/hal/tool/src/CameraHalMock.h +++ b/test/hal/tool/src/CameraHalMock.h @@ -36,6 +36,7 @@ protected: virtual StatusCode StartSingleTaskTrace(const CameraTaskParam ¶m); private: + void MockAVMediaStreamTheWholeTime(void); void MockReportMediaStream(void); 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);