Mock h264 stream.
This commit is contained in:
parent
79a55c01f6
commit
ace3384905
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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");
|
||||
}
|
Loading…
Reference in New Issue
Block a user