Backup:ffmpeg test.
This commit is contained in:
parent
9c851492d3
commit
79a55c01f6
|
@ -89,10 +89,11 @@ StatusCode HalMakePtr::CreateWifiHal(std::shared_ptr<VWifiHal> &impl)
|
||||||
impl = std::make_shared<WifiHal>();
|
impl = std::make_shared<WifiHal>();
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
}
|
}
|
||||||
StatusCode HalMakePtr::CreateCameraHal(std::shared_ptr<VCameraHal> &impl)
|
std::shared_ptr<VCameraHal> HalMakePtr::CreateCameraHal(const CameraType &type)
|
||||||
{
|
{
|
||||||
LogWarning("CreateCameraHal.\n");
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
|
||||||
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
auto camera = std::make_shared<VCameraHal>();
|
||||||
|
return camera;
|
||||||
}
|
}
|
||||||
StatusCode HalMakePtr::CreateSdCardHal(std::shared_ptr<VSdCardHal> &impl)
|
StatusCode HalMakePtr::CreateSdCardHal(std::shared_ptr<VSdCardHal> &impl)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,18 +26,10 @@ public:
|
||||||
HalMakePtr() = default;
|
HalMakePtr() = default;
|
||||||
virtual ~HalMakePtr() = default;
|
virtual ~HalMakePtr() = default;
|
||||||
static std::shared_ptr<HalMakePtr> &GetInstance(std::shared_ptr<HalMakePtr> *impl = nullptr);
|
static std::shared_ptr<HalMakePtr> &GetInstance(std::shared_ptr<HalMakePtr> *impl = nullptr);
|
||||||
virtual StatusCode Init()
|
|
||||||
{
|
|
||||||
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
|
||||||
}
|
|
||||||
virtual StatusCode UnInit()
|
|
||||||
{
|
|
||||||
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
|
||||||
}
|
|
||||||
virtual StatusCode CreateHalPtr(IHal **hal);
|
virtual StatusCode CreateHalPtr(IHal **hal);
|
||||||
virtual StatusCode CreateHalSharePtr(std::shared_ptr<IHalCpp> &impl);
|
virtual StatusCode CreateHalSharePtr(std::shared_ptr<IHalCpp> &impl);
|
||||||
virtual StatusCode CreateWifiHal(std::shared_ptr<VWifiHal> &impl);
|
virtual StatusCode CreateWifiHal(std::shared_ptr<VWifiHal> &impl);
|
||||||
virtual StatusCode CreateCameraHal(std::shared_ptr<VCameraHal> &impl);
|
virtual std::shared_ptr<VCameraHal> CreateCameraHal(const CameraType &type);
|
||||||
virtual StatusCode CreateSdCardHal(std::shared_ptr<VSdCardHal> &impl);
|
virtual StatusCode CreateSdCardHal(std::shared_ptr<VSdCardHal> &impl);
|
||||||
virtual StatusCode CreateAllKeysHal(std::vector<std::shared_ptr<VKeyControl>> &keys);
|
virtual StatusCode CreateAllKeysHal(std::vector<std::shared_ptr<VKeyControl>> &keys);
|
||||||
virtual StatusCode CreateAllLedsHal(std::vector<std::shared_ptr<VLedControl>> &leds);
|
virtual StatusCode CreateAllLedsHal(std::vector<std::shared_ptr<VLedControl>> &leds);
|
||||||
|
|
|
@ -40,12 +40,6 @@ add_custom_target(
|
||||||
-p ${PLATFORM_PATH}/cmake-shell
|
-p ${PLATFORM_PATH}/cmake-shell
|
||||||
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/MediaManager
|
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/MediaManager
|
||||||
)
|
)
|
||||||
add_custom_command(
|
|
||||||
TARGET ${TARGET_NAME}
|
|
||||||
PRE_BUILD
|
|
||||||
COMMAND make MediaManager_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(
|
||||||
MediaManager_code_format
|
MediaManager_code_format
|
||||||
|
|
|
@ -22,8 +22,8 @@ SaveStream::SaveStream() : mFileAudio(nullptr), mFileVideo(nullptr)
|
||||||
}
|
}
|
||||||
void SaveStream::Init(void)
|
void SaveStream::Init(void)
|
||||||
{
|
{
|
||||||
mFileAudio = fopen("/tmp/audio.g711", "a+"); // TODO:
|
mFileAudio = fopen("./audio.g711", "a+"); // TODO:
|
||||||
mFileVideo = fopen("/tmp/video.h264", "a+"); // TODO:
|
mFileVideo = fopen("./video.h264", "a+"); // TODO:
|
||||||
}
|
}
|
||||||
void SaveStream::UnInit(void)
|
void SaveStream::UnInit(void)
|
||||||
{
|
{
|
||||||
|
@ -39,6 +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);
|
||||||
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");
|
||||||
|
|
|
@ -32,6 +32,7 @@ link_directories(
|
||||||
${LIBS_OUTPUT_PATH}
|
${LIBS_OUTPUT_PATH}
|
||||||
${EXTERNAL_LIBS_OUTPUT_PATH}
|
${EXTERNAL_LIBS_OUTPUT_PATH}
|
||||||
${EXTERNAL_LIBS_OUTPUT_PATH}/libconfig/lib
|
${EXTERNAL_LIBS_OUTPUT_PATH}/libconfig/lib
|
||||||
|
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
aux_source_directory(. SRC_FILES_MAIN)
|
aux_source_directory(. SRC_FILES_MAIN)
|
||||||
|
|
|
@ -40,10 +40,10 @@ void HuntingCameraTest::TearDownTestCase()
|
||||||
}
|
}
|
||||||
void HuntingCameraTest::SetUp()
|
void HuntingCameraTest::SetUp()
|
||||||
{
|
{
|
||||||
CreateAllCamerasMcok();
|
|
||||||
std::shared_ptr<MainThread> mainThread = std::make_shared<MainThreadTest>();
|
std::shared_ptr<MainThread> mainThread = std::make_shared<MainThreadTest>();
|
||||||
MainThread::GetInstance(&mainThread);
|
MainThread::GetInstance(&mainThread);
|
||||||
HalTestTool::Init();
|
HalTestTool::Init();
|
||||||
|
CreateAllCamerasMcok();
|
||||||
CreateAllKeysMcok();
|
CreateAllKeysMcok();
|
||||||
CreateAllLedsMcok();
|
CreateAllLedsMcok();
|
||||||
AppManagerTestTool::Init();
|
AppManagerTestTool::Init();
|
||||||
|
@ -68,13 +68,13 @@ void HuntingCameraTest::TearDown()
|
||||||
std::shared_ptr<LinuxApiMock> test = std::make_shared<LinuxApiMock>();
|
std::shared_ptr<LinuxApiMock> test = std::make_shared<LinuxApiMock>();
|
||||||
LinuxApiMock::GetInstance(&test);
|
LinuxApiMock::GetInstance(&test);
|
||||||
McuManagerTestTool::UnInit();
|
McuManagerTestTool::UnInit();
|
||||||
MainThread::GetInstance()->UnInit();
|
|
||||||
std::shared_ptr<MainThread> mainThread = std::make_shared<MainThread>();
|
|
||||||
MainThread::GetInstance(&mainThread);
|
|
||||||
DeviceManagerTestTool::UnInit();
|
DeviceManagerTestTool::UnInit();
|
||||||
DestroyAllCamerasMock();
|
DestroyAllCamerasMock();
|
||||||
DestroyAllKeysMock();
|
DestroyAllKeysMock();
|
||||||
DestroyAllLedsMock();
|
DestroyAllLedsMock();
|
||||||
|
MainThread::GetInstance()->UnInit();
|
||||||
|
std::shared_ptr<MainThread> mainThread = std::make_shared<MainThread>();
|
||||||
|
MainThread::GetInstance(&mainThread);
|
||||||
}
|
}
|
||||||
void HuntingCameraTest::CreateAllCamerasMcok(void)
|
void HuntingCameraTest::CreateAllCamerasMcok(void)
|
||||||
{
|
{
|
||||||
|
@ -83,6 +83,7 @@ void HuntingCameraTest::CreateAllCamerasMcok(void)
|
||||||
}
|
}
|
||||||
void HuntingCameraTest::DestroyAllCamerasMock(void)
|
void HuntingCameraTest::DestroyAllCamerasMock(void)
|
||||||
{
|
{
|
||||||
|
HalTestTool::DestroyCameraHalTest(mAllCamerasMock);
|
||||||
mAllCamerasMock.clear();
|
mAllCamerasMock.clear();
|
||||||
}
|
}
|
||||||
void HuntingCameraTest::CreateAllKeysMcok(void)
|
void HuntingCameraTest::CreateAllKeysMcok(void)
|
||||||
|
|
|
@ -12,6 +12,7 @@ include_directories(
|
||||||
link_directories(
|
link_directories(
|
||||||
${LIBS_OUTPUT_PATH}
|
${LIBS_OUTPUT_PATH}
|
||||||
${EXTERNAL_LIBS_OUTPUT_PATH}
|
${EXTERNAL_LIBS_OUTPUT_PATH}
|
||||||
|
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
aux_source_directory(. SRC_FILES)
|
aux_source_directory(. SRC_FILES)
|
||||||
|
|
|
@ -10,6 +10,7 @@ include_directories(
|
||||||
${UTILS_SOURCE_PATH}/Log/include
|
${UTILS_SOURCE_PATH}/Log/include
|
||||||
${UTILS_SOURCE_PATH}/KeyControl/include
|
${UTILS_SOURCE_PATH}/KeyControl/include
|
||||||
${UTILS_SOURCE_PATH}/LedControl/include
|
${UTILS_SOURCE_PATH}/LedControl/include
|
||||||
|
${UTILS_SOURCE_PATH}/MediaBase/include
|
||||||
${HAL_SOURCE_PATH}/src
|
${HAL_SOURCE_PATH}/src
|
||||||
${TEST_SOURCE_PATH}
|
${TEST_SOURCE_PATH}
|
||||||
${TEST_SOURCE_PATH}/utils/LinuxApiMock/include
|
${TEST_SOURCE_PATH}/utils/LinuxApiMock/include
|
||||||
|
@ -21,7 +22,7 @@ include_directories(
|
||||||
aux_source_directory(./src TEST_TOOL_SRC_FILES)
|
aux_source_directory(./src TEST_TOOL_SRC_FILES)
|
||||||
set(TEST_TOOL_TARGET HalTestTool)
|
set(TEST_TOOL_TARGET HalTestTool)
|
||||||
add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES})
|
add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES})
|
||||||
target_link_libraries(${TEST_TOOL_TARGET} Hal KeyControl LedControl LinuxApiMock Log)
|
target_link_libraries(${TEST_TOOL_TARGET} MediaBase Hal KeyControl LedControl LinuxApiMock Log)
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
HalTestTool_code_check
|
HalTestTool_code_check
|
||||||
|
|
|
@ -76,6 +76,7 @@ public:
|
||||||
static std::shared_ptr<VKeyHal> MakeKeyHalTest(const std::string &keyName);
|
static std::shared_ptr<VKeyHal> MakeKeyHalTest(const std::string &keyName);
|
||||||
static std::shared_ptr<VLedHal> MakeLedHalTest(const std::string &ledName);
|
static std::shared_ptr<VLedHal> MakeLedHalTest(const std::string &ledName);
|
||||||
static std::shared_ptr<VCameraHal> MakeCameraHalTest(const CameraType &type);
|
static std::shared_ptr<VCameraHal> MakeCameraHalTest(const CameraType &type);
|
||||||
|
static void DestroyCameraHalTest(std::map<CameraType, std::shared_ptr<VCameraHal>> &allCamerasMock);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<IHalCpp> mHalMock;
|
std::shared_ptr<IHalCpp> mHalMock;
|
||||||
|
|
|
@ -15,11 +15,42 @@
|
||||||
#include "CameraHalMock.h"
|
#include "CameraHalMock.h"
|
||||||
#include "IHalCpp.h"
|
#include "IHalCpp.h"
|
||||||
#include "ILog.h"
|
#include "ILog.h"
|
||||||
|
#include "MediaBase.h"
|
||||||
#include "StatusCode.h"
|
#include "StatusCode.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
CameraHalTest::CameraHalTest(const CameraType &cameraType) : mCameraType(cameraType)
|
CameraHalTest::CameraHalTest(const CameraType &cameraType)
|
||||||
|
: mCameraType(cameraType), mReadH264File(nullptr), mTaskRuning(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
void CameraHalTest::Init(void)
|
||||||
|
{
|
||||||
|
CameraHal::Init();
|
||||||
|
if (nullptr == mReadH264File) {
|
||||||
|
ReadVideoFileCallback callback = [](const void *stream, const unsigned int length, void *context) -> void {
|
||||||
|
((CameraHalTest *)context)->ReadDataFromH264File(stream, length);
|
||||||
|
};
|
||||||
|
mReadH264File = ICreateMediaBase(MEDIA_HANDLE_TYPE_READ_H264);
|
||||||
|
ISetReadVideoCallback(mReadH264File, callback, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CameraHalTest::UnInit(void)
|
||||||
|
{
|
||||||
|
CameraHal::UnInit();
|
||||||
|
mTaskRuning = false;
|
||||||
|
mCv.notify_one();
|
||||||
|
if (mTaskTimerThread.joinable()) {
|
||||||
|
mTaskTimerThread.join();
|
||||||
|
}
|
||||||
|
LogInfo(
|
||||||
|
"====================================================================9999999999999999999999 000000000000000\n");
|
||||||
|
if (mReadH264File) {
|
||||||
|
ISetReadVideoCallback(mReadH264File, nullptr, nullptr);
|
||||||
|
IStopReadFile(mReadH264File);
|
||||||
|
IMediaBaseFree(mReadH264File);
|
||||||
|
LogInfo("====================================================================9999999999999999999999\n");
|
||||||
|
mReadH264File = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
void CameraHalTest::SetCameraMonitor(std::shared_ptr<VCameraHalMonitor> &monitor)
|
void CameraHalTest::SetCameraMonitor(std::shared_ptr<VCameraHalMonitor> &monitor)
|
||||||
{
|
{
|
||||||
LogInfo("CameraHalTest::SetCameraMonitor.\n");
|
LogInfo("CameraHalTest::SetCameraMonitor.\n");
|
||||||
|
@ -36,17 +67,53 @@ 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");
|
||||||
|
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);
|
||||||
StatusCode code = StartSingleTaskTrace(param);
|
StatusCode code = StartSingleTaskTrace(param);
|
||||||
// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
|
if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
|
||||||
// return HalCpp::GetAllKeys(allKeys);
|
return CameraHal::StartSingleTask(param);
|
||||||
// }
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
StatusCode CameraHalTest::StopTask(void)
|
||||||
|
{
|
||||||
|
mTaskRuning = false;
|
||||||
|
if (nullptr != mReadH264File) {
|
||||||
|
IStopReadFile(mReadH264File);
|
||||||
|
}
|
||||||
|
mCv.notify_one();
|
||||||
|
return CameraHal::StopTask();
|
||||||
|
}
|
||||||
StatusCode CameraHalTest::StartSingleTaskTrace(const CameraTaskParam ¶m)
|
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::MockReportMediaStream(void)
|
||||||
|
{
|
||||||
|
mTaskRuning = true;
|
||||||
|
if (nullptr != mReadH264File) {
|
||||||
|
IStartReadFile(mReadH264File, TEST_SOURCE_PATH "/support_test/video.h264");
|
||||||
|
}
|
||||||
|
while (mTaskRuning) {
|
||||||
|
std::unique_lock<std::mutex> lock(mMutex);
|
||||||
|
mCv.wait(lock, [&] {
|
||||||
|
return !mTaskRuning;
|
||||||
|
});
|
||||||
|
/**
|
||||||
|
* @brief If the recording time is over, you need to stop the recording timer here.
|
||||||
|
*/
|
||||||
|
mTaskRuning = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CameraHalTest::ReadDataFromH264File(const void *stream, const unsigned int length)
|
||||||
|
{
|
||||||
|
GetVideoStream(stream, length, 0);
|
||||||
|
}
|
||||||
CameraHalMock::CameraHalMock(const CameraType &cameraType) : CameraHalTest(cameraType)
|
CameraHalMock::CameraHalMock(const CameraType &cameraType) : CameraHalTest(cameraType)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,24 +14,40 @@
|
||||||
*/
|
*/
|
||||||
#ifndef CAMERA_HAL_MOCK_H
|
#ifndef CAMERA_HAL_MOCK_H
|
||||||
#define CAMERA_HAL_MOCK_H
|
#define CAMERA_HAL_MOCK_H
|
||||||
|
#include "CameraHal.h"
|
||||||
#include "HalCpp.h"
|
#include "HalCpp.h"
|
||||||
#include "HalTestTool.h"
|
#include "HalTestTool.h"
|
||||||
class CameraHalTest : public VCameraHal
|
#include <condition_variable>
|
||||||
|
#include <mutex>
|
||||||
|
#include <thread>
|
||||||
|
class CameraHalTest : public CameraHal
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CameraHalTest(const CameraType &cameraType);
|
CameraHalTest(const CameraType &cameraType);
|
||||||
virtual ~CameraHalTest() = default;
|
virtual ~CameraHalTest() = default;
|
||||||
|
void Init(void) override;
|
||||||
|
void UnInit(void) override;
|
||||||
|
|
||||||
|
protected:
|
||||||
void SetCameraMonitor(std::shared_ptr<VCameraHalMonitor> &monitor) override;
|
void SetCameraMonitor(std::shared_ptr<VCameraHalMonitor> &monitor) override;
|
||||||
StatusCode StartSingleTask(const CameraTaskParam ¶m) override;
|
StatusCode StartSingleTask(const CameraTaskParam ¶m) override;
|
||||||
|
StatusCode StopTask(void) override;
|
||||||
private:
|
|
||||||
virtual void SetCameraMonitorTrace(std::shared_ptr<VCameraHalMonitor> &monitor);
|
virtual void SetCameraMonitorTrace(std::shared_ptr<VCameraHalMonitor> &monitor);
|
||||||
virtual StatusCode StartSingleTaskTrace(const CameraTaskParam ¶m);
|
virtual StatusCode StartSingleTaskTrace(const CameraTaskParam ¶m);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void MockReportMediaStream(void);
|
||||||
|
void ReadDataFromH264File(const void *stream, const unsigned int length);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
const CameraType mCameraType;
|
const CameraType mCameraType;
|
||||||
std::weak_ptr<VCameraHalMonitor> mMonitor;
|
std::weak_ptr<VCameraHalMonitor> mMonitor;
|
||||||
std::shared_ptr<CameraReportEvent> mFastBootEvent;
|
std::shared_ptr<CameraReportEvent> mFastBootEvent;
|
||||||
|
void *mReadH264File;
|
||||||
|
std::mutex mMutex;
|
||||||
|
std::condition_variable mCv;
|
||||||
|
bool mTaskRuning;
|
||||||
|
std::thread mTaskTimerThread;
|
||||||
};
|
};
|
||||||
class CameraHalMock : public CameraHalTest
|
class CameraHalMock : public CameraHalTest
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
#include "HalMakePtrTest.h"
|
#include "HalMakePtrTest.h"
|
||||||
|
#include "CameraHalMock.h"
|
||||||
#include "HalCppMock.h"
|
#include "HalCppMock.h"
|
||||||
#include "HalMakePtr.h"
|
#include "HalMakePtr.h"
|
||||||
#include "IHalCpp.h"
|
#include "IHalCpp.h"
|
||||||
|
@ -77,4 +78,10 @@ StatusCode HalMakePtrTest::CreateAllKeysHal(std::vector<std::shared_ptr<VKeyCont
|
||||||
HalMakePtr::CreateAllKeysHal(keys);
|
HalMakePtr::CreateAllKeysHal(keys);
|
||||||
}
|
}
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
|
}
|
||||||
|
std::shared_ptr<VCameraHal> HalMakePtrTest::CreateCameraHal(const CameraType &type)
|
||||||
|
{
|
||||||
|
auto camera = std::make_shared<CameraHalMock>(type);
|
||||||
|
camera->Init();
|
||||||
|
return camera;
|
||||||
}
|
}
|
|
@ -29,6 +29,7 @@ public:
|
||||||
StatusCode CreateHalSharePtr(std::shared_ptr<IHalCpp> &impl) override;
|
StatusCode CreateHalSharePtr(std::shared_ptr<IHalCpp> &impl) override;
|
||||||
StatusCode CreateSdCardHal(std::shared_ptr<VSdCardHal> &impl) override;
|
StatusCode CreateSdCardHal(std::shared_ptr<VSdCardHal> &impl) override;
|
||||||
StatusCode CreateAllKeysHal(std::vector<std::shared_ptr<VKeyControl>> &keys) override;
|
StatusCode CreateAllKeysHal(std::vector<std::shared_ptr<VKeyControl>> &keys) override;
|
||||||
|
std::shared_ptr<VCameraHal> CreateCameraHal(const CameraType &type) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
std::shared_ptr<HalCppMock> mHalCppMock;
|
std::shared_ptr<HalCppMock> mHalCppMock;
|
||||||
|
|
|
@ -378,6 +378,18 @@ std::shared_ptr<VLedHal> HalTestTool::MakeLedHalTest(const std::string &ledName)
|
||||||
}
|
}
|
||||||
std::shared_ptr<VCameraHal> HalTestTool::MakeCameraHalTest(const CameraType &type)
|
std::shared_ptr<VCameraHal> HalTestTool::MakeCameraHalTest(const CameraType &type)
|
||||||
{
|
{
|
||||||
std::shared_ptr<VCameraHal> camera = std::make_shared<CameraHalMock>(type);
|
std::shared_ptr<VCameraHal> camera = HalMakePtrTest::GetInstance()->CreateCameraHal(type);
|
||||||
return camera;
|
return camera;
|
||||||
|
}
|
||||||
|
void HalTestTool::DestroyCameraHalTest(std::map<CameraType, std::shared_ptr<VCameraHal>> &allCamerasMock)
|
||||||
|
{
|
||||||
|
for (const auto &camera : allCamerasMock) {
|
||||||
|
std::shared_ptr<CameraHalMock> impl = std::dynamic_pointer_cast<CameraHalMock>(camera.second);
|
||||||
|
if (impl) {
|
||||||
|
impl->UnInit();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
LogError("impl is null.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -25,6 +25,7 @@ include_directories(
|
||||||
link_directories(
|
link_directories(
|
||||||
${LIBS_OUTPUT_PATH}
|
${LIBS_OUTPUT_PATH}
|
||||||
${EXTERNAL_LIBS_OUTPUT_PATH}
|
${EXTERNAL_LIBS_OUTPUT_PATH}
|
||||||
|
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
aux_source_directory(. SRC_FILES_MAIN)
|
aux_source_directory(. SRC_FILES_MAIN)
|
||||||
|
|
|
@ -23,6 +23,7 @@ include_directories(
|
||||||
link_directories(
|
link_directories(
|
||||||
${LIBS_OUTPUT_PATH}
|
${LIBS_OUTPUT_PATH}
|
||||||
${EXTERNAL_LIBS_OUTPUT_PATH}
|
${EXTERNAL_LIBS_OUTPUT_PATH}
|
||||||
|
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
aux_source_directory(. SRC_FILES_MAIN)
|
aux_source_directory(. SRC_FILES_MAIN)
|
||||||
|
@ -51,12 +52,6 @@ add_custom_target(
|
||||||
-p ${PLATFORM_PATH}/cmake-shell
|
-p ${PLATFORM_PATH}/cmake-shell
|
||||||
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/DeviceManager
|
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/DeviceManager
|
||||||
)
|
)
|
||||||
add_custom_command(
|
|
||||||
TARGET ${TARGET_NAME}
|
|
||||||
PRE_BUILD
|
|
||||||
COMMAND make DeviceManagerTest_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(
|
||||||
|
|
|
@ -24,6 +24,7 @@ include_directories(
|
||||||
link_directories(
|
link_directories(
|
||||||
${LIBS_OUTPUT_PATH}
|
${LIBS_OUTPUT_PATH}
|
||||||
${EXTERNAL_LIBS_OUTPUT_PATH}
|
${EXTERNAL_LIBS_OUTPUT_PATH}
|
||||||
|
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
aux_source_directory(. SRC_FILES_MAIN)
|
aux_source_directory(. SRC_FILES_MAIN)
|
||||||
|
|
|
@ -24,10 +24,13 @@ enum MediaHandleType
|
||||||
MEDIA_HANDLE_TYPE_READ_G711,
|
MEDIA_HANDLE_TYPE_READ_G711,
|
||||||
MEDIA_HANDLE_TYPE_END
|
MEDIA_HANDLE_TYPE_END
|
||||||
};
|
};
|
||||||
|
typedef void (*ReadVideoFileCallback)(const void *, const unsigned int, void *);
|
||||||
void *ICreateMediaBase(const MediaHandleType type);
|
void *ICreateMediaBase(const MediaHandleType type);
|
||||||
// StatusCode Init(void *object);
|
// StatusCode Init(void *object);
|
||||||
// StatusCode UnInit(void *object);
|
// StatusCode UnInit(void *object);
|
||||||
|
StatusCode ISetReadVideoCallback(void *object, ReadVideoFileCallback callback, void *context);
|
||||||
StatusCode IStartReadFile(void *object, const char *path);
|
StatusCode IStartReadFile(void *object, const char *path);
|
||||||
|
StatusCode IStopReadFile(void *object);
|
||||||
void IMediaBaseFree(void *object);
|
void IMediaBaseFree(void *object);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,16 @@ StatusCode IMediaBase::StartReadFile(const std::string &path)
|
||||||
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
|
||||||
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
||||||
}
|
}
|
||||||
|
StatusCode IMediaBase::StopReadFile(void)
|
||||||
|
{
|
||||||
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
|
||||||
|
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
||||||
|
}
|
||||||
|
StatusCode IMediaBase::SetReadVideoCallback(ReadVideoFileCallback callback, void *context)
|
||||||
|
{
|
||||||
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
|
||||||
|
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
||||||
|
}
|
||||||
static const char *MEDIA_BASE_NAME = "media_adapter";
|
static const char *MEDIA_BASE_NAME = "media_adapter";
|
||||||
const char *GetMediaBaseModuleName(void)
|
const char *GetMediaBaseModuleName(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,8 @@ public:
|
||||||
IMediaBase() = default;
|
IMediaBase() = default;
|
||||||
virtual ~IMediaBase() = default;
|
virtual ~IMediaBase() = default;
|
||||||
virtual StatusCode StartReadFile(const std::string &path);
|
virtual StatusCode StartReadFile(const std::string &path);
|
||||||
|
virtual StatusCode StopReadFile(void);
|
||||||
|
virtual StatusCode SetReadVideoCallback(ReadVideoFileCallback callback, void *context);
|
||||||
};
|
};
|
||||||
typedef struct media_base_header
|
typedef struct media_base_header
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,6 +35,13 @@ static bool ObjectCheck(void *object)
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
StatusCode ISetReadVideoCallback(void *object, ReadVideoFileCallback callback, void *context)
|
||||||
|
{
|
||||||
|
if (ObjectCheck(object) == true) {
|
||||||
|
return (*(std::shared_ptr<IMediaBase> *)object)->SetReadVideoCallback(callback, context);
|
||||||
|
}
|
||||||
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
|
}
|
||||||
StatusCode IStartReadFile(void *object, const char *path)
|
StatusCode IStartReadFile(void *object, const char *path)
|
||||||
{
|
{
|
||||||
if (ObjectCheck(object) == true) {
|
if (ObjectCheck(object) == true) {
|
||||||
|
@ -42,6 +49,13 @@ StatusCode IStartReadFile(void *object, const char *path)
|
||||||
}
|
}
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
}
|
}
|
||||||
|
StatusCode IStopReadFile(void *object)
|
||||||
|
{
|
||||||
|
if (ObjectCheck(object) == true) {
|
||||||
|
return (*(std::shared_ptr<IMediaBase> *)object)->StopReadFile();
|
||||||
|
}
|
||||||
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
|
}
|
||||||
void IMediaBaseFree(void *object)
|
void IMediaBaseFree(void *object)
|
||||||
{
|
{
|
||||||
if (ObjectCheck(object) == true) {
|
if (ObjectCheck(object) == true) {
|
||||||
|
|
|
@ -28,6 +28,9 @@ extern "C" {
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
MediaBaseImpl::MediaBaseImpl() : mReadVideoCallback(nullptr), mReadVideoCallbackContext(nullptr), mTaskRuning(false)
|
||||||
|
{
|
||||||
|
}
|
||||||
StatusCode MediaBaseImpl::StartReadFile(const std::string &path)
|
StatusCode MediaBaseImpl::StartReadFile(const std::string &path)
|
||||||
{
|
{
|
||||||
InitFfmpeg();
|
InitFfmpeg();
|
||||||
|
@ -58,18 +61,26 @@ StatusCode MediaBaseImpl::StartReadFile(const std::string &path)
|
||||||
LogError("Didn't find a video stream.\n");
|
LogError("Didn't find a video stream.\n");
|
||||||
return CreateStatusCode(STATUS_CODE_NOT_OK);
|
return CreateStatusCode(STATUS_CODE_NOT_OK);
|
||||||
}
|
}
|
||||||
AVPacket packet;
|
auto taskTimerThread = [=](std::shared_ptr<MediaBaseImpl> media) {
|
||||||
// av_new_packet(&packet, AV_INPUT_BUFFER_MIN_SIZE);
|
LogInfo("ReadFileThread start.\n");
|
||||||
while (av_read_frame(pFormatCtx, &packet) >= 0) {
|
media->ReadFileThread(pFormatCtx, video_stream_index);
|
||||||
// 检查数据包是否属于视频流
|
};
|
||||||
if (packet.stream_index == video_stream_index) {
|
std::shared_ptr<MediaBaseImpl> media = shared_from_this();
|
||||||
LogInfo("Frame data address: %p, length: %zu\n", packet.data, packet.size);
|
mTaskTimerThread = std::thread(taskTimerThread, media);
|
||||||
}
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
// 释放数据包
|
}
|
||||||
av_packet_unref(&packet);
|
StatusCode MediaBaseImpl::StopReadFile(void)
|
||||||
|
{
|
||||||
|
mTaskRuning = false;
|
||||||
|
if (mTaskTimerThread.joinable()) {
|
||||||
|
mTaskTimerThread.join();
|
||||||
}
|
}
|
||||||
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
avformat_close_input(&pFormatCtx);
|
}
|
||||||
|
StatusCode MediaBaseImpl::SetReadVideoCallback(ReadVideoFileCallback callback, void *context)
|
||||||
|
{
|
||||||
|
mReadVideoCallback = callback;
|
||||||
|
mReadVideoCallbackContext = context;
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
}
|
}
|
||||||
void MediaBaseImpl::InitFfmpeg(void)
|
void MediaBaseImpl::InitFfmpeg(void)
|
||||||
|
@ -77,4 +88,28 @@ void MediaBaseImpl::InitFfmpeg(void)
|
||||||
}
|
}
|
||||||
void MediaBaseImpl::UnInitFfmpeg(void)
|
void MediaBaseImpl::UnInitFfmpeg(void)
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
void MediaBaseImpl::ReadFileThread(AVFormatContext *pFormatCtx, int video_stream_index)
|
||||||
|
{
|
||||||
|
mTaskRuning = true;
|
||||||
|
AVPacket packet;
|
||||||
|
// av_new_packet(&packet, AV_INPUT_BUFFER_MIN_SIZE);
|
||||||
|
while (av_read_frame(pFormatCtx, &packet) >= 0) {
|
||||||
|
if (nullptr == mReadVideoCallback) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (false == mTaskRuning) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// 检查数据包是否属于视频流
|
||||||
|
if (packet.stream_index == video_stream_index) {
|
||||||
|
// LogInfo("Frame data address: %p, length: %zu\n", packet.data, packet.size);
|
||||||
|
mReadVideoCallback(packet.data, packet.size, mReadVideoCallbackContext);
|
||||||
|
}
|
||||||
|
// 释放数据包
|
||||||
|
av_packet_unref(&packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
avformat_close_input(&pFormatCtx);
|
||||||
|
LogInfo("==============================================================================\n");
|
||||||
}
|
}
|
|
@ -15,15 +15,36 @@
|
||||||
#ifndef MEDIA_BASE_IMPL_H
|
#ifndef MEDIA_BASE_IMPL_H
|
||||||
#define MEDIA_BASE_IMPL_H
|
#define MEDIA_BASE_IMPL_H
|
||||||
#include "IMediaBase.h"
|
#include "IMediaBase.h"
|
||||||
class MediaBaseImpl : public IMediaBase
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
// #include <libavcodec/avcodec.h>
|
||||||
|
#include <libavcodec/packet.h>
|
||||||
|
#include <libavformat/avformat.h>
|
||||||
|
#include <libavutil/avutil.h>
|
||||||
|
// #include <libswscale/swscale.h>
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#include <thread>
|
||||||
|
class MediaBaseImpl : public IMediaBase, public std::enable_shared_from_this<MediaBaseImpl>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MediaBaseImpl() = default;
|
MediaBaseImpl();
|
||||||
virtual ~MediaBaseImpl() = default;
|
virtual ~MediaBaseImpl() = default;
|
||||||
StatusCode StartReadFile(const std::string &path) override;
|
StatusCode StartReadFile(const std::string &path) override;
|
||||||
|
StatusCode StopReadFile(void) override;
|
||||||
|
StatusCode SetReadVideoCallback(ReadVideoFileCallback callback, void *context) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void InitFfmpeg(void);
|
void InitFfmpeg(void);
|
||||||
void UnInitFfmpeg(void);
|
void UnInitFfmpeg(void);
|
||||||
|
void ReadFileThread(AVFormatContext *pFormatCtx, int video_stream_index);
|
||||||
|
|
||||||
|
private:
|
||||||
|
ReadVideoFileCallback mReadVideoCallback;
|
||||||
|
void *mReadVideoCallbackContext;
|
||||||
|
bool mTaskRuning;
|
||||||
|
std::thread mTaskTimerThread;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
|
@ -117,6 +117,8 @@ void TcpServerImpl::Init(void)
|
||||||
hio_t *listenio = hloop_create_tcp_server(mLoop, mParam.mIp, mParam.mPort, on_accept);
|
hio_t *listenio = hloop_create_tcp_server(mLoop, mParam.mIp, mParam.mPort, on_accept);
|
||||||
if (nullptr == listenio) {
|
if (nullptr == listenio) {
|
||||||
LogError("hloop_create_tcp_server failed\n");
|
LogError("hloop_create_tcp_server failed\n");
|
||||||
|
hloop_free(&mLoop);
|
||||||
|
mLoop = nullptr;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LogInfo("listenfd=%d\n", hio_fd(listenio));
|
LogInfo("listenfd=%d\n", hio_fd(listenio));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user