OrangePi3588Media/include/hw/i_encoder.h
2026-01-16 20:19:09 +08:00

33 lines
678 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;
std::vector<uint8_t> extra_data;
};
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 std::vector<uint8_t> ExtraData() const = 0;
virtual void Close() = 0;
};
} // namespace rk3588