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

Commit 84ab28f

Browse files
authored
CG build claims to support all codecs. (#717)
This is a workaround for CG build. As CG server always uses encoded video input, WebRTC cannot select codecs based on negotiation. It is assumed CG apps take care of actual codecs.
1 parent 26eacf9 commit 84ab28f

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

talk/owt/BUILD.gn

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,13 @@ static_library("owt_sdk_base") {
227227

228228
defines = [ "USE_BUILTIN_SW_CODECS" ]
229229

230+
if (owt_cg_server) {
231+
defines += [ "OWT_CG_SERVER" ]
232+
}
233+
if (owt_cg_client) {
234+
defines += [ "OWT_CG_CLIENT" ]
235+
}
236+
230237
if (owt_msdk_header_root != "") {
231238
include_dirs += [ owt_msdk_header_root ]
232239
}
@@ -295,7 +302,7 @@ static_library("owt_sdk_base") {
295302
"sdk/base/win/videorendererd3d11.cc",
296303
"sdk/base/win/videorendererd3d11.h",
297304
]
298-
if (owt_msdk_header_root != "" || owt_ffmpeg_root != "") {
305+
if (owt_msdk_header_root != "" || owt_ffmpeg_root != ""||owt_cg_server) {
299306
sources += [
300307
"sdk/base/win/externalvideodecoderfactory.cc",
301308
"sdk/base/win/externalvideodecoderfactory.h",
@@ -420,6 +427,9 @@ static_library("owt_sdk_p2p") {
420427
if (owt_cg_server) {
421428
defines = [ "OWT_CG_SERVER" ]
422429
}
430+
if (owt_cg_client) {
431+
defines = [ "OWT_CG_CLIENT" ]
432+
}
423433
}
424434
static_library("owt_sdk_conf") {
425435
deps = [

talk/owt/sdk/base/peerconnectiondependencyfactory.cc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,11 @@ void PeerConnectionDependencyFactory::
190190
if (encoded_frame_) {
191191
encoder_factory.reset(new EncodedVideoEncoderFactory());
192192
} else if (render_hardware_acceleration_enabled_) {
193-
#if defined(WEBRTC_WIN) && defined(OWT_USE_MSDK)
193+
#if defined(OWT_CG_CLIENT)
194+
// CG client app takes care of external encoder. If it's expected to receive
195+
// video streams, an encoder must be provided.
196+
encoder_factory.reset(new ExternalVideoEncoderFactory());
197+
#elif defined(WEBRTC_WIN) && defined(OWT_USE_MSDK)
194198
encoder_factory.reset(new ExternalVideoEncoderFactory());
195199
#else
196200
// For Linux HW encoder pending verification.
@@ -204,10 +208,12 @@ void PeerConnectionDependencyFactory::
204208
decoder_factory.reset(new CustomizedVideoDecoderFactory(
205209
GlobalConfiguration::GetCustomizedVideoDecoder()));
206210
} else if (render_hardware_acceleration_enabled_) {
207-
#if defined(OWT_USE_MSDK) || defined(OWT_USE_FFMPEG)
211+
#if defined(OWT_USE_MSDK) || defined(OWT_USE_FFMPEG) || defined(OWT_CG_SERVER)
208212
#if defined(WEBRTC_WIN)
209213
decoder_factory.reset(new ExternalVideoDecoderFactory(nullptr));
210-
#else
214+
#elif !defined(OWT_CG_SERVER)
215+
// Linux CG server is supposed to have external decoder so it can receives
216+
// video streams from client.
211217
decoder_factory.reset(new ExternalVideoDecoderFactory());
212218
#endif
213219
#else

0 commit comments

Comments
 (0)