Cleanup all movie demos to account for dropped Quicktime support.

Also add some new videos to the 'c'ool section of PlayMoviesDemo.
MLint warning cleanups, formatting cleanups, code cleanups for best
practices.
All demos tested on GStreamer.
Started working on this, but did not get very far.  Keeping it local for now.

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
Screen/GStreamer: Make movie writing work better with GStreamer SDK.

SDK version 2013.6 adds support for x264enc, so H264+AAC+QT encoding
is now possible. However, the faac encoder is missing. Instead the
ffenc_aac encoder is available. Make the codec setup code auto-detect
this: If faac is present, use it for AAC encoding. Otherwise fall back
to ffenc_aac, which might be slightly lower quality, according to the
upstream documentation.

Also make sure no audio-codec is created or setup if writing of video
only movies is requested. This to avoid irrelevant warning clutter.

Also add notice that GStreamer-1.0 is not yet supported by PTB if
GStreamer-0.10 init fails. This because Homebrew now ships v1.0 by
default, so users might be confused if Homebrew gstreamer stops
working.

-> Makes movie writing work out of the box on OSX with 2013.6 SDK.
-> Screen for 64-Bit Octave/Matlab on OSX rebuilt against 2013.6 SDK.
-> ImagingStereoDemo.m - Movie writing setup code simplified + additional
   info about setting codec parameters.

-> If this Screen() files are used against a Homebrew GStreamer, then
   glib must be up to date, otherwise crash will occur.

Known issues with the 2013.6 SDK:

1. Looped playback with some movies that have sound doesn't work reliably:
Hangs, Timeouts, loss of sound on 2nd/3rd/... iteration or wrong playback
speed on all but the 1st iteration.

2. LoadMovieIntoTexturesDemo approach doesn't work with some movies that
have sound -> Hangs.

3. Videocapture still doesn't work! (wtf. QA?!?)
DrawText text renderer plugin: Fix dormant bug and make robust against weird fonts.

* Fix bug where TranslucentTexture:: invertPixmap routine used bitmap.pitch where
  it should have used bitmap.width. Bug never seen in reality, as bitmap.pitch == bitmap.width
  in apparently all real-world setups. But anyway, better safe than sorry.

* Add safety check to monochrome renderer to reject bitmaps other than 1bpp, as
  that would crash. Never seen in the wild, but better safe than sorry.

* Fix crash in anti-aliased renderer if it was fed with a 1 bpp monochrome bitmap
  instead of the expected 8 bpp bitmap. This would crash hard and did so on an
  ancient Gentoo Linux system of a user (forum msg #15827 et al.).

  If we detect such a non 8 bpp input bitmap, we try to convert it on the fly
  into a suitable 8 bpp bitmap via the FT_Bitmap_Convert() function.

-> OGLFT.cpp modified.
-> Drawtext FTGL plugin rebuilt and tested on 32/64 Bit Linux and OSX. User will
   test on the troublesome Gentoo Linux system and report back.
Screen/Linux: Try to prevent loss of window focus for hidden windows.

Try to prevent loss of keyboard input focus for active window if
a hidden onscreen window (windowshieldinglevel == -1) is created.

Incorporate latest GStreamer changes into Screen.

-> Screen for 32/64 Bit Matlab and Octave on Linux rebuilt and tested.
Screen/GStreamer: Fix camerabin2 videocapture support on GStreamer SDK.

Workaround the continued brokeness of GStreamer-SDK's camerabin2
implementation,
as of 2013.6. We create our own dummy image/jpeg MIME encoding profile
and assign
it to camerabin2 for use with still image capture, despite the fact
that we never
use still image capture. However this is neccessary because by default
camerabin2
has a image/jpeg container profile assigned which doesn't work due to
apparently
missing jpeg muxer plugins (jifmux?) in the SDK. Our MIME profile is
valid but only
defines image encoding, no container, so no muxer plugin needed ->
problem solved.

I don't know if this would work for actual still image capture, but our
purpose here
is only to prevent error handling/error abort during camerabin2 init
from kicking in,
so we don't care.

Tested on OSX with GStreamer-SDK 2013.6 -> Works.
Screen/GStreamer: Make encoding option settings work with camerabin2 video recording.

camerabin2 video recording uses GstEncodingProfile's with loadable
preset settings to define selection and configuration of encoders and
muxers for video recording, so our manual codec option setup doesn't
work. Make it work by:

1. Creating and setting options on all codecs as with camerabin1 or
movie writing operation.
2. Saving codec settings as GstPreset's to filesystem.
3. Loading those presets in encoding profile setup.

Sort of works, except the x264enc encoder has a bug which causes it
to crash if trying to save presets, so it is black-listed and presets
for it need to be provided in a premade file that one needs to copy
to the $HOME/.gstreamer-0.10/presets/ folder. The file is stored in
PsychVideoCapture/GstX264Enc.prs and hard-coded to use fastest encoding
strategy.

However, turned out H264 default setup wasn't the bottleneck. It is
somehow related to audio recording. Video recording without audio
works with reasonable performance, but if audio recording is enabled
performance goes down the drain. Reason completely unknown, so far
tested on OSX 10.7.5.
Screen: Enable latest GStreamer improvements and 64-Bit delay loading.

Recompiled Screen() to take advantage of latest GStreamer improvements.
However, only lightly tested as testing of real videocapture hardware
in the Virtual Machine doesn't work. Only tested with videotestsrc for
synthetic test video stream.

A tiny change to the 64-Bit Windows build script together with the
new 2013.6 SDK now allows delay loading of the DLL's, just as on
32-Bit Windows and on OSX. No more invalid mex file Screen() load
failure if GStreamer SDK is not installed or path not properly set up.

-> Screen for 64-Bit Matlab on Windows rebuilt and tested in Win-7 VM.
Tiny fix for BubbleDemo for short-circuit operator regression.
Bug fix some GLU NURBS functions and make them thereby functional.

Errors in error handling caused the NURBS bits of GLU to be
unuseable. Should fix errors in forum message #16021.

However, gluNurbsCallback() function is unsupported and will
stay that way, due to high effort to implement it and the
deprecated status of the NURBS functions, so no point in
spending more than the minimal effort on them.

However NURBS rendering should work, as the callbacks aren't
needed for standard operations.
Started work on these conversion routines and a test program.

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
Added new conversion routines to Contents.m

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
Finished up the retinal irradiance deg2<->mm2 routines and added a test program.

The tests are pretty minimal.

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
Improve comments to indicate these are valid for small angles.

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
Fix glitch in filename.

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
Beginning to implement the ISO2007MPE light exposure standard.

This is going to take a while, but probably won't break anything else as it progresses.

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
Charging away on the implementation of the ISO MPE standard.

But a ways to go before it is done.

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
Remove "rad" prefix from newer routines in PsychRadiometric

I added this to a number of routines to minimize possibility of name space collisions.  But, it really clashes with the rest of the PTB, where this style is not adopted.  And, the routines in question had long and very likely to be unique names in any case.

This may break code of people who started using these routines.  But, I don't think we've actually had a release since I added these and in any case it should be easy to fix with a mutli-file search and replace.    In the long run we will be happier not to have the prefix.

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
Added computation of retinal irradiance aphakic limit.

Signed-off-by: David Brainard <brainard@psych.upenn.edu>
NetStation: Allow sending more than just int16's to NetStation system.

Allow logical, int8/16/32, single, double, char instead of only int16
as in the past.

Contributed by Matt Mollison, University of Colorado Boulder,
Department of Psychology and Neuroscience.