Mock h264 stream.
This commit is contained in:
parent
79a55c01f6
commit
ace3384905
|
@ -43,12 +43,6 @@ add_custom_target(
|
||||||
-p ${PLATFORM_PATH}/cmake-shell
|
-p ${PLATFORM_PATH}/cmake-shell
|
||||||
WORKING_DIRECTORY ${APPLICATION_SOURCE_PATH}/HuntingCamera
|
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)
|
file(GLOB_RECURSE HEADER_FILES *.h)
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
HuntingCamera_code_format
|
HuntingCamera_code_format
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*/
|
*/
|
||||||
#include "CameraHal.h"
|
#include "CameraHal.h"
|
||||||
#include "IHalCpp.h"
|
#include "IHalCpp.h"
|
||||||
|
#include "ILog.h"
|
||||||
#include "StatusCode.h"
|
#include "StatusCode.h"
|
||||||
CameraHal::CameraHal() : mTaskRuning(false), mAudioStreamCallback(nullptr), mVideoStreamCallback(nullptr)
|
CameraHal::CameraHal() : mTaskRuning(false), mAudioStreamCallback(nullptr), mVideoStreamCallback(nullptr)
|
||||||
{
|
{
|
||||||
|
@ -26,6 +27,7 @@ void CameraHal::UnInit(void)
|
||||||
}
|
}
|
||||||
StatusCode CameraHal::StartSingleTask(const CameraTaskParam ¶m)
|
StatusCode CameraHal::StartSingleTask(const CameraTaskParam ¶m)
|
||||||
{
|
{
|
||||||
|
LogInfo("StartSingleTask.\n");
|
||||||
mTaskRuning = true;
|
mTaskRuning = true;
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
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)
|
void SaveStream::GetVideoStream(const void *stream, const unsigned int &length, const unsigned long long &timeStamp)
|
||||||
{
|
{
|
||||||
if (mFileVideo) {
|
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);
|
size_t writeLength = fwrite(stream, 1, length, mFileVideo);
|
||||||
if (writeLength != length) {
|
if (writeLength != length) {
|
||||||
LogError("Write video stream failed.\n");
|
LogError("Write video stream failed.\n");
|
||||||
|
|
|
@ -27,6 +27,7 @@ void CameraHalTest::Init(void)
|
||||||
CameraHal::Init();
|
CameraHal::Init();
|
||||||
if (nullptr == mReadH264File) {
|
if (nullptr == mReadH264File) {
|
||||||
ReadVideoFileCallback callback = [](const void *stream, const unsigned int length, void *context) -> void {
|
ReadVideoFileCallback callback = [](const void *stream, const unsigned int length, void *context) -> void {
|
||||||
|
// LogInfo("CameraHalTest::ReadVideoFileCallback.\n");
|
||||||
((CameraHalTest *)context)->ReadDataFromH264File(stream, length);
|
((CameraHalTest *)context)->ReadDataFromH264File(stream, length);
|
||||||
};
|
};
|
||||||
mReadH264File = ICreateMediaBase(MEDIA_HANDLE_TYPE_READ_H264);
|
mReadH264File = ICreateMediaBase(MEDIA_HANDLE_TYPE_READ_H264);
|
||||||
|
@ -41,13 +42,10 @@ void CameraHalTest::UnInit(void)
|
||||||
if (mTaskTimerThread.joinable()) {
|
if (mTaskTimerThread.joinable()) {
|
||||||
mTaskTimerThread.join();
|
mTaskTimerThread.join();
|
||||||
}
|
}
|
||||||
LogInfo(
|
|
||||||
"====================================================================9999999999999999999999 000000000000000\n");
|
|
||||||
if (mReadH264File) {
|
if (mReadH264File) {
|
||||||
ISetReadVideoCallback(mReadH264File, nullptr, nullptr);
|
ISetReadVideoCallback(mReadH264File, nullptr, nullptr);
|
||||||
IStopReadFile(mReadH264File);
|
IStopReadFile(mReadH264File);
|
||||||
IMediaBaseFree(mReadH264File);
|
IMediaBaseFree(mReadH264File);
|
||||||
LogInfo("====================================================================9999999999999999999999\n");
|
|
||||||
mReadH264File = nullptr;
|
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(), SetCameraMonitorTrace(_)).Times(USER_SHOULD_SET_CAMERA_MONITER);
|
||||||
EXPECT_CALL(*mock.get(), StartSingleTaskTrace(_))
|
EXPECT_CALL(*mock.get(), StartSingleTaskTrace(_))
|
||||||
.Times(AnyNumber())
|
.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)
|
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)
|
void MediaBaseImpl::ReadFileThread(AVFormatContext *pFormatCtx, int video_stream_index)
|
||||||
{
|
{
|
||||||
mTaskRuning = true;
|
mTaskRuning = true;
|
||||||
|
if (nullptr == mReadVideoCallback) {
|
||||||
|
LogWarning("ReadVideoCallback is null.\n");
|
||||||
|
}
|
||||||
AVPacket packet;
|
AVPacket packet;
|
||||||
|
unsigned int playTimeMs = 0;
|
||||||
// av_new_packet(&packet, AV_INPUT_BUFFER_MIN_SIZE);
|
// av_new_packet(&packet, AV_INPUT_BUFFER_MIN_SIZE);
|
||||||
while (av_read_frame(pFormatCtx, &packet) >= 0) {
|
while (av_read_frame(pFormatCtx, &packet) >= 0) {
|
||||||
if (nullptr == mReadVideoCallback) {
|
if (nullptr == mReadVideoCallback) {
|
||||||
|
av_packet_unref(&packet);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (false == mTaskRuning) {
|
if (false == mTaskRuning) {
|
||||||
|
LogInfo("Stop read file thread.\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// 检查数据包是否属于视频流
|
// Checks whether the packet belongs to a video stream.
|
||||||
if (packet.stream_index == video_stream_index) {
|
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);
|
// LogInfo("Frame data address: %p, length: %zu\n", packet.data, packet.size);
|
||||||
mReadVideoCallback(packet.data, packet.size, mReadVideoCallbackContext);
|
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);
|
||||||
}
|
}
|
||||||
|
av_packet_unref(&packet);
|
||||||
|
|
||||||
avformat_close_input(&pFormatCtx);
|
avformat_close_input(&pFormatCtx);
|
||||||
LogInfo("==============================================================================\n");
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user