138 lines
4.1 KiB
JavaScript
138 lines
4.1 KiB
JavaScript
// @flow
|
|
|
|
import type { Dispatch } from 'redux';
|
|
|
|
import {
|
|
SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_LARGE_VIDEO,
|
|
SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_SCREEN_SHARING_FILMSTRIP,
|
|
SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_STAGE_FILMSTRIP,
|
|
SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_TILE_VIEW,
|
|
SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_VERTICAL_FILMSTRIP,
|
|
SET_PREFERRED_VIDEO_QUALITY
|
|
} from './actionTypes';
|
|
import { MAX_VIDEO_QUALITY, VIDEO_QUALITY_LEVELS } from './constants';
|
|
import logger from './logger';
|
|
|
|
/**
|
|
* Sets the max frame height that should be received for the large video.
|
|
*
|
|
* @param {number} maxReceiverVideoQuality - The max video frame height to
|
|
* receive.
|
|
* @returns {{
|
|
* type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_LARGE_VIDEO,
|
|
* maxReceiverVideoQuality: number
|
|
* }}
|
|
*/
|
|
export function setMaxReceiverVideoQualityForLargeVideo(maxReceiverVideoQuality: number) {
|
|
return {
|
|
type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_LARGE_VIDEO,
|
|
maxReceiverVideoQuality
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sets the max frame height that should be received for the screen sharing filmstrip particpant.
|
|
*
|
|
* @param {number} maxReceiverVideoQuality - The max video frame height to
|
|
* receive.
|
|
* @returns {{
|
|
* type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_SCREEN_SHARING_FILMSTRIP,
|
|
* maxReceiverVideoQuality: number
|
|
* }}
|
|
*/
|
|
export function setMaxReceiverVideoQualityForScreenSharingFilmstrip(maxReceiverVideoQuality: number) {
|
|
return {
|
|
type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_SCREEN_SHARING_FILMSTRIP,
|
|
maxReceiverVideoQuality
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sets the max frame height that should be received from remote videos for the stage filmstrip.
|
|
*
|
|
* @param {number} maxReceiverVideoQuality - The max video frame height to
|
|
* receive.
|
|
* @returns {{
|
|
* type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_STAGE_FILMSTRIP,
|
|
* maxReceiverVideoQuality: number
|
|
* }}
|
|
*/
|
|
export function setMaxReceiverVideoQualityForStageFilmstrip(maxReceiverVideoQuality: number) {
|
|
return {
|
|
type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_STAGE_FILMSTRIP,
|
|
maxReceiverVideoQuality
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sets the max frame height that should be received from remote videos in tile view.
|
|
*
|
|
* @param {number} maxReceiverVideoQuality - The max video frame height to
|
|
* receive.
|
|
* @returns {{
|
|
* type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_TILE_VIEW,
|
|
* maxReceiverVideoQuality: number
|
|
* }}
|
|
*/
|
|
export function setMaxReceiverVideoQualityForTileView(maxReceiverVideoQuality: number) {
|
|
return {
|
|
type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_TILE_VIEW,
|
|
maxReceiverVideoQuality
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sets the max frame height that should be received from remote videos for the vertical filmstrip.
|
|
*
|
|
* @param {number} maxReceiverVideoQuality - The max video frame height to
|
|
* receive.
|
|
* @returns {{
|
|
* type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_VERTICAL_FILMSTRIP,
|
|
* maxReceiverVideoQuality: number
|
|
* }}
|
|
*/
|
|
export function setMaxReceiverVideoQualityForVerticalFilmstrip(maxReceiverVideoQuality: number) {
|
|
return {
|
|
type: SET_MAX_RECEIVER_VIDEO_QUALITY_FOR_VERTICAL_FILMSTRIP,
|
|
maxReceiverVideoQuality
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sets the max frame height the user prefers to send and receive from the
|
|
* remote participants.
|
|
*
|
|
* @param {number} preferredVideoQuality - The max video resolution to send and
|
|
* receive.
|
|
* @returns {{
|
|
* type: SET_PREFERRED_VIDEO_QUALITY,
|
|
* preferredVideoQuality: number
|
|
* }}
|
|
*/
|
|
export function setPreferredVideoQuality(preferredVideoQuality: number) {
|
|
return {
|
|
type: SET_PREFERRED_VIDEO_QUALITY,
|
|
preferredVideoQuality
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sets the maximum video size the local participant should send and receive from
|
|
* remote participants.
|
|
*
|
|
* @param {number} frameHeight - The user preferred max frame height for send and
|
|
* receive video.
|
|
* @returns {void}
|
|
*/
|
|
export function setVideoQuality(frameHeight: number) {
|
|
return (dispatch: Dispatch<any>) => {
|
|
if (frameHeight < VIDEO_QUALITY_LEVELS.LOW) {
|
|
logger.error(`Invalid frame height for video quality - ${frameHeight}`);
|
|
|
|
return;
|
|
}
|
|
|
|
dispatch(setPreferredVideoQuality(Math.min(frameHeight, MAX_VIDEO_QUALITY)));
|
|
};
|
|
}
|