Improve:camera hal mock stream the whole time.
This commit is contained in:
parent
573ce84da7
commit
bae3a21d7b
|
@ -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 {
|
||||||
|
|
|
@ -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 ¶m)
|
StatusCode CameraHalTest::StartSingleTask(const CameraTaskParam ¶m)
|
||||||
{
|
{
|
||||||
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 ¶m)
|
||||||
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)
|
||||||
|
|
|
@ -36,6 +36,7 @@ protected:
|
||||||
virtual StatusCode StartSingleTaskTrace(const CameraTaskParam ¶m);
|
virtual StatusCode StartSingleTaskTrace(const CameraTaskParam ¶m);
|
||||||
|
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user