startEmbeddedContent( element ) {

		if( element ) {

			const isSpeakerNotesWindow = this.Reveal.isSpeakerNotes();

			// Restart GIFs
			queryAll( element, 'img[src$=".gif"]' ).forEach( el => {
				// Setting the same unchanged source like this was confirmed
				// to work in Chrome, FF & Safari
				el.setAttribute( 'src', el.getAttribute( 'src' ) );
			} );

			// HTML5 media elements
			queryAll( element, 'video, audio' ).forEach( el => {
				if( closest( el, '.fragment' ) && !closest( el, '.fragment.visible' ) ) {
					return;
				}

				// Prefer an explicit global autoplay setting
				let autoplay = this.Reveal.getConfig().autoPlayMedia;

				// If no global setting is available, fall back on the element's
				// own autoplay setting
				if( typeof autoplay !== 'boolean' ) {
					autoplay = el.hasAttribute( 'data-autoplay' ) || !!closest( el, '.slide-background' );
				}

				if( autoplay && typeof el.play === 'function' ) {

					// In the speaker view we only auto-play muted media
					if( isSpeakerNotesWindow && !el.muted ) return;

					// If the media is ready, start playback
					if( el.readyState > 1 ) {
						this.startEmbeddedMedia( { target: el } );
					}
					// Mobile devices never fire a loaded event so instead
					// of waiting, we initiate playback
					else if( isMobile ) {
						let promise = el.play();

						// If autoplay does not work, ensure that the controls are visible so
						// that the viewer can start the media on their own
						if( promise && typeof promise.catch === 'function' && el.controls === false ) {
							promise.catch( () => {
								el.controls = true;

								// Once the video does start playing, hide the controls again
								el.addEventListener( 'play', () => {
									el.controls = false;
								} );
							} );
						}
					}
					// If the media isn't loaded, wait before playing
					else {
						el.removeEventListener( 'loadeddata', this.startEmbeddedMedia ); // remove first to avoid dupes
						el.addEventListener( 'loadeddata', this.startEmbeddedMedia );
					}

				}
			} );

			// Don't play iframe content in the speaker view since we can't
			// guarantee that it's muted
			if( !isSpeakerNotesWindow ) {

				// Normal iframes
				queryAll( element, 'iframe[src]' ).forEach( el => {
					if( closest( el, '.fragment' ) && !closest( el, '.fragment.visible' ) ) {
						return;
					}

					this.startEmbeddedIframe( { target: el } );
				} );

				// Lazy loading iframes
				queryAll( element, 'iframe[data-src]' ).forEach( el => {
					if( closest( el, '.fragment' ) && !closest( el, '.fragment.visible' ) ) {
						return;
					}

					if( el.getAttribute( 'src' ) !== el.getAttribute( 'data-src' ) ) {
						el.removeEventListener( 'load', this.startEmbeddedIframe ); // remove first to avoid dupes
						el.addEventListener( 'load', this.startEmbeddedIframe );
						el.setAttribute( 'src', el.getAttribute( 'data-src' ) );
					}
				} );

			}

		}

	}
Start playback of any embedded content inside of
the given element.

@param {HTMLElement} element