Fix simulcast support
parent
6054cde920
commit
a5b56626f0
|
|
@ -1194,6 +1194,43 @@ export default class RoomClient
|
||||||
meActions.setMyRaiseHandStateInProgress(false));
|
meActions.setMyRaiseHandStateInProgress(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async setMaxSendingSpatialLayer(spatialLayer)
|
||||||
|
{
|
||||||
|
logger.debug('setMaxSendingSpatialLayer() [spatialLayer:%s]', spatialLayer);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (this._webcamProducer)
|
||||||
|
await this._webcamProducer.setMaxSpatialLayer(spatialLayer);
|
||||||
|
else if (this._screenSharingProducer)
|
||||||
|
await this._screenSharingProducer.setMaxSpatialLayer(spatialLayer);
|
||||||
|
}
|
||||||
|
catch (error)
|
||||||
|
{
|
||||||
|
logger.error('setMaxSendingSpatialLayer() | failed:"%o"', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async setConsumerPreferredLayers(consumerId, spatialLayer, temporalLayer)
|
||||||
|
{
|
||||||
|
logger.debug(
|
||||||
|
'setConsumerPreferredLayers() [consumerId:%s, spatialLayer:%s, temporalLayer:%s]',
|
||||||
|
consumerId, spatialLayer, temporalLayer);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await this.sendRequest(
|
||||||
|
'setConsumerPreferedLayers', { consumerId, spatialLayer, temporalLayer });
|
||||||
|
|
||||||
|
store.dispatch(consumerActions.setConsumerPreferredLayers(
|
||||||
|
consumerId, spatialLayer, temporalLayer));
|
||||||
|
}
|
||||||
|
catch (error)
|
||||||
|
{
|
||||||
|
logger.error('setConsumerPreferredLayers() | failed:"%o"', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async _loadDynamicImports()
|
async _loadDynamicImports()
|
||||||
{
|
{
|
||||||
({ default: WebTorrent } = await import(
|
({ default: WebTorrent } = await import(
|
||||||
|
|
|
||||||
|
|
@ -145,16 +145,6 @@ const Peer = (props) =>
|
||||||
!screenConsumer.remotelyPaused
|
!screenConsumer.remotelyPaused
|
||||||
);
|
);
|
||||||
|
|
||||||
let videoProfile;
|
|
||||||
|
|
||||||
if (webcamConsumer)
|
|
||||||
videoProfile = webcamConsumer.profile;
|
|
||||||
|
|
||||||
let screenProfile;
|
|
||||||
|
|
||||||
if (screenConsumer)
|
|
||||||
screenProfile = screenConsumer.profile;
|
|
||||||
|
|
||||||
const smallScreen = useMediaQuery(theme.breakpoints.down('sm'));
|
const smallScreen = useMediaQuery(theme.breakpoints.down('sm'));
|
||||||
|
|
||||||
const rootStyle =
|
const rootStyle =
|
||||||
|
|
@ -325,11 +315,27 @@ const Peer = (props) =>
|
||||||
peer={peer}
|
peer={peer}
|
||||||
displayName={peer.displayName}
|
displayName={peer.displayName}
|
||||||
showPeerInfo
|
showPeerInfo
|
||||||
|
consumerSpatialLayers={webcamConsumer ? webcamConsumer.spatialLayers : null}
|
||||||
|
consumerTemporalLayers={webcamConsumer ? webcamConsumer.temporalLayers : null}
|
||||||
|
consumerCurrentSpatialLayer={
|
||||||
|
webcamConsumer ? webcamConsumer.currentSpatialLayer : null
|
||||||
|
}
|
||||||
|
consumerCurrentTemporalLayer={
|
||||||
|
webcamConsumer ? webcamConsumer.currentTemporalLayer : null
|
||||||
|
}
|
||||||
|
consumerPreferredSpatialLayer={
|
||||||
|
webcamConsumer ? webcamConsumer.preferredSpatialLayer : null
|
||||||
|
}
|
||||||
|
consumerPreferredTemporalLayer={
|
||||||
|
webcamConsumer ? webcamConsumer.preferredTemporalLayer : null
|
||||||
|
}
|
||||||
|
videoMultiLayer={webcamConsumer && webcamConsumer.type !== 'simple'}
|
||||||
videoTrack={webcamConsumer && webcamConsumer.track}
|
videoTrack={webcamConsumer && webcamConsumer.track}
|
||||||
videoVisible={videoVisible}
|
videoVisible={videoVisible}
|
||||||
videoProfile={videoProfile}
|
|
||||||
audioCodec={micConsumer && micConsumer.codec}
|
audioCodec={micConsumer && micConsumer.codec}
|
||||||
videoCodec={webcamConsumer && webcamConsumer.codec}
|
videoCodec={webcamConsumer && webcamConsumer.codec}
|
||||||
|
audioScore={micConsumer ? micConsumer.score : null}
|
||||||
|
videoScore={webcamConsumer ? webcamConsumer.score : null}
|
||||||
>
|
>
|
||||||
<Volume id={peer.id} />
|
<Volume id={peer.id} />
|
||||||
</VideoView>
|
</VideoView>
|
||||||
|
|
@ -456,9 +462,27 @@ const Peer = (props) =>
|
||||||
<VideoView
|
<VideoView
|
||||||
advancedMode={advancedMode}
|
advancedMode={advancedMode}
|
||||||
videoContain
|
videoContain
|
||||||
|
consumerSpatialLayers={
|
||||||
|
screenConsumer ? screenConsumer.spatialLayers : null
|
||||||
|
}
|
||||||
|
consumerTemporalLayers={
|
||||||
|
screenConsumer ? screenConsumer.temporalLayers : null
|
||||||
|
}
|
||||||
|
consumerCurrentSpatialLayer={
|
||||||
|
screenConsumer ? screenConsumer.currentSpatialLayer : null
|
||||||
|
}
|
||||||
|
consumerCurrentTemporalLayer={
|
||||||
|
screenConsumer ? screenConsumer.currentTemporalLayer : null
|
||||||
|
}
|
||||||
|
consumerPreferredSpatialLayer={
|
||||||
|
screenConsumer ? screenConsumer.preferredSpatialLayer : null
|
||||||
|
}
|
||||||
|
consumerPreferredTemporalLayer={
|
||||||
|
screenConsumer ? screenConsumer.preferredTemporalLayer : null
|
||||||
|
}
|
||||||
|
videoMultiLayer={screenConsumer && screenConsumer.type !== 'simple'}
|
||||||
videoTrack={screenConsumer && screenConsumer.track}
|
videoTrack={screenConsumer && screenConsumer.track}
|
||||||
videoVisible={screenVisible}
|
videoVisible={screenVisible}
|
||||||
videoProfile={screenProfile}
|
|
||||||
videoCodec={screenConsumer && screenConsumer.codec}
|
videoCodec={screenConsumer && screenConsumer.codec}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,15 @@ class VideoView extends React.PureComponent
|
||||||
videoContain,
|
videoContain,
|
||||||
advancedMode,
|
advancedMode,
|
||||||
videoVisible,
|
videoVisible,
|
||||||
videoProfile,
|
videoMultiLayer,
|
||||||
|
// audioScore,
|
||||||
|
// videoScore,
|
||||||
|
// consumerSpatialLayers,
|
||||||
|
// consumerTemporalLayers,
|
||||||
|
consumerCurrentSpatialLayer,
|
||||||
|
consumerCurrentTemporalLayer,
|
||||||
|
consumerPreferredSpatialLayer,
|
||||||
|
consumerPreferredTemporalLayer,
|
||||||
audioCodec,
|
audioCodec,
|
||||||
videoCodec,
|
videoCodec,
|
||||||
onChangeDisplayName,
|
onChangeDisplayName,
|
||||||
|
|
@ -161,7 +169,19 @@ class VideoView extends React.PureComponent
|
||||||
<div className={classes.box}>
|
<div className={classes.box}>
|
||||||
{ audioCodec && <p>{audioCodec}</p> }
|
{ audioCodec && <p>{audioCodec}</p> }
|
||||||
|
|
||||||
{ videoCodec && <p>{videoCodec} {videoProfile}</p> }
|
{ videoCodec &&
|
||||||
|
<p>
|
||||||
|
{videoCodec}
|
||||||
|
</p>
|
||||||
|
}
|
||||||
|
|
||||||
|
{ videoMultiLayer &&
|
||||||
|
<p>
|
||||||
|
{`current spatial-temporal layers: ${consumerCurrentSpatialLayer} ${consumerCurrentTemporalLayer}`}
|
||||||
|
<br />
|
||||||
|
{`preferred spatial-temporal layers: ${consumerPreferredSpatialLayer} ${consumerPreferredTemporalLayer}`}
|
||||||
|
</p>
|
||||||
|
}
|
||||||
|
|
||||||
{ (videoVisible && videoWidth !== null) &&
|
{ (videoVisible && videoWidth !== null) &&
|
||||||
<p>{videoWidth}x{videoHeight}</p>
|
<p>{videoWidth}x{videoHeight}</p>
|
||||||
|
|
@ -202,7 +222,6 @@ class VideoView extends React.PureComponent
|
||||||
className={classnames(classes.video, {
|
className={classnames(classes.video, {
|
||||||
hidden : !videoVisible,
|
hidden : !videoVisible,
|
||||||
'isMe' : isMe && !isScreen,
|
'isMe' : isMe && !isScreen,
|
||||||
loading : videoProfile === 'none',
|
|
||||||
contain : videoContain
|
contain : videoContain
|
||||||
})}
|
})}
|
||||||
autoPlay
|
autoPlay
|
||||||
|
|
@ -301,7 +320,15 @@ VideoView.propTypes =
|
||||||
advancedMode : PropTypes.bool,
|
advancedMode : PropTypes.bool,
|
||||||
videoTrack : PropTypes.any,
|
videoTrack : PropTypes.any,
|
||||||
videoVisible : PropTypes.bool.isRequired,
|
videoVisible : PropTypes.bool.isRequired,
|
||||||
videoProfile : PropTypes.string,
|
consumerSpatialLayers : PropTypes.number,
|
||||||
|
consumerTemporalLayers : PropTypes.number,
|
||||||
|
consumerCurrentSpatialLayer : PropTypes.number,
|
||||||
|
consumerCurrentTemporalLayer : PropTypes.number,
|
||||||
|
consumerPreferredSpatialLayer : PropTypes.number,
|
||||||
|
consumerPreferredTemporalLayer : PropTypes.number,
|
||||||
|
videoMultiLayer : PropTypes.bool,
|
||||||
|
audioScore : PropTypes.any,
|
||||||
|
videoScore : PropTypes.any,
|
||||||
audioCodec : PropTypes.string,
|
audioCodec : PropTypes.string,
|
||||||
videoCodec : PropTypes.string,
|
videoCodec : PropTypes.string,
|
||||||
onChangeDisplayName : PropTypes.func,
|
onChangeDisplayName : PropTypes.func,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue