SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
passthrough_video_encoder.hpp
1#ifndef SKYWAY_MEDIA_PASSTHROUGH_VIDEO_ENCODER_HPP_
2#define SKYWAY_MEDIA_PASSTHROUGH_VIDEO_ENCODER_HPP_
3
4#include <api/video_codecs/video_encoder.h>
5#include <api/video_codecs/video_encoder_factory.h>
6#include <modules/rtp_rtcp/source/rtcp_sender.h>
7#include <functional>
8#include <memory>
9
10#include "skyway/global/interface/worker.hpp"
11#include "skyway/media/rtp/interface/rtp_capturer_video_source_repository.hpp"
12
13namespace skyway {
14namespace media {
15namespace rtp {
17class PassthroughVideoEncoder : public webrtc::VideoEncoder {
18public:
19 PassthroughVideoEncoder(
20 std::shared_ptr<interface::RtpCapturerVideoSourceRepository> source_repo);
21 ~PassthroughVideoEncoder();
22 int InitEncode(const webrtc::VideoCodec* codec_settings, const Settings& settings) override;
23 int32_t Encode(const webrtc::VideoFrame& frame,
24 const std::vector<webrtc::VideoFrameType>* frame_types) override;
25
26 void SetRates(const webrtc::VideoEncoder::RateControlParameters& parameters) override;
27
28 int32_t RegisterEncodeCompleteCallback(webrtc::EncodedImageCallback* callback) override;
29
30 int32_t Release() override;
31
32 webrtc::VideoEncoder::EncoderInfo GetEncoderInfo() const override;
33
34private:
35 std::shared_ptr<interface::RtpCapturerVideoSource> video_source_ = nullptr;
36 webrtc::EncodedImageCallback* callback_ = nullptr;
37 std::weak_ptr<interface::RtpCapturerVideoSourceRepository> source_repo_;
38
39public:
40 friend class PassthroughVideoEncoderTest;
41};
43
44#endif // SKYWAY_MEDIA_PASSTHROUGH_VIDEO_ENCODER_HPP_
45
46} // namespace rtp
47} // namespace media
48} // namespace skyway