Skip to content

Commit 1e166c6

Browse files
committed
Improve chapel-webcam demo.
1 parent b129992 commit 1e166c6

2 files changed

Lines changed: 30 additions & 40 deletions

File tree

demos/video/chapel-webcam/smol.chpl

Lines changed: 19 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -56,56 +56,35 @@ export proc getNewFrame(ref frame: [] real(32),height: int, width: int,channels:
5656
writeln("FPS: ", 1.0 / dt);
5757
const shape = (height,width,channels);
5858
const frameDom = utils.domainFromShape((...shape));
59-
const shapedFrame = [idx in frameDom] frame[utils.linearIdx(shape,idx)];
60-
61-
var ndframe = new ndarray(shapedFrame);
62-
63-
// const nf = ndframe.flatten().data;
64-
// return nf;
65-
// var ndframe = new ndarray(real(32),shape);
66-
// ndframe.data = reshape(frame,ndframe.domain);
67-
// var bt = Bridge.model_forward_style_transfer(model,ndframe : Bridge.tensorHandle(real(32)));
68-
// writeln("Copying data 1");
69-
// ndframe = bt : ndframe.type;
70-
71-
// var bt = Bridge.model_forward(model,ndframe : Bridge.tensorHandle(real(32)));
7259

60+
var btFrame: Bridge.bridge_tensor_t = Bridge.createBridgeTensorWithShape(frame,shape);
7361
var bt: Bridge.bridge_tensor_t;
7462
if modelPath == "sobel.pt" then
75-
bt = Bridge.model_forward(model,ndframe : Bridge.tensorHandle(real(32)));
63+
bt = Bridge.model_forward(model,btFrame);
7664
else
77-
bt = Bridge.model_forward_style_transfer(model,ndframe : Bridge.tensorHandle(real(32)));
65+
bt = Bridge.model_forward_style_transfer(model,btFrame);
7866

79-
// ndframe.loadFromBridgeTensor(bt);
80-
const nextNDFrame = bt : ndarray(3, real(32));
8167

82-
forall i in 0..<frame.size {
83-
const idx = utils.indexAt(i,(...shape));
84-
ref color = frame[i];
85-
color = nextNDFrame.data[idx];
86-
}
87-
88-
lastFrame = getTime();
89-
90-
return frame;
9168

69+
const nextNDFrame = bt : ndarray(3, real(32));
9270
const flattenedNextFrame = nextNDFrame.flatten().data;
71+
lastFrame = getTime();
9372
return flattenedNextFrame;
9473

95-
forall i in 0..<frame.size {
96-
const idx = utils.indexAt(i,(...shape));
97-
const (h,w,c) = idx;
98-
const (u,v) = (h:real(64)/height,w:real(64)/width);
99-
ref color = frame[i];
100-
// if h < width {
101-
// frame[utils.linearIdx(shape,(h,w,c))] = frame[utils.linearIdx(shape,(h,w,c-1))];
102-
// }
103-
// if h < width {
104-
// frame[utils.linearIdx(shape,(h,w,0))] *= Math.sin(2.0*t + 5.0 * u) : real(32);
105-
// }
106-
color *= (Math.abs(Math.sin(2.0*t + 5.0 * v)) * Math.abs(Math.sin(2.0*t + 5.0 * u))) : real(32);
107-
}
108-
return frame;
74+
// forall i in 0..<frame.size {
75+
// const idx = utils.indexAt(i,(...shape));
76+
// const (h,w,c) = idx;
77+
// const (u,v) = (h:real(64)/height,w:real(64)/width);
78+
// ref color = frame[i];
79+
// // if h < width {
80+
// // frame[utils.linearIdx(shape,(h,w,c))] = frame[utils.linearIdx(shape,(h,w,c-1))];
81+
// // }
82+
// // if h < width {
83+
// // frame[utils.linearIdx(shape,(h,w,0))] *= Math.sin(2.0*t + 5.0 * u) : real(32);
84+
// // }
85+
// color *= (Math.abs(Math.sin(2.0*t + 5.0 * v)) * Math.abs(Math.sin(2.0*t + 5.0 * u))) : real(32);
86+
// }
87+
// return frame;
10988
}
11089

11190

lib/Bridge.chpl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,5 +172,16 @@ module Bridge {
172172
return result;
173173
}
174174

175+
proc createBridgeTensorWithShape(const ref data: [] real(32),shape: ?rank*int): bridge_tensor_t {
176+
var result: bridge_tensor_t;
177+
result.data = c_ptrToConst(data) : c_ptr(real(32));
178+
result.sizes = allocate(int(32),rank);
179+
result.created_by_c = false;
180+
for i in 0..<rank do
181+
result.sizes[i] = shape(i) : int(32);
182+
result.dim = rank;
183+
return result;
184+
}
185+
175186

176187
}

0 commit comments

Comments
 (0)