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