@tensorflow/tfjs-core
Version:
Hardware-accelerated JavaScript library for machine intelligence
66 lines • 2.91 kB
JavaScript
;
/**
* @license
* Copyright 2019 Google LLC. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =============================================================================
*/
Object.defineProperty(exports, "__esModule", { value: true });
var environment_1 = require("../../environment");
var kernel_registry_1 = require("../../kernel_registry");
var from_pixels_gpu_1 = require("./from_pixels_gpu");
var from_pixels_packed_gpu_1 = require("./from_pixels_packed_gpu");
var tex_util_1 = require("./tex_util");
kernel_registry_1.registerKernel({
kernelName: 'FromPixels',
backendName: 'webgl',
kernelFunc: fromPixels,
});
var fromPixels2DContext;
function fromPixels(args) {
var inputs = args.inputs, backend = args.backend, attrs = args.attrs;
var pixels = inputs.pixels;
var numChannels = attrs.numChannels;
var isVideo = typeof (HTMLVideoElement) !== 'undefined' &&
pixels instanceof HTMLVideoElement;
var isImage = typeof (HTMLImageElement) !== 'undefined' &&
pixels instanceof HTMLImageElement;
var _a = isVideo ?
[
pixels.videoWidth,
pixels.videoHeight
] :
[pixels.width, pixels.height], width = _a[0], height = _a[1];
var texShape = [height, width];
var outShape = [height, width, numChannels];
if (isImage || isVideo) {
if (fromPixels2DContext == null) {
fromPixels2DContext = document.createElement('canvas').getContext('2d');
}
fromPixels2DContext.canvas.width = width;
fromPixels2DContext.canvas.height = height;
fromPixels2DContext.drawImage(pixels, 0, 0, width, height);
pixels = fromPixels2DContext.canvas;
}
var tempPixelHandle = backend.makeTensorInfo(texShape, 'int32');
// This is a byte texture with pixels.
backend.texData.get(tempPixelHandle.dataId).usage = tex_util_1.TextureUsage.PIXELS;
backend.gpgpu.uploadPixelDataToTexture(backend.getTexture(tempPixelHandle.dataId), pixels);
var program = environment_1.env().getBool('WEBGL_PACK') ?
new from_pixels_packed_gpu_1.FromPixelsPackedProgram(outShape) :
new from_pixels_gpu_1.FromPixelsProgram(outShape);
var res = backend.runWebGLProgram(program, [tempPixelHandle], 'int32');
backend.disposeData(tempPixelHandle.dataId);
return res;
}
//# sourceMappingURL=fromPixels.js.map