From ace338490597d38d1f370b34f0bb1808033aebf6 Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Wed, 19 Jun 2024 10:18:53 +0800 Subject: [PATCH] Mock h264 stream. --- application/HuntingCamera/CMakeLists.txt | 6 ------ hal/src/CameraHal.cpp | 2 ++ middleware/MediaManager/src/SaveStream.cpp | 2 +- test/hal/tool/src/CameraHalMock.cpp | 4 +--- test/hal/tool/src/HalTestTool.cpp | 2 +- utils/MediaBase/src/MediaBaseImpl.cpp | 16 +++++++++++++--- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/application/HuntingCamera/CMakeLists.txt b/application/HuntingCamera/CMakeLists.txt index 0727975..a402e6b 100644 --- a/application/HuntingCamera/CMakeLists.txt +++ b/application/HuntingCamera/CMakeLists.txt @@ -43,12 +43,6 @@ add_custom_target( -p ${PLATFORM_PATH}/cmake-shell WORKING_DIRECTORY ${APPLICATION_SOURCE_PATH}/HuntingCamera ) -add_custom_command( - TARGET ${TARGET_NAME} - PRE_BUILD - COMMAND make HuntingCamera_code_check - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) file(GLOB_RECURSE HEADER_FILES *.h) add_custom_target( HuntingCamera_code_format diff --git a/hal/src/CameraHal.cpp b/hal/src/CameraHal.cpp index 5a5bc0f..c5ae1c7 100644 --- a/hal/src/CameraHal.cpp +++ b/hal/src/CameraHal.cpp @@ -14,6 +14,7 @@ */ #include "CameraHal.h" #include "IHalCpp.h" +#include "ILog.h" #include "StatusCode.h" CameraHal::CameraHal() : mTaskRuning(false), mAudioStreamCallback(nullptr), mVideoStreamCallback(nullptr) { @@ -26,6 +27,7 @@ void CameraHal::UnInit(void) } StatusCode CameraHal::StartSingleTask(const CameraTaskParam ¶m) { + LogInfo("StartSingleTask.\n"); mTaskRuning = true; return CreateStatusCode(STATUS_CODE_OK); } diff --git a/middleware/MediaManager/src/SaveStream.cpp b/middleware/MediaManager/src/SaveStream.cpp index 2de25cc..fffeb4c 100644 --- a/middleware/MediaManager/src/SaveStream.cpp +++ b/middleware/MediaManager/src/SaveStream.cpp @@ -39,7 +39,7 @@ void SaveStream::UnInit(void) void SaveStream::GetVideoStream(const void *stream, const unsigned int &length, const unsigned long long &timeStamp) { if (mFileVideo) { - LogInfo("ddddddddddddddddddddddddddddddddddddddGet video stream, length: %d\n", length); + // LogInfo("Get video stream, length: %d\n", length); size_t writeLength = fwrite(stream, 1, length, mFileVideo); if (writeLength != length) { LogError("Write video stream failed.\n"); diff --git a/test/hal/tool/src/CameraHalMock.cpp b/test/hal/tool/src/CameraHalMock.cpp index 7bce911..b8e124a 100644 --- a/test/hal/tool/src/CameraHalMock.cpp +++ b/test/hal/tool/src/CameraHalMock.cpp @@ -27,6 +27,7 @@ void CameraHalTest::Init(void) CameraHal::Init(); if (nullptr == mReadH264File) { ReadVideoFileCallback callback = [](const void *stream, const unsigned int length, void *context) -> void { + // LogInfo("CameraHalTest::ReadVideoFileCallback.\n"); ((CameraHalTest *)context)->ReadDataFromH264File(stream, length); }; mReadH264File = ICreateMediaBase(MEDIA_HANDLE_TYPE_READ_H264); @@ -41,13 +42,10 @@ void CameraHalTest::UnInit(void) if (mTaskTimerThread.joinable()) { mTaskTimerThread.join(); } - LogInfo( - "====================================================================9999999999999999999999 000000000000000\n"); if (mReadH264File) { ISetReadVideoCallback(mReadH264File, nullptr, nullptr); IStopReadFile(mReadH264File); IMediaBaseFree(mReadH264File); - LogInfo("====================================================================9999999999999999999999\n"); mReadH264File = nullptr; } } diff --git a/test/hal/tool/src/HalTestTool.cpp b/test/hal/tool/src/HalTestTool.cpp index 4b3b2cc..d8db9cd 100644 --- a/test/hal/tool/src/HalTestTool.cpp +++ b/test/hal/tool/src/HalTestTool.cpp @@ -345,7 +345,7 @@ void HalTestTool::InitCamerasMock(std::shared_ptr &vMock) EXPECT_CALL(*mock.get(), SetCameraMonitorTrace(_)).Times(USER_SHOULD_SET_CAMERA_MONITER); EXPECT_CALL(*mock.get(), StartSingleTaskTrace(_)) .Times(AnyNumber()) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_OK)))); + .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } void HalTestTool::MockSdCardRemove(std::shared_ptr &mock) { diff --git a/utils/MediaBase/src/MediaBaseImpl.cpp b/utils/MediaBase/src/MediaBaseImpl.cpp index f19a231..2468a28 100644 --- a/utils/MediaBase/src/MediaBaseImpl.cpp +++ b/utils/MediaBase/src/MediaBaseImpl.cpp @@ -92,24 +92,34 @@ void MediaBaseImpl::UnInitFfmpeg(void) void MediaBaseImpl::ReadFileThread(AVFormatContext *pFormatCtx, int video_stream_index) { mTaskRuning = true; + if (nullptr == mReadVideoCallback) { + LogWarning("ReadVideoCallback is null.\n"); + } AVPacket packet; + unsigned int playTimeMs = 0; // av_new_packet(&packet, AV_INPUT_BUFFER_MIN_SIZE); while (av_read_frame(pFormatCtx, &packet) >= 0) { if (nullptr == mReadVideoCallback) { + av_packet_unref(&packet); continue; } if (false == mTaskRuning) { + LogInfo("Stop read file thread.\n"); break; } - // 检查数据包是否属于视频流 + // Checks whether the packet belongs to a video stream. if (packet.stream_index == video_stream_index) { + playTimeMs = (packet.duration * pFormatCtx->streams[video_stream_index]->time_base.num * 1000) / + pFormatCtx->streams[video_stream_index]->time_base.den; + LogInfo("Play time ms:%d\n", playTimeMs); // LogInfo("Frame data address: %p, length: %zu\n", packet.data, packet.size); mReadVideoCallback(packet.data, packet.size, mReadVideoCallbackContext); + std::this_thread::sleep_for(std::chrono::milliseconds(playTimeMs)); } - // 释放数据包 + // Release the data packet. av_packet_unref(&packet); } + av_packet_unref(&packet); avformat_close_input(&pFormatCtx); - LogInfo("==============================================================================\n"); } \ No newline at end of file