33// SPDX-License-Identifier: Apache-2.0
44
55#include " talk/owt/sdk/wasm/media_session.h"
6+ #include " third_party/webrtc/api/rtc_event_log/rtc_event_log_factory.h"
7+ #include " third_party/webrtc/api/transport/field_trial_based_config.h"
8+ #include " third_party/webrtc/rtc_base/task_queue_stdlib.h"
69
710namespace owt {
811namespace wasm {
912MediaSession::MediaSession ()
10- : call_(std::unique_ptr<webrtc::Call>(
11- webrtc::Call::Create (webrtc::Call::Config(nullptr )))),
12- video_receiver_(nullptr ) {}
13+ : task_queue_factory_(webrtc::CreateTaskQueueStdlibFactory()),
14+ event_log_factory_ (std::make_unique<webrtc::RtcEventLogFactory>(
15+ task_queue_factory_.get())),
16+ event_log_(event_log_factory_->CreateRtcEventLog (
17+ webrtc::RtcEventLog::EncodingType::NewFormat)),
18+ web_transport_session_(std::make_unique<WebTransportSession>()),
19+ call_(nullptr ),
20+ receive_statistics_(
21+ webrtc::ReceiveStatistics::Create (webrtc::Clock::GetRealTimeClock())),
22+ receiver_process_thread_(nullptr ),
23+ video_receiver_(nullptr ) {
24+ RTC_LOG (LS_ERROR) << " Ctor of Media Session. " << __EMSCRIPTEN_PTHREADS__;
25+ rtc::ThreadManager::Instance ()->WrapCurrentThread ();
26+ receiver_process_thread_=webrtc::ProcessThread::Create (" ReceiverProcessThread" );
27+ webrtc::Call::Config config (event_log_.get ());
28+ config.task_queue_factory = task_queue_factory_.get ();
29+ webrtc::FieldTrialBasedConfig trials;
30+ config.trials = &trials;
31+ call_ = std::unique_ptr<webrtc::Call>(webrtc::Call::Create (config));
32+ }
1333
1434MediaSession::~MediaSession () {}
1535
16- RtpVideoReceiver* MediaSession::CreateRtpVideoReceiver () {
36+ std::shared_ptr< RtpVideoReceiver> MediaSession::CreateRtpVideoReceiver () {
1737 webrtc::VideoReceiveStream::Config config (web_transport_session_.get ());
18- webrtc::TaskQueueBase* task_queue = webrtc::TaskQueueBase::Current ();
19- if (!task_queue) {
20- task_queue = rtc::ThreadManager::Instance ()->CurrentThread ();
21- }
22- std::unique_ptr<webrtc::RtpVideoStreamReceiver2> receiver =
23- std::make_unique<webrtc::RtpVideoStreamReceiver2>(
24- task_queue, webrtc::Clock::GetRealTimeClock (),
25- web_transport_session_.get (), nullptr , nullptr , &config, nullptr ,
26- nullptr , nullptr , nullptr , nullptr , nullptr , nullptr , nullptr ,
27- nullptr );
28- video_receiver_ = std::make_unique<RtpVideoReceiver>(std::move (receiver));
29- return video_receiver_.get ();
38+ config.rtp .local_ssrc = 1 ;
39+ // TODO: Get a message queue for receiver.
40+ video_receiver_ = std::make_shared<RtpVideoReceiver>(
41+ web_transport_session_.get (), &config, receive_statistics_.get (),
42+ receiver_process_thread_.get (), web_transport_session_.get ());
43+ return video_receiver_;
3044}
45+
3146} // namespace wasm
3247} // namespace owt
0 commit comments