GrabBag/Module/FFMediaStream/_Inc/CVrFFMediaPuller.h

40 lines
1.0 KiB
C++

#pragma once
#include "IVrFFMediaPuller.h"
#include <atomic>
#include <mutex>
#include <memory>
#if !defined(FFMEDIA_PLATFORM_DUMMY)
#include "module/vi/module_rtspClient.hpp"
#include "module/vp/module_mppdec.hpp"
#include "module/vp/module_rga.hpp"
#endif
class CVrFFMediaPuller : public IVrFFMediaPuller
{
public:
CVrFFMediaPuller();
~CVrFFMediaPuller() override;
int Init(const VrFFPullConfig& config) override;
void SetFrameCallback(FFPulledFrameCallback callback) override;
int Start() override;
int Stop() override;
int UnInit() override;
bool IsStreaming() const override;
private:
VrFFPullConfig m_config;
std::atomic<bool> m_bStarted{false};
std::atomic<bool> m_bInited{false};
FFPulledFrameCallback m_callback;
std::mutex m_mutex;
#if !defined(FFMEDIA_PLATFORM_DUMMY)
std::shared_ptr<ModuleRtspClient> m_rtspClient;
std::shared_ptr<ModuleMppDec> m_decoder;
std::shared_ptr<ModuleRga> m_rga;
#endif
};