Swapped out silent/graceful failing for an assertion when somebody tries to pass an empty UIImage (not nil object, but nil image data)
Swapped out silent/graceful failing for an assertion when somebody tries to pass an empty UIImage (not nil object, but nil image data)
Tone curve filter: bug fix, always add the last point as it is never added.

Previously the last point would not be added correctly if the last point's x < 1.0 as there would be fewer than 255 entries in the output array. So the output points would approach but not actually get to that final point.

If the final point was y=1.0 it wouldn't matter as we go on to extend the returned array out to x = 255 with y = 1.0s. But if it wasn't then we'd miss that last value.

Also clarified the question in comments about whether the length of the points array is equal to the length of the second derivative. It is. Also made the n variable a constant in the second derivative method to ensure it.
Tone curve filter: correct application of RGB in conjunction with R, G, B channels.

The RGB adjustment must be made after the R, G and B adjustments.
Add HSB filter

Uses matrix multiplications to perform hue saturation brightness manipulation.
GPUImageMovieWriter: finishRecordingWithCompletionHandler must happen synchronously on video processing queue too

finishRecording runs synchronously, but if you call the method with a completion handler you don't. This results in a race condition to finish recording.
Add processImage variant with completion handler to get a notification if and when processing finishes.
Also build GPUImage as static framework in build.sh
Fixed an issue where audio sample buffers were being invalidated earlier than they should be on movie writing, leading to errors and crashes.
Merge pull request #1088 from karlvr/movie-writer-finishRecordingWithCompletionHandler

GPUImageMovieWriter: finishRecordingWithCompletionHandler must happen synchronously on video processing queue too
Merge pull request #1074 from cocologics/completionHandler

Add processImage variant with completion handler to get a notification if and when processing finishes.
Merge pull request #1073 from karlvr/hsbfilter

Add HSB filter
Merge pull request #1049 from iamcam/master

Assert instead of silent fail when passing an image to GPUImagePicture
Put in place a quick check to prevent the final callback block on movie recording from firing twice, leading to a crash.
Merge pull request #1091 from jjxtra/master

Handle orientation changes
GPUImageTwoInputFilter newFrameReadyAtTime can't always pass on frame time from the first input

Sometimes the first input will be a GPUImagePicture with a frameTime of CMTimeIndefinite. I have added a check to see whether the firstFrameTime is indefinite, in which case the secondFrameTime is used.

The behaviour will be the same as before, unless the first input is a GPUImagePicture then the time will be used from the second input. Because the frameTime will always be indefinite it will always use the second frame time and therefore will be stable.
fix a couple of memory leaks
Merge pull request #1098 from erysaj/fix-memory-leak

fix a couple of memory leaks
Merge pull request #1071 from karlvr/tonecurvefixes

Tone curve filter: fixes missing last point and incorrect application of RGB curve in conduction with individual channels
Merge pull request #1094 from karlvr/two-input-frame-time

GPUImageTwoInputFilter newFrameReadyAtTime can't always pass on frame time from the first input