safesight-edge/include/hw/i_encoder.h
2026-01-16 18:16:25 +08:00

31 lines
585 B
C++

#pragma once
#include <cstddef>
#include <cstdint>
#include <memory>
#include <vector>
#include "frame/frame.h"
#include "utils/result.h"
#include "utils/simple_json.h"
namespace rk3588 {
struct EncodePacket {
std::vector<uint8_t> data;
uint64_t pts = 0;
bool keyframe = false;
};
class IEncoder {
public:
virtual ~IEncoder() = default;
virtual Status Open(const SimpleJson& config) = 0;
virtual Status Send(const std::shared_ptr<Frame>& frame) = 0;
virtual Result<EncodePacket> Receive() = 0;
virtual void Close() = 0;
};
} // namespace rk3588