blob: 707cf067e0ac4e626c98f64e1a13d2920de07d4e [file] [log] [blame] [edit]
<!DOCTYPE html>
<!--
* Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree.
-->
<html>
<head>
<meta charset="utf-8">
<meta name="description" content="WebRTC code samples">
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1, maximum-scale=1">
<meta itemprop="description" content="Client-side WebRTC code samples">
<meta itemprop="image" content="../../../images/webrtc-icon-192x192.png">
<meta itemprop="name" content="WebRTC code samples">
<meta name="mobile-web-app-capable" content="yes">
<meta id="theme-color" name="theme-color" content="#ffffff">
<base target="_blank">
<title>Video processing in a Worker</title>
<link rel="icon" sizes="192x192" href="../../../images/webrtc-icon-192x192.png">
<link href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="../../../css/main.css"/>
<link rel="stylesheet" href="css/main.css"/>
</head>
<body>
<div id="container">
<h1><a href="//webrtc.github.io/samples/" title="WebRTC samples homepage">WebRTC samples</a> <span>Processing video data with a Worker</span>
</h1>
<video id="source" autoplay></video>
<canvas id="canvas-source" style="display:none"></canvas>
<canvas id="canvas-result" style="display:none"></canvas>
<video id="result" autoplay></video>
<p>The camera is captured to a MediaStreamTrack, which is turned into a
WHATWG Stream of ImageData objects by means of a canvas, and a red
square is added.</p>
<p>The stream is sent to a Worker, which returns a new stream containing
the same video data.</p>
<p>This is then mapped back to a MediaStream using another canvas.</p>
<p>The chief purpose of the demo is to demonstrate that this is doable,
but that performance can be improved significantly.</p>
<p>NOTE: This works only on Chrome 76 and above with experimental Web
features enabled, since it depends on transferable Streams.</p>
<p>A similar demo, without the worker process, is on the <a href="../canvas-filter/">canvas filter</a> demo.</p>
<a href="https://github.com/webrtc/samples/tree/gh-pages/src/content/capture/worker-process"
title="View source for this page on GitHub" id="viewSource">View source on GitHub</a>
</div>
<script src="js/main.js"></script>
<script src="../../../js/lib/ga.js"></script>
</body>
</html>