Numerous bug fixes, including strides
This commit is contained in:
@@ -98,7 +98,7 @@ static int microphone_perform(CHiPubNode *pubn) {
|
||||
size_t width = roundf(CHi_Time_GetDelta(pubn->ng) * 48000.f);
|
||||
do {
|
||||
}while((node->paBufferWriteIdx - node->paBufferReadIdx + pabufsize) % pabufsize < width); // Wait until available
|
||||
CHiImage *ret = CHi_Image_New(2, 1, 2 * width, width, 1, NULL);
|
||||
CHiImage *ret = CHi_Image_New(2, 1, (2 * width + 15) & ~15, width, 1, NULL);
|
||||
if(node->paBufferReadIdx + width >= pabufsize) {
|
||||
memcpy(ret->data16, node->paBuffer + node->paBufferReadIdx, sizeof(*node->paBuffer) * (pabufsize - node->paBufferReadIdx));
|
||||
memcpy(ret->data16 + pabufsize - node->paBufferReadIdx, node->paBuffer, sizeof(*node->paBuffer) * (width - pabufsize + node->paBufferReadIdx));
|
||||
|
||||
14
hi/node.c
14
hi/node.c
@@ -663,13 +663,15 @@ static int constantsample_perform(CHiPubNode *node) {
|
||||
size_t w = sz->data.vec4[0] < 1 ? 1 : sz->data.vec4[0];
|
||||
size_t h = sz->data.vec4[1] < 1 ? 1 : sz->data.vec4[1];
|
||||
|
||||
CHiImage *img = CHi_Image_New(2, 4, 8 * w, w, h, NULL);
|
||||
CHiImage *img = CHi_Image_New(2, 4, 8 * ((w + 1) & ~1), w, h, NULL);
|
||||
if(CHi_Node_Active(node)) {
|
||||
for(size_t i = 0; i < w * h; i++) {
|
||||
img->data16[i * 4 + 0] = sink->data.vec4[2] * 65535;
|
||||
img->data16[i * 4 + 1] = sink->data.vec4[1] * 65535;
|
||||
img->data16[i * 4 + 2] = sink->data.vec4[0] * 65535;
|
||||
img->data16[i * 4 + 3] = 65535;
|
||||
for(size_t y = 0; y < h; y++) {
|
||||
for(size_t x = 0; x < w; x++) {
|
||||
img->data16[y * img->stride / 2 + x * 4 + 0] = sink->data.vec4[2] * 65535;
|
||||
img->data16[y * img->stride / 2 + x * 4 + 1] = sink->data.vec4[1] * 65535;
|
||||
img->data16[y * img->stride / 2 + x * 4 + 2] = sink->data.vec4[0] * 65535;
|
||||
img->data16[y * img->stride / 2 + x * 4 + 3] = 65535;
|
||||
}
|
||||
}
|
||||
}
|
||||
node->sources->data.sample = img;
|
||||
|
||||
Reference in New Issue
Block a user