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

Commit 3bb7ed7

Browse files
committed
Replace capabilities with extraCapabilities.
The relationship of each properties in capabilities is OR. When simulcast is enabled, transcoding will be disabled. In this case, capabilities cannot represent a stream's settings, which should be included in capabilites. extraCapabilities doesn't include settings, it only includes transcoding formats for now. "Transcoding formats" means the formats described in optional property of a stream.
1 parent 34861f0 commit 3bb7ed7

File tree

6 files changed

+19
-37
lines changed

6 files changed

+19
-37
lines changed

src/samples/conference/public/scripts/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ const runSocketIOSample = function() {
6565
});
6666
}
6767
let $p = $(`<div id=${stream.id}resolutions> </div>`)
68-
for (const resolution of stream.capabilities.video.resolutions) {
68+
// TODO: Add resolutions from settings.
69+
for (const resolution of stream.extraCapabilities.video.resolutions) {
6970
const button = $('<button/>', {
7071
text: resolution.width + 'x' +
7172
resolution.height,
@@ -180,7 +181,8 @@ const runSocketIOSample = function() {
180181
console.log('Subscription error: ' + err.error.message);
181182
})
182183
});
183-
for (const resolution of stream.capabilities.video.resolutions) {
184+
// TODO: Add resolutions from settings.
185+
for (const resolution of stream.extraCapabilities.video.resolutions) {
184186
const button = $('<button/>', {
185187
text: resolution.width + 'x' +
186188
resolution.height,

src/sdk/base/stream.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,12 @@ export class RemoteStream extends Stream {
168168
*/
169169
this.settings = undefined;
170170
/**
171-
* @member {Owt.Conference.SubscriptionCapabilities} capabilities
171+
* @member {Owt.Conference.SubscriptionCapabilities} extraCapabilities
172172
* @instance
173173
* @memberof Owt.Base.RemoteStream
174-
* @desc Capabilities remote endpoint provides for subscription. This property is only valid in conference mode.
174+
* @desc Extra capabilities remote endpoint provides for subscription. Extra capabilities don't include original settings. This property is only valid in conference mode.
175175
*/
176-
this.capabilities = undefined;
176+
this.extraCapabilities = undefined;
177177
}
178178
}
179179

src/sdk/conference/channel.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -258,27 +258,27 @@ export class ConferencePeerConnectionChannel extends EventDispatcher {
258258
subscribe(stream, options) {
259259
if (options === undefined) {
260260
options = {
261-
audio: !!stream.capabilities.audio,
262-
video: !!stream.capabilities.video,
261+
audio: !!stream.settings.audio,
262+
video: !!stream.settings.video,
263263
};
264264
}
265265
if (typeof options !== 'object') {
266266
return Promise.reject(new TypeError('Options should be an object.'));
267267
}
268268
if (options.audio === undefined) {
269-
options.audio = !!stream.capabilities.audio;
269+
options.audio = !!stream.settings.audio;
270270
}
271271
if (options.video === undefined) {
272-
options.video = !!stream.capabilities.video;
272+
options.video = !!stream.settings.video;
273273
}
274274
if ((options.audio !== undefined && typeof options.audio !== 'object' &&
275275
typeof options.audio !== 'boolean' && options.audio !== null) || (
276276
options.video !== undefined && typeof options.video !== 'object' &&
277277
typeof options.video !== 'boolean' && options.video !== null)) {
278278
return Promise.reject(new TypeError('Invalid options type.'));
279279
}
280-
if (options.audio && !stream.capabilities.audio || (options.video &&
281-
!stream.capabilities.video)) {
280+
if (options.audio && !stream.settings.audio || (options.video &&
281+
!stream.settings.video)) {
282282
return Promise.reject(new ConferenceError(
283283
'options.audio/video cannot be true or an object if there is no '
284284
+ 'audio/video track in remote stream.'

src/sdk/conference/client.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,8 @@ export const ConferenceClient = function(config, signalingImpl) {
260260
const stream = remoteStreams.get(streamInfo.id);
261261
stream.settings = StreamUtilsModule.convertToPublicationSettings(streamInfo
262262
.media);
263-
stream.capabilities = StreamUtilsModule.convertToSubscriptionCapabilities(
263+
stream.extraCapabilities = StreamUtilsModule
264+
.convertToSubscriptionCapabilities(
264265
streamInfo.media);
265266
const streamEvent = new EventModule.OwtEvent('updated');
266267
stream.dispatchEvent(streamEvent);
@@ -283,7 +284,8 @@ export const ConferenceClient = function(config, signalingImpl) {
283284
audioSourceInfo, videoSourceInfo), streamInfo.info.attributes);
284285
stream.settings = StreamUtilsModule.convertToPublicationSettings(
285286
streamInfo.media);
286-
stream.capabilities = StreamUtilsModule.convertToSubscriptionCapabilities(
287+
stream.extraCapabilities = StreamUtilsModule
288+
.convertToSubscriptionCapabilities(
287289
streamInfo.media);
288290
return stream;
289291
}

src/sdk/conference/mixedstream.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ export class RemoteMixedStream extends StreamModule.RemoteStream {
3333

3434
this.settings = StreamUtilsModule.convertToPublicationSettings(info.media);
3535

36-
this.capabilities = new StreamUtilsModule.convertToSubscriptionCapabilities(
36+
this.extraCapabilities = new StreamUtilsModule
37+
.convertToSubscriptionCapabilities(
3738
info.media);
3839
}
3940
}

src/sdk/conference/streamutils.js

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,6 @@ export function convertToSubscriptionCapabilities(mediaInfo) {
9292
let audio; let video;
9393
if (mediaInfo.audio) {
9494
const audioCodecs = [];
95-
if (mediaInfo.audio && mediaInfo.audio.format) {
96-
audioCodecs.push(new CodecModule.AudioCodecParameters(
97-
mediaInfo.audio.format.codec, mediaInfo.audio.format.channelNum,
98-
mediaInfo.audio.format.sampleRate));
99-
}
10095
if (mediaInfo.audio && mediaInfo.audio.optional &&
10196
mediaInfo.audio.optional.format) {
10297
for (const audioCodecInfo of mediaInfo.audio.optional.format) {
@@ -111,10 +106,6 @@ export function convertToSubscriptionCapabilities(mediaInfo) {
111106
}
112107
if (mediaInfo.video) {
113108
const videoCodecs = [];
114-
if (mediaInfo.video && mediaInfo.video.format) {
115-
videoCodecs.push(new CodecModule.VideoCodecParameters(
116-
mediaInfo.video.format.codec, mediaInfo.video.format.profile));
117-
}
118109
if (mediaInfo.video && mediaInfo.video.optional &&
119110
mediaInfo.video.optional.format) {
120111
for (const videoCodecInfo of mediaInfo.video.optional.format) {
@@ -127,12 +118,6 @@ export function convertToSubscriptionCapabilities(mediaInfo) {
127118
const resolutions = Array.from(
128119
mediaInfo.video.optional.parameters.resolution,
129120
(r) => new MediaFormatModule.Resolution(r.width, r.height));
130-
if (mediaInfo.video && mediaInfo.video.parameters &&
131-
mediaInfo.video.parameters.resolution) {
132-
resolutions.push(new MediaFormatModule.Resolution(
133-
mediaInfo.video.parameters.resolution.width,
134-
mediaInfo.video.parameters.resolution.height));
135-
}
136121
resolutions.sort(sortResolutions);
137122
const bitrates = Array.from(
138123
mediaInfo.video.optional.parameters.bitrate,
@@ -141,17 +126,9 @@ export function convertToSubscriptionCapabilities(mediaInfo) {
141126
bitrates.sort(sortNumbers);
142127
const frameRates = JSON.parse(
143128
JSON.stringify(mediaInfo.video.optional.parameters.framerate));
144-
if (mediaInfo.video && mediaInfo.video.parameters &&
145-
mediaInfo.video.parameters.framerate) {
146-
frameRates.push(mediaInfo.video.parameters.framerate);
147-
}
148129
frameRates.sort(sortNumbers);
149130
const keyFrameIntervals = JSON.parse(
150131
JSON.stringify(mediaInfo.video.optional.parameters.keyFrameInterval));
151-
if (mediaInfo.video && mediaInfo.video.parameters &&
152-
mediaInfo.video.parameters.keyFrameInterval) {
153-
keyFrameIntervals.push(mediaInfo.video.parameters.keyFrameInterval);
154-
}
155132
keyFrameIntervals.sort(sortNumbers);
156133
video = new SubscriptionModule.VideoSubscriptionCapabilities(
157134
videoCodecs, resolutions, frameRates, bitrates, keyFrameIntervals);

0 commit comments

Comments
 (0)