Ignore that its GraphEdit / VM7. These are just different ways of rendering
the video. The problem is not in your main code but your filter.
These problems are typically caused in the code you used to copy the data
from the input pin to the output pin.
If the image is upside down -> Check for a negative height on the image
If the image is scrambled then I'll guess its the stride. When given an
image of 320x200, the buffer that its in is not necessarily 320x200. It
could be 640x200 or something like that.
"The value returned in plStrideinBytes is the byte offset from the start of
one row to the start of the next row down. Thus, the address of the second
row from the top is pbTop + lStrideInBytes."
So you'll do something like this:
for t = 0 to height -1
copymemory(target, source, width*bits)
source = source + sourceStride
target = target + targetStride
For more info: