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

Commit 797b3d6

Browse files
authored
Merge pull request #458 from taste1981/quic_v12
Enable webtransport for native client
2 parents daded0e + c79b0b2 commit 797b3d6

22 files changed

+1856
-342
lines changed

build_overrides/build.gni

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ declare_args() {
7070
# Includes tests.
7171
owt_include_tests = false
7272

73+
# Include quic support
74+
owt_use_quic = false
75+
owt_quic_header_root = ""
76+
owt_quic_lib_root = ""
77+
7378
# Some non-Chromium builds don't support building java targets.
7479
enable_java_templates = true
7580
}

talk/owt/BUILD.gn

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,14 @@ static_library("owt_sdk_base") {
171171
} else {
172172
defines += [ "OWT_USE_H265" ]
173173
}
174+
175+
if (owt_use_quic) {
176+
defines += [ "OWT_ENABLE_QUIC" ]
177+
if (owt_quic_header_root != "") {
178+
include_dirs += [ owt_quic_header_root ]
179+
}
180+
}
181+
174182
if (is_win || is_linux) {
175183
# Custom audio/video input and output.
176184
# When rebasing libwebrtc to a new version, custom audio/video input/output
@@ -313,6 +321,17 @@ static_library("owt_sdk_conf") {
313321
if (is_clang) {
314322
configs -= [ "//build/config/clang:find_bad_constructs" ]
315323
}
324+
325+
if (owt_use_quic) {
326+
defines = [ "OWT_ENABLE_QUIC" ]
327+
if (owt_quic_header_root != "") {
328+
sources += [
329+
"sdk/conference/conferencewebtransportchannel.cc",
330+
"sdk/conference/conferencewebtransportchannel.h",
331+
]
332+
include_dirs += [ owt_quic_header_root ]
333+
}
334+
}
316335
}
317336
if (is_ios) {
318337
static_library("owt_sdk_objc") {

talk/owt/include/sio_message.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
//
66
#ifndef __SIO_MESSAGE_H__
77
#define __SIO_MESSAGE_H__
8+
89
#include <string>
910
#include <memory>
1011
#include <vector>
@@ -14,6 +15,8 @@
1415
namespace sio
1516
{
1617
using namespace std;
18+
using std::string;
19+
using std::vector;
1720

1821
class message
1922
{

talk/owt/sdk/base/stream.cc

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,27 @@ Stream::Stream()
8282
renderer_impl_(nullptr),
8383
audio_renderer_impl_(nullptr),
8484
d3d9_renderer_impl_(nullptr),
85+
#ifdef OWT_ENABLE_QUIC
86+
source_(AudioSourceInfo::kUnknown,
87+
VideoSourceInfo::kUnknown,
88+
DataSourceInfo::kUnknown),
89+
#else
8590
source_(AudioSourceInfo::kUnknown, VideoSourceInfo::kUnknown),
91+
#endif
8692
ended_(false),
8793
id_("") {}
8894
Stream::Stream(const std::string& id)
8995
: media_stream_(nullptr),
9096
renderer_impl_(nullptr),
9197
audio_renderer_impl_(nullptr),
9298
d3d9_renderer_impl_(nullptr),
99+
#ifdef OWT_ENABLE_QUIC
100+
source_(AudioSourceInfo::kUnknown,
101+
VideoSourceInfo::kUnknown,
102+
DataSourceInfo::kUnknown),
103+
#else
93104
source_(AudioSourceInfo::kUnknown, VideoSourceInfo::kUnknown),
105+
#endif
94106
ended_(false),
95107
id_(id) {}
96108
#elif defined(WEBRTC_LINUX)
@@ -439,6 +451,21 @@ std::shared_ptr<LocalStream> LocalStream::Create(
439451
}
440452
#endif
441453

454+
#ifdef OWT_ENABLE_QUIC
455+
LocalStream::LocalStream(std::shared_ptr<QuicStream> quic_stream) {
456+
quic_stream_ = quic_stream;
457+
has_data_ = true;
458+
}
459+
460+
std::shared_ptr<LocalStream> LocalStream::Create(
461+
std::shared_ptr<QuicStream> writable_stream,
462+
int& error_code) {
463+
std::shared_ptr<LocalStream> stream(new LocalStream(writable_stream));
464+
error_code = 0;
465+
return stream;
466+
}
467+
#endif
468+
442469
LocalStream::LocalStream(const LocalCameraStreamParameters& parameters,
443470
int& error_code) {
444471
if (!parameters.AudioEnabled() && !parameters.VideoEnabled()) {
@@ -654,6 +681,7 @@ LocalStream::LocalStream(
654681
media_stream_->AddRef();
655682
}
656683
#endif
684+
657685
RemoteStream::RemoteStream(MediaStreamInterface* media_stream,
658686
const std::string& from)
659687
: origin_(from) {
@@ -662,6 +690,7 @@ RemoteStream::RemoteStream(MediaStreamInterface* media_stream,
662690
media_stream_ = media_stream;
663691
media_stream_->AddRef();
664692
}
693+
665694
RemoteStream::RemoteStream(
666695
const std::string& id,
667696
const std::string& from,
@@ -671,14 +700,63 @@ RemoteStream::RemoteStream(
671700
origin_(from),
672701
subscription_capabilities_(subscription_capabilities),
673702
publication_settings_(publication_settings) {}
703+
674704
std::string RemoteStream::Origin() {
675705
return origin_;
676706
}
707+
708+
RemoteStream::RemoteStream(const std::string& id, const std::string& from)
709+
:Stream(id),
710+
origin_(from) {
711+
}
712+
677713
void RemoteStream::MediaStream(MediaStreamInterface* media_stream) {
678714
Stream::MediaStream(media_stream);
679715
}
680716
MediaStreamInterface* RemoteStream::MediaStream() {
681717
return media_stream_;
682718
}
719+
720+
#ifdef OWT_ENABLE_QUIC
721+
QuicStream::QuicStream(owt::quic::QuicTransportStreamInterface* quic_stream,
722+
const std::string& session_id)
723+
: quic_stream_(quic_stream), session_id_(session_id), can_read_(true),
724+
can_write_(true), fin_read_(false) {
725+
}
726+
727+
QuicStream::~QuicStream() {
728+
if (quic_stream_) {
729+
delete quic_stream_;
730+
quic_stream_ = nullptr;
731+
}
732+
}
733+
734+
size_t QuicStream::Write(uint8_t* data, size_t length) {
735+
if (quic_stream_ && !fin_read_ && data != nullptr && length > 0) {
736+
return quic_stream_->Write(data, length);
737+
}
738+
return 0;
739+
}
740+
741+
size_t QuicStream::Read(uint8_t* data, size_t length) {
742+
if (quic_stream_ && data != nullptr && length > 0 && !fin_read_) {
743+
return quic_stream_->Read(data, length);
744+
} else {
745+
return 0;
746+
}
747+
}
748+
749+
size_t QuicStream::ReadableBytes() const {
750+
if (quic_stream_ && !fin_read_) {
751+
return quic_stream_->ReadableBytes();
752+
} else {
753+
return 0;
754+
}
755+
}
756+
757+
std::shared_ptr<owt::base::QuicStream> LocalStream::Stream() {
758+
return quic_stream_;
759+
}
760+
#endif
683761
} // namespace base
684762
} // namespace owt

0 commit comments

Comments
 (0)