Add Mockup to test HD Stereo video playback performance

This mockup of a stereo movie playback pipeline gives decent
performance on Ubuntu 12.04 LTS 64-Bit with 8-core machine and NVidia
Quadro-6000 + NVidia 295.40.

Commit as a working temporary baseline.
KukaPlayer: A high performance VR stereo movie player.

Initial checkin of KukaPlayer. This is a stereoscopic high performance
HD video player for stereo display in a VR setup, specifically the MPI
Tuebingen CyberMotion Simulator ("Kuka").

Implemented so far:
1. HD stereo movie playback to regular 2D window at high performance.
2. Mockup of geometric display undistortion: Real implementation TODO.
3. Mockup of color correction: Real implementation TODO.
4. Edge blending / Shading correction for overlapping projectors: Done.
5. Asynchronous flipping and timestamping: Done.

Also check in are 2 example shading correction masks as bmp's.
KukaPlayer: Replace display warping mockup with the real thing.

Import real NVidia Warp-API warp files and use them for the correct
display warping.
Add relevant data files as reference.
KukaPlayer: Implement initial rendering onto textured quad.

Instead of simpy 'DrawTexture'ing the video textures into
the stereo buffers, apply them to a 3D GL_QUAD which will
act as virtual projection screen.

Setup colors, sampling etc. accordingly.
KukaPlayer: Implement camera positioning & orientation, and screen positioning.

Defines two cameras, corresponding to the two video projectors, and allows
to position and orient them in space.

Defines a virtual projections screen of selectable size and allows to
position it in space, fronto-parallel to the subject and parallel to the
x-z plane of the Kuka world reference frame.

Missing: Asymetric view frustum, cam parsing.
KukaPlayer: Implement asymmetric view frustum support.

Parse frustum_x.csv config files, extract and set all camera parameters,
implement asymmetric view frustum based on those parameters.

This completes the 1st iteration and should be ready for basic
testing on real Vis-Computer.

Add example frustum_0.csv and frustum_1.csv.
KukaPlayer: Minor fixes and tweaks for real test computer.

Setup proper path to movie file on Vis-Computer BP1.
Preload 4 seconds instead of 1 for caching.
Fix compatibility to Octave 3.2.x

Update notes with some benchmark numbers.
KukaPlayer: Fix projection - 1st good looking one.

Most important fix: Add a glViewPort() call to actually
set a correct initial viewport! This is not automatically
done by PTB for 3D userspace rendering contexts, and therefore
not always correct by default -- definitely not in our case :(

Various other tweaks and small fixes.

This one seems to have a good projection and rendering. At least
it looks correct, only testing on the real setup will show.

This one has the target performance of 60 fps.
Non-Vsynced gives us about 72 fps, the main bottleneck
is 3D rendering. Should not be a problem in practice, as
movie decoding + texture upload + 2D drawing + post-processing
is still around 100 fps, perf loss is in last stage.

Update KukaNotes as well.
KukaPlayer: Add GPU time measurement and avoid context switches.

Add support for measuring GPU render time.

Add ability to avoid use of Screen('Begin/EndOpenGL') and instead
use the 2D rendering context for 3D rendering in this limited scenario.

Disable OpenGL error checking as much as possible.

Test case for increasing performance further. We'll see if it helps.
KukaPlayer: Small tweak to conserveVRAM settings.

Actually "or" with existing settings, don't overwrite them.
KukaPlayer: More ineffective optimizations.

Texture recycling didn't help, neither did using Priority(1)
scheduling, GPU max perf level, or avoidance of context switches.
KukaPlayer: Performance improvements.

Reorder sequence of drawtexture, drawtext, renderview to reduce
number of drawbuffer switches and pipeline flushes.

Avoid redundant gl calls.

Avoid checking any key except the ESCape abort key.

Most important improvement: Use OpenGL display lists
to cache all glXXX calls in the 3D render code. This
improves max fps under realistic setting from about
74 fps to about 95 fps!
KukaPlayer: Code formatting fixes.
KukaPlayer: Add initial server implementation.

Allow it to act as a server which is remote controlled via UDP network
command packets.
KukaPlayer: Set number of decode threads to "auto"

Now that we need to specify this if we want more than single-threaded
decoding.
KukaPlayer: Small fix for serverloop.

Didn't work in 1st ieration.
KukaPlayer: Use Screen builtin fast seeking to target pts.

This is faster / more efficient.
KukaPlayer: Small tweaks so servermode works on Viz computer.

Init pktstring to '' instead of [] -- Octave begs to differ.
Use Priority(MaxPriority) for realtime scheduling.
Print count of presented movie frames at end, prepare
arrays for additional timestamps.
Signal readyness by hiding mouse cursor and drawing "ready".

Tested with MBP + Matlab as UDP KukaClient and
BP-1 Viz computer + octave as Video server.

-> Player in standalond mode sustains 60 fps as required.
-> Player in UDP server mode only manages 40 fps.
   Probable cause, phase-offset between UDP reception and
   VSync of target displays?
KukaPlayer: Optimize timestampig and UDP receive.

To get more realisitc (still not perfect) timestamps
of what happens when, and to decrease UDP processing
overhead.