[Bf-blender-cvs] [fbc379b] decklink: BGE DeckLink: fix extend mode.
Benoit Bolsee
noreply at git.blender.org
Sat Apr 11 20:26:06 CEST 2015
Commit: fbc379b5cf5ebf63e2cfe3b8c8d668dfefa389a5
Author: Benoit Bolsee
Date: Sat Apr 11 20:24:31 2015 +0200
Branches: decklink
https://developer.blender.org/rBfbc379b5cf5ebf63e2cfe3b8c8d668dfefa389a5
BGE DeckLink: fix extend mode.
The algorithm copied from VideoTexture's fast scaling was working only for
shrinking but we also need expanding here. Fixed that.
===================================================================
M source/gameengine/VideoTexture/DeckLink.cpp
===================================================================
diff --git a/source/gameengine/VideoTexture/DeckLink.cpp b/source/gameengine/VideoTexture/DeckLink.cpp
index c0f6c40..d13c8ae 100644
--- a/source/gameengine/VideoTexture/DeckLink.cpp
+++ b/source/gameengine/VideoTexture/DeckLink.cpp
@@ -281,7 +281,7 @@ static bool decklink_ConvImage(u_int *dest, const short *destSize, const u_int *
{
short w, h, x, y;
const u_int *s;
- u_int *d;
+ u_int *d, p;
bool sameSize = (destSize[0] == srcSize[0] && destSize[1] == srcSize[1]);
if (sameSize || !extend)
@@ -337,21 +337,27 @@ static bool decklink_ConvImage(u_int *dest, const short *destSize, const u_int *
{
// increase width accum
accWidth += destSize[0];
- // if pixel has to be drawn
- if (accWidth >= srcSize[0])
+ // convert pixel
+ p = (swap) ? CONV_PIXEL(*s) : *s;
+ // if pixel has to be drown one or more times
+ while (accWidth >= srcSize[0])
{
// decrease accum
accWidth -= srcSize[0];
- // convert pixel
- *d = (swap) ? CONV_PIXEL(*s) : *s;
- // next pixel
- ++d;
+ *d++ = p;
}
}
+ // if there should be more identical lines
+ while (accHeight >= srcSize[1])
+ {
+ accHeight -= srcSize[1];
+ // copy previous line
+ memcpy(d, d - destSize[0], 4 * destSize[0]);
+ d += destSize[0];
+ }
}
- // if pixel row will not be drawn
else
- // move source pointer to next row
+ // if we skip a source line
s += srcSize[0];
}
}
More information about the Bf-blender-cvs
mailing list