SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
rtp_capturer_video_source.hpp
1//
2// rtp_capturer_video_source.hpp
3// skyway
4//
5// Created by Naoto Takahashi on 2025/06/30.
6// Copyright © 2025 NTT DOCOMO BUSINESS, Inc. All rights reserved.
7//
8
9#ifndef SKYWAY_MEDIA_RTP_RTP_CAPTURER_VIDEO_SOURCE_HPP_
10#define SKYWAY_MEDIA_RTP_RTP_CAPTURER_VIDEO_SOURCE_HPP_
11
12#include <api/field_trials.h>
13#include <video/rtp_video_stream_receiver2.h>
14
15#include "skyway/global/interface/worker.hpp"
16#include "skyway/media/codec/video_codec.hpp"
17#include "skyway/media/i420_capturer_video_source.hpp"
18#include "skyway/media/rtp/interface/rtp_capturer_video_source.hpp"
19#include "skyway/media/rtp/interface/rtp_capturer_video_source_repository.hpp"
20#include "skyway/media/rtp/rtcp_transport.hpp"
21#include "skyway/network/interface/udp_client.hpp"
22#include "skyway/network/interface/udp_server.hpp"
23
24namespace skyway {
25namespace media {
26namespace rtp {
27
29 public network::interface::UdpServer::PacketHandler,
30 public webrtc::RtpVideoStreamReceiver2::OnCompleteFrameCallback,
31 public std::enable_shared_from_this<RtpCapturerVideoSource> {
32public:
35 std::shared_ptr<codec::VideoCodec> codec,
36 std::unique_ptr<network::interface::UdpServer> udp_server,
37 std::shared_ptr<interface::RtpCapturerVideoSourceRepository> repository,
38 std::unique_ptr<rtc::Thread> depacketize_th);
41
53 static std::shared_ptr<RtpCapturerVideoSource> Create(
55
56 bool StartReceiving() override;
57 bool StopReceiving() override;
58
60 std::optional<uint8_t> GetFrameId() override;
61 void RegisterCallback(webrtc::EncodedImageCallback* callback) override;
62 std::string Endpoint() const override;
63 void OnEncoderReleased(webrtc::EncodedImageCallback* callback) override;
64 rtc::scoped_refptr<media::interface::InternalCapturerVideoSource> GetSource() override;
65 // Impl network::interface::UdpServer::PacketHandler
66 void OnPacketReceived(const uint8_t* data, size_t size) override;
67 // Impl webrtc::RtpVideoStreamReceiver2::OnCompleteFrameCallback
68 void OnCompleteFrame(std::unique_ptr<webrtc::EncodedFrame> frame) override;
69 void SendKeyFrameRequest() override;
71private:
73 std::unique_ptr<webrtc::RtpVideoStreamReceiver2> CreateReceiver(
74 const webrtc::RtpPacketReceived& packet);
75 void DummyFrameLoop(uint16_t frame_id);
76 uint64_t GenerateSsrc() const;
77 webrtc::VideoReceiveStreamInterface::Config CreateRtpVideoStreamReceiver2Config();
78
79 std::shared_ptr<codec::VideoCodec> codec_;
80 std::unique_ptr<rtc::Thread> depacketize_th_ = nullptr;
82 RtcpTransport transport_;
83 rtc::scoped_refptr<I420CapturerVideoSource::I420InternalCapturerVideoSource> source_;
84 std::unique_ptr<network::interface::UdpServer> udp_server_;
85 std::mutex callbacks_mtx_;
86 std::unordered_set<webrtc::EncodedImageCallback*> callbacks_;
87 std::unique_ptr<webrtc::FieldTrials> trials_ = nullptr;
88 webrtc::VideoReceiveStreamInterface::Config config_;
89 std::unique_ptr<webrtc::TaskQueueBase, webrtc::TaskQueueDeleter> encoded_image_queue_ = nullptr;
90 std::unique_ptr<webrtc::RtpVideoStreamReceiver2> receiver_ = nullptr;
91 std::atomic<bool> frame_loop_stopped_ = true;
92 std::unique_ptr<global::interface::Worker> dummy_frame_worker_;
93 std::atomic<std::optional<uint16_t>> frame_id_;
94 std::atomic<bool> is_receiving = false;
95 std::weak_ptr<interface::RtpCapturerVideoSourceRepository> repo_;
96
97public:
99 friend class RtpCapturerVideoSourceTest;
101};
102
103} // namespace rtp
104} // namespace media
105} // namespace skyway
106
107#endif /* SKYWAY_MEDIA_RTP_RTP_CAPTURER_VIDEO_SOURCE_HPP_ */
Definition rtp_capturer_video_source.hpp:31
bool StopReceiving() override
UDPサーバを停止し、RTPパケットの受信を停止します。
bool StartReceiving() override
UDPサーバを起動し、RTPパケットの受信を開始します。
static std::shared_ptr< RtpCapturerVideoSource > Create(const interface::RtpCapturerVideoSourceOptions &options)
RTPキャプチャビデオソースのインスタンスを作成します。
RTPキャプチャビデオソース
Definition rtp_capturer_video_source.hpp:75
virtual ~RtpCapturerVideoSource()=default
デストラクタ
RTPキャプチャビデオソースのオプション
Definition rtp_capturer_video_source.hpp:23