@@ -314,6 +314,12 @@ module.exports = function () {
314314 function ( mediaStream ) {
315315 activeMediaStream = mediaStream ;
316316 var video = getVideoPreview ( ) ;
317+ if ( ! video ) {
318+ // video not ready yet
319+ const code = currentCameraIndex ? 4 : 3
320+ error ( code ) // FRONT_CAMERA_UNAVAILABLE : BACK_CAMERA_UNAVAILABLE
321+ return
322+ }
317323 // Older browsers may not have srcObject
318324 if ( "srcObject" in video ) {
319325 video . srcObject = mediaStream ;
@@ -337,6 +343,9 @@ module.exports = function () {
337343 tempCanvas . height = camera . height ;
338344 tempCanvas . width = camera . width ;
339345 var tempCanvasContext = tempCanvas . getContext ( "2d" ) ;
346+ // Mirror horizontally: https://stackoverflow.com/a/3129152/1237919
347+ tempCanvasContext . translate ( tempCanvas . width , 0 )
348+ tempCanvasContext . scale ( - 1 , 1 )
340349 tempCanvasContext . drawImage (
341350 videoElement ,
342351 0 ,
@@ -397,23 +406,22 @@ module.exports = function () {
397406 "display:block;position:fixed;top:50%;left:50%;" +
398407 "width:auto;height:auto;min-width:100%;min-height:100%;z-index:" +
399408 ZINDEXES . preview +
400- ";-moz-transform: translateX(-50%) translateY(-50%);-webkit-transform: " +
401- "translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);" +
409+ ";transform:translateX(-50%) translateY(-50%) rotateY(180deg);" +
402410 "background-size:cover;background-position:50% 50%;background-color:#FFF;"
403411 ) ;
404412 videoPreview . addEventListener ( "loadeddata" , function ( ) {
405413 bringPreviewToFront ( ) ;
406414 } ) ;
407415
416+ // Still image is displayed when preview is paused.
408417 var stillImg = document . createElement ( "div" ) ;
409418 stillImg . setAttribute ( "id" , ELEMENTS . still ) ;
410419 stillImg . setAttribute (
411420 "style" ,
412421 "display:block;position:fixed;top:50%;left:50%;visibility: hidden;" +
413422 "width:auto;height:auto;min-width:100%;min-height:100%;z-index:" +
414423 ZINDEXES . still +
415- ";-moz-transform: translateX(-50%) translateY(-50%);-webkit-transform: " +
416- "translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);" +
424+ ";transform:translateX(-50%) translateY(-50%);" +
417425 "background-size:cover;background-position:50% 50%;background-color:#FFF;"
418426 ) ;
419427
0 commit comments