Mock h264 stream.

This commit is contained in:
Fancy code 2024-06-19 10:18:53 +08:00
parent 79a55c01f6
commit ace3384905
6 changed files with 18 additions and 14 deletions

View File

@ -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

View File

@ -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 &param)
{
LogInfo("StartSingleTask.\n");
mTaskRuning = true;
return CreateStatusCode(STATUS_CODE_OK);
}

View File

@ -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");

View File

@ -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;
}
}

View File

@ -345,7 +345,7 @@ void HalTestTool::InitCamerasMock(std::shared_ptr<VCameraHal> &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<LinuxTest> &mock)
{

View File

@ -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");
}