@@ -23,6 +23,7 @@ import MenuIcon from '../../Assets/Icons/More';
2323import MicIcon from '../../Assets/Icons/Mic' ;
2424import MicOffIcon from '../../Assets/Icons/MicOff' ;
2525import { closeCallPanel } from '../../Actions/Call' ;
26+ import { isFirefox } from '../../Calls/P2P/P2PSdpBuilder' ;
2627import { p2pGetCallStatus , p2pIsCallReady } from '../../Calls/Utils' ;
2728import { getUserFullName } from '../../Utils/User' ;
2829import { stopPropagation } from '../../Utils/Message' ;
@@ -31,6 +32,8 @@ import LStore from '../../Stores/LocalizationStore';
3132import UserStore from '../../Stores/UserStore' ;
3233import './CallPanel.css' ;
3334
35+ const SUPPORTS_ROTATION = true ;
36+
3437class CallPanel extends React . Component {
3538 constructor ( props ) {
3639 super ( props ) ;
@@ -255,6 +258,13 @@ class CallPanel extends React.Component {
255258
256259 let screenSharing = currentCall && Boolean ( currentCall . screenStream ) ;
257260
261+ let outputVideoStyle = null ;
262+ if ( SUPPORTS_ROTATION && outputMediaState && isFirefox ( ) ) {
263+ outputVideoStyle = {
264+ transform : `rotate(${ outputMediaState . videoRotation } deg)`
265+ } ;
266+ }
267+
258268 return (
259269 < div className = { classNames ( 'group-call-panel' , { 'full-screen' : fullScreen } ) } ref = { this . callPanelRef } >
260270 < div className = 'group-call-panel-header' >
@@ -330,7 +340,7 @@ class CallPanel extends React.Component {
330340 </ Popover >
331341 </ div >
332342 < div className = 'call-panel-content scrollbars-hidden' onDoubleClick = { this . handleFullScreen } >
333- < video id = 'call-output-video' className = { outputMediaState && outputMediaState . videoState === 'active' ? 'call-video-active' : 'call-video-inactive' } autoPlay = { true } muted = { false } />
343+ < video id = 'call-output-video' style = { outputVideoStyle } className = { outputMediaState && outputMediaState . videoState === 'active' ? 'call-video-active' : 'call-video-inactive' } autoPlay = { true } muted = { false } />
334344 < video id = 'call-input-video' className = { inputMediaState && inputMediaState . videoState === 'active' ? 'call-video-active' : 'call-video-inactive' } autoPlay = { true } muted = { true } />
335345 </ div >
336346 { outputMediaState && outputMediaState . muted && (
0 commit comments