#pragma once
#include "api/video_codecs/video_encoder.h"
#include "api/video_codecs/video_encoder_factory.h"
namespace livekit_ffi {
class VideoEncoderFactory : public webrtc::VideoEncoderFactory {
class InternalFactory : public webrtc::VideoEncoderFactory {
public:
InternalFactory();
std::vector<webrtc::SdpVideoFormat> GetSupportedFormats() const override;
CodecSupport QueryCodecSupport(
const webrtc::SdpVideoFormat& format,
std::optional<std::string> scalability_mode) const override;
std::unique_ptr<webrtc::VideoEncoder> Create(
const webrtc::Environment& env, const webrtc::SdpVideoFormat& format) override;
private:
std::vector<std::unique_ptr<webrtc::VideoEncoderFactory>> factories_;
};
public:
VideoEncoderFactory();
std::vector<webrtc::SdpVideoFormat> GetSupportedFormats() const override;
CodecSupport QueryCodecSupport(
const webrtc::SdpVideoFormat& format,
std::optional<std::string> scalability_mode) const override;
std::unique_ptr<webrtc::VideoEncoder> Create(
const webrtc::Environment& env, const webrtc::SdpVideoFormat& format) override;
private:
std::unique_ptr<InternalFactory> internal_factory_;
};
}