#pragma once
#include <memory>
#include <vector>
#include <string>
#include "libobsensor/h/ObTypes.h"
#include "IFrame.hpp"
#include "IStreamProfile.hpp"
#include "IStreamer.hpp"
#include "SourcePortInfo.hpp"
#include <functional>
namespace libobsensor {
class ISourcePort {
public:
virtual ~ISourcePort() noexcept = default;
virtual std::shared_ptr<const SourcePortInfo> getSourcePortInfo() const = 0;
};
class IVendorDataPort : virtual public ISourcePort { public:
~IVendorDataPort() noexcept override = default;
virtual uint32_t sendAndReceive(const uint8_t *sendData, uint32_t sendLen, uint8_t *recvData, uint32_t exceptedRecvLen) = 0;
};
class IDataStreamPort : virtual public ISourcePort { public:
~IDataStreamPort() noexcept override = default;
virtual void startStream(MutableFrameCallback callback) = 0;
virtual void stopStream() = 0;
};
class IVideoStreamPort : virtual public ISourcePort, public IStreamer { public:
~IVideoStreamPort() noexcept override = default;
virtual StreamProfileList getStreamProfileList() = 0;
virtual void stopAllStream() = 0;
};
}