Skip to content
This repository was archived by the owner on Oct 25, 2024. It is now read-only.

Commit 1caf244

Browse files
committed
Create MediaSession in main function.
1 parent 24d2cd8 commit 1caf244

File tree

4 files changed

+19
-11
lines changed

4 files changed

+19
-11
lines changed

talk/owt/sdk/wasm/binding.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
#ifndef OWT_WASM_BINDING_H_
66
#define OWT_WASM_BINDING_H_
77

8-
#include <emscripten/bind.h>
98
#include "talk/owt/sdk/wasm/media_session.h"
109
#include "talk/owt/sdk/wasm/rtp_video_receiver.h"
1110

@@ -14,9 +13,11 @@ namespace wasm {
1413

1514
EMSCRIPTEN_BINDINGS(Owt) {
1615
emscripten::class_<MediaSession>("MediaSession")
17-
.constructor<>()
16+
.smart_ptr<std::shared_ptr<MediaSession>>("MediaSession")
1817
.function("createRtpVideoReceiver", &MediaSession::CreateRtpVideoReceiver)
19-
.function("setRtcpCallback", &MediaSession::SetRtcpCallback);
18+
.function("setRtcpCallback", &MediaSession::SetRtcpCallback)
19+
.class_function("get", &MediaSession::Get,
20+
emscripten::allow_raw_pointers());
2021
emscripten::class_<RtpVideoReceiver>("RtpVideoReceiver")
2122
.smart_ptr<std::shared_ptr<RtpVideoReceiver>>("RtpVideoReceiver")
2223
.function("onRtpPacket", &RtpVideoReceiver::OnRtpPacket,

talk/owt/sdk/wasm/main.cc

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,10 @@
22
//
33
// SPDX-License-Identifier: Apache-2.0
44

5-
#include <emscripten/bind.h>
65
#include <iostream>
7-
#include "third_party/webrtc/rtc_base/strings/json.h"
86
#include "talk/owt/sdk/wasm/binding.h"
97

108
int main(int argc, char** argv) {
11-
Json::Value in_s("foo");
12-
std::string out;
13-
rtc::GetStringFromJson(in_s, &out);
14-
std::cout << out << std::endl;
15-
16-
printf("WASM main.\n");
9+
owt::wasm::MediaSession::Get();
1710
return 0;
1811
}

talk/owt/sdk/wasm/media_session.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
namespace owt {
1111
namespace wasm {
12+
1213
MediaSession::MediaSession()
1314
: task_queue_factory_(webrtc::CreateTaskQueueStdlibFactory()),
1415
event_log_factory_(std::make_unique<webrtc::RtcEventLogFactory>(
@@ -50,6 +51,16 @@ std::shared_ptr<RtpVideoReceiver> MediaSession::CreateRtpVideoReceiver(
5051
return video_receiver_;
5152
}
5253

54+
std::once_flag create_media_session_flag;
55+
std::shared_ptr<MediaSession> media_session;
56+
57+
MediaSession* MediaSession::Get() {
58+
std::call_once(create_media_session_flag,
59+
[] { media_session = std::make_shared<MediaSession>(); });
60+
return media_session.get();
61+
}
62+
63+
5364
void MediaSession::SetRtcpCallback(emscripten::val callback) {
5465
rtcp_callback_ = callback;
5566
}

talk/owt/sdk/wasm/media_session.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ class MediaSession : public webrtc::Transport {
1818
public:
1919
explicit MediaSession();
2020
virtual ~MediaSession() = default;
21+
22+
static MediaSession* Get();
23+
2124
std::shared_ptr<RtpVideoReceiver> CreateRtpVideoReceiver(
2225
uint32_t remote_ssrc);
2326
void SetRtcpCallback(emscripten::val callback);

0 commit comments

Comments
 (0)